cddlib-0.94j/0000755000175000017500000000000013312731233010040 500000000000000cddlib-0.94j/examples/0000755000175000017500000000000013312731233011656 500000000000000cddlib-0.94j/examples/project1.ine0000644000175000017500000000127213270061057014027 00000000000000* Try to project on (x1, x2, x3) by eliminating the last * three variables using cddlib "fourier" or "projection" programs. * The correct result is project1res.ine. H-representation begin 20 7 integer 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 -1 0 0 1 0 0 0 0 -1 0 1 0 0 0 0 0 -1 1 1 0 0 -1 0 0 1 0 1 0 0 -1 0 1 0 0 1 0 0 -1 1 -1 0 0 1 0 0 1 0 -1 0 0 1 0 1 0 0 -1 0 0 1 2 1 1 1 -1 -1 -1 2 -1 1 1 1 -1 -1 2 1 -1 1 -1 1 -1 2 1 1 -1 -1 -1 1 2 -1 -1 1 1 1 -1 2 1 -1 -1 -1 1 1 2 -1 1 -1 1 -1 1 2 -1 -1 -1 1 1 1 end project 3 1 2 3 cddlib-0.94j/examples/project1res.ine0000644000175000017500000000035713270061057014544 00000000000000H-representation begin 14 4 integer 5 -1 -1 1 2 0 0 1 5 -1 1 1 5 1 -1 1 2 1 0 0 5 1 1 1 5 1 1 -1 5 1 -1 -1 2 0 1 0 5 -1 1 -1 2 0 0 -1 5 -1 -1 -1 2 0 -1 0 2 -1 0 0 end cddlib-0.94j/examples/project2.ine0000644000175000017500000000350213270061057014026 00000000000000* Projection example: project2.ine * Project on the 3-space (x1, x2, x3) by eliminating the last * three variables (x4,x5,x6). The result is project2res.ine . * This appears to be a very hard example to compute by * the straighforward Fourier or Block elimination because they * generate so many redundant inequalities. H-representation begin 62 7 integer 7 0 0 0 -3 1 -2 9 0 0 0 -2 -1 -3 7 0 0 0 -2 1 -3 9 0 0 0 -3 -1 -2 3 0 0 0 -2 3 -1 1 0 0 0 -2 3 1 5 0 0 0 -3 2 -1 3 0 0 0 -3 2 1 3 0 0 0 1 -3 2 1 0 0 0 1 -2 3 5 0 0 0 -1 -3 2 3 0 0 0 -1 -2 3 -3 0 0 0 1 2 3 -3 0 0 0 1 3 2 -1 0 0 0 -1 2 3 -1 0 0 0 -1 3 2 1 0 0 0 3 1 -2 5 0 0 0 2 -1 -3 3 0 0 0 3 -1 -2 3 0 0 0 2 1 -3 -1 0 0 0 2 3 -1 -1 0 0 0 3 2 -1 -3 0 0 0 2 3 1 -3 0 0 0 3 2 1 -3 0 0 0 2 1 3 -1 0 0 0 3 -1 2 -1 0 0 0 2 -1 3 -3 0 0 0 3 1 2 3 0 0 0 2 -3 1 5 0 0 0 2 -3 -1 1 0 0 0 3 -2 1 3 0 0 0 3 -2 -1 3 0 0 0 -1 3 -2 5 0 0 0 -1 2 -3 1 0 0 0 1 3 -2 3 0 0 0 1 2 -3 9 0 0 0 -1 -2 -3 9 0 0 0 -1 -3 -2 7 0 0 0 1 -2 -3 7 0 0 0 1 -3 -2 5 0 0 0 -3 -1 2 1 0 0 0 -2 1 3 3 0 0 0 -2 -1 3 3 0 0 0 -3 1 2 7 0 0 0 -2 -3 1 9 0 0 0 -2 -3 -1 7 0 0 0 -3 -2 1 9 0 0 0 -3 -2 -1 0 1 0 0 -1 0 0 0 0 1 0 0 -1 0 0 0 0 1 0 0 -1 2 -1 0 0 1 0 0 2 0 -1 0 0 1 0 2 0 0 -1 0 0 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 3 -1 -1 1 1 1 -1 3 1 -1 -1 -1 1 1 3 -1 1 -1 1 -1 1 5 -1 -1 -1 1 1 1 end project 3 1 2 3 cddlib-0.94j/examples/project2res.ine0000644000175000017500000000244313270061057014543 00000000000000H-representation begin 86 4 integer 9 -2 1 -1 16 -3 1 -2 20 -3 -1 -2 12 -3 2 -1 8 -3 2 1 8 -2 -1 3 4 -2 1 3 8 -2 3 -1 4 -2 3 1 9 -1 -2 1 11 -2 -2 2 5 -1 -1 2 1 -1 1 2 3 -2 2 2 1 -1 2 1 4 0 0 -1 0 0 1 0 8 -1 -2 3 12 -1 -3 2 0 -1 2 3 0 -1 3 2 5 1 -2 1 8 1 -3 2 4 1 -2 3 1 1 -1 2 -3 1 1 2 -4 1 2 3 -4 1 3 2 -3 1 2 1 3 2 -2 2 -5 2 2 2 8 2 1 -3 12 2 -1 -3 0 2 3 -1 -4 2 3 1 1 2 -1 1 4 3 -2 1 0 3 -1 2 -3 2 1 1 -4 3 1 2 -4 3 2 1 0 1 0 0 0 3 2 -1 4 3 1 -2 1 2 1 -1 8 3 -1 -2 8 3 -2 -1 5 2 -1 -1 0 2 -1 3 -4 2 1 3 8 2 -3 1 12 2 -3 -1 3 2 2 -2 11 2 -2 -2 1 1 2 -1 4 1 3 -2 8 1 2 -3 5 1 1 -2 9 1 -1 -2 16 1 -2 -3 16 1 -3 -2 9 1 -2 -1 12 -1 2 -3 8 -1 3 -2 20 -1 -2 -3 20 -1 -3 -2 0 0 0 1 4 0 -1 0 5 -1 2 -1 11 -2 2 -2 9 -1 1 -2 13 -1 -1 -2 19 -2 -2 -2 13 -1 -2 -1 16 -2 1 -3 20 -2 -1 -3 16 -2 -3 1 20 -2 -3 -1 12 -3 -1 2 8 -3 1 2 5 -2 1 1 16 -3 -2 1 20 -3 -2 -1 9 -2 -1 1 13 -2 -1 -1 4 -1 0 0 end cddlib-0.94j/examples/redcheck.ext0000644000175000017500000000013413270061057014071 00000000000000V-representation begin 7 3 integer 1 0 0 1 2 0 1 0 2 1 1 1 1 2 1 1 1 2 1 2 2 end cddlib-0.94j/examples/sampleh1.ine0000644000175000017500000000023713270061057014012 00000000000000* file name: sampleh1.ine * a 3-D cone containing no vertices and a line H-representation begin 3 4 integer 2 -1 -1 0 0 1 0 0 0 0 1 0 end cddlib-0.94j/examples/sampleh2.ine0000644000175000017500000000020013270061057014001 00000000000000* file name: sampleh2.ine * a hyperplane with no vertices and rays H-representation begin 1 4 integer -1 0 0 1 end cddlib-0.94j/examples/sampleh3.ine0000644000175000017500000000021613270061057014011 00000000000000* file name: sampleh3.ine * a 3-D homogeneous cone with no vertices H-representation begin 2 4 integer 0 1 1 0 0 0 1 0 end cddlib-0.94j/examples/sampleh4.ine0000644000175000017500000000031713270061057014014 00000000000000* File name: sampleh4.ine * trivial inequalities: the polyhedron is the whole space. H-representation begin 6 4 integer 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 end cddlib-0.94j/examples/sampleh5.ine0000644000175000017500000000033313270061057014013 00000000000000* file name: sampleh5.ine * test file for redundancy removal H-representation linearity 1 3 begin 8 4 integer 0 1 0 0 0 0 1 0 0 0 0 1 1 -1 -1 -1 1 -1 -1 0 1 0 -1 -1 1 -1 0 -1 2 -1 -1 -1 end cddlib-0.94j/examples/sampleh6.ine0000644000175000017500000000026013270061057014013 00000000000000* file name: sampleh6.ine * test file for forced-equality checking H-representation begin 5 4 integer 0 1 0 0 0 0 1 0 0 0 0 1 1 -1 -1 -1 -1 1 1 0 end cddlib-0.94j/examples/sampleh7.ine0000644000175000017500000000044013270061057014014 00000000000000* test file for redundancy removal * the redundant rows are * 3 4 5 9 10 * LP type = 1 Seed = 123 H-representation begin 10 3 integer 0 1 0 0 0 1 -10000 651 693 -10000 697 637 -10000 368 824 -10000 87 725 -10000 387 219 -10000 430 202 -10000 356 988 -10000 674 979 end cddlib-0.94j/examples/sampleh8.ine0000644000175000017500000001041013270061057014013 00000000000000* test file for redundancy removal * the redundant rows are * 10 11 12 14 21 23 26 32 39 40 41 44 46 * 50 51 54 56 57 59 62 63 64 69 76 77 78 * 79 83 84 85 87 88 91 94 97 * LP type = 1 Seed = 123 H-representation begin 100 10 integer 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 -10000 651 693 84 697 637 340 368 824 663 -10000 725 742 387 219 751 430 202 745 356 -10000 377 674 979 167 815 988 412 676 475 -10000 710 275 949 284 629 1 422 974 510 -10000 692 945 725 488 271 430 724 225 726 -10000 465 258 450 343 87 168 161 103 919 -10000 86 79 656 493 832 514 791 506 29 -10000 63 630 874 918 877 272 992 119 480 -10000 598 926 42 378 288 66 927 919 99 -10000 256 354 106 979 641 160 395 225 837 -10000 202 388 900 471 160 751 300 731 818 -10000 342 502 825 563 639 261 194 984 990 -10000 266 406 364 216 448 675 145 694 866 -10000 362 983 732 378 134 902 946 877 205 -10000 926 125 949 888 234 630 275 707 67 -10000 634 81 192 768 652 822 311 961 895 -10000 983 597 743 314 696 585 367 396 826 -10000 511 545 539 97 111 996 477 35 372 -10000 474 103 152 753 159 120 929 161 563 -10000 549 793 307 456 444 184 149 792 894 -10000 839 488 917 192 168 788 959 245 25 -10000 750 165 338 182 392 381 962 117 713 -10000 738 827 943 507 914 814 951 663 815 -10000 493 339 225 351 450 788 992 167 792 -10000 174 773 247 247 180 517 445 599 596 -10000 303 26 967 39 535 4 7 335 217 -10000 772 173 189 291 668 191 610 677 544 -10000 848 642 40 125 865 100 259 534 648 -10000 501 622 398 624 118 416 30 17 236 -10000 218 602 697 892 322 314 361 573 985 -10000 958 856 608 492 563 478 311 614 740 -10000 582 913 938 949 715 338 39 726 998 -10000 521 805 708 221 624 316 24 127 322 -10000 491 189 412 774 418 200 193 633 315 -10000 144 679 383 447 989 939 441 631 482 -10000 940 241 153 215 149 457 254 207 125 -10000 80 873 207 904 684 600 940 431 825 -10000 75 100 353 637 432 377 940 758 164 -10000 627 721 915 710 8 786 96 17 576 -10000 247 104 607 432 540 164 597 282 317 -10000 553 787 881 942 152 318 44 509 518 -10000 181 772 942 993 916 900 713 694 812 -10000 625 26 638 261 385 196 676 717 572 -10000 11 911 296 761 658 631 757 817 400 -10000 964 989 879 491 490 751 490 97 405 -10000 28 461 343 452 480 504 411 242 892 -10000 768 746 347 352 724 487 185 767 287 -10000 924 228 958 554 352 460 765 742 430 -10000 737 986 499 993 721 29 821 416 813 -10000 483 458 249 781 584 321 779 209 570 -10000 222 166 975 53 765 256 859 469 164 -10000 82 696 181 166 375 145 415 496 261 -10000 540 309 526 918 439 489 846 417 775 -10000 699 145 327 873 467 866 711 393 603 -10000 445 668 729 224 654 970 279 789 680 -10000 28 659 365 306 186 520 427 176 191 -10000 919 58 859 436 105 35 560 716 14 -10000 641 238 340 524 205 255 272 14 472 -10000 817 22 904 782 573 847 649 100 280 -10000 925 277 930 495 736 960 276 726 657 -10000 336 54 357 979 941 765 593 630 286 -10000 65 113 104 915 222 158 580 520 188 -10000 42 617 904 414 588 857 416 94 988 -10000 716 49 849 67 607 99 934 184 217 -10000 458 32 500 552 108 980 255 998 935 -10000 860 936 115 268 231 281 948 209 766 -10000 293 330 940 570 857 421 574 481 364 -10000 959 949 372 757 306 757 752 312 137 -10000 769 303 737 260 187 695 946 723 433 -10000 980 564 605 363 776 893 558 616 603 -10000 945 23 632 820 54 677 795 616 625 -10000 629 692 585 33 674 703 304 489 949 -10000 52 903 723 746 692 232 917 933 211 -10000 367 566 364 318 607 818 424 234 605 -10000 915 305 354 829 469 447 925 188 799 -10000 387 596 946 888 751 614 539 295 299 -10000 969 902 10 739 289 923 808 28 151 -10000 537 152 546 442 182 301 258 265 762 -10000 671 288 343 199 694 391 457 947 250 -10000 415 734 423 435 696 111 53 227 784 -10000 800 992 720 76 40 419 608 182 683 -10000 619 627 278 526 453 960 772 992 86 -10000 836 623 0 21 371 4 676 964 658 -10000 258 677 64 968 62 219 587 308 299 -10000 224 823 258 449 575 526 908 585 405 -10000 593 660 663 341 36 79 50 242 293 -10000 80 761 270 460 82 133 874 559 41 -10000 169 539 257 827 222 743 873 929 523 -10000 403 167 259 377 76 160 749 448 902 -10000 290 5 276 509 342 909 193 443 552 -10000 928 326 757 405 598 765 143 833 150 end cddlib-0.94j/examples/sample.ine0000644000175000017500000000025513270061057013561 00000000000000* file name: sample.ine * 3-cube H-representation begin 6 4 rational 10/3 1 0 0 10/3 0 1 0 10/3 0 0 1 10/3 -1 0 0 10/3 0 -1 0 10/3 0 0 -1 end cddlib-0.94j/examples/samplelp1.ine0000644000175000017500000000025713270061057014200 00000000000000* file name: samplelp1.ine * LP H-representation begin 6 4 integer 1 1 0 0 1 0 1 0 1 0 0 1 1 -1 0 0 1 0 -1 0 1 0 0 -1 end maximize 0 1 1 1 cddlib-0.94j/examples/samplelp2.ine0000644000175000017500000000027713270061057014203 00000000000000* file name: samplelp2.ine * LP H-representation linearity 2 3 4 begin 4 5 rational 0 1 1 0 0 0 0 2 0 0 3 0 -1 0 0 9/2 0 0 -1 -1 end minimize 0 2 3/5 0 0 cddlib-0.94j/examples/samplelp3.ine0000644000175000017500000001444413270061057014205 00000000000000* file name: samplelp3.ine * LP given by floating-point real numbers H-representation begin 120 5 real 2.618033989E+00 1 0 0 0 8.472135943E+00 2.618033984E+00 1.618033988E+00 -1 0 8.472135943E+00 2.618033984E+00 1.618033988E+00 1 0 8.472135945E+00 2.618033984E+00 1 0 1.618033990E+00 8.472135945E+00 2.618033984E+00 1 0 -1.618033990E+00 8.472135946E+00 2.618033985E+00 0 1.618033990E+00 1 8.472135946E+00 2.618033985E+00 0 1.618033990E+00 -1 8.472135946E+00 2.618033985E+00 0 -1.618033990E+00 1 8.472135946E+00 2.618033985E+00 0 -1.618033990E+00 -1 8.472135960E+00 2.618033990E+00 -1 0 1.618033991E+00 8.472135954E+00 2.618033988E+00 -1 0 -1.618033990E+00 8.472135941E+00 2.618033984E+00 -1.618033987E+00 1 0 8.472135946E+00 2.618033984E+00 -1.618033992E+00 -1 0 8.472135966E+00 1.618033989E+00 2.618033995E+00 0 1 8.472135966E+00 1.618033989E+00 2.618033995E+00 0 -1 5.236067982E+00 1 1 1 1 5.236067982E+00 1 1 1 -1 5.236067980E+00 1 1 -1 1 5.236067980E+00 1 1 -1 -1 8.472135941E+00 1.618033989E+00 1 2.618033982E+00 0 8.472135936E+00 1.618033985E+00 1 -2.618033983E+00 0 8.472135965E+00 1.618033992E+00 0 1 2.618033991E+00 8.472135965E+00 1.618033992E+00 0 1 -2.618033991E+00 8.472135967E+00 1.618033992E+00 0 -1 2.618033993E+00 8.472135967E+00 1.618033992E+00 0 -1 -2.618033993E+00 8.472135996E+00 1.618034002E+00 -1 2.618033998E+00 0 8.472135985E+00 1.618033997E+00 -1 -2.618033998E+00 0 5.236067982E+00 1 -1 1 1 5.236067987E+00 1 -1 1 -1 5.236067983E+00 1 -1 -1 1 5.236067984E+00 1 -1 -1 -1 8.472135981E+00 1.618033999E+00 -2.618033991E+00 0 1 8.472135972E+00 1.618033998E+00 -2.618033988E+00 0 -1 8.472135864E+00 1 2.618033957E+00 1.618033969E+00 0 8.472135874E+00 1 2.618033960E+00 -1.618033969E+00 0 8.472135841E+00 1 1.618033964E+00 0 2.618033948E+00 8.472135864E+00 1 1.618033970E+00 0 -2.618033956E+00 8.472135865E+00 1 0 2.618033957E+00 1.618033968E+00 8.472135880E+00 1 0 2.618033963E+00 -1.618033971E+00 8.472135921E+00 1 0 -2.618033977E+00 1.618033982E+00 8.472135936E+00 1 0 -2.618033982E+00 -1.618033984E+00 8.472135950E+00 1 -1.618033984E+00 0 2.618033987E+00 8.472135975E+00 1 -1.618033991E+00 0 -2.618033996E+00 8.472135940E+00 1 -2.618033980E+00 1.618033987E+00 0 8.472135918E+00 1 -2.618033977E+00 -1.618033979E+00 0 2.618033992E+00 0 1 0 0 8.472135970E+00 0 2.618033994E+00 1 1.618033987E+00 8.472135966E+00 0 2.618033993E+00 1 -1.618033986E+00 8.472135969E+00 0 2.618033993E+00 -1 1.618033989E+00 8.472135965E+00 0 2.618033993E+00 -1 -1.618033988E+00 8.472135978E+00 0 1.618033994E+00 2.618033994E+00 1 8.472136017E+00 0 1.618034002E+00 2.618034006E+00 -1 8.472135962E+00 0 1.618033993E+00 -2.618033988E+00 1 8.472135995E+00 0 1.618033999E+00 -2.618033998E+00 -1 8.472135946E+00 0 1 1.618033984E+00 2.618033986E+00 8.472135944E+00 0 1 1.618033985E+00 -2.618033986E+00 8.472135922E+00 0 1 -1.618033980E+00 2.618033979E+00 2.618033990E+00 0 0 0 1 8.472135919E+00 0 1 -1.618033980E+00 -2.618033979E+00 2.618033989E+00 0 0 0 -1 2.618033988E+00 0 0 1 0 2.618033987E+00 0 0 -1 0 8.472135960E+00 0 -1 1.618033993E+00 2.618033991E+00 8.472135908E+00 0 -1.618033977E+00 2.618033974E+00 1 8.472135958E+00 0 -1 1.618033994E+00 -2.618033991E+00 8.472135901E+00 0 -1.618033978E+00 2.618033974E+00 -1 8.472135954E+00 0 -1 -1.618033990E+00 2.618033990E+00 8.472135908E+00 0 -1.618033976E+00 -2.618033974E+00 1 8.472135952E+00 0 -1 -1.618033991E+00 -2.618033990E+00 8.472135907E+00 0 -1.618033978E+00 -2.618033975E+00 -1 8.472135946E+00 0 -2.618033995E+00 1 1.618033991E+00 8.472135953E+00 0 -2.618033995E+00 -1 1.618033994E+00 8.472135953E+00 0 -2.618033998E+00 1 -1.618033992E+00 8.472135955E+00 0 -2.618033996E+00 -1 -1.618033994E+00 2.618033981E+00 0 -1 0 0 8.472135799E+00 -1 2.618033936E+00 1.618033957E+00 0 8.472135806E+00 -1 2.618033939E+00 -1.618033956E+00 0 8.472135741E+00 -1 1.618033945E+00 0 2.618033918E+00 8.472135889E+00 -1.618033990E+00 2.618033960E+00 0 1 8.472135767E+00 -1 1.618033951E+00 0 -2.618033925E+00 8.472135878E+00 -1.618033996E+00 2.618033953E+00 0 -1 8.472135831E+00 -1 0 2.618033947E+00 1.618033962E+00 5.236068004E+00 -1 1 1 1 8.472135830E+00 -1 0 2.618033948E+00 -1.618033961E+00 5.236067998E+00 -1 1 1 -1 8.472135931E+00 -1 0 -2.618033980E+00 1.618033984E+00 5.236067998E+00 -1 1 -1 1 8.472135930E+00 -1 0 -2.618033980E+00 -1.618033982E+00 5.236067992E+00 -1 1 -1 -1 8.472135952E+00 -1.618033993E+00 1 2.618033986E+00 0 8.472135960E+00 -1.618033995E+00 1 -2.618033988E+00 0 8.472135973E+00 -1 -1.618033989E+00 0 2.618033995E+00 8.472135979E+00 -1.618033991E+00 0 1 2.618033997E+00 8.472135996E+00 -1 -1.618033995E+00 0 -2.618034002E+00 8.472135951E+00 -1.618033985E+00 0 1 -2.618033988E+00 8.472135999E+00 -1.618033998E+00 0 -1 2.618034003E+00 8.472135970E+00 -1.618033992E+00 0 -1 -2.618033994E+00 8.472135949E+00 -1 -2.618033984E+00 1.618033989E+00 0 8.472135976E+00 -1.618033990E+00 -1 2.618033998E+00 0 8.472135886E+00 -1 -2.618033968E+00 -1.618033973E+00 0 8.472136008E+00 -1.618034002E+00 -1 -2.618034009E+00 0 5.236068025E+00 -1 -1 1 1 5.236068045E+00 -1 -1 1 -1 5.236067992E+00 -1 -1 -1 1 5.236067996E+00 -1 -1 -1 -1 8.472135733E+00 -1.618033890E+00 -2.618033931E+00 0 1 8.472135716E+00 -1.618033884E+00 -2.618033926E+00 0 -1 8.472135892E+00 -2.618033958E+00 1.618033988E+00 1 0 8.472135949E+00 -2.618033975E+00 1.618033999E+00 -1 0 8.472135850E+00 -2.618033938E+00 1 0 1.618033982E+00 8.472135860E+00 -2.618033944E+00 1 0 -1.618033981E+00 8.472135925E+00 -2.618033969E+00 0 1.618033991E+00 1 8.472135937E+00 -2.618033972E+00 0 1.618033995E+00 -1 8.472135998E+00 -2.618034011E+00 0 -1.618033985E+00 1 8.472136011E+00 -2.618034015E+00 0 -1.618033988E+00 -1 8.472136073E+00 -2.618034037E+00 -1 0 1.618034000E+00 8.472136082E+00 -2.618034044E+00 -1 0 -1.618033997E+00 8.472135976E+00 -2.618034005E+00 -1.618033977E+00 1 0 8.472136051E+00 -2.618034034E+00 -1.618033992E+00 -1 0 2.618033989E+00 -1 0 0 0 end maximize 0 1 2.1 3.1 4.5 cddlib-0.94j/examples/samplelp4.ine0000644000175000017500000001436513270061057014210 00000000000000* file name: lpmintest.ine H-representation begin 120 5 real 2.618033989E+00 1 0 0 0 8.472135943E+00 2.618033984E+00 1.618033988E+00 -1 0 8.472135943E+00 2.618033984E+00 1.618033988E+00 1 0 8.472135945E+00 2.618033984E+00 1 0 1.618033990E+00 8.472135945E+00 2.618033984E+00 1 0 -1.618033990E+00 8.472135946E+00 2.618033985E+00 0 1.618033990E+00 1 8.472135946E+00 2.618033985E+00 0 1.618033990E+00 -1 8.472135946E+00 2.618033985E+00 0 -1.618033990E+00 1 8.472135946E+00 2.618033985E+00 0 -1.618033990E+00 -1 8.472135960E+00 2.618033990E+00 -1 0 1.618033991E+00 8.472135954E+00 2.618033988E+00 -1 0 -1.618033990E+00 8.472135941E+00 2.618033984E+00 -1.618033987E+00 1 0 8.472135946E+00 2.618033984E+00 -1.618033992E+00 -1 0 8.472135966E+00 1.618033989E+00 2.618033995E+00 0 1 8.472135966E+00 1.618033989E+00 2.618033995E+00 0 -1 5.236067982E+00 1 1 1 1 5.236067982E+00 1 1 1 -1 5.236067980E+00 1 1 -1 1 5.236067980E+00 1 1 -1 -1 8.472135941E+00 1.618033989E+00 1 2.618033982E+00 0 8.472135936E+00 1.618033985E+00 1 -2.618033983E+00 0 8.472135965E+00 1.618033992E+00 0 1 2.618033991E+00 8.472135965E+00 1.618033992E+00 0 1 -2.618033991E+00 8.472135967E+00 1.618033992E+00 0 -1 2.618033993E+00 8.472135967E+00 1.618033992E+00 0 -1 -2.618033993E+00 8.472135996E+00 1.618034002E+00 -1 2.618033998E+00 0 8.472135985E+00 1.618033997E+00 -1 -2.618033998E+00 0 5.236067982E+00 1 -1 1 1 5.236067987E+00 1 -1 1 -1 5.236067983E+00 1 -1 -1 1 5.236067984E+00 1 -1 -1 -1 8.472135981E+00 1.618033999E+00 -2.618033991E+00 0 1 8.472135972E+00 1.618033998E+00 -2.618033988E+00 0 -1 8.472135864E+00 1 2.618033957E+00 1.618033969E+00 0 8.472135874E+00 1 2.618033960E+00 -1.618033969E+00 0 8.472135841E+00 1 1.618033964E+00 0 2.618033948E+00 8.472135864E+00 1 1.618033970E+00 0 -2.618033956E+00 8.472135865E+00 1 0 2.618033957E+00 1.618033968E+00 8.472135880E+00 1 0 2.618033963E+00 -1.618033971E+00 8.472135921E+00 1 0 -2.618033977E+00 1.618033982E+00 8.472135936E+00 1 0 -2.618033982E+00 -1.618033984E+00 8.472135950E+00 1 -1.618033984E+00 0 2.618033987E+00 8.472135975E+00 1 -1.618033991E+00 0 -2.618033996E+00 8.472135940E+00 1 -2.618033980E+00 1.618033987E+00 0 8.472135918E+00 1 -2.618033977E+00 -1.618033979E+00 0 2.618033992E+00 0 1 0 0 8.472135970E+00 0 2.618033994E+00 1 1.618033987E+00 8.472135966E+00 0 2.618033993E+00 1 -1.618033986E+00 8.472135969E+00 0 2.618033993E+00 -1 1.618033989E+00 8.472135965E+00 0 2.618033993E+00 -1 -1.618033988E+00 8.472135978E+00 0 1.618033994E+00 2.618033994E+00 1 8.472136017E+00 0 1.618034002E+00 2.618034006E+00 -1 8.472135962E+00 0 1.618033993E+00 -2.618033988E+00 1 8.472135995E+00 0 1.618033999E+00 -2.618033998E+00 -1 8.472135946E+00 0 1 1.618033984E+00 2.618033986E+00 8.472135944E+00 0 1 1.618033985E+00 -2.618033986E+00 8.472135922E+00 0 1 -1.618033980E+00 2.618033979E+00 2.618033990E+00 0 0 0 1 8.472135919E+00 0 1 -1.618033980E+00 -2.618033979E+00 2.618033989E+00 0 0 0 -1 2.618033988E+00 0 0 1 0 2.618033987E+00 0 0 -1 0 8.472135960E+00 0 -1 1.618033993E+00 2.618033991E+00 8.472135908E+00 0 -1.618033977E+00 2.618033974E+00 1 8.472135958E+00 0 -1 1.618033994E+00 -2.618033991E+00 8.472135901E+00 0 -1.618033978E+00 2.618033974E+00 -1 8.472135954E+00 0 -1 -1.618033990E+00 2.618033990E+00 8.472135908E+00 0 -1.618033976E+00 -2.618033974E+00 1 8.472135952E+00 0 -1 -1.618033991E+00 -2.618033990E+00 8.472135907E+00 0 -1.618033978E+00 -2.618033975E+00 -1 8.472135946E+00 0 -2.618033995E+00 1 1.618033991E+00 8.472135953E+00 0 -2.618033995E+00 -1 1.618033994E+00 8.472135953E+00 0 -2.618033998E+00 1 -1.618033992E+00 8.472135955E+00 0 -2.618033996E+00 -1 -1.618033994E+00 2.618033981E+00 0 -1 0 0 8.472135799E+00 -1 2.618033936E+00 1.618033957E+00 0 8.472135806E+00 -1 2.618033939E+00 -1.618033956E+00 0 8.472135741E+00 -1 1.618033945E+00 0 2.618033918E+00 8.472135889E+00 -1.618033990E+00 2.618033960E+00 0 1 8.472135767E+00 -1 1.618033951E+00 0 -2.618033925E+00 8.472135878E+00 -1.618033996E+00 2.618033953E+00 0 -1 8.472135831E+00 -1 0 2.618033947E+00 1.618033962E+00 5.236068004E+00 -1 1 1 1 8.472135830E+00 -1 0 2.618033948E+00 -1.618033961E+00 5.236067998E+00 -1 1 1 -1 8.472135931E+00 -1 0 -2.618033980E+00 1.618033984E+00 5.236067998E+00 -1 1 -1 1 8.472135930E+00 -1 0 -2.618033980E+00 -1.618033982E+00 5.236067992E+00 -1 1 -1 -1 8.472135952E+00 -1.618033993E+00 1 2.618033986E+00 0 8.472135960E+00 -1.618033995E+00 1 -2.618033988E+00 0 8.472135973E+00 -1 -1.618033989E+00 0 2.618033995E+00 8.472135979E+00 -1.618033991E+00 0 1 2.618033997E+00 8.472135996E+00 -1 -1.618033995E+00 0 -2.618034002E+00 8.472135951E+00 -1.618033985E+00 0 1 -2.618033988E+00 8.472135999E+00 -1.618033998E+00 0 -1 2.618034003E+00 8.472135970E+00 -1.618033992E+00 0 -1 -2.618033994E+00 8.472135949E+00 -1 -2.618033984E+00 1.618033989E+00 0 8.472135976E+00 -1.618033990E+00 -1 2.618033998E+00 0 8.472135886E+00 -1 -2.618033968E+00 -1.618033973E+00 0 8.472136008E+00 -1.618034002E+00 -1 -2.618034009E+00 0 5.236068025E+00 -1 -1 1 1 5.236068045E+00 -1 -1 1 -1 5.236067992E+00 -1 -1 -1 1 5.236067996E+00 -1 -1 -1 -1 8.472135733E+00 -1.618033890E+00 -2.618033931E+00 0 1 8.472135716E+00 -1.618033884E+00 -2.618033926E+00 0 -1 8.472135892E+00 -2.618033958E+00 1.618033988E+00 1 0 8.472135949E+00 -2.618033975E+00 1.618033999E+00 -1 0 8.472135850E+00 -2.618033938E+00 1 0 1.618033982E+00 8.472135860E+00 -2.618033944E+00 1 0 -1.618033981E+00 8.472135925E+00 -2.618033969E+00 0 1.618033991E+00 1 8.472135937E+00 -2.618033972E+00 0 1.618033995E+00 -1 8.472135998E+00 -2.618034011E+00 0 -1.618033985E+00 1 8.472136011E+00 -2.618034015E+00 0 -1.618033988E+00 -1 8.472136073E+00 -2.618034037E+00 -1 0 1.618034000E+00 8.472136082E+00 -2.618034044E+00 -1 0 -1.618033997E+00 8.472135976E+00 -2.618034005E+00 -1.618033977E+00 1 0 8.472136051E+00 -2.618034034E+00 -1.618033992E+00 -1 0 2.618033989E+00 -1 0 0 0 end minimize 0 1 1 1 1 cddlib-0.94j/examples/samplelp_big_dualinfeas.ine0000644000175000017500000150753513270061057017147 00000000000000Dual Inconsistent LP H-representation begin 9991 10 integer -10000 651 693 84 697 637 340 368 824 663 -10000 725 742 387 219 751 430 202 745 356 -10000 377 674 979 167 815 988 412 676 475 -10000 710 275 949 284 629 1 422 974 510 -10000 692 945 725 488 271 430 724 225 726 -10000 465 258 450 343 87 168 161 103 919 -10000 86 79 656 493 832 514 791 506 29 -10000 63 630 874 918 877 272 992 119 480 -10000 598 926 42 378 288 66 927 919 99 -10000 256 354 106 979 641 160 395 225 837 -10000 202 388 900 471 160 751 300 731 818 -10000 342 502 825 563 639 261 194 984 990 -10000 266 406 364 216 448 675 145 694 866 -10000 362 983 732 378 134 902 946 877 205 -10000 926 125 949 888 234 630 275 707 67 -10000 634 81 192 768 652 822 311 961 895 -10000 983 597 743 314 696 585 367 396 826 -10000 511 545 539 97 111 996 477 35 372 -10000 474 103 152 753 159 120 929 161 563 -10000 549 793 307 456 444 184 149 792 894 -10000 839 488 917 192 168 788 959 245 25 -10000 750 165 338 182 392 381 962 117 713 -10000 738 827 943 507 914 814 951 663 815 -10000 493 339 225 351 450 788 992 167 792 -10000 174 773 247 247 180 517 445 599 596 -10000 303 26 967 39 535 4 7 335 217 -10000 772 173 189 291 668 191 610 677 544 -10000 848 642 40 125 865 100 259 534 648 -10000 501 622 398 624 118 416 30 17 236 -10000 218 602 697 892 322 314 361 573 985 -10000 958 856 608 492 563 478 311 614 740 -10000 582 913 938 949 715 338 39 726 998 -10000 521 805 708 221 624 316 24 127 322 -10000 491 189 412 774 418 200 193 633 315 -10000 144 679 383 447 989 939 441 631 482 -10000 940 241 153 215 149 457 254 207 125 -10000 80 873 207 904 684 600 940 431 825 -10000 75 100 353 637 432 377 940 758 164 -10000 627 721 915 710 8 786 96 17 576 -10000 247 104 607 432 540 164 597 282 317 -10000 553 787 881 942 152 318 44 509 518 -10000 181 772 942 993 916 900 713 694 812 -10000 625 26 638 261 385 196 676 717 572 -10000 11 911 296 761 658 631 757 817 400 -10000 964 989 879 491 490 751 490 97 405 -10000 28 461 343 452 480 504 411 242 892 -10000 768 746 347 352 724 487 185 767 287 -10000 924 228 958 554 352 460 765 742 430 -10000 737 986 499 993 721 29 821 416 813 -10000 483 458 249 781 584 321 779 209 570 -10000 222 166 975 53 765 256 859 469 164 -10000 82 696 181 166 375 145 415 496 261 -10000 540 309 526 918 439 489 846 417 775 -10000 699 145 327 873 467 866 711 393 603 -10000 445 668 729 224 654 970 279 789 680 -10000 28 659 365 306 186 520 427 176 191 -10000 919 58 859 436 105 35 560 716 14 -10000 641 238 340 524 205 255 272 14 472 -10000 817 22 904 782 573 847 649 100 280 -10000 925 277 930 495 736 960 276 726 657 -10000 336 54 357 979 941 765 593 630 286 -10000 65 113 104 915 222 158 580 520 188 -10000 42 617 904 414 588 857 416 94 988 -10000 716 49 849 67 607 99 934 184 217 -10000 458 32 500 552 108 980 255 998 935 -10000 860 936 115 268 231 281 948 209 766 -10000 293 330 940 570 857 421 574 481 364 -10000 959 949 372 757 306 757 752 312 137 -10000 769 303 737 260 187 695 946 723 433 -10000 980 564 605 363 776 893 558 616 603 -10000 945 23 632 820 54 677 795 616 625 -10000 629 692 585 33 674 703 304 489 949 -10000 52 903 723 746 692 232 917 933 211 -10000 367 566 364 318 607 818 424 234 605 -10000 915 305 354 829 469 447 925 188 799 -10000 387 596 946 888 751 614 539 295 299 -10000 969 902 10 739 289 923 808 28 151 -10000 537 152 546 442 182 301 258 265 762 -10000 671 288 343 199 694 391 457 947 250 -10000 415 734 423 435 696 111 53 227 784 -10000 800 992 720 76 40 419 608 182 683 -10000 619 627 278 526 453 960 772 992 86 -10000 836 623 0 21 371 4 676 964 658 -10000 258 677 64 968 62 219 587 308 299 -10000 224 823 258 449 575 526 908 585 405 -10000 593 660 663 341 36 79 50 242 293 -10000 80 761 270 460 82 133 874 559 41 -10000 169 539 257 827 222 743 873 929 523 -10000 403 167 259 377 76 160 749 448 902 -10000 290 5 276 509 342 909 193 443 552 -10000 928 326 757 405 598 765 143 833 150 -10000 980 57 636 651 219 232 88 486 918 -10000 497 765 499 464 558 377 2 973 249 -10000 515 282 55 576 464 532 575 180 363 -10000 364 958 202 876 867 738 626 474 998 -10000 568 905 231 136 80 320 525 113 263 -10000 544 823 341 402 593 289 248 928 649 -10000 933 338 757 771 671 811 610 138 31 -10000 460 185 660 628 321 350 46 944 444 -10000 71 824 884 313 938 572 685 825 382 -10000 793 750 63 112 309 360 490 435 964 -10000 78 228 800 657 708 3 806 551 738 -10000 940 612 1000 136 897 98 301 169 453 -10000 622 731 111 813 606 90 909 272 319 -10000 86 544 118 257 317 831 90 817 236 -10000 585 919 232 848 794 806 343 335 829 -10000 377 606 349 399 913 171 571 616 800 -10000 682 428 30 101 974 945 600 399 502 -10000 296 793 418 28 591 660 445 26 496 -10000 387 389 533 927 500 96 946 191 298 -10000 585 201 36 877 289 768 485 248 593 -10000 811 70 801 255 538 112 190 464 880 -10000 140 329 863 237 44 600 946 766 472 -10000 288 987 463 359 777 245 559 75 584 -10000 599 918 820 636 458 477 884 249 324 -10000 268 669 503 151 851 965 12 962 421 -10000 886 810 370 680 300 192 160 41 978 -10000 911 866 827 610 267 579 728 735 865 -10000 812 307 646 415 323 865 727 419 825 -10000 907 515 473 962 463 617 10 295 380 -10000 195 257 576 495 533 872 756 930 963 -10000 600 87 210 845 983 743 853 67 647 -10000 917 353 7 655 892 882 266 922 414 -10000 183 740 375 18 710 301 952 62 442 -10000 266 287 679 727 674 681 493 782 785 -10000 405 399 10 102 193 816 763 67 188 -10000 379 904 872 592 812 505 532 332 293 -10000 799 767 946 648 329 915 94 208 947 -10000 325 157 957 330 115 669 488 876 388 -10000 347 600 60 885 372 10 932 71 662 -10000 126 27 782 868 129 796 249 129 961 -10000 47 758 192 754 275 38 979 817 851 -10000 343 571 331 621 971 777 476 748 674 -10000 809 899 306 498 353 605 388 830 537 -10000 738 956 364 819 546 568 806 391 634 -10000 485 24 645 86 748 685 599 771 910 -10000 180 446 81 859 355 361 268 563 185 -10000 690 786 940 318 90 910 439 711 321 -10000 402 465 459 973 442 263 985 935 412 -10000 263 51 654 405 989 273 463 954 598 -10000 426 464 295 965 676 968 904 405 986 -10000 685 420 652 710 156 848 86 802 138 -10000 544 708 753 677 881 507 438 209 797 -10000 968 104 528 84 650 955 414 654 177 -10000 883 177 230 921 38 263 134 11 371 -10000 706 7 105 771 148 739 88 619 428 -10000 500 411 938 101 40 321 140 14 599 -10000 769 211 579 855 310 475 194 796 195 -10000 292 516 654 968 875 866 394 544 637 -10000 356 145 384 307 242 837 335 95 863 -10000 342 354 470 826 726 878 987 660 800 -10000 767 658 978 534 588 387 297 231 130 -10000 88 21 710 369 618 685 551 520 677 -10000 73 398 733 465 628 452 106 179 482 -10000 131 908 760 799 67 598 274 260 796 -10000 481 617 828 798 996 323 657 858 158 -10000 701 692 978 258 527 187 524 639 326 -10000 348 290 514 805 91 926 644 230 188 -10000 79 946 505 743 681 936 190 474 934 -10000 843 150 316 559 631 261 458 868 685 -10000 193 793 226 49 488 768 853 955 301 -10000 205 459 596 58 816 18 367 744 981 -10000 238 33 698 381 183 602 418 65 236 -10000 811 797 577 102 538 447 403 444 379 -10000 837 971 600 411 389 971 962 376 357 -10000 452 154 338 712 682 676 785 945 194 -10000 310 679 608 871 620 687 724 220 134 -10000 632 150 799 565 737 689 170 207 45 -10000 14 189 90 397 287 917 307 108 806 -10000 143 730 654 241 266 401 526 921 4 -10000 605 264 55 155 939 701 690 305 628 -10000 415 26 454 957 161 334 187 629 402 -10000 63 253 610 926 670 625 601 943 11 -10000 310 649 405 751 100 358 139 32 3 -10000 808 256 663 357 994 725 640 522 117 -10000 969 618 817 528 267 975 47 534 291 -10000 996 941 661 798 722 636 701 991 106 -10000 241 5 42 477 245 775 773 625 591 -10000 443 238 944 397 908 720 259 554 763 -10000 332 237 839 679 166 929 480 234 416 -10000 748 413 366 515 22 530 625 75 63 -10000 789 656 197 145 128 99 620 704 58 -10000 530 794 202 273 724 41 956 798 201 -10000 360 503 723 593 121 214 415 298 367 -10000 650 928 97 805 461 199 950 43 679 -10000 989 697 970 220 5 815 346 916 628 -10000 765 568 582 330 894 230 650 206 865 -10000 734 446 138 485 471 991 531 119 78 -10000 393 203 321 395 750 634 400 280 223 -10000 802 246 336 600 995 171 254 492 113 -10000 993 419 160 353 267 413 573 479 823 -10000 670 105 823 362 489 965 826 96 289 -10000 695 401 876 118 749 9 446 122 1 -10000 454 428 778 515 327 127 287 45 156 -10000 277 677 575 415 230 219 324 243 510 -10000 821 212 232 919 958 314 193 398 339 -10000 774 927 394 573 176 432 850 810 271 -10000 64 420 574 969 819 40 320 543 988 -10000 712 942 387 70 129 211 245 990 147 -10000 321 292 31 875 675 150 121 721 898 -10000 424 509 850 565 59 54 290 545 690 -10000 491 16 78 354 936 326 573 679 26 -10000 65 159 284 948 748 688 747 282 904 -10000 505 688 153 449 464 397 677 560 885 -10000 998 272 175 516 854 256 658 643 811 -10000 608 944 450 473 55 276 718 665 912 -10000 410 450 712 520 618 1 640 653 36 -10000 671 858 795 275 471 974 949 997 991 -10000 984 488 767 4 400 719 946 238 559 -10000 419 380 266 969 41 533 560 251 819 -10000 797 69 963 37 455 940 899 937 942 -10000 925 286 674 70 609 419 62 546 962 -10000 20 747 680 680 313 563 953 703 473 -10000 532 399 212 682 8 769 794 165 378 -10000 78 363 76 494 977 380 91 433 490 -10000 904 741 364 962 123 33 511 141 148 -10000 673 669 20 381 205 311 231 169 519 -10000 539 517 201 354 927 525 499 568 119 -10000 474 448 888 207 674 179 960 963 345 -10000 577 520 368 590 615 460 365 560 59 -10000 90 892 791 939 581 913 510 597 600 -10000 759 403 402 489 894 159 165 211 107 -10000 39 505 741 603 829 405 426 772 949 -10000 95 75 480 14 943 784 704 364 797 -10000 221 48 785 941 710 663 837 873 948 -10000 576 865 485 12 387 404 217 92 584 -10000 189 134 496 752 863 182 513 619 414 -10000 1 360 747 226 62 550 119 906 186 -10000 190 643 774 732 479 187 198 454 829 -10000 618 966 298 93 43 58 855 427 801 -10000 604 678 584 422 1 814 476 948 330 -10000 967 718 957 487 509 582 247 534 721 -10000 780 366 528 829 153 177 74 429 204 -10000 814 828 71 549 868 266 394 855 380 -10000 709 222 827 265 441 583 680 717 922 -10000 126 596 700 40 643 887 610 727 170 -10000 243 168 340 114 663 21 802 665 775 -10000 839 708 980 836 280 24 971 945 274 -10000 301 47 70 613 970 382 762 675 881 -10000 777 916 674 551 497 979 511 398 199 -10000 125 844 5 832 153 739 85 135 74 -10000 609 447 233 891 524 729 553 191 703 -10000 465 39 655 692 782 163 562 386 416 -10000 809 291 321 702 744 815 218 845 936 -10000 724 608 161 45 161 258 703 409 856 -10000 755 603 220 9 49 91 985 479 832 -10000 155 574 242 379 298 763 697 82 210 -10000 388 287 783 999 428 625 887 942 687 -10000 105 403 535 523 600 620 211 412 141 -10000 693 999 554 26 428 361 576 273 527 -10000 71 197 936 543 176 71 996 196 497 -10000 801 596 352 228 131 114 796 427 184 -10000 4 982 932 606 343 380 468 325 115 -10000 367 432 482 699 315 580 413 902 230 -10000 438 920 614 517 468 915 341 622 596 -10000 709 110 768 699 424 943 993 295 399 -10000 700 407 369 384 719 532 128 473 753 -10000 137 662 132 845 631 832 838 84 51 -10000 456 189 318 257 828 561 65 64 878 -10000 813 512 935 275 775 361 416 658 602 -10000 658 168 573 358 670 417 911 489 668 -10000 859 215 499 376 862 244 332 935 912 -10000 732 47 545 84 628 941 916 498 185 -10000 827 540 32 267 31 722 427 405 66 -10000 607 806 139 261 825 533 52 853 322 -10000 37 500 336 873 677 267 649 472 523 -10000 305 609 829 108 674 900 859 854 138 -10000 957 85 196 43 289 72 891 335 539 -10000 280 124 918 15 378 855 534 322 450 -10000 728 500 341 953 879 251 821 653 38 -10000 515 962 374 238 729 828 174 54 751 -10000 524 38 201 115 426 791 903 631 687 -10000 926 877 370 415 216 697 111 217 844 -10000 335 296 626 805 977 232 700 222 680 -10000 817 819 455 184 593 658 908 662 932 -10000 260 101 482 639 761 829 521 89 597 -10000 6 313 603 589 446 684 46 261 737 -10000 471 579 858 376 24 850 404 941 726 -10000 154 163 624 975 348 594 920 656 132 -10000 650 833 14 908 95 924 689 34 40 -10000 670 133 613 190 549 951 479 441 406 -10000 644 985 618 552 392 327 194 943 576 -10000 285 930 830 986 395 307 85 181 44 -10000 731 276 80 290 189 801 614 814 0 -10000 263 543 515 818 275 619 734 356 894 -10000 239 88 811 540 560 659 498 612 6 -10000 800 773 373 656 443 790 755 144 443 -10000 325 34 701 682 592 510 818 359 443 -10000 832 924 128 853 278 886 890 727 876 -10000 621 177 289 770 229 477 674 828 263 -10000 714 399 744 404 27 580 908 226 533 -10000 488 404 145 709 933 348 544 191 422 -10000 832 636 161 77 825 767 44 249 201 -10000 378 129 771 642 172 887 613 868 514 -10000 66 675 772 371 865 884 980 509 751 -10000 315 97 563 67 880 82 385 938 189 -10000 586 98 853 329 936 214 81 443 410 -10000 863 525 731 217 132 220 461 400 758 -10000 89 701 972 83 708 997 117 163 236 -10000 279 336 901 306 840 69 888 985 115 -10000 123 407 876 598 435 916 582 83 919 -10000 465 724 347 92 729 69 417 726 997 -10000 311 951 103 534 40 383 892 174 283 -10000 925 318 660 503 184 437 827 432 758 -10000 353 992 318 736 49 129 479 555 974 -10000 968 934 901 356 457 378 723 728 31 -10000 756 542 333 875 368 296 439 678 459 -10000 852 30 83 554 385 400 628 394 669 -10000 482 263 642 894 582 443 619 552 487 -10000 230 174 916 494 410 290 800 239 761 -10000 934 714 991 552 560 743 372 360 872 -10000 680 603 941 47 960 90 290 291 493 -10000 4 327 310 427 40 664 850 771 638 -10000 670 615 829 710 475 892 365 403 456 -10000 237 223 448 648 408 203 641 895 557 -10000 848 699 459 582 803 831 456 277 520 -10000 78 110 86 982 390 676 922 426 594 -10000 523 43 849 930 154 86 837 165 806 -10000 962 781 767 664 547 343 949 919 704 -10000 224 827 449 146 330 400 460 180 120 -10000 163 199 168 905 426 838 224 592 930 -10000 974 614 370 10 127 323 406 212 78 -10000 63 166 10 439 209 309 430 596 619 -10000 487 237 503 777 148 647 738 507 328 -10000 974 785 754 289 6 798 503 605 687 -10000 613 442 792 251 171 881 712 183 886 -10000 43 720 992 751 794 399 548 694 839 -10000 691 503 6 753 465 712 381 580 951 -10000 552 980 372 415 742 398 864 602 751 -10000 906 549 268 940 158 242 800 43 232 -10000 141 725 782 190 889 387 206 581 672 -10000 462 63 606 832 886 457 505 190 870 -10000 943 199 98 85 805 829 757 953 36 -10000 776 557 35 59 315 818 683 254 95 -10000 414 618 584 412 966 319 463 191 960 -10000 526 692 416 784 782 28 141 3 491 -10000 222 57 843 620 197 418 250 994 584 -10000 721 759 740 416 178 346 260 175 814 -10000 961 570 724 587 122 655 434 813 434 -10000 930 547 517 203 497 862 351 27 100 -10000 609 394 380 627 829 294 901 729 251 -10000 666 81 30 301 289 815 454 290 863 -10000 506 892 266 157 283 233 893 796 818 -10000 314 288 597 241 80 60 457 357 722 -10000 522 368 599 884 359 895 603 380 6 -10000 655 423 848 815 559 58 325 947 583 -10000 656 192 895 488 209 851 609 539 759 -10000 477 466 478 303 140 742 113 220 290 -10000 888 444 417 518 856 62 110 116 340 -10000 521 123 140 869 89 88 930 921 152 -10000 225 124 317 101 347 423 979 369 437 -10000 221 692 957 740 226 372 45 919 468 -10000 777 371 369 253 284 347 701 562 63 -10000 297 329 254 15 186 127 870 664 821 -10000 522 739 130 764 966 283 559 510 148 -10000 114 438 286 193 260 238 77 832 466 -10000 739 438 29 1000 982 465 344 581 918 -10000 154 423 776 339 758 515 108 374 911 -10000 944 116 706 537 652 159 36 992 487 -10000 677 715 596 795 425 122 139 555 295 -10000 185 29 176 676 725 558 637 886 401 -10000 557 63 497 622 524 844 169 581 249 -10000 767 992 870 655 407 430 269 577 127 -10000 408 137 880 87 864 660 111 933 927 -10000 62 458 173 928 232 63 95 398 576 -10000 230 93 218 122 826 919 457 555 127 -10000 393 722 987 10 339 371 522 488 726 -10000 721 561 753 873 215 282 550 392 501 -10000 812 98 711 668 120 99 881 294 782 -10000 965 87 290 940 198 542 415 258 308 -10000 335 37 287 681 645 607 777 361 137 -10000 686 965 639 569 512 462 729 794 305 -10000 0 487 765 682 220 841 527 394 400 -10000 327 838 684 820 209 360 734 783 112 -10000 420 279 911 682 952 625 784 98 276 -10000 925 805 865 538 983 614 181 103 630 -10000 170 724 535 985 493 933 554 474 837 -10000 877 478 730 336 991 987 156 19 837 -10000 663 486 118 1000 567 185 472 853 600 -10000 99 335 973 189 216 226 222 581 704 -10000 593 78 743 454 65 897 915 163 792 -10000 691 929 146 584 892 45 503 81 106 -10000 428 139 773 994 637 32 436 766 857 -10000 906 299 774 574 164 340 164 198 678 -10000 909 421 766 147 581 838 423 214 200 -10000 229 216 46 388 351 492 435 72 659 -10000 500 519 341 315 353 262 685 460 980 -10000 759 207 690 137 881 949 178 166 207 -10000 699 955 894 989 742 640 471 357 461 -10000 749 497 162 886 747 995 437 87 867 -10000 202 334 261 579 831 611 945 735 818 -10000 913 536 861 129 862 52 229 311 394 -10000 702 364 970 804 521 561 413 767 954 -10000 52 95 430 621 534 141 849 417 266 -10000 355 418 452 858 680 639 56 86 750 -10000 866 893 515 457 675 638 921 727 256 -10000 963 676 985 348 689 935 480 734 393 -10000 554 201 934 395 54 20 973 338 39 -10000 973 175 566 241 842 810 618 531 63 -10000 56 863 727 459 805 309 911 490 557 -10000 626 674 606 396 53 174 742 302 67 -10000 533 700 854 488 110 765 755 444 261 -10000 248 925 148 290 641 419 745 702 695 -10000 467 132 531 788 930 605 573 271 852 -10000 115 478 588 726 326 150 669 996 149 -10000 538 755 822 678 182 18 922 322 746 -10000 999 924 538 552 915 942 503 940 947 -10000 276 843 89 451 726 376 991 866 656 -10000 362 397 400 309 36 984 983 31 298 -10000 148 74 756 899 271 609 405 914 943 -10000 296 528 152 450 94 608 487 38 424 -10000 350 909 313 892 890 131 574 381 308 -10000 942 774 454 972 878 1000 103 768 72 -10000 25 285 101 386 171 493 748 6 502 -10000 872 6 346 520 984 329 138 223 21 -10000 783 473 225 987 422 373 943 489 406 -10000 570 105 238 610 438 959 960 733 489 -10000 872 633 936 196 102 865 938 554 988 -10000 324 64 345 495 655 471 43 402 816 -10000 725 662 302 323 157 68 120 738 7 -10000 890 538 335 191 815 658 632 339 801 -10000 368 624 94 716 108 298 248 125 257 -10000 410 688 540 500 877 355 688 863 559 -10000 431 925 33 538 412 324 375 762 883 -10000 91 183 611 336 231 500 430 111 465 -10000 473 446 616 519 958 336 652 421 586 -10000 832 5 520 334 517 372 402 580 531 -10000 357 509 770 408 446 125 992 863 293 -10000 658 810 500 106 610 912 567 809 880 -10000 627 284 994 146 880 927 378 921 624 -10000 102 427 183 552 999 370 384 703 919 -10000 545 999 931 458 857 136 236 34 583 -10000 634 808 295 405 457 179 980 398 167 -10000 486 221 267 397 973 110 763 426 645 -10000 604 747 587 465 590 274 842 58 697 -10000 465 674 430 771 856 468 922 264 844 -10000 257 148 797 342 561 517 962 445 799 -10000 157 680 235 588 446 36 765 288 153 -10000 480 26 227 969 296 52 663 765 444 -10000 431 938 843 649 454 437 806 134 322 -10000 736 546 631 282 358 27 13 877 25 -10000 509 591 742 972 128 465 773 75 781 -10000 58 277 946 643 941 435 756 764 491 -10000 400 324 335 765 174 769 805 869 115 -10000 836 64 787 26 305 799 982 356 842 -10000 673 484 85 192 836 812 390 519 399 -10000 83 371 476 15 871 626 296 321 455 -10000 132 573 791 780 193 695 971 415 535 -10000 378 716 202 199 584 133 724 385 853 -10000 171 782 26 734 766 848 57 999 595 -10000 476 468 1000 931 928 289 716 899 515 -10000 91 2 318 310 703 734 829 237 238 -10000 812 857 569 388 812 700 349 326 814 -10000 68 228 321 500 277 631 486 826 741 -10000 73 647 889 459 181 529 837 708 523 -10000 491 994 263 266 869 676 837 355 241 -10000 189 913 734 585 182 242 390 392 218 -10000 54 762 67 363 28 164 238 927 356 -10000 276 600 910 155 335 834 366 683 928 -10000 11 702 747 253 769 392 848 165 698 -10000 628 352 533 426 586 929 238 246 963 -10000 484 901 746 490 95 905 287 703 137 -10000 126 390 784 235 180 633 60 851 463 -10000 424 906 421 940 762 565 75 537 729 -10000 650 369 81 521 876 806 585 117 272 -10000 658 742 523 157 998 378 316 362 515 -10000 771 794 418 649 817 129 416 571 269 -10000 717 748 37 345 170 836 587 732 850 -10000 504 744 493 889 184 318 886 571 874 -10000 509 996 251 107 703 506 475 906 261 -10000 878 325 283 48 756 362 792 555 539 -10000 535 160 470 335 918 803 845 936 377 -10000 704 864 128 173 672 199 307 59 879 -10000 772 942 278 870 373 488 186 487 76 -10000 607 848 602 226 28 758 606 922 215 -10000 194 184 409 79 239 366 396 827 53 -10000 713 20 512 801 206 186 938 510 914 -10000 245 351 404 3 495 918 621 978 322 -10000 675 104 375 731 866 461 36 174 907 -10000 389 733 795 911 446 64 374 446 411 -10000 344 79 538 9 140 631 665 975 440 -10000 921 20 889 378 822 889 10 832 876 -10000 211 287 387 333 73 942 628 215 90 -10000 163 966 16 122 355 926 73 511 45 -10000 572 424 655 204 880 792 61 724 984 -10000 441 890 747 63 914 972 701 300 821 -10000 402 526 499 770 291 424 426 900 57 -10000 887 391 854 95 798 310 28 4 796 -10000 747 513 888 87 856 571 841 856 580 -10000 568 915 643 355 897 517 732 183 570 -10000 304 273 612 857 325 1 783 485 622 -10000 661 341 394 221 79 553 238 305 905 -10000 888 951 432 66 433 145 150 515 343 -10000 696 764 693 75 270 448 849 311 372 -10000 304 823 228 358 842 23 590 977 953 -10000 396 676 481 128 756 622 131 425 228 -10000 643 763 803 725 79 971 775 221 418 -10000 799 577 77 795 243 593 899 255 463 -10000 963 891 231 582 491 787 281 773 2 -10000 724 978 280 112 909 886 607 97 974 -10000 540 45 314 187 230 538 767 285 435 -10000 452 859 661 19 500 674 490 244 150 -10000 359 712 94 302 727 49 812 446 466 -10000 269 356 853 869 951 563 719 760 33 -10000 524 508 19 788 346 479 918 714 182 -10000 905 886 491 372 423 217 347 595 710 -10000 134 508 1000 623 507 512 449 179 166 -10000 904 937 370 571 408 926 985 122 444 -10000 475 867 866 941 975 829 276 585 257 -10000 200 868 757 356 366 811 476 586 641 -10000 793 232 101 310 71 147 951 362 900 -10000 213 312 97 562 684 86 434 206 226 -10000 705 798 971 909 145 255 506 769 865 -10000 66 552 246 113 596 280 787 324 308 -10000 702 615 675 640 530 188 170 224 90 -10000 710 442 211 629 727 89 399 941 801 -10000 981 289 737 110 391 734 982 712 878 -10000 613 32 49 696 142 835 837 196 155 -10000 212 414 718 591 979 487 336 771 665 -10000 496 921 883 271 372 585 139 778 26 -10000 218 29 86 846 507 43 484 213 523 -10000 869 861 355 542 486 511 792 215 304 -10000 686 872 153 128 523 770 712 612 70 -10000 744 71 434 244 279 878 687 107 884 -10000 917 407 320 251 742 877 185 309 258 -10000 988 122 873 636 818 515 986 527 966 -10000 50 328 462 594 734 122 212 928 869 -10000 8 866 167 94 229 108 882 210 541 -10000 737 167 381 152 994 294 159 865 486 -10000 743 507 613 800 303 5 77 263 616 -10000 238 398 842 398 628 894 405 733 22 -10000 523 903 169 209 951 21 794 630 784 -10000 753 680 52 667 959 244 395 35 628 -10000 0 962 410 501 540 632 712 529 366 -10000 318 543 656 847 249 519 871 109 996 -10000 780 286 26 763 613 653 265 323 730 -10000 299 792 896 14 595 72 886 199 106 -10000 411 647 280 484 399 586 182 381 406 -10000 989 372 242 171 990 789 923 811 378 -10000 163 493 589 510 921 604 671 158 525 -10000 870 673 238 628 778 308 767 853 997 -10000 531 479 449 632 750 717 837 703 189 -10000 119 555 868 624 436 843 785 690 803 -10000 730 135 333 381 565 139 586 546 17 -10000 542 317 690 920 101 275 506 952 585 -10000 401 114 979 317 569 780 912 521 907 -10000 894 318 255 943 199 564 269 882 218 -10000 655 859 872 234 966 587 957 62 960 -10000 764 275 255 41 112 242 167 625 289 -10000 175 617 133 913 553 890 754 697 558 -10000 785 6 46 236 99 700 292 880 693 -10000 423 540 654 956 158 703 274 969 569 -10000 975 42 809 397 308 62 868 92 414 -10000 418 782 443 816 876 657 232 582 933 -10000 966 86 835 887 810 807 678 224 956 -10000 163 143 195 861 805 100 943 862 760 -10000 730 369 236 430 948 902 690 407 409 -10000 239 1000 97 821 997 528 156 596 19 -10000 935 665 966 9 692 355 251 396 848 -10000 654 257 72 372 799 361 410 320 591 -10000 281 297 345 94 78 694 956 118 512 -10000 860 467 276 198 235 570 646 389 565 -10000 812 761 219 767 16 633 982 55 610 -10000 306 456 632 928 712 802 185 824 694 -10000 136 47 274 840 93 350 787 424 132 -10000 323 151 671 25 370 317 578 139 680 -10000 613 401 46 883 66 259 962 300 52 -10000 748 796 873 686 739 543 476 426 989 -10000 668 873 813 278 167 579 956 340 285 -10000 640 294 152 294 719 443 703 912 45 -10000 982 399 899 985 244 214 128 102 801 -10000 144 301 901 322 720 784 91 182 689 -10000 489 664 556 509 629 362 23 359 791 -10000 385 166 871 677 482 16 739 151 718 -10000 802 789 112 697 372 550 130 356 210 -10000 528 252 672 480 593 137 110 709 286 -10000 402 620 111 672 356 805 78 100 214 -10000 872 530 881 283 686 990 65 693 220 -10000 268 180 366 178 829 138 315 59 642 -10000 768 106 812 117 64 173 290 878 203 -10000 112 431 664 468 35 498 522 333 786 -10000 875 67 677 694 961 961 467 759 687 -10000 555 392 903 174 45 199 865 320 644 -10000 236 362 316 704 639 712 2 335 904 -10000 851 978 759 53 515 185 694 585 846 -10000 762 324 229 914 60 381 332 307 532 -10000 914 764 492 822 221 626 360 877 424 -10000 287 201 400 73 938 181 839 774 503 -10000 807 329 303 136 21 845 856 813 723 -10000 176 954 715 53 530 516 665 609 481 -10000 991 746 755 207 706 612 185 229 681 -10000 499 97 944 31 164 872 885 266 838 -10000 400 21 617 377 188 861 464 208 687 -10000 364 618 369 481 943 537 862 791 56 -10000 51 339 799 512 362 271 288 810 200 -10000 730 487 59 404 72 630 594 257 653 -10000 149 775 152 63 204 304 732 899 164 -10000 124 430 8 770 693 131 991 991 327 -10000 256 643 881 146 528 365 542 380 407 -10000 700 265 737 532 78 549 808 785 558 -10000 352 134 433 539 587 514 97 806 579 -10000 714 432 7 808 193 102 836 859 43 -10000 461 12 763 20 265 189 704 328 158 -10000 482 344 986 207 355 622 728 287 102 -10000 700 910 209 75 767 502 125 686 454 -10000 65 756 637 182 244 936 373 981 60 -10000 832 734 48 709 828 117 114 857 801 -10000 113 106 438 196 45 840 133 855 69 -10000 677 462 425 808 722 803 482 399 211 -10000 580 537 141 79 808 357 774 575 883 -10000 772 68 19 58 10 136 544 714 64 -10000 663 922 691 993 100 520 861 613 368 -10000 443 580 403 635 688 456 794 552 160 -10000 302 654 965 865 25 407 766 184 45 -10000 804 195 407 409 53 206 88 961 175 -10000 39 35 793 297 761 124 48 791 356 -10000 908 415 796 42 990 195 200 247 255 -10000 981 980 262 37 429 575 596 260 786 -10000 145 976 497 469 949 276 664 730 468 -10000 18 806 997 350 424 545 124 443 548 -10000 162 244 179 820 709 866 720 995 901 -10000 369 78 227 293 57 211 279 883 452 -10000 168 329 930 325 301 318 99 119 314 -10000 627 478 683 988 943 977 8 786 205 -10000 62 745 344 291 474 641 211 515 737 -10000 936 204 729 364 793 241 828 471 682 -10000 862 578 240 684 144 301 209 910 74 -10000 366 309 999 240 67 374 367 44 384 -10000 405 262 944 231 706 19 866 61 714 -10000 573 645 285 517 746 321 6 152 389 -10000 106 160 928 219 448 15 224 104 604 -10000 246 921 190 279 776 70 943 199 341 -10000 300 354 122 912 222 548 126 110 312 -10000 291 129 972 113 860 32 973 669 590 -10000 310 862 713 392 130 30 60 155 330 -10000 967 689 369 972 841 811 216 340 849 -10000 475 635 434 664 514 155 687 569 956 -10000 339 538 828 685 873 855 466 704 587 -10000 356 106 734 65 596 548 638 80 478 -10000 75 748 492 642 807 470 245 298 559 -10000 603 516 737 957 546 383 821 425 880 -10000 473 648 866 1000 880 175 717 438 753 -10000 886 75 763 210 802 938 36 26 344 -10000 109 195 943 419 447 763 212 960 826 -10000 566 771 617 703 681 368 195 771 361 -10000 585 110 985 405 802 53 665 621 602 -10000 276 266 287 409 515 929 534 204 170 -10000 401 363 232 672 316 679 982 784 407 -10000 290 90 243 986 297 269 399 862 855 -10000 310 775 555 234 286 665 993 155 151 -10000 741 568 996 590 27 891 268 409 544 -10000 105 291 87 384 546 771 323 75 865 -10000 276 607 58 704 981 589 784 957 179 -10000 162 552 292 654 302 953 303 818 260 -10000 192 709 196 275 849 54 91 223 610 -10000 895 336 37 620 834 167 640 80 463 -10000 82 646 520 663 170 726 188 884 543 -10000 789 6 347 648 379 863 111 278 568 -10000 921 838 288 416 998 60 22 424 358 -10000 872 701 841 573 267 748 7 144 837 -10000 362 517 440 701 167 254 49 360 306 -10000 993 178 447 825 541 669 909 159 411 -10000 557 691 111 147 105 925 847 144 794 -10000 604 452 579 131 891 423 27 386 86 -10000 615 916 853 595 978 125 632 924 965 -10000 876 610 325 907 910 237 660 634 410 -10000 806 370 162 438 834 138 526 96 731 -10000 614 938 732 815 35 197 658 124 475 -10000 872 219 1 766 419 834 167 900 109 -10000 199 649 678 566 358 619 208 680 512 -10000 677 87 71 256 554 309 137 142 921 -10000 229 310 468 845 154 788 572 819 411 -10000 882 538 236 451 712 124 973 982 988 -10000 343 220 242 421 72 201 730 17 845 -10000 556 449 298 35 795 147 719 644 184 -10000 722 974 607 731 872 192 806 764 31 -10000 898 827 365 607 852 499 785 395 110 -10000 624 397 641 140 330 569 644 871 860 -10000 634 229 735 178 667 587 236 229 596 -10000 425 613 558 609 562 197 526 537 692 -10000 679 965 270 801 610 881 838 675 391 -10000 832 821 656 396 711 161 646 862 241 -10000 625 232 669 339 29 899 698 4 334 -10000 451 528 931 333 49 664 184 961 268 -10000 163 64 218 858 272 484 84 167 260 -10000 126 468 793 94 833 543 195 350 627 -10000 942 262 965 195 183 246 246 233 133 -10000 4 383 600 153 764 90 482 888 225 -10000 429 439 602 783 357 342 231 385 451 -10000 603 340 371 48 760 426 196 525 926 -10000 823 253 293 68 472 971 922 267 642 -10000 128 46 823 694 397 690 863 671 43 -10000 634 559 899 985 623 612 538 397 622 -10000 242 497 285 95 626 421 754 81 164 -10000 776 746 582 512 314 652 712 946 521 -10000 764 776 474 137 948 697 54 145 626 -10000 244 596 370 84 912 297 429 760 551 -10000 816 323 504 967 380 495 289 200 74 -10000 831 497 751 581 143 139 202 580 930 -10000 905 919 599 853 573 474 69 507 994 -10000 792 578 147 718 495 274 491 414 194 -10000 484 69 648 982 227 990 636 732 515 -10000 631 632 810 616 185 404 204 312 723 -10000 545 844 536 917 592 16 704 731 198 -10000 750 820 959 540 186 521 732 407 148 -10000 828 838 376 638 21 728 183 894 17 -10000 264 902 864 471 46 455 982 57 443 -10000 269 218 427 177 677 635 566 407 667 -10000 319 797 172 818 502 100 155 224 46 -10000 856 939 302 741 355 158 408 271 167 -10000 312 173 96 495 210 699 766 820 645 -10000 680 588 919 354 290 418 632 499 381 -10000 289 392 581 109 874 206 909 88 147 -10000 781 144 578 570 317 872 215 784 894 -10000 187 505 663 788 300 743 12 141 986 -10000 423 541 319 200 836 113 231 614 38 -10000 303 419 853 195 865 866 123 941 761 -10000 677 695 386 38 443 560 569 261 570 -10000 831 283 941 998 676 474 352 997 56 -10000 194 246 427 348 814 928 703 99 952 -10000 917 994 893 787 650 181 331 245 652 -10000 593 986 102 366 147 492 340 59 572 -10000 246 805 690 465 202 750 184 508 51 -10000 793 434 336 49 337 533 125 893 644 -10000 679 395 492 821 22 851 192 620 877 -10000 336 984 436 887 393 980 134 834 885 -10000 466 753 883 740 424 531 587 179 556 -10000 562 582 221 430 6 898 480 193 779 -10000 911 779 266 960 238 818 488 598 551 -10000 234 493 789 227 82 500 407 660 618 -10000 352 356 511 159 673 124 36 428 31 -10000 474 854 651 666 2 798 862 891 952 -10000 983 90 262 321 290 679 117 3 405 -10000 425 936 973 694 781 812 320 909 811 -10000 520 301 471 395 57 371 275 324 253 -10000 457 482 20 505 468 606 457 814 577 -10000 289 498 164 627 472 151 977 124 511 -10000 28 167 837 408 207 822 603 492 285 -10000 957 371 161 919 530 466 60 604 824 -10000 366 595 753 92 10 381 573 426 568 -10000 486 504 408 580 159 127 675 664 582 -10000 872 4 563 31 156 110 747 625 648 -10000 902 794 564 744 382 175 848 153 975 -10000 269 937 928 379 448 854 643 583 420 -10000 802 24 344 139 570 29 469 730 490 -10000 238 237 870 648 565 306 515 100 721 -10000 734 768 349 161 721 162 46 290 800 -10000 925 200 511 143 722 234 213 325 300 -10000 711 318 930 476 193 513 628 435 1 -10000 3 946 575 445 321 187 883 177 811 -10000 119 530 915 820 471 163 804 515 325 -10000 166 327 111 48 219 325 696 72 876 -10000 204 23 850 656 128 399 14 154 562 -10000 128 878 378 317 981 395 956 885 408 -10000 95 7 758 275 668 820 695 751 868 -10000 56 868 928 622 813 216 763 614 361 -10000 110 426 96 412 400 884 648 321 370 -10000 133 485 691 982 390 281 107 796 963 -10000 796 914 854 341 869 812 155 982 824 -10000 990 406 11 58 902 425 987 711 687 -10000 943 932 978 955 636 738 243 953 980 -10000 790 498 305 539 434 721 786 149 921 -10000 944 216 702 596 571 29 130 689 535 -10000 112 881 413 990 648 551 361 904 742 -10000 36 672 272 913 818 475 280 404 20 -10000 551 228 422 168 545 466 917 724 769 -10000 872 431 494 238 964 833 632 829 726 -10000 936 895 782 102 596 89 732 72 739 -10000 356 174 889 580 607 510 501 91 689 -10000 202 412 348 335 956 466 669 393 126 -10000 805 570 48 315 612 179 727 465 494 -10000 91 375 398 726 485 567 61 822 416 -10000 970 998 287 54 435 761 246 894 355 -10000 108 19 411 302 239 940 675 579 650 -10000 528 179 174 322 574 844 362 324 778 -10000 71 772 43 930 518 552 509 237 670 -10000 51 216 884 202 645 217 912 310 702 -10000 440 436 854 987 378 892 514 836 871 -10000 344 176 183 841 327 671 860 386 614 -10000 394 150 919 165 609 296 964 610 23 -10000 175 564 953 614 539 741 409 655 600 -10000 832 469 16 428 952 693 750 499 677 -10000 842 916 522 574 630 895 79 16 731 -10000 778 563 90 14 61 775 629 389 457 -10000 416 398 466 216 27 758 582 338 372 -10000 424 487 190 392 782 315 991 468 871 -10000 739 532 312 13 574 828 731 374 836 -10000 647 196 679 167 13 72 968 413 454 -10000 77 588 885 426 706 469 385 258 318 -10000 958 3 376 247 629 418 956 192 14 -10000 849 966 38 433 617 518 875 643 404 -10000 883 319 261 226 693 285 721 653 479 -10000 753 57 95 720 8 502 665 493 6 -10000 676 633 644 836 246 471 281 961 88 -10000 882 191 427 539 451 946 121 565 235 -10000 526 602 876 94 368 200 49 878 912 -10000 701 11 568 674 936 174 439 197 855 -10000 164 83 922 477 511 178 997 536 223 -10000 297 512 91 706 161 327 330 560 509 -10000 796 286 454 666 634 917 344 286 721 -10000 32 676 11 803 403 485 183 802 450 -10000 832 620 480 797 747 108 216 22 245 -10000 64 746 918 62 194 200 526 597 848 -10000 750 295 642 101 939 173 492 821 357 -10000 806 791 799 176 166 717 618 248 88 -10000 157 253 441 68 884 5 362 936 987 -10000 782 335 739 615 22 305 344 200 402 -10000 881 51 880 96 66 406 264 65 75 -10000 719 238 439 836 270 553 784 457 530 -10000 157 542 78 859 216 829 26 239 646 -10000 253 112 847 671 0 937 977 900 420 -10000 354 642 490 424 243 724 541 448 643 -10000 402 494 580 678 27 328 194 378 257 -10000 732 979 904 256 903 880 629 162 270 -10000 257 198 624 398 297 713 193 122 600 -10000 111 355 576 471 576 613 896 406 620 -10000 521 522 199 68 808 723 250 487 428 -10000 469 439 686 927 299 968 548 503 861 -10000 80 132 323 349 400 957 796 983 617 -10000 65 353 136 668 45 731 778 785 26 -10000 503 352 804 756 283 901 39 33 401 -10000 668 386 593 86 347 637 736 403 50 -10000 102 730 587 216 864 519 357 990 913 -10000 923 857 471 912 214 878 985 581 368 -10000 909 4 366 299 415 781 568 424 266 -10000 170 967 931 587 556 910 285 540 931 -10000 359 550 255 101 81 189 111 104 702 -10000 124 775 254 25 177 128 182 441 163 -10000 878 715 385 251 347 824 208 119 877 -10000 32 482 861 776 515 329 596 859 925 -10000 634 570 321 132 754 477 652 788 817 -10000 627 636 517 378 395 311 194 79 24 -10000 865 604 258 163 208 881 127 213 789 -10000 864 994 647 777 216 971 926 270 501 -10000 908 301 316 97 405 599 539 181 743 -10000 420 246 989 88 674 26 99 424 763 -10000 185 242 538 726 655 796 693 288 730 -10000 765 130 331 310 524 823 133 342 316 -10000 789 350 985 90 119 6 364 495 660 -10000 956 269 895 196 576 83 168 445 117 -10000 329 516 954 41 702 594 788 572 186 -10000 245 892 247 931 313 234 21 335 194 -10000 231 803 866 723 86 473 76 75 365 -10000 863 9 328 613 597 477 850 665 819 -10000 561 911 625 892 249 280 485 609 520 -10000 429 32 894 734 898 706 824 639 538 -10000 90 982 475 895 534 579 4 60 724 -10000 334 641 5 488 153 641 664 15 514 -10000 23 884 352 38 704 56 630 827 301 -10000 168 824 166 101 436 842 886 147 195 -10000 799 860 535 797 781 163 238 955 957 -10000 659 187 1 570 98 524 315 617 957 -10000 536 274 265 449 82 246 91 94 144 -10000 278 325 978 437 938 29 350 33 377 -10000 951 324 423 427 197 839 751 312 429 -10000 946 399 677 8 526 828 305 831 102 -10000 894 776 762 343 69 399 232 34 619 -10000 467 723 446 798 555 350 725 870 243 -10000 724 787 290 622 766 471 47 820 969 -10000 614 692 539 744 244 873 932 306 44 -10000 314 852 495 136 911 5 357 371 591 -10000 148 870 545 827 238 454 906 50 707 -10000 183 786 86 698 999 821 33 937 398 -10000 244 458 676 506 538 342 789 612 377 -10000 935 95 199 65 525 656 592 439 783 -10000 400 891 418 653 535 881 322 562 217 -10000 590 484 947 512 766 219 1 865 502 -10000 717 965 717 401 148 417 654 549 88 -10000 835 175 804 18 428 714 839 38 382 -10000 903 921 986 853 821 680 468 291 452 -10000 830 229 103 372 411 930 147 457 899 -10000 19 693 702 630 994 787 636 670 812 -10000 563 630 977 667 731 52 781 902 799 -10000 165 667 528 785 128 309 623 302 819 -10000 203 558 231 532 156 19 64 765 441 -10000 513 433 381 199 726 600 949 240 986 -10000 286 461 436 14 330 376 628 506 470 -10000 423 344 870 129 195 975 102 174 272 -10000 601 23 937 821 175 228 837 142 48 -10000 839 822 591 290 410 576 947 955 683 -10000 202 888 72 107 796 224 938 428 337 -10000 201 957 469 252 560 343 106 404 85 -10000 488 849 298 335 576 250 181 895 135 -10000 619 322 892 165 898 701 618 404 348 -10000 99 826 907 18 137 419 867 43 538 -10000 958 668 11 11 567 843 236 463 695 -10000 561 951 316 337 122 727 48 747 879 -10000 943 172 450 185 152 296 294 893 204 -10000 275 839 338 586 340 337 92 529 699 -10000 534 661 626 557 280 261 611 706 526 -10000 168 480 791 523 963 107 412 449 605 -10000 785 801 946 294 583 54 243 721 257 -10000 603 266 133 666 329 767 810 379 586 -10000 660 918 364 95 827 624 652 625 940 -10000 473 805 135 808 689 671 66 276 86 -10000 618 732 410 542 566 614 27 818 590 -10000 98 442 870 758 391 925 991 127 426 -10000 78 204 518 409 648 441 777 168 563 -10000 593 697 356 553 94 512 685 829 364 -10000 99 341 331 909 665 791 80 506 706 -10000 945 639 191 454 97 271 959 989 994 -10000 627 48 463 366 208 472 381 740 743 -10000 30 442 442 309 289 211 574 109 311 -10000 641 125 450 333 421 564 856 498 949 -10000 946 315 522 404 374 176 846 538 579 -10000 773 824 314 778 276 480 180 235 286 -10000 940 605 780 169 556 18 620 522 104 -10000 53 628 371 877 912 52 361 1000 113 -10000 748 948 827 651 551 931 505 693 654 -10000 510 162 108 557 590 644 769 550 730 -10000 823 928 954 469 211 241 239 596 55 -10000 172 835 460 567 46 529 983 735 276 -10000 872 93 663 411 699 298 164 136 107 -10000 783 928 586 250 955 652 158 121 658 -10000 827 770 357 479 801 865 974 562 589 -10000 983 607 818 591 323 284 498 415 460 -10000 342 252 520 822 708 868 536 328 798 -10000 720 416 641 57 628 168 296 226 239 -10000 327 656 881 302 608 207 708 274 341 -10000 750 176 136 956 773 528 789 793 422 -10000 156 887 377 297 131 110 809 887 676 -10000 565 4 751 179 543 957 871 340 194 -10000 660 744 790 763 285 189 462 815 716 -10000 963 704 464 948 52 902 599 87 659 -10000 491 719 691 331 771 309 25 34 56 -10000 179 762 934 654 652 684 25 941 838 -10000 114 188 681 261 392 876 497 231 321 -10000 182 662 44 824 447 505 346 547 390 -10000 438 400 840 263 619 956 892 701 487 -10000 0 602 516 733 726 409 124 134 242 -10000 243 497 247 312 222 11 134 410 342 -10000 492 112 110 325 681 509 459 832 761 -10000 241 146 690 38 500 494 801 854 977 -10000 219 474 287 986 347 488 42 180 692 -10000 982 923 192 215 991 763 369 701 555 -10000 614 215 62 87 806 618 623 843 163 -10000 157 843 759 791 733 58 840 418 274 -10000 529 544 464 492 526 948 818 313 280 -10000 985 325 502 480 476 900 267 508 728 -10000 316 774 627 112 591 950 456 613 17 -10000 270 327 765 489 657 723 463 328 153 -10000 189 510 183 285 960 517 591 11 393 -10000 15 762 387 597 858 43 536 733 381 -10000 37 772 825 614 989 527 785 784 909 -10000 691 835 271 240 493 815 456 22 267 -10000 282 52 664 431 988 102 454 922 814 -10000 719 67 372 588 244 499 428 490 288 -10000 251 355 16 448 100 213 994 764 396 -10000 878 335 52 442 518 505 44 241 914 -10000 734 417 347 978 668 253 277 83 472 -10000 727 642 576 904 778 459 31 30 742 -10000 358 17 617 678 292 994 90 21 349 -10000 485 77 315 902 812 8 506 622 565 -10000 838 203 256 825 70 285 205 600 128 -10000 391 537 927 835 502 963 299 655 180 -10000 938 849 620 129 667 416 945 964 332 -10000 190 434 403 779 319 680 619 764 281 -10000 545 693 333 348 169 14 62 511 80 -10000 945 892 471 464 211 748 607 71 936 -10000 908 918 749 463 375 620 406 734 589 -10000 190 642 454 140 556 863 89 498 579 -10000 113 286 827 608 94 77 355 421 424 -10000 642 668 167 36 968 788 431 720 294 -10000 664 860 249 520 189 327 715 908 935 -10000 225 56 204 862 628 253 578 504 279 -10000 426 932 207 691 982 933 86 260 577 -10000 118 521 10 869 907 411 103 635 132 -10000 507 385 998 519 630 997 126 462 627 -10000 724 948 10 448 443 947 465 944 477 -10000 289 164 991 975 802 138 504 560 258 -10000 489 565 234 225 333 796 376 348 77 -10000 430 896 871 600 665 871 828 215 597 -10000 23 783 444 824 309 67 694 106 825 -10000 877 636 371 428 718 552 563 340 519 -10000 904 129 492 497 104 525 896 400 817 -10000 672 880 122 120 317 371 521 303 969 -10000 474 671 820 111 103 775 494 932 78 -10000 534 421 4 285 872 565 632 343 680 -10000 533 793 468 796 922 801 203 438 669 -10000 152 35 880 564 800 201 607 719 34 -10000 164 10 296 547 828 780 873 540 101 -10000 704 53 767 19 79 880 772 259 248 -10000 844 646 946 878 982 577 167 997 851 -10000 985 696 618 556 390 318 727 295 353 -10000 364 414 53 359 905 547 464 94 536 -10000 546 791 423 427 54 561 852 86 53 -10000 710 283 615 6 297 899 561 482 413 -10000 726 838 784 730 905 755 71 132 825 -10000 519 792 41 500 762 771 669 768 765 -10000 679 847 798 870 751 532 954 4 883 -10000 956 786 719 596 785 445 833 912 679 -10000 609 323 848 798 8 27 262 848 604 -10000 56 924 664 793 14 605 462 322 160 -10000 519 996 19 793 544 513 375 73 122 -10000 425 386 509 508 542 65 811 785 924 -10000 229 629 336 517 338 607 928 270 63 -10000 623 192 724 549 628 504 38 274 4 -10000 529 691 56 998 462 785 373 782 592 -10000 412 481 469 964 274 448 121 780 81 -10000 734 974 559 338 150 212 781 650 284 -10000 635 210 517 604 296 863 269 51 935 -10000 515 176 752 427 563 253 53 225 523 -10000 998 325 658 560 318 65 161 442 145 -10000 918 173 50 497 260 931 154 477 47 -10000 22 962 523 724 253 434 544 115 750 -10000 762 253 245 635 814 552 763 162 590 -10000 56 479 129 617 167 802 22 290 999 -10000 87 250 565 311 268 398 585 340 451 -10000 500 316 837 935 300 405 805 625 196 -10000 598 349 135 839 45 755 414 389 848 -10000 483 390 925 462 312 572 803 10 11 -10000 497 962 644 540 456 116 686 84 479 -10000 506 59 508 339 671 915 346 827 351 -10000 799 482 0 586 720 604 837 133 649 -10000 846 870 830 806 343 49 728 999 903 -10000 239 127 950 258 281 282 309 414 647 -10000 51 364 719 404 159 15 808 438 223 -10000 348 526 377 146 151 562 892 246 850 -10000 118 632 733 772 58 934 39 34 984 -10000 117 428 100 174 470 991 306 771 458 -10000 308 707 151 522 182 319 790 783 786 -10000 109 204 788 445 542 236 115 5 614 -10000 294 206 482 682 835 351 75 331 74 -10000 876 548 511 940 470 642 886 513 246 -10000 964 227 814 88 723 606 423 751 535 -10000 545 242 819 510 400 389 484 672 196 -10000 74 435 129 593 693 224 44 787 398 -10000 267 1 185 566 49 103 713 611 138 -10000 315 293 153 881 802 808 85 34 410 -10000 965 176 274 195 533 249 537 392 705 -10000 298 653 915 969 104 630 994 849 214 -10000 243 403 205 552 469 623 846 474 687 -10000 797 56 221 951 929 435 645 834 549 -10000 752 226 451 897 734 409 125 643 532 -10000 971 523 919 555 467 603 993 796 459 -10000 527 322 269 807 278 18 650 533 959 -10000 747 976 124 413 460 447 205 359 475 -10000 260 230 82 329 971 475 494 569 172 -10000 889 33 935 559 36 764 85 941 27 -10000 832 130 280 256 232 99 144 787 745 -10000 273 640 935 226 318 707 689 948 192 -10000 689 927 668 582 31 161 749 527 63 -10000 318 840 557 101 121 460 885 586 61 -10000 322 292 701 823 950 672 42 439 298 -10000 981 418 480 867 998 48 636 239 188 -10000 32 705 375 234 291 208 755 931 290 -10000 746 50 462 734 141 281 861 637 358 -10000 649 312 719 298 645 821 365 404 359 -10000 650 311 212 306 790 930 507 703 797 -10000 367 13 709 607 934 983 181 61 242 -10000 274 697 74 398 780 468 682 134 616 -10000 438 913 941 43 222 900 440 662 160 -10000 686 249 504 646 749 527 751 390 158 -10000 759 592 538 385 224 43 358 802 108 -10000 262 334 354 902 1000 243 772 445 181 -10000 523 106 63 917 108 842 402 580 863 -10000 923 1000 474 121 493 515 612 968 161 -10000 603 74 794 208 143 773 588 332 279 -10000 536 682 731 764 12 870 678 682 111 -10000 773 714 146 0 852 798 150 776 996 -10000 338 492 172 482 677 500 86 810 599 -10000 634 348 694 490 164 615 438 584 109 -10000 367 661 849 888 14 629 135 90 879 -10000 68 12 550 871 914 812 355 848 399 -10000 819 66 363 955 822 686 449 847 758 -10000 390 806 637 966 774 116 844 372 278 -10000 953 159 388 436 280 386 704 189 320 -10000 161 522 475 687 155 940 63 744 455 -10000 521 162 597 961 985 266 715 997 82 -10000 943 351 766 780 447 434 215 806 439 -10000 970 241 698 80 928 837 408 663 921 -10000 297 612 480 180 826 121 593 690 845 -10000 72 666 571 968 237 216 983 280 102 -10000 796 469 439 541 268 500 739 760 919 -10000 872 347 955 693 138 267 262 78 480 -10000 820 341 597 704 696 807 715 587 286 -10000 582 487 159 332 151 404 687 690 293 -10000 574 569 682 57 31 249 893 411 182 -10000 783 80 612 553 571 141 559 47 762 -10000 204 857 426 725 696 404 506 446 322 -10000 107 413 971 180 164 269 687 22 581 -10000 952 632 544 278 367 601 803 979 111 -10000 60 56 208 379 229 128 900 520 880 -10000 478 429 520 72 485 555 419 53 634 -10000 244 954 645 208 855 751 166 326 542 -10000 775 300 819 297 944 334 789 597 116 -10000 387 195 703 971 692 124 513 833 213 -10000 521 668 675 150 737 922 402 292 25 -10000 861 532 680 760 673 756 371 240 963 -10000 330 695 359 801 409 266 987 635 611 -10000 291 910 551 577 248 0 101 962 922 -10000 134 967 343 380 357 516 165 146 316 -10000 883 528 305 133 865 381 635 780 519 -10000 974 941 374 481 171 777 401 314 774 -10000 435 284 308 499 706 201 737 528 887 -10000 158 224 51 921 896 446 569 219 973 -10000 607 976 576 999 231 243 74 873 773 -10000 46 251 632 991 917 492 177 127 529 -10000 94 771 212 894 865 619 355 868 185 -10000 879 488 80 450 173 964 919 554 197 -10000 515 324 754 661 178 826 574 31 118 -10000 153 103 953 100 37 77 540 344 647 -10000 714 706 435 474 831 601 540 995 779 -10000 341 942 912 153 749 336 98 251 139 -10000 402 644 739 604 363 315 57 849 427 -10000 824 66 441 897 969 951 332 626 540 -10000 893 202 623 751 378 641 594 247 12 -10000 26 267 724 10 575 544 515 487 321 -10000 78 583 28 403 82 740 980 626 191 -10000 437 457 557 613 643 509 533 419 632 -10000 279 316 584 690 911 344 590 592 574 -10000 432 761 107 361 113 968 569 876 975 -10000 837 292 275 606 187 860 627 66 436 -10000 605 295 163 785 24 111 302 289 182 -10000 754 825 548 983 401 696 20 704 880 -10000 253 199 138 222 427 804 415 968 736 -10000 350 580 655 701 978 263 496 792 60 -10000 150 465 865 802 71 954 908 440 782 -10000 280 280 431 68 860 533 426 609 229 -10000 304 56 670 669 13 260 11 810 701 -10000 169 271 1 717 74 597 30 372 778 -10000 829 771 84 736 368 7 205 625 825 -10000 286 676 292 815 612 913 622 653 842 -10000 967 877 54 419 23 549 838 259 937 -10000 985 224 612 460 202 167 789 660 583 -10000 575 914 219 374 834 23 906 75 511 -10000 402 528 485 807 725 329 213 100 967 -10000 927 687 633 483 52 729 902 502 662 -10000 842 54 719 930 19 129 68 158 31 -10000 111 745 985 173 312 737 941 87 968 -10000 250 48 382 844 30 660 471 992 737 -10000 582 710 343 325 78 825 274 324 930 -10000 744 108 944 202 96 285 820 242 975 -10000 463 581 145 941 930 208 927 120 898 -10000 310 805 627 187 271 482 805 938 238 -10000 356 902 167 400 928 700 674 899 934 -10000 231 908 586 116 395 540 369 33 583 -10000 452 34 821 985 190 228 632 748 829 -10000 905 230 151 635 10 73 693 6 940 -10000 134 384 318 654 622 752 791 563 507 -10000 83 797 654 353 825 349 530 340 253 -10000 481 216 482 994 983 544 733 405 339 -10000 93 650 457 726 975 759 947 25 720 -10000 633 250 644 256 112 982 856 874 529 -10000 95 487 873 7 537 681 833 39 997 -10000 295 763 2 286 562 292 762 440 25 -10000 928 651 352 11 683 416 146 424 114 -10000 554 361 11 538 443 958 684 32 859 -10000 286 973 460 460 511 421 974 904 373 -10000 343 67 136 816 444 663 60 154 855 -10000 469 925 978 530 916 782 412 353 753 -10000 533 632 218 584 442 462 821 447 461 -10000 395 199 164 551 736 843 623 321 840 -10000 45 886 694 927 656 599 615 573 780 -10000 2 383 812 33 231 295 249 247 730 -10000 729 335 475 987 844 723 783 115 848 -10000 525 249 617 242 682 39 761 320 739 -10000 875 692 598 459 967 560 276 825 980 -10000 84 481 35 279 153 769 755 140 931 -10000 632 203 133 494 176 398 232 454 328 -10000 358 38 496 59 752 592 443 796 126 -10000 821 242 708 632 885 277 793 347 51 -10000 571 529 424 286 194 22 421 496 812 -10000 639 212 56 244 462 483 654 189 2 -10000 997 7 980 189 710 269 644 633 197 -10000 597 342 692 724 227 94 679 535 829 -10000 554 522 218 132 930 370 371 339 781 -10000 890 48 995 991 443 394 248 143 997 -10000 374 16 34 641 639 892 289 370 761 -10000 896 463 570 295 837 823 205 974 531 -10000 967 411 665 479 670 212 598 425 387 -10000 800 851 772 461 407 214 735 774 102 -10000 746 374 518 159 328 300 128 590 934 -10000 720 468 713 66 443 827 84 904 230 -10000 619 819 846 326 732 409 777 19 589 -10000 23 706 762 233 62 71 894 776 43 -10000 677 0 354 35 808 248 203 230 122 -10000 526 258 342 407 171 147 37 723 986 -10000 549 959 34 424 759 70 224 503 69 -10000 706 207 129 290 321 864 707 270 550 -10000 800 582 451 287 313 426 368 863 294 -10000 966 243 869 340 362 617 509 98 860 -10000 565 309 174 916 808 28 598 490 533 -10000 952 218 645 233 681 906 956 984 963 -10000 930 763 48 356 159 762 407 891 297 -10000 463 707 447 131 753 798 741 905 490 -10000 76 589 502 15 8 373 600 701 289 -10000 35 698 193 106 275 18 390 942 886 -10000 540 497 1000 796 450 643 990 405 399 -10000 154 855 724 561 159 365 373 745 373 -10000 763 148 532 611 538 192 86 587 126 -10000 688 732 166 354 834 276 285 679 607 -10000 837 198 386 306 290 724 436 31 424 -10000 255 616 350 187 403 314 858 395 393 -10000 291 594 329 137 547 375 420 161 21 -10000 333 556 478 746 761 673 807 129 160 -10000 288 979 830 381 454 247 393 672 869 -10000 435 100 785 28 880 229 255 214 542 -10000 634 926 70 447 331 71 944 892 352 -10000 644 474 295 149 841 65 454 723 252 -10000 109 995 613 158 174 907 654 239 997 -10000 834 668 836 545 966 449 846 306 309 -10000 983 570 514 643 216 860 742 727 636 -10000 905 290 321 724 966 419 314 543 831 -10000 679 787 568 24 937 196 100 978 984 -10000 632 130 421 615 572 223 335 985 696 -10000 23 24 519 143 687 855 693 19 797 -10000 905 663 962 651 488 327 985 763 421 -10000 529 300 156 734 678 852 244 534 448 -10000 956 541 308 927 890 145 211 965 323 -10000 120 397 854 23 707 285 46 989 243 -10000 189 805 708 214 766 905 120 619 512 -10000 102 943 554 209 87 706 675 405 102 -10000 546 974 141 912 662 577 599 476 786 -10000 405 460 150 250 639 967 194 670 93 -10000 911 485 429 419 543 505 697 734 87 -10000 9 563 379 310 693 158 487 38 454 -10000 648 127 378 954 985 897 573 200 815 -10000 609 386 911 7 0 907 64 886 68 -10000 275 927 404 338 621 191 275 429 41 -10000 911 636 975 520 499 849 307 475 202 -10000 470 827 656 660 227 644 521 793 660 -10000 182 309 321 580 961 666 779 153 366 -10000 663 75 810 380 197 411 10 625 979 -10000 803 579 403 291 891 773 750 958 207 -10000 961 131 615 577 792 274 104 946 140 -10000 491 399 934 87 434 612 147 613 203 -10000 342 75 711 142 566 354 256 660 373 -10000 479 824 688 311 300 534 259 363 535 -10000 393 414 391 39 610 571 579 940 675 -10000 965 619 128 734 156 95 691 442 434 -10000 166 115 507 256 582 896 149 839 470 -10000 942 91 243 805 236 657 764 867 171 -10000 481 739 920 224 480 287 501 904 839 -10000 321 377 753 641 975 973 473 361 431 -10000 796 862 668 198 868 150 102 520 641 -10000 341 280 906 687 600 796 236 641 238 -10000 922 515 863 506 71 516 77 182 662 -10000 701 314 782 843 118 119 843 6 423 -10000 112 192 970 713 759 64 585 861 100 -10000 374 79 871 372 361 6 235 239 143 -10000 87 525 491 159 909 290 520 76 73 -10000 680 9 914 458 521 461 560 774 431 -10000 640 446 427 891 636 928 716 481 602 -10000 322 124 159 27 1 772 282 112 302 -10000 6 394 880 221 715 388 521 265 228 -10000 291 868 738 23 667 373 328 937 493 -10000 845 947 276 98 687 19 480 167 492 -10000 336 427 36 817 148 611 431 568 388 -10000 773 505 747 151 141 653 637 195 77 -10000 617 332 740 411 800 740 879 448 390 -10000 443 377 386 706 338 913 518 114 842 -10000 673 179 602 731 285 302 843 865 561 -10000 794 258 608 962 450 375 509 771 653 -10000 624 278 214 500 277 862 867 708 378 -10000 351 502 57 663 524 5 442 825 78 -10000 937 451 96 552 34 761 932 511 223 -10000 398 351 980 693 510 48 728 248 286 -10000 95 326 228 672 427 401 127 321 659 -10000 950 951 703 282 314 952 752 70 456 -10000 203 881 522 429 303 218 589 175 588 -10000 971 997 394 645 677 542 108 957 329 -10000 806 670 873 440 931 248 937 993 282 -10000 469 64 842 226 522 841 418 228 955 -10000 530 951 764 561 595 608 145 943 321 -10000 207 301 349 979 128 362 894 769 782 -10000 506 658 732 452 424 734 986 862 744 -10000 665 569 48 867 839 586 376 819 256 -10000 656 636 168 659 42 11 552 492 688 -10000 448 159 900 833 489 642 368 257 519 -10000 128 580 22 696 841 763 529 807 83 -10000 638 139 667 778 89 63 67 560 914 -10000 851 496 243 756 607 2 611 551 533 -10000 890 279 326 575 575 50 665 886 807 -10000 39 135 92 841 970 534 867 216 822 -10000 228 579 432 54 255 244 129 104 903 -10000 671 352 193 78 449 361 805 30 172 -10000 495 796 854 496 667 121 1 50 176 -10000 751 558 65 641 685 632 591 560 946 -10000 33 582 976 454 616 363 586 909 58 -10000 837 957 55 434 874 924 653 437 93 -10000 404 733 968 638 239 359 613 160 137 -10000 511 520 227 163 153 323 123 189 803 -10000 618 631 263 459 110 8 43 999 277 -10000 17 486 25 899 181 875 809 134 423 -10000 872 193 949 65 643 383 733 326 701 -10000 213 525 629 530 880 226 611 654 284 -10000 631 505 368 138 606 798 149 107 387 -10000 764 240 99 90 668 316 374 93 374 -10000 113 541 528 582 172 373 626 637 288 -10000 875 602 740 652 562 566 730 221 916 -10000 523 587 867 478 597 44 817 877 689 -10000 941 952 836 649 124 996 264 112 574 -10000 273 96 761 339 184 171 838 737 452 -10000 882 372 629 168 334 420 230 390 759 -10000 480 568 737 439 432 82 738 93 785 -10000 308 512 787 563 175 832 790 383 947 -10000 537 826 736 369 433 234 352 750 885 -10000 286 392 195 591 580 100 867 678 700 -10000 859 571 545 175 759 820 328 17 626 -10000 462 790 458 989 834 602 838 669 548 -10000 535 375 97 843 527 312 109 434 193 -10000 700 869 546 749 823 499 209 711 167 -10000 698 265 399 669 159 259 198 196 299 -10000 371 553 246 774 939 355 722 448 787 -10000 866 718 785 488 771 430 883 994 558 -10000 547 889 494 439 666 976 604 519 520 -10000 590 496 474 667 483 392 843 511 271 -10000 896 696 356 544 598 366 702 431 908 -10000 314 4 679 737 509 2 922 119 845 -10000 85 21 656 592 260 901 419 345 510 -10000 602 286 542 753 989 605 450 427 133 -10000 903 288 697 566 752 365 101 759 28 -10000 24 788 920 862 68 463 26 140 8 -10000 308 817 695 356 654 191 34 136 9 -10000 724 734 385 241 705 770 932 308 184 -10000 671 760 996 268 644 902 573 929 511 -10000 605 902 892 487 85 27 982 952 617 -10000 922 674 376 674 385 51 356 550 122 -10000 606 42 665 207 390 610 547 5 230 -10000 965 837 271 444 963 151 244 952 407 -10000 497 573 428 136 548 830 994 981 449 -10000 754 227 769 182 29 846 860 93 275 -10000 275 784 460 268 851 438 820 749 196 -10000 396 684 287 349 199 645 632 953 265 -10000 491 737 684 701 10 882 845 526 526 -10000 762 794 568 366 202 346 586 17 119 -10000 211 27 94 810 548 958 812 171 575 -10000 936 109 460 792 57 174 223 188 154 -10000 840 247 917 732 833 548 909 159 739 -10000 185 715 804 417 612 565 0 724 199 -10000 259 801 13 106 353 720 997 611 163 -10000 683 833 412 188 698 861 729 83 809 -10000 41 390 628 248 733 154 429 783 766 -10000 964 72 431 583 569 507 567 855 290 -10000 903 415 47 435 493 122 660 641 470 -10000 884 718 626 541 415 44 312 135 920 -10000 674 600 302 368 462 207 565 847 898 -10000 395 848 377 437 68 722 874 39 405 -10000 515 264 7 463 643 63 802 329 410 -10000 589 690 955 380 151 143 898 670 96 -10000 612 311 54 170 768 31 937 56 603 -10000 442 284 257 902 186 492 404 181 710 -10000 210 658 145 177 618 659 43 347 599 -10000 390 23 996 80 59 49 500 181 116 -10000 891 944 327 45 264 567 248 96 860 -10000 419 5 380 927 358 724 383 90 869 -10000 911 958 876 993 424 642 798 44 554 -10000 824 979 346 310 975 564 729 498 153 -10000 120 188 496 206 903 823 580 294 59 -10000 804 194 493 400 114 784 983 109 705 -10000 845 227 96 877 979 490 204 658 88 -10000 64 356 316 615 174 824 625 177 915 -10000 165 93 383 403 871 464 800 684 226 -10000 813 48 532 24 866 373 506 563 885 -10000 645 947 276 275 667 21 665 131 949 -10000 359 570 690 444 118 791 193 390 828 -10000 39 166 511 844 950 631 123 415 117 -10000 170 538 635 946 906 988 482 31 846 -10000 210 380 352 27 260 958 188 664 94 -10000 226 302 777 383 857 708 747 274 755 -10000 640 36 884 867 540 864 892 846 90 -10000 953 987 682 64 154 84 355 378 58 -10000 523 107 846 416 502 1000 503 487 437 -10000 777 391 442 306 895 856 86 183 996 -10000 982 516 127 988 499 880 849 147 782 -10000 552 238 673 935 358 191 679 219 532 -10000 469 279 338 590 841 588 289 229 174 -10000 491 374 283 327 250 896 352 902 411 -10000 127 459 159 149 221 76 949 117 551 -10000 551 817 155 102 481 173 623 981 201 -10000 710 176 93 643 284 415 798 962 557 -10000 188 94 999 769 968 585 852 328 243 -10000 691 542 286 798 434 124 308 149 976 -10000 122 527 82 130 721 254 292 183 294 -10000 293 592 420 375 162 594 802 829 421 -10000 71 990 522 381 680 936 107 508 506 -10000 485 177 140 328 998 738 423 764 705 -10000 861 644 366 586 859 526 715 78 703 -10000 412 38 394 46 416 987 722 124 913 -10000 512 36 137 650 10 197 334 487 72 -10000 9 633 976 48 64 748 698 156 842 -10000 831 401 171 332 995 715 596 581 69 -10000 141 17 276 857 8 331 846 287 597 -10000 744 689 713 450 785 426 373 708 644 -10000 509 594 251 584 981 167 859 616 613 -10000 977 137 640 714 952 888 574 410 45 -10000 845 255 573 347 792 910 411 695 380 -10000 535 567 702 383 698 903 986 894 33 -10000 108 789 745 417 880 222 752 30 18 -10000 677 673 0 44 279 389 933 434 574 -10000 870 718 722 388 185 729 881 618 958 -10000 840 114 504 628 963 898 887 331 474 -10000 998 438 474 490 303 826 23 121 221 -10000 421 652 800 893 377 151 434 555 868 -10000 222 805 969 86 931 908 576 140 861 -10000 357 866 185 235 458 500 165 952 479 -10000 834 290 697 773 683 806 496 979 12 -10000 394 258 970 695 695 421 228 631 818 -10000 698 464 462 802 346 126 698 452 625 -10000 761 990 345 557 813 579 967 642 896 -10000 885 745 792 992 705 816 735 872 708 -10000 898 64 87 548 672 266 644 80 859 -10000 274 370 877 12 731 830 157 275 724 -10000 215 444 104 46 750 428 798 142 317 -10000 699 988 764 155 344 972 382 292 332 -10000 654 85 880 613 276 190 365 311 787 -10000 821 67 226 458 125 324 315 496 172 -10000 803 788 621 26 270 447 27 697 120 -10000 64 382 393 933 904 649 922 32 403 -10000 734 444 129 962 903 287 420 902 441 -10000 688 177 64 272 984 559 629 859 251 -10000 617 292 203 67 434 983 292 766 907 -10000 18 970 389 994 696 7 350 185 312 -10000 128 73 758 9 107 291 696 988 28 -10000 684 597 663 774 582 801 731 342 927 -10000 838 260 165 642 120 206 191 635 807 -10000 73 721 45 416 421 366 449 801 376 -10000 15 340 309 250 323 212 52 951 285 -10000 933 44 453 177 507 372 892 955 151 -10000 713 477 827 700 838 295 200 86 429 -10000 113 782 42 154 595 304 724 463 867 -10000 696 182 300 956 694 131 487 763 95 -10000 46 287 641 200 23 763 747 616 934 -10000 209 415 635 662 991 816 944 585 193 -10000 747 303 299 783 335 685 943 835 568 -10000 30 71 902 726 295 413 205 13 753 -10000 323 742 83 564 519 157 337 840 383 -10000 573 573 434 643 648 242 517 765 94 -10000 993 24 663 852 987 644 273 501 3 -10000 813 179 316 600 858 220 673 690 227 -10000 425 970 765 274 379 673 723 645 570 -10000 176 257 713 810 6 539 816 645 924 -10000 139 371 480 209 795 429 851 782 93 -10000 92 395 897 422 945 472 884 161 411 -10000 844 758 418 152 151 464 982 363 458 -10000 798 499 353 14 356 565 195 694 132 -10000 248 474 102 935 489 799 349 844 197 -10000 648 450 552 529 491 458 59 609 556 -10000 918 599 579 764 475 919 710 819 509 -10000 976 555 553 730 23 233 138 861 799 -10000 421 606 655 617 153 57 269 18 278 -10000 365 344 753 455 82 923 806 897 716 -10000 662 110 856 74 274 30 599 784 716 -10000 484 879 604 188 11 255 661 359 378 -10000 429 849 951 867 767 891 16 183 284 -10000 978 216 134 365 309 185 698 888 620 -10000 957 853 560 719 336 792 584 426 713 -10000 26 651 843 347 592 877 317 205 531 -10000 320 346 4 101 652 952 75 107 890 -10000 164 348 841 240 862 706 156 584 215 -10000 812 875 865 543 559 834 546 200 387 -10000 908 638 723 153 664 748 184 508 406 -10000 244 549 287 705 974 990 808 649 454 -10000 797 444 14 746 985 330 779 19 46 -10000 133 180 11 450 701 86 490 14 947 -10000 685 609 627 156 711 308 134 416 639 -10000 948 186 196 390 694 776 61 298 31 -10000 614 70 338 924 78 672 172 668 995 -10000 708 161 427 140 993 617 825 699 728 -10000 347 914 445 422 879 686 396 606 522 -10000 937 947 817 627 648 641 928 404 526 -10000 666 203 482 541 351 458 625 222 686 -10000 22 712 818 366 845 698 356 369 913 -10000 305 955 513 891 200 827 644 115 820 -10000 169 717 350 892 838 75 307 604 969 -10000 328 387 532 528 67 727 134 271 118 -10000 279 96 863 107 250 320 597 473 152 -10000 838 484 600 700 490 352 659 28 968 -10000 797 292 382 362 395 987 626 627 631 -10000 632 337 157 594 778 60 276 36 196 -10000 864 856 577 94 405 982 266 421 313 -10000 517 893 353 49 597 718 234 648 774 -10000 502 361 30 675 692 876 456 612 189 -10000 165 747 93 313 455 812 882 555 766 -10000 794 419 582 632 591 847 247 972 678 -10000 375 535 864 793 425 196 343 828 816 -10000 988 4 28 28 712 292 21 488 416 -10000 123 919 648 248 992 463 172 375 346 -10000 838 969 45 318 683 352 284 607 436 -10000 526 596 68 258 216 375 453 821 28 -10000 795 736 761 377 978 970 707 941 540 -10000 193 698 761 374 913 882 946 316 363 -10000 540 80 530 828 229 564 898 257 367 -10000 980 852 203 658 457 575 820 91 511 -10000 226 29 756 492 810 236 307 59 37 -10000 394 61 469 708 832 876 357 742 218 -10000 678 334 581 446 608 501 969 15 456 -10000 700 565 473 247 668 447 450 360 621 -10000 434 248 157 493 973 278 638 50 48 -10000 921 939 544 0 361 265 994 587 28 -10000 723 293 391 953 231 380 541 987 153 -10000 829 514 701 931 29 899 974 923 287 -10000 680 58 795 346 369 579 361 293 125 -10000 347 758 701 945 144 539 923 209 654 -10000 946 691 657 591 422 136 745 580 20 -10000 941 155 337 379 608 196 802 32 373 -10000 168 386 993 734 25 68 722 320 678 -10000 572 845 407 824 34 431 653 303 14 -10000 216 369 271 148 506 936 104 317 354 -10000 392 88 306 904 9 682 958 728 17 -10000 27 578 528 439 363 70 22 691 157 -10000 217 547 909 988 84 155 452 18 386 -10000 474 662 616 97 884 582 420 463 932 -10000 128 938 592 389 493 860 884 862 885 -10000 409 386 709 865 380 241 698 238 150 -10000 842 209 234 318 613 179 574 213 914 -10000 7 840 903 349 701 679 964 578 593 -10000 946 775 352 506 512 832 397 816 251 -10000 976 16 837 924 501 501 225 211 521 -10000 847 495 800 973 391 797 464 318 174 -10000 741 212 423 663 950 304 937 798 732 -10000 16 56 392 913 94 724 456 418 46 -10000 888 762 553 135 787 692 467 169 701 -10000 27 771 751 878 47 789 254 237 340 -10000 20 532 778 499 955 988 5 796 526 -10000 873 75 617 973 343 246 763 996 826 -10000 320 866 21 165 982 848 991 250 409 -10000 367 793 144 289 451 503 546 241 557 -10000 692 460 942 484 671 653 886 46 76 -10000 604 617 941 225 12 698 36 798 556 -10000 266 424 329 808 539 908 465 714 901 -10000 474 191 799 245 3 305 172 685 445 -10000 250 70 522 602 651 315 834 507 764 -10000 941 465 458 371 515 484 885 627 70 -10000 81 207 698 412 7 14 321 858 573 -10000 334 664 122 11 361 642 869 96 676 -10000 566 823 473 617 326 459 881 148 797 -10000 650 947 932 700 288 699 343 911 599 -10000 104 448 843 825 395 877 105 377 482 -10000 16 727 781 112 924 902 922 925 49 -10000 445 23 789 701 313 2 521 834 75 -10000 744 918 708 272 237 601 706 528 561 -10000 398 312 310 702 920 121 646 549 456 -10000 932 796 244 735 824 746 869 515 29 -10000 719 687 485 265 724 944 452 879 556 -10000 356 672 304 617 59 82 500 770 364 -10000 470 503 795 409 473 757 675 168 330 -10000 805 825 342 26 303 786 654 673 398 -10000 763 263 942 405 287 663 363 294 523 -10000 76 266 594 108 884 652 726 193 323 -10000 139 690 434 532 259 722 262 691 948 -10000 964 105 937 6 590 943 834 740 988 -10000 615 77 842 689 548 386 420 828 771 -10000 333 387 828 312 553 551 409 89 868 -10000 525 761 394 42 384 164 706 127 139 -10000 747 723 266 751 302 250 142 282 674 -10000 1 254 330 560 946 374 393 641 214 -10000 447 182 86 321 603 76 896 224 897 -10000 871 687 361 458 593 782 471 2 516 -10000 130 241 676 92 142 173 204 55 925 -10000 413 185 150 253 971 414 409 309 887 -10000 211 705 713 226 599 132 575 955 635 -10000 659 494 704 444 296 844 110 827 24 -10000 333 118 608 863 640 439 367 30 60 -10000 947 652 211 916 441 826 205 839 127 -10000 522 703 199 101 905 510 300 857 707 -10000 155 395 543 382 646 420 710 703 104 -10000 711 39 981 168 661 481 921 555 522 -10000 720 798 302 338 546 601 911 410 680 -10000 226 402 888 122 455 779 309 109 667 -10000 481 817 562 479 758 814 695 757 726 -10000 319 457 376 662 729 849 888 28 567 -10000 982 281 95 345 460 988 257 425 554 -10000 950 661 505 678 102 692 983 630 412 -10000 521 631 964 532 746 675 306 870 742 -10000 386 884 687 706 634 990 272 570 495 -10000 342 135 509 555 965 826 488 828 533 -10000 973 852 60 136 799 345 342 175 51 -10000 96 450 167 757 832 179 222 447 433 -10000 691 460 810 220 428 856 977 961 542 -10000 293 426 358 514 808 89 526 37 924 -10000 804 523 959 535 377 993 387 986 825 -10000 761 604 34 59 957 934 302 729 819 -10000 64 374 631 664 444 883 626 269 133 -10000 183 832 915 177 806 801 840 539 879 -10000 156 549 854 304 693 569 479 81 859 -10000 478 844 833 61 539 969 857 755 158 -10000 967 936 679 600 177 625 444 612 976 -10000 696 427 135 859 19 839 810 773 176 -10000 337 749 961 773 982 845 565 246 425 -10000 448 516 348 19 903 532 588 943 150 -10000 253 165 544 565 812 932 346 877 887 -10000 544 602 800 359 743 741 933 851 501 -10000 110 472 557 231 578 287 902 211 584 -10000 601 774 428 809 993 421 57 11 631 -10000 712 926 871 522 440 159 701 538 465 -10000 694 351 386 805 327 780 313 476 658 -10000 806 8 491 14 923 961 856 214 257 -10000 761 469 431 349 451 662 965 518 110 -10000 645 396 735 616 167 616 691 721 808 -10000 708 532 716 733 677 32 827 546 502 -10000 928 299 642 762 477 797 754 763 592 -10000 957 871 205 166 841 729 572 525 980 -10000 363 304 142 966 218 279 653 973 207 -10000 926 280 407 817 341 964 640 649 182 -10000 602 924 314 767 237 621 402 150 540 -10000 234 515 258 776 988 421 420 857 384 -10000 108 527 985 926 237 580 945 834 997 -10000 695 987 548 769 38 142 118 244 745 -10000 143 769 896 506 58 452 824 727 560 -10000 235 740 241 821 91 492 20 345 938 -10000 672 899 494 456 425 78 3 568 894 -10000 749 219 276 235 875 94 687 118 476 -10000 699 594 661 947 985 34 284 62 633 -10000 896 874 697 105 718 651 670 973 173 -10000 895 80 539 103 35 373 101 239 734 -10000 705 278 410 374 444 906 384 761 155 -10000 11 277 484 891 150 25 58 486 302 -10000 602 37 191 168 866 150 269 695 596 -10000 76 636 134 425 89 426 219 161 773 -10000 161 75 296 398 77 270 779 16 72 -10000 93 958 52 932 760 175 963 375 28 -10000 87 912 259 273 324 676 574 161 259 -10000 460 478 74 309 759 48 140 171 925 -10000 942 266 637 801 68 815 624 563 689 -10000 496 168 776 376 184 163 698 413 904 -10000 998 353 494 392 841 200 874 807 537 -10000 669 212 92 47 419 113 212 967 94 -10000 148 17 57 96 880 271 660 998 614 -10000 631 318 506 158 829 213 31 457 867 -10000 531 121 308 871 816 522 678 218 827 -10000 149 781 690 471 540 70 708 885 923 -10000 56 25 369 4 17 689 776 892 392 -10000 857 331 476 507 258 197 27 230 163 -10000 344 905 434 511 836 555 283 354 969 -10000 806 72 803 291 5 904 164 650 314 -10000 984 313 404 696 125 87 460 908 127 -10000 448 85 526 340 881 661 424 290 759 -10000 150 100 429 124 636 586 488 869 908 -10000 710 216 40 574 582 675 942 40 593 -10000 521 64 927 935 985 963 469 979 848 -10000 641 250 380 439 341 672 203 537 968 -10000 369 420 586 740 733 762 285 288 548 -10000 313 698 478 206 506 369 280 451 466 -10000 363 69 355 593 326 659 997 764 707 -10000 417 993 380 588 543 804 475 139 541 -10000 516 388 945 876 513 543 225 224 134 -10000 115 539 853 329 911 86 295 208 517 -10000 283 375 632 60 481 904 158 25 617 -10000 579 843 268 919 407 633 695 550 255 -10000 668 524 709 636 443 601 377 197 374 -10000 692 825 314 142 539 703 993 711 677 -10000 992 760 70 646 556 474 359 352 337 -10000 660 766 711 867 754 919 435 460 718 -10000 49 587 978 869 426 707 578 905 635 -10000 10 628 748 773 199 259 601 12 55 -10000 379 270 254 183 493 282 877 803 755 -10000 337 818 207 642 498 297 419 321 10 -10000 838 858 48 840 589 206 662 215 644 -10000 728 184 553 799 56 794 24 540 920 -10000 883 274 152 82 133 478 283 517 99 -10000 921 723 811 355 347 872 463 187 906 -10000 15 890 36 39 978 247 216 874 24 -10000 773 776 544 935 593 714 894 873 482 -10000 757 504 524 512 163 40 750 628 873 -10000 271 346 446 163 477 341 875 336 396 -10000 302 988 303 673 399 832 220 691 263 -10000 459 721 306 132 549 348 524 728 147 -10000 255 137 922 408 446 361 354 449 472 -10000 390 681 66 425 45 168 973 786 728 -10000 727 678 937 114 217 550 236 729 682 -10000 718 978 222 676 461 897 235 150 498 -10000 481 419 815 474 926 200 821 655 33 -10000 11 207 239 494 995 428 204 254 959 -10000 755 694 926 46 391 281 6 166 743 -10000 477 570 619 337 108 488 888 482 808 -10000 596 177 409 456 465 609 1000 665 917 -10000 220 387 641 930 664 791 553 15 497 -10000 368 953 837 660 777 124 603 822 50 -10000 162 910 609 119 461 779 778 270 295 -10000 487 926 38 863 328 152 41 472 53 -10000 384 290 530 771 99 329 90 55 0 -10000 912 569 708 821 886 437 840 286 331 -10000 893 38 745 442 252 278 133 886 215 -10000 554 124 251 295 737 720 765 605 631 -10000 897 666 58 802 554 318 174 434 730 -10000 679 791 851 539 312 583 213 644 534 -10000 629 528 199 248 814 835 897 557 1000 -10000 333 241 399 887 788 635 168 152 87 -10000 67 980 464 855 444 70 127 781 405 -10000 717 67 83 22 140 619 680 14 698 -10000 638 131 67 600 367 467 486 17 686 -10000 863 280 62 519 659 804 686 994 993 -10000 443 158 888 653 47 694 321 233 209 -10000 538 85 181 723 258 620 553 18 940 -10000 528 738 983 743 295 951 86 285 566 -10000 645 38 836 459 103 22 586 90 692 -10000 965 967 524 0 728 673 956 440 460 -10000 24 343 474 586 103 182 930 827 208 -10000 361 673 376 447 152 394 59 99 121 -10000 66 355 640 534 543 322 113 676 383 -10000 175 470 326 823 590 345 817 528 571 -10000 647 764 15 127 723 539 546 176 231 -10000 744 301 814 101 442 474 572 898 80 -10000 700 494 847 725 210 615 609 362 339 -10000 957 467 353 74 521 680 466 992 611 -10000 184 919 520 189 237 808 19 95 917 -10000 109 453 309 631 825 279 61 307 932 -10000 61 970 717 229 58 235 776 668 942 -10000 73 982 193 597 184 21 195 96 914 -10000 43 146 277 283 169 64 282 877 44 -10000 626 126 309 168 924 432 894 603 726 -10000 420 888 553 181 933 545 448 13 481 -10000 107 200 438 914 18 827 483 559 905 -10000 414 735 46 925 653 169 161 831 770 -10000 294 969 36 860 110 511 166 466 1000 -10000 752 730 406 194 676 742 364 445 698 -10000 128 996 444 496 596 224 527 146 456 -10000 236 236 0 934 241 107 629 315 749 -10000 885 937 600 803 127 820 732 497 774 -10000 196 891 283 826 188 900 583 659 992 -10000 727 988 3 615 793 19 278 863 814 -10000 934 298 436 967 863 773 721 278 671 -10000 613 879 225 120 831 316 410 623 54 -10000 661 659 334 78 181 497 525 541 87 -10000 883 406 684 945 654 974 932 817 148 -10000 958 556 915 704 586 506 364 723 963 -10000 654 559 394 787 461 960 899 639 409 -10000 402 474 185 824 743 105 896 150 753 -10000 194 40 456 62 379 243 395 366 680 -10000 789 40 692 100 915 75 493 899 64 -10000 324 888 962 658 274 978 873 813 115 -10000 588 104 775 499 740 973 374 836 944 -10000 706 678 541 560 527 929 261 634 257 -10000 678 959 436 9 989 934 453 344 616 -10000 315 523 182 185 318 29 853 552 244 -10000 457 29 192 179 652 740 424 796 957 -10000 403 321 757 48 268 231 21 707 228 -10000 605 988 93 772 907 324 385 966 548 -10000 1 750 716 334 712 503 883 728 696 -10000 529 337 783 91 99 674 631 154 463 -10000 929 444 181 370 787 677 686 872 739 -10000 979 84 635 416 435 187 969 727 155 -10000 632 659 681 254 690 803 594 300 692 -10000 961 755 14 643 86 129 948 408 690 -10000 274 689 6 730 110 63 885 152 560 -10000 411 978 809 375 669 224 931 545 457 -10000 596 151 406 466 459 295 461 77 557 -10000 643 601 328 966 655 810 752 698 889 -10000 835 176 681 864 160 571 375 911 133 -10000 66 792 155 476 937 238 57 9 917 -10000 502 457 585 729 130 175 275 990 169 -10000 206 155 344 690 85 187 288 214 927 -10000 749 91 509 749 469 145 243 412 427 -10000 83 950 718 472 659 919 42 784 309 -10000 331 787 151 875 772 989 765 115 80 -10000 624 950 359 827 891 581 994 118 262 -10000 627 402 301 588 426 88 394 385 558 -10000 288 684 182 540 663 378 623 902 19 -10000 783 977 393 493 59 455 788 915 162 -10000 865 572 299 810 70 534 516 453 113 -10000 373 261 143 1000 955 497 473 784 225 -10000 789 684 928 460 405 205 457 818 867 -10000 386 789 786 794 838 189 220 690 544 -10000 765 297 316 884 205 159 618 641 10 -10000 109 684 482 748 405 501 695 614 601 -10000 122 398 123 142 696 579 148 281 670 -10000 43 514 541 488 347 101 895 228 358 -10000 878 469 867 795 909 24 82 44 923 -10000 743 526 20 820 48 661 510 203 269 -10000 809 258 215 552 880 588 939 202 651 -10000 790 17 922 539 672 384 587 771 494 -10000 923 16 576 66 426 215 955 661 7 -10000 751 669 665 184 237 92 392 747 75 -10000 74 346 433 193 925 853 141 484 506 -10000 771 822 845 381 997 563 223 230 851 -10000 903 104 346 338 737 728 955 569 315 -10000 875 336 785 66 857 752 843 773 404 -10000 984 789 472 374 703 183 342 989 76 -10000 794 278 845 797 870 919 232 500 499 -10000 821 227 275 457 110 348 916 653 948 -10000 721 236 117 664 373 828 65 886 153 -10000 430 551 127 816 347 779 338 663 139 -10000 741 157 945 164 348 947 851 727 132 -10000 375 437 174 84 405 525 297 175 436 -10000 102 315 57 547 553 675 168 190 281 -10000 155 27 766 255 968 701 57 534 204 -10000 697 610 196 842 360 596 434 99 735 -10000 563 85 684 436 202 304 58 459 311 -10000 360 237 377 476 88 642 725 922 809 -10000 389 936 776 944 656 793 386 935 501 -10000 463 192 439 753 905 306 437 868 680 -10000 23 487 368 466 992 159 439 179 987 -10000 449 96 403 236 203 104 4 207 421 -10000 993 342 617 515 231 350 213 101 495 -10000 49 25 107 587 992 966 895 469 977 -10000 458 381 99 423 644 885 100 29 977 -10000 908 403 695 103 928 38 422 204 261 -10000 819 754 467 372 991 236 668 501 453 -10000 456 920 328 344 942 312 909 506 636 -10000 622 172 349 63 794 383 865 113 48 -10000 832 63 560 947 900 773 965 439 347 -10000 52 243 300 133 792 511 360 696 775 -10000 265 349 474 182 142 302 946 928 804 -10000 702 899 220 94 270 376 672 879 185 -10000 802 944 168 200 909 759 527 211 181 -10000 148 46 421 976 382 885 125 176 755 -10000 859 84 218 708 855 779 662 797 705 -10000 815 430 6 894 986 78 348 945 218 -10000 124 878 406 616 894 139 750 822 649 -10000 677 505 740 969 369 92 675 495 85 -10000 587 886 188 232 998 275 159 359 353 -10000 343 324 350 362 634 7 450 135 535 -10000 886 287 877 430 825 309 790 695 62 -10000 362 692 264 686 196 997 84 366 364 -10000 635 331 695 331 842 714 7 246 144 -10000 941 363 831 389 228 404 849 434 360 -10000 292 528 332 836 970 609 44 352 948 -10000 364 622 572 807 621 990 404 67 102 -10000 769 399 414 226 611 476 696 263 143 -10000 896 225 80 353 306 380 603 903 112 -10000 160 848 323 586 520 82 714 493 45 -10000 894 384 21 853 338 842 556 46 643 -10000 88 253 766 612 966 227 304 169 422 -10000 715 290 118 926 495 536 502 665 811 -10000 215 549 446 42 649 200 269 306 437 -10000 213 239 350 199 585 824 999 661 365 -10000 972 712 30 376 349 397 533 353 828 -10000 923 959 185 698 534 376 684 714 389 -10000 538 525 260 738 262 504 212 367 362 -10000 379 161 82 390 244 60 893 362 490 -10000 855 611 757 314 740 510 21 500 136 -10000 434 344 655 943 346 885 516 782 61 -10000 442 380 875 833 324 836 644 908 921 -10000 819 681 227 584 814 922 485 562 863 -10000 64 302 385 976 716 172 814 845 18 -10000 791 720 65 819 160 757 553 654 213 -10000 427 853 61 663 567 702 219 290 159 -10000 411 765 122 207 468 953 90 916 405 -10000 486 71 994 858 882 122 325 558 912 -10000 110 690 609 400 160 694 543 138 654 -10000 704 894 730 845 12 629 463 927 422 -10000 953 618 470 50 437 533 743 314 787 -10000 591 355 428 999 104 724 457 435 421 -10000 423 762 811 148 972 832 33 506 85 -10000 725 977 307 612 641 175 204 187 943 -10000 743 999 68 736 433 385 374 746 383 -10000 134 46 626 57 65 593 69 860 842 -10000 915 335 906 138 100 161 575 728 933 -10000 287 444 481 596 799 174 398 659 81 -10000 79 358 974 462 748 810 495 6 285 -10000 761 289 155 698 3 431 363 211 897 -10000 433 373 715 870 308 367 975 873 770 -10000 331 705 467 501 516 13 377 392 329 -10000 351 496 711 670 186 462 570 307 216 -10000 827 361 523 342 366 778 311 646 314 -10000 930 207 50 928 176 825 316 471 108 -10000 239 467 709 462 350 145 702 905 598 -10000 490 825 944 673 193 475 514 323 357 -10000 655 426 123 274 369 801 237 700 977 -10000 710 167 719 824 890 946 934 632 260 -10000 593 345 414 368 803 564 680 768 563 -10000 261 221 740 733 913 503 859 378 150 -10000 386 924 885 352 154 388 825 790 73 -10000 975 273 263 925 999 753 317 674 463 -10000 430 768 380 656 670 654 342 186 603 -10000 364 83 411 817 581 41 684 381 154 -10000 979 279 893 546 759 64 653 704 997 -10000 959 61 545 799 399 183 833 368 82 -10000 508 374 559 352 585 102 301 854 958 -10000 990 616 286 559 307 571 51 349 806 -10000 398 943 136 990 779 40 93 227 664 -10000 739 687 302 103 673 312 108 528 483 -10000 448 119 770 135 850 468 65 108 245 -10000 666 464 56 977 521 551 515 470 638 -10000 886 843 400 786 536 87 805 353 850 -10000 118 565 760 819 95 90 260 900 569 -10000 27 487 222 433 102 670 882 987 650 -10000 297 649 197 79 471 903 892 583 453 -10000 964 907 754 255 390 164 205 104 15 -10000 535 600 146 783 793 598 405 949 923 -10000 211 933 426 273 656 372 220 646 254 -10000 826 707 582 402 871 31 278 890 189 -10000 41 570 855 390 863 108 475 703 430 -10000 903 998 359 432 708 979 295 638 542 -10000 641 54 220 579 575 813 505 66 805 -10000 776 654 480 262 974 746 640 632 457 -10000 691 944 635 299 456 291 987 898 126 -10000 194 619 891 295 24 961 409 863 628 -10000 624 854 163 836 521 384 653 362 383 -10000 946 632 297 560 868 928 997 690 816 -10000 137 282 490 930 665 577 645 712 838 -10000 74 920 761 691 260 440 21 496 828 -10000 820 863 928 415 717 801 904 988 988 -10000 458 450 674 782 677 28 447 908 268 -10000 42 38 615 399 133 414 64 490 816 -10000 678 474 189 347 790 747 394 950 290 -10000 878 53 647 510 749 806 938 459 853 -10000 171 499 421 971 574 699 482 579 974 -10000 334 528 8 295 554 823 318 461 441 -10000 510 660 318 749 754 637 972 558 629 -10000 80 402 340 274 419 296 211 617 989 -10000 785 870 436 856 489 719 798 279 389 -10000 947 632 219 107 92 134 1 673 309 -10000 733 379 9 475 160 756 459 407 341 -10000 37 516 385 335 887 59 33 685 246 -10000 278 535 977 329 390 728 496 832 632 -10000 86 420 95 129 483 415 107 203 631 -10000 22 223 836 221 371 899 809 296 801 -10000 809 85 280 653 645 643 478 251 957 -10000 596 356 534 295 879 662 715 433 56 -10000 311 670 869 372 31 473 119 673 302 -10000 504 249 455 166 541 50 662 763 635 -10000 724 398 315 539 621 429 37 3 502 -10000 663 913 925 653 738 990 166 339 716 -10000 825 447 792 353 48 0 845 962 715 -10000 115 102 560 332 611 773 603 2 843 -10000 83 988 911 22 492 774 423 428 533 -10000 336 14 430 103 557 249 894 710 756 -10000 229 202 871 755 359 17 633 751 403 -10000 500 370 520 387 564 414 392 91 272 -10000 317 867 866 207 220 277 867 813 808 -10000 238 110 227 640 645 340 528 898 692 -10000 231 620 8 765 695 662 167 747 671 -10000 187 353 456 34 970 552 584 554 103 -10000 120 993 346 596 708 571 498 453 295 -10000 117 138 655 383 63 88 3 464 594 -10000 971 601 5 409 89 591 22 871 577 -10000 204 306 913 632 843 781 27 233 735 -10000 331 148 19 954 909 95 534 303 974 -10000 497 130 982 959 118 115 870 355 179 -10000 923 761 661 160 849 898 271 989 520 -10000 834 716 199 228 217 563 514 224 844 -10000 335 915 930 829 61 464 162 379 200 -10000 924 260 941 768 209 601 344 734 194 -10000 496 609 589 990 905 231 620 679 350 -10000 41 570 880 761 34 763 474 534 709 -10000 688 128 900 136 379 961 140 57 327 -10000 645 477 314 155 969 800 965 113 536 -10000 583 934 731 791 672 220 354 992 912 -10000 503 142 70 669 461 526 893 521 370 -10000 548 955 985 185 549 28 876 295 719 -10000 674 59 736 878 69 311 838 768 140 -10000 973 940 606 10 980 480 981 722 493 -10000 369 220 579 359 736 10 203 443 148 -10000 639 329 832 839 619 346 150 958 706 -10000 425 136 303 395 562 244 107 894 992 -10000 169 210 472 721 505 64 440 747 186 -10000 799 466 709 707 517 844 90 545 931 -10000 427 130 950 189 146 655 922 615 659 -10000 356 270 578 370 949 755 543 766 348 -10000 145 494 154 755 735 290 17 496 605 -10000 993 532 284 407 545 120 793 112 99 -10000 732 819 407 537 662 650 313 306 41 -10000 872 484 324 918 717 26 655 548 640 -10000 284 482 473 118 763 837 442 698 510 -10000 684 380 485 125 186 128 412 208 15 -10000 552 495 751 402 634 457 923 55 610 -10000 852 112 608 919 63 528 99 406 962 -10000 162 482 960 633 661 76 445 356 106 -10000 989 594 448 807 506 924 653 304 143 -10000 182 189 759 700 342 792 700 212 424 -10000 443 335 42 849 4 119 372 516 405 -10000 1000 606 171 233 545 824 57 242 937 -10000 925 656 157 571 938 943 921 594 563 -10000 308 115 387 331 659 942 903 236 5 -10000 998 748 394 430 677 887 861 134 34 -10000 398 879 747 330 762 933 674 733 444 -10000 78 527 526 742 623 536 258 822 221 -10000 699 227 863 696 499 264 243 783 545 -10000 537 472 547 347 25 658 425 184 33 -10000 991 74 917 615 293 171 760 808 684 -10000 153 812 793 9 731 397 261 244 783 -10000 260 361 994 409 250 987 731 968 328 -10000 101 91 615 405 302 964 338 523 807 -10000 827 784 446 308 760 230 803 944 224 -10000 833 915 801 276 303 505 733 346 77 -10000 235 130 52 153 420 350 395 579 211 -10000 482 623 865 274 782 130 514 866 918 -10000 289 375 485 853 783 102 74 282 125 -10000 454 783 352 157 842 679 415 69 219 -10000 285 884 284 282 953 369 16 229 243 -10000 385 268 334 846 386 819 335 250 5 -10000 297 91 946 881 16 359 133 650 967 -10000 734 330 755 23 111 860 913 106 322 -10000 506 558 915 249 214 792 808 977 409 -10000 504 512 714 172 120 836 769 468 611 -10000 489 518 452 103 947 37 261 613 925 -10000 735 448 754 389 925 171 452 707 886 -10000 397 214 377 790 198 816 792 841 591 -10000 809 973 613 234 823 728 80 247 741 -10000 455 708 535 715 570 564 614 526 237 -10000 0 6 275 984 593 780 551 167 708 -10000 358 468 900 617 707 8 539 835 127 -10000 337 6 948 935 248 933 360 261 891 -10000 427 85 778 70 390 671 67 404 239 -10000 171 371 6 336 527 292 426 358 468 -10000 571 363 237 872 203 600 645 988 42 -10000 62 447 475 513 87 710 672 819 568 -10000 708 530 420 598 746 685 43 929 784 -10000 102 744 407 354 27 743 0 719 49 -10000 977 548 908 706 883 528 44 333 182 -10000 190 166 378 261 556 38 156 68 892 -10000 389 379 870 983 73 472 384 587 785 -10000 31 947 415 246 843 91 438 291 628 -10000 425 488 120 929 720 141 926 201 712 -10000 914 391 900 992 681 267 520 480 2 -10000 288 806 405 487 362 995 755 185 978 -10000 752 269 487 988 324 645 108 54 191 -10000 708 361 661 309 569 132 453 713 900 -10000 48 533 601 471 920 828 24 103 621 -10000 243 231 956 263 516 142 787 327 968 -10000 118 831 572 511 155 62 389 535 277 -10000 116 564 397 39 790 675 498 719 741 -10000 437 10 25 397 262 914 863 7 273 -10000 7 661 859 869 554 558 438 122 949 -10000 489 455 277 750 13 948 899 790 379 -10000 362 87 289 614 91 528 630 874 390 -10000 949 418 987 719 667 701 726 569 950 -10000 813 532 359 678 931 355 882 314 329 -10000 976 850 872 716 734 218 185 762 642 -10000 403 911 997 631 259 539 494 80 52 -10000 291 545 595 21 713 914 518 346 456 -10000 460 78 325 215 765 211 275 495 409 -10000 365 58 719 190 762 728 848 292 775 -10000 179 121 12 799 195 705 620 593 232 -10000 591 812 957 594 640 693 669 707 269 -10000 771 447 873 764 286 664 918 811 441 -10000 879 598 406 238 133 522 491 53 705 -10000 469 171 850 456 842 394 447 348 33 -10000 781 557 397 151 721 120 948 589 608 -10000 396 568 420 416 713 470 454 825 26 -10000 527 488 446 379 195 967 806 138 138 -10000 511 671 894 13 941 154 401 265 606 -10000 996 51 46 790 258 523 973 15 103 -10000 704 539 891 119 513 791 61 800 826 -10000 350 727 195 847 162 414 482 952 30 -10000 57 983 23 813 703 963 807 846 571 -10000 681 672 712 286 774 335 532 885 520 -10000 236 454 273 375 693 508 851 139 8 -10000 209 686 230 27 344 457 33 234 414 -10000 645 355 114 907 216 849 160 430 807 -10000 494 802 659 702 724 51 51 920 2 -10000 555 294 854 932 875 296 390 105 994 -10000 984 614 224 679 493 863 741 55 208 -10000 224 262 545 283 72 866 692 686 903 -10000 991 725 443 117 744 596 563 798 923 -10000 515 94 973 920 471 136 234 120 95 -10000 630 132 42 635 395 784 743 653 483 -10000 939 565 658 365 352 529 905 441 1000 -10000 864 962 268 26 774 471 989 368 917 -10000 138 412 453 955 793 416 786 540 984 -10000 887 342 745 531 247 962 248 311 296 -10000 472 118 154 882 830 364 334 130 273 -10000 757 811 324 507 880 776 67 907 858 -10000 705 620 698 469 38 21 711 533 455 -10000 52 729 949 849 826 682 443 613 536 -10000 954 441 442 804 465 995 356 135 352 -10000 842 644 484 811 505 693 979 433 90 -10000 893 784 313 941 361 873 999 263 400 -10000 125 227 790 837 750 148 660 681 955 -10000 884 208 749 484 256 886 903 188 307 -10000 518 573 219 15 11 252 12 92 503 -10000 899 772 474 634 54 425 786 825 365 -10000 611 253 482 62 919 875 243 839 659 -10000 828 21 835 311 380 81 86 981 98 -10000 569 464 875 670 127 157 533 49 817 -10000 705 781 816 406 28 21 161 71 334 -10000 167 177 927 194 662 254 607 741 651 -10000 327 957 206 666 170 74 566 214 452 -10000 438 802 399 713 685 125 297 828 997 -10000 85 952 376 885 51 41 950 963 489 -10000 62 411 468 466 134 743 366 468 896 -10000 241 672 25 772 907 261 198 576 504 -10000 343 209 30 76 97 672 543 162 499 -10000 974 544 995 372 183 521 853 66 639 -10000 396 291 81 178 735 793 592 209 581 -10000 377 224 210 752 370 9 78 578 874 -10000 59 32 914 254 914 267 958 155 499 -10000 523 820 592 460 737 428 360 554 868 -10000 993 743 467 502 6 374 282 341 692 -10000 338 684 922 153 210 620 602 729 407 -10000 753 366 840 29 252 770 723 86 857 -10000 123 653 147 272 837 311 230 803 922 -10000 794 218 53 105 324 868 432 758 396 -10000 661 288 932 724 458 493 772 262 758 -10000 198 906 35 1 314 540 991 597 89 -10000 801 203 556 346 959 462 977 755 434 -10000 187 222 980 606 824 401 844 289 28 -10000 1 183 139 965 18 146 387 575 255 -10000 882 861 409 653 634 690 815 175 678 -10000 739 653 802 312 136 522 546 98 820 -10000 216 686 817 775 143 772 703 157 744 -10000 851 368 304 581 904 410 379 843 896 -10000 246 74 846 931 930 465 36 822 376 -10000 496 456 83 565 698 461 764 106 457 -10000 768 998 438 876 144 670 37 423 937 -10000 607 490 590 756 612 331 577 797 407 -10000 611 896 721 103 552 523 652 39 954 -10000 627 415 16 688 120 142 899 873 612 -10000 767 478 176 757 397 417 181 949 233 -10000 869 748 327 176 558 637 240 776 437 -10000 756 184 845 540 983 131 274 626 844 -10000 95 437 504 153 654 330 65 347 365 -10000 704 918 412 528 931 529 119 493 870 -10000 85 25 232 576 410 526 713 221 647 -10000 275 381 553 1 408 23 912 144 702 -10000 332 806 968 254 612 1000 988 744 184 -10000 858 176 690 921 606 101 981 801 499 -10000 879 922 960 958 97 19 984 307 334 -10000 193 471 848 520 629 555 174 150 774 -10000 509 348 105 71 856 993 738 630 500 -10000 258 131 742 710 682 499 128 726 909 -10000 128 912 517 713 725 781 847 561 938 -10000 274 391 136 578 139 136 701 241 340 -10000 270 523 701 744 831 977 7 841 403 -10000 487 235 943 484 979 319 373 969 644 -10000 252 574 254 494 157 973 40 522 475 -10000 73 120 189 112 233 587 943 931 521 -10000 966 474 958 872 318 226 44 49 250 -10000 49 518 291 335 188 800 950 255 444 -10000 941 20 449 911 203 274 55 250 936 -10000 277 665 837 33 42 596 548 204 200 -10000 410 457 886 506 49 992 641 498 868 -10000 921 174 992 993 307 909 235 794 373 -10000 251 319 40 217 85 768 470 872 127 -10000 21 486 955 877 290 583 654 734 576 -10000 314 90 595 678 34 405 268 73 495 -10000 566 834 773 374 284 400 67 960 452 -10000 684 883 173 39 272 532 956 735 434 -10000 738 683 288 828 527 666 608 9 42 -10000 240 359 949 726 205 47 953 758 806 -10000 826 34 47 537 340 792 419 781 128 -10000 852 158 509 639 456 584 641 534 763 -10000 359 378 325 572 390 621 767 680 8 -10000 610 133 673 93 490 955 677 831 118 -10000 991 71 500 283 123 617 842 821 486 -10000 682 285 37 74 652 24 695 592 116 -10000 195 97 838 968 940 286 105 714 47 -10000 70 59 588 402 485 379 834 587 446 -10000 95 47 751 42 677 812 409 98 221 -10000 497 600 275 258 133 344 507 11 500 -10000 716 733 262 853 282 861 425 698 292 -10000 867 727 508 109 106 544 896 258 763 -10000 883 59 212 462 481 403 809 833 191 -10000 102 251 35 623 419 837 228 607 70 -10000 241 641 439 606 317 814 779 434 402 -10000 236 446 527 637 769 503 64 476 152 -10000 983 686 473 628 69 163 863 727 277 -10000 303 116 823 994 476 4 600 801 239 -10000 685 972 330 460 247 142 805 266 57 -10000 120 613 806 916 685 162 661 532 582 -10000 764 821 208 613 268 256 887 361 129 -10000 782 709 251 975 522 337 0 894 161 -10000 201 104 646 401 521 239 323 255 362 -10000 233 444 958 233 2 196 519 418 938 -10000 162 119 593 514 699 850 647 126 679 -10000 431 575 327 18 329 365 543 920 725 -10000 816 387 450 679 373 966 415 321 606 -10000 944 299 581 977 921 859 715 665 136 -10000 109 410 99 720 356 268 128 742 150 -10000 119 399 63 700 533 706 79 112 927 -10000 650 627 435 44 131 858 906 519 5 -10000 470 614 984 55 93 715 228 578 908 -10000 938 646 178 693 237 493 69 527 771 -10000 291 526 791 432 681 75 185 958 130 -10000 438 96 414 387 547 397 543 926 664 -10000 269 799 983 152 776 340 178 725 385 -10000 625 655 634 647 639 33 236 188 288 -10000 690 475 208 939 402 603 361 378 329 -10000 783 293 412 620 369 866 227 874 818 -10000 21 130 826 866 973 772 514 820 634 -10000 611 289 501 145 983 172 535 907 471 -10000 226 350 104 237 583 897 355 984 361 -10000 796 665 949 965 731 431 838 177 826 -10000 454 538 569 846 994 952 756 265 581 -10000 237 62 450 427 238 247 625 152 443 -10000 518 551 223 689 42 458 943 381 821 -10000 312 804 874 273 752 341 348 802 303 -10000 905 71 885 445 419 517 193 447 739 -10000 380 327 480 892 921 402 227 590 308 -10000 406 69 253 249 737 16 64 525 329 -10000 180 369 919 962 883 897 994 808 378 -10000 102 956 849 813 542 893 727 472 23 -10000 300 419 591 622 567 375 245 231 586 -10000 452 230 962 95 12 449 946 534 546 -10000 911 382 561 669 85 532 511 909 332 -10000 1000 16 875 121 433 206 261 731 888 -10000 711 412 435 208 311 731 863 227 32 -10000 962 494 69 765 937 312 191 547 636 -10000 375 583 701 7 613 437 264 231 434 -10000 510 552 7 930 438 959 603 523 884 -10000 657 840 567 468 81 322 409 838 893 -10000 368 465 655 739 650 791 341 951 477 -10000 273 755 865 801 980 454 824 282 681 -10000 396 716 267 677 892 348 715 578 755 -10000 470 718 982 918 680 481 656 703 440 -10000 667 272 986 160 823 426 995 360 86 -10000 408 898 388 480 176 108 907 835 686 -10000 107 36 139 933 501 67 48 257 266 -10000 845 915 561 308 558 890 471 488 426 -10000 543 845 428 304 896 953 12 806 95 -10000 562 129 578 520 981 251 535 782 68 -10000 935 689 115 779 89 825 377 201 254 -10000 441 990 22 747 403 897 551 494 197 -10000 144 489 239 562 325 435 318 290 443 -10000 137 960 853 794 367 48 934 123 229 -10000 975 138 522 16 796 239 466 322 344 -10000 158 831 801 809 704 967 724 20 722 -10000 478 123 52 490 118 780 889 553 668 -10000 681 174 30 514 15 342 336 255 78 -10000 242 823 187 817 705 109 341 957 887 -10000 386 452 954 927 391 883 878 961 975 -10000 308 884 937 372 178 210 513 586 940 -10000 863 830 189 618 821 75 319 533 7 -10000 904 373 990 433 457 956 59 985 253 -10000 784 518 383 319 52 916 842 645 541 -10000 343 31 460 606 797 879 840 594 238 -10000 197 856 842 595 145 922 947 900 434 -10000 35 422 29 572 243 866 103 392 421 -10000 180 789 177 99 912 533 343 252 890 -10000 188 280 566 391 745 15 783 779 654 -10000 601 343 611 998 670 667 61 957 564 -10000 604 473 757 851 824 997 38 277 84 -10000 622 80 789 400 788 74 324 851 624 -10000 181 351 426 313 104 499 598 567 142 -10000 999 868 435 989 150 727 867 168 371 -10000 944 356 481 196 410 306 627 919 959 -10000 16 430 715 679 104 490 237 598 261 -10000 303 115 61 893 317 725 486 591 713 -10000 840 185 130 429 537 177 626 963 247 -10000 3 295 243 572 191 872 301 49 398 -10000 352 943 874 182 426 903 249 76 824 -10000 591 728 464 462 903 991 795 255 832 -10000 593 541 172 313 451 468 131 441 81 -10000 23 870 117 811 625 721 236 956 898 -10000 87 843 171 758 354 543 805 975 123 -10000 555 727 937 435 84 563 31 224 426 -10000 219 83 766 362 48 269 841 987 655 -10000 596 420 827 823 327 657 329 184 358 -10000 637 590 145 966 21 341 97 618 621 -10000 240 817 269 451 706 782 572 947 627 -10000 625 131 35 488 765 976 444 312 608 -10000 442 659 694 484 465 907 300 672 546 -10000 100 818 800 87 495 297 831 86 979 -10000 912 93 799 79 814 633 250 720 659 -10000 189 334 913 656 207 59 198 26 315 -10000 361 511 906 492 533 664 560 959 175 -10000 184 787 135 888 919 411 266 226 496 -10000 1 714 782 445 603 740 716 722 161 -10000 8 728 212 783 97 10 691 499 217 -10000 752 373 970 832 180 315 126 584 15 -10000 30 140 253 747 183 702 323 583 622 -10000 993 912 412 678 365 275 911 795 346 -10000 310 712 549 319 669 479 131 764 654 -10000 351 222 175 899 779 109 211 951 932 -10000 573 936 533 142 577 883 443 539 515 -10000 704 793 391 806 533 769 933 983 515 -10000 442 302 850 655 949 722 3 892 844 -10000 883 71 771 614 65 102 334 845 46 -10000 325 117 481 980 102 790 337 37 895 -10000 60 787 522 853 135 977 161 583 246 -10000 77 828 989 38 733 943 695 471 295 -10000 753 798 310 983 217 23 796 329 953 -10000 4 986 319 649 14 183 429 536 250 -10000 267 684 309 238 348 337 770 572 729 -10000 710 308 807 490 374 386 274 700 293 -10000 967 653 576 166 594 417 59 151 1000 -10000 587 627 29 625 716 515 108 307 198 -10000 917 70 989 905 120 38 666 233 526 -10000 436 109 14 608 167 876 771 301 958 -10000 712 120 407 691 938 538 493 213 703 -10000 509 721 210 721 251 997 583 280 818 -10000 598 634 465 842 328 980 582 231 868 -10000 648 589 479 820 882 245 218 574 307 -10000 852 694 127 476 313 309 327 486 60 -10000 849 717 318 335 401 493 878 370 868 -10000 654 78 540 172 501 176 355 818 992 -10000 153 328 13 76 724 384 822 266 516 -10000 777 240 881 789 718 175 975 199 849 -10000 627 49 482 594 443 311 645 826 488 -10000 128 104 187 326 553 992 213 30 774 -10000 136 46 242 991 41 937 889 132 5 -10000 165 808 707 993 837 709 566 953 755 -10000 495 203 703 174 894 909 883 65 375 -10000 410 282 597 941 325 117 943 620 816 -10000 714 649 729 107 890 924 954 836 517 -10000 32 424 145 77 540 899 537 101 392 -10000 614 53 103 95 706 330 180 506 201 -10000 616 680 409 63 727 312 512 515 342 -10000 304 240 967 692 453 20 48 631 782 -10000 138 243 508 846 358 95 51 827 320 -10000 228 340 228 668 420 805 705 692 775 -10000 263 4 25 800 22 651 367 876 78 -10000 692 919 775 577 642 517 882 225 241 -10000 544 993 130 612 414 258 546 98 185 -10000 885 135 109 623 869 68 714 914 10 -10000 612 737 421 614 2 600 393 517 823 -10000 973 56 8 767 498 340 447 180 295 -10000 358 554 151 134 166 716 40 393 841 -10000 822 36 143 20 523 681 500 225 145 -10000 533 230 32 483 157 465 166 920 42 -10000 576 194 700 624 271 424 161 447 218 -10000 490 441 413 512 60 752 260 164 613 -10000 766 759 496 123 918 713 792 879 596 -10000 118 733 386 777 425 663 734 612 24 -10000 408 306 487 669 22 930 431 487 676 -10000 974 196 437 215 17 253 905 447 380 -10000 111 597 725 405 123 162 274 369 654 -10000 747 444 777 297 253 197 442 926 597 -10000 212 793 882 416 897 430 535 766 289 -10000 297 897 973 419 424 183 585 977 106 -10000 391 666 593 931 820 840 568 377 18 -10000 341 495 21 117 685 748 55 478 69 -10000 838 324 346 131 613 922 220 380 658 -10000 377 438 479 992 579 497 503 680 807 -10000 33 559 269 632 345 289 637 772 831 -10000 322 60 335 960 927 723 472 124 10 -10000 939 269 519 32 147 444 233 129 812 -10000 83 858 323 165 189 501 205 443 349 -10000 313 547 959 886 347 84 105 820 163 -10000 443 128 804 398 322 377 729 566 216 -10000 511 638 108 146 969 669 971 791 953 -10000 100 718 839 272 14 799 458 800 927 -10000 855 433 369 747 339 495 864 386 872 -10000 701 881 75 648 950 682 295 402 65 -10000 408 636 146 158 368 859 800 387 723 -10000 792 793 29 753 462 156 721 204 578 -10000 159 329 372 174 760 430 962 411 493 -10000 368 446 793 34 410 89 346 626 995 -10000 906 566 79 634 345 891 527 421 834 -10000 877 243 659 920 667 264 838 440 857 -10000 758 850 595 701 346 754 792 68 223 -10000 172 833 480 909 765 911 394 421 191 -10000 343 340 839 587 62 697 605 339 673 -10000 324 429 78 22 665 393 779 709 859 -10000 934 775 729 997 390 806 942 749 13 -10000 595 116 314 836 139 37 998 377 267 -10000 409 507 340 970 760 342 939 343 820 -10000 465 971 36 350 191 901 599 67 539 -10000 905 370 700 187 521 462 883 176 575 -10000 628 570 900 636 309 278 971 5 909 -10000 979 554 823 56 336 423 600 884 850 -10000 605 971 394 182 600 846 828 334 388 -10000 602 460 483 235 707 756 161 350 124 -10000 651 642 855 913 501 277 501 558 436 -10000 905 299 93 964 673 794 902 287 498 -10000 23 512 679 921 380 524 173 412 875 -10000 260 253 993 453 376 825 976 858 825 -10000 765 760 997 670 316 427 557 643 33 -10000 576 843 824 920 31 781 760 137 41 -10000 475 528 591 476 893 208 942 224 460 -10000 775 64 712 294 67 348 943 83 36 -10000 556 719 124 37 110 366 130 692 194 -10000 143 677 204 911 574 939 894 550 349 -10000 74 496 444 739 916 571 769 234 548 -10000 417 576 542 374 296 595 873 100 310 -10000 78 372 330 466 352 229 292 11 289 -10000 797 73 677 742 170 80 908 893 532 -10000 756 647 488 853 887 143 334 339 457 -10000 221 969 319 838 233 534 876 766 693 -10000 195 526 191 481 722 342 155 899 590 -10000 188 462 166 117 354 62 617 735 190 -10000 116 165 998 191 265 555 574 826 18 -10000 277 70 931 958 911 673 21 260 536 -10000 448 969 659 694 357 979 985 960 653 -10000 597 394 842 971 88 941 468 47 92 -10000 692 977 172 804 255 951 971 983 675 -10000 3 304 99 79 884 675 954 691 593 -10000 285 943 996 443 911 393 808 422 611 -10000 309 641 164 882 59 22 132 970 929 -10000 829 595 184 994 984 116 583 395 797 -10000 328 174 78 488 918 84 959 659 23 -10000 890 991 144 835 301 466 174 413 276 -10000 981 212 917 844 259 53 672 514 567 -10000 466 488 203 484 348 475 604 923 527 -10000 229 101 942 620 227 283 15 369 998 -10000 985 527 412 890 349 694 654 538 558 -10000 975 794 208 781 166 465 923 124 385 -10000 586 122 473 336 607 240 658 641 507 -10000 945 868 616 507 599 961 204 705 658 -10000 929 429 796 542 176 721 410 736 142 -10000 372 413 702 749 357 377 858 817 865 -10000 953 214 605 549 112 467 6 158 537 -10000 567 28 822 567 659 169 261 746 682 -10000 99 877 4 293 418 527 419 365 869 -10000 437 694 887 31 574 185 167 313 119 -10000 450 495 470 626 97 616 663 756 641 -10000 283 174 469 553 192 374 636 660 60 -10000 876 662 603 859 511 608 240 17 987 -10000 893 99 643 751 462 521 819 452 616 -10000 470 468 141 133 368 800 555 660 233 -10000 618 991 388 683 751 252 624 179 999 -10000 598 846 300 89 482 740 431 942 180 -10000 726 835 261 708 47 35 355 970 802 -10000 756 991 673 774 286 235 598 309 71 -10000 417 858 542 928 406 771 1 69 962 -10000 509 264 981 887 504 117 728 673 262 -10000 351 739 35 952 51 557 33 106 22 -10000 677 130 1000 902 801 138 364 967 522 -10000 812 37 24 815 77 326 665 111 773 -10000 292 214 402 559 262 865 134 35 225 -10000 922 241 860 339 494 904 249 277 418 -10000 793 874 604 103 7 372 113 633 878 -10000 708 922 231 507 172 567 293 290 166 -10000 899 156 592 75 468 963 203 39 824 -10000 140 284 398 159 657 237 632 945 275 -10000 253 630 994 814 927 920 40 166 272 -10000 88 414 984 732 420 181 256 594 985 -10000 43 597 574 142 41 957 392 912 203 -10000 149 546 260 651 264 383 499 7 23 -10000 10 136 945 330 542 490 192 703 336 -10000 10 138 179 889 161 678 22 850 547 -10000 540 892 722 511 964 320 780 738 440 -10000 609 631 987 345 94 593 77 350 785 -10000 797 231 247 317 705 569 54 113 308 -10000 794 87 902 485 759 751 476 29 44 -10000 134 802 994 12 346 572 142 142 987 -10000 783 490 394 401 357 991 225 950 876 -10000 843 406 288 850 751 912 355 144 197 -10000 737 718 789 441 154 948 832 735 557 -10000 107 397 552 204 862 597 486 889 859 -10000 576 427 237 144 812 603 682 72 76 -10000 194 14 160 113 742 861 87 859 233 -10000 742 797 791 625 477 231 600 389 715 -10000 545 429 196 531 461 819 80 445 111 -10000 197 690 201 741 864 144 845 128 569 -10000 8 234 655 26 900 107 413 805 677 -10000 369 835 976 903 248 987 79 610 294 -10000 969 811 82 690 930 550 950 163 390 -10000 84 531 211 3 189 173 48 586 234 -10000 757 92 329 207 115 516 262 106 325 -10000 349 891 314 632 186 850 758 811 766 -10000 564 89 900 918 253 813 102 732 745 -10000 905 67 933 192 720 835 681 403 478 -10000 789 766 244 864 31 604 983 829 351 -10000 214 750 994 670 299 221 904 247 86 -10000 938 221 478 4 513 505 291 311 520 -10000 606 370 37 159 675 665 206 760 725 -10000 423 41 132 887 128 182 38 645 838 -10000 769 758 469 754 408 674 855 649 277 -10000 374 143 65 539 616 179 820 256 986 -10000 376 759 974 487 602 841 931 136 201 -10000 779 647 951 530 552 33 858 399 291 -10000 227 957 116 396 676 803 736 293 483 -10000 790 506 370 47 670 25 569 519 184 -10000 32 921 117 379 368 943 363 695 79 -10000 133 358 555 940 61 651 36 183 896 -10000 23 735 410 294 469 450 466 73 605 -10000 496 300 415 578 531 129 693 115 450 -10000 106 402 740 376 919 90 417 483 766 -10000 642 385 354 100 912 352 525 335 364 -10000 455 231 914 41 83 895 364 770 770 -10000 563 690 991 417 685 821 221 629 833 -10000 572 996 498 36 13 665 420 154 861 -10000 653 199 180 324 378 597 100 473 939 -10000 760 634 655 43 874 272 662 597 921 -10000 470 145 253 251 584 580 714 635 264 -10000 127 427 288 87 15 950 963 679 929 -10000 934 186 688 774 740 128 988 381 890 -10000 790 160 313 329 7 343 758 531 793 -10000 595 234 757 771 203 725 130 569 872 -10000 191 463 5 303 824 501 415 401 273 -10000 325 290 395 147 168 798 742 73 474 -10000 452 554 385 354 890 871 689 815 630 -10000 513 571 460 479 97 62 682 871 339 -10000 762 33 593 375 619 439 974 639 834 -10000 545 695 519 161 49 593 447 495 632 -10000 483 261 45 247 157 585 200 623 641 -10000 754 636 574 113 914 986 898 119 179 -10000 680 296 760 606 685 872 896 938 59 -10000 658 284 213 883 521 421 34 783 592 -10000 85 647 342 953 850 210 866 694 913 -10000 749 994 767 483 575 631 195 756 363 -10000 447 790 298 428 660 595 123 627 313 -10000 527 902 193 647 610 95 890 757 4 -10000 900 58 396 815 981 626 734 953 612 -10000 714 476 39 86 442 553 836 414 168 -10000 234 862 618 986 458 95 885 653 633 -10000 243 910 339 420 419 4 297 236 337 -10000 360 548 651 156 737 160 336 410 999 -10000 174 262 819 146 454 221 237 531 6 -10000 489 612 91 539 647 66 176 473 92 -10000 153 814 39 914 461 606 77 489 133 -10000 31 585 792 512 106 330 602 125 514 -10000 948 878 267 256 106 439 102 707 610 -10000 761 137 547 386 946 129 182 634 451 -10000 415 471 992 284 803 434 918 815 295 -10000 445 284 192 473 176 92 132 850 921 -10000 413 399 548 231 621 250 858 511 365 -10000 576 52 669 83 561 786 192 314 162 -10000 435 672 122 995 667 481 825 643 681 -10000 561 839 101 499 28 399 384 566 490 -10000 692 936 260 713 740 555 596 111 77 -10000 460 692 209 944 883 167 190 932 220 -10000 931 926 657 613 83 162 176 313 584 -10000 802 563 738 650 92 169 450 304 959 -10000 397 197 830 978 854 904 998 586 23 -10000 151 899 657 357 538 876 209 812 746 -10000 564 620 997 180 830 895 990 990 289 -10000 304 213 913 284 70 660 510 665 222 -10000 249 625 425 739 63 70 637 200 461 -10000 200 43 335 965 142 238 116 992 29 -10000 414 313 294 827 898 639 310 540 749 -10000 318 60 153 821 939 324 951 973 392 -10000 23 58 93 533 576 425 623 678 640 -10000 309 842 578 6 764 248 377 369 528 -10000 356 303 911 618 773 55 369 267 405 -10000 106 25 523 633 378 283 632 138 305 -10000 193 470 325 98 963 393 793 984 650 -10000 341 569 857 144 489 876 347 562 723 -10000 562 45 327 227 479 76 407 986 135 -10000 682 20 82 627 354 549 275 869 86 -10000 385 423 147 410 61 95 549 481 939 -10000 166 766 533 937 847 965 853 944 313 -10000 76 919 180 360 435 186 692 160 342 -10000 524 804 836 856 434 524 759 627 379 -10000 741 72 886 946 407 76 702 436 427 -10000 558 101 422 617 712 645 582 292 104 -10000 896 743 610 525 696 572 88 421 94 -10000 274 995 150 364 466 803 250 39 484 -10000 117 59 764 917 807 831 503 680 915 -10000 377 966 25 219 403 213 792 883 16 -10000 191 361 703 584 696 122 583 659 176 -10000 29 338 422 549 882 248 151 364 25 -10000 408 851 75 183 108 489 827 619 533 -10000 285 600 459 863 68 574 347 92 1 -10000 205 355 419 340 210 14 333 807 735 -10000 234 989 789 723 784 371 879 925 119 -10000 700 901 290 373 355 161 329 928 277 -10000 887 196 405 453 979 458 935 142 869 -10000 813 965 781 188 986 671 557 896 47 -10000 694 899 966 742 207 293 624 776 688 -10000 171 568 112 372 511 32 278 135 489 -10000 89 748 999 307 109 681 59 661 159 -10000 684 690 588 589 826 994 302 341 367 -10000 282 513 847 696 643 465 855 335 753 -10000 590 475 545 712 812 521 981 516 584 -10000 64 963 763 361 704 248 598 479 169 -10000 593 409 114 225 252 829 842 577 125 -10000 462 213 156 565 636 756 510 77 18 -10000 574 692 216 18 998 572 188 562 41 -10000 254 312 738 371 121 953 850 224 543 -10000 370 9 711 675 859 158 91 680 948 -10000 473 801 628 487 578 509 78 982 814 -10000 809 744 641 216 835 845 795 903 613 -10000 529 665 542 771 978 366 570 454 421 -10000 717 701 77 976 715 452 893 200 292 -10000 526 67 684 921 884 210 584 564 871 -10000 958 302 123 935 332 893 676 976 986 -10000 844 291 626 688 571 324 387 65 613 -10000 664 463 516 875 893 817 937 294 663 -10000 20 857 812 251 288 740 28 213 845 -10000 623 150 668 669 912 548 176 141 639 -10000 591 482 124 831 600 877 864 6 773 -10000 106 79 89 831 926 545 75 963 276 -10000 387 973 441 771 292 68 26 39 432 -10000 977 451 769 766 343 440 458 313 538 -10000 145 344 236 82 238 968 562 573 7 -10000 388 161 70 220 983 533 515 380 852 -10000 741 56 38 932 178 256 586 237 15 -10000 298 910 898 90 41 196 802 29 115 -10000 626 66 273 442 978 35 541 148 153 -10000 174 378 440 679 976 167 251 881 476 -10000 132 765 349 665 272 868 869 513 430 -10000 112 690 872 660 579 919 55 280 232 -10000 495 390 830 480 41 199 70 78 438 -10000 614 59 843 194 789 488 221 766 971 -10000 257 674 282 690 776 857 549 716 186 -10000 375 535 227 959 940 32 372 848 809 -10000 350 665 577 405 806 888 85 156 787 -10000 28 312 42 335 176 485 769 177 404 -10000 426 584 39 170 437 179 603 771 123 -10000 117 810 928 317 610 890 926 19 982 -10000 410 826 630 336 99 841 788 597 61 -10000 103 342 146 922 879 387 230 32 657 -10000 922 311 746 673 581 398 935 888 661 -10000 971 579 623 567 720 336 677 888 622 -10000 193 26 512 88 583 7 297 28 874 -10000 464 697 257 140 336 607 49 854 821 -10000 715 91 58 710 46 349 911 142 578 -10000 387 679 174 757 853 131 907 639 212 -10000 653 885 506 403 246 816 592 735 233 -10000 444 855 345 936 73 368 631 972 101 -10000 160 117 543 514 724 85 325 263 152 -10000 673 231 253 243 861 403 869 812 419 -10000 51 382 338 479 745 336 666 534 487 -10000 549 116 717 249 752 706 651 694 487 -10000 981 901 621 921 831 263 893 170 349 -10000 546 983 513 437 394 476 661 22 999 -10000 745 617 487 541 785 440 808 288 164 -10000 492 391 916 990 750 122 870 634 705 -10000 848 767 213 480 336 450 790 197 395 -10000 986 847 624 709 436 453 75 942 17 -10000 873 352 232 329 417 541 265 431 945 -10000 306 975 388 920 413 475 19 147 990 -10000 565 414 124 324 434 850 655 970 306 -10000 820 60 784 784 816 240 809 597 195 -10000 100 416 444 865 620 710 721 603 461 -10000 887 603 271 823 664 971 194 619 999 -10000 678 367 475 450 996 568 779 965 349 -10000 390 375 20 296 462 228 56 166 463 -10000 268 997 900 206 240 924 55 207 13 -10000 299 570 707 730 757 869 696 95 254 -10000 232 803 212 473 549 225 61 445 766 -10000 479 27 519 930 876 753 62 691 192 -10000 400 69 437 484 83 900 951 172 91 -10000 42 597 516 281 466 364 549 602 540 -10000 822 200 430 966 930 419 949 810 644 -10000 861 890 953 1000 889 353 433 993 403 -10000 860 962 611 472 813 780 849 226 974 -10000 934 598 401 80 490 319 377 901 229 -10000 684 55 908 691 979 675 488 962 316 -10000 735 540 6 171 714 643 50 585 809 -10000 556 666 565 341 687 923 274 856 138 -10000 806 366 578 155 454 342 876 455 737 -10000 467 869 627 67 699 176 844 927 331 -10000 307 636 668 1 734 623 726 691 601 -10000 509 601 814 119 205 617 301 468 441 -10000 423 678 245 199 964 788 122 76 18 -10000 692 436 818 671 532 391 407 561 500 -10000 420 536 875 90 986 581 380 659 214 -10000 252 265 2 951 565 929 141 308 863 -10000 65 246 724 539 946 962 700 84 529 -10000 856 345 504 346 91 423 411 676 161 -10000 710 560 215 343 598 602 585 107 308 -10000 595 193 337 894 263 824 809 127 813 -10000 401 332 574 23 447 220 654 744 157 -10000 853 604 436 455 707 622 1000 703 709 -10000 505 595 84 80 925 425 81 751 657 -10000 983 807 612 307 681 212 356 128 217 -10000 959 656 622 499 935 754 503 99 594 -10000 895 643 214 469 496 203 515 325 814 -10000 562 597 960 974 417 222 757 430 160 -10000 456 160 836 749 953 649 188 522 399 -10000 196 585 345 346 121 430 704 442 534 -10000 340 832 108 342 965 649 740 482 317 -10000 540 13 134 636 167 271 502 827 2 -10000 351 468 838 485 198 263 663 598 672 -10000 313 314 476 222 703 226 928 101 480 -10000 51 581 449 611 416 620 1000 196 863 -10000 4 101 954 826 597 453 766 309 859 -10000 764 497 542 278 281 419 884 71 559 -10000 205 941 655 796 212 793 245 347 665 -10000 181 985 24 867 962 838 530 537 365 -10000 790 998 814 92 577 51 990 127 11 -10000 588 813 460 616 616 603 428 590 895 -10000 163 601 540 446 334 319 840 592 670 -10000 107 357 120 982 294 123 752 715 841 -10000 960 304 524 8 456 899 429 385 65 -10000 107 299 853 623 885 208 718 657 762 -10000 407 53 109 505 576 57 458 489 377 -10000 868 47 423 778 276 856 382 170 453 -10000 367 428 336 774 687 132 787 670 91 -10000 682 982 419 249 662 835 465 858 338 -10000 431 464 109 986 920 765 463 22 94 -10000 601 553 947 734 814 420 978 699 682 -10000 884 362 263 263 741 158 300 577 848 -10000 987 123 559 760 779 197 98 839 483 -10000 426 255 721 19 691 494 101 873 704 -10000 941 317 345 328 950 341 313 806 185 -10000 606 983 545 661 73 675 23 704 431 -10000 134 78 878 499 906 313 548 633 922 -10000 822 399 798 93 859 686 203 703 196 -10000 652 945 515 394 555 141 884 648 236 -10000 282 27 925 13 617 974 112 442 669 -10000 325 514 574 410 113 821 319 836 958 -10000 356 605 660 586 792 704 338 244 947 -10000 364 717 77 182 141 121 789 37 233 -10000 26 972 524 752 942 161 302 381 444 -10000 474 601 736 164 724 291 785 366 235 -10000 196 428 599 749 445 956 91 89 825 -10000 405 792 726 80 678 203 812 961 643 -10000 773 414 485 273 326 348 222 465 45 -10000 367 434 854 89 67 817 836 433 552 -10000 895 106 9 893 74 696 488 593 119 -10000 730 58 667 776 432 882 405 539 850 -10000 257 699 874 279 878 136 761 425 212 -10000 319 419 74 877 983 279 822 183 294 -10000 86 627 21 255 620 34 847 384 918 -10000 164 675 616 791 55 954 443 365 224 -10000 289 880 970 316 798 76 505 895 539 -10000 597 722 602 15 841 516 328 103 660 -10000 95 68 279 836 759 7 852 536 463 -10000 9 429 674 223 789 215 856 422 2 -10000 0 59 845 1000 532 424 516 348 620 -10000 202 923 909 149 242 95 216 316 672 -10000 828 246 461 149 105 91 152 584 326 -10000 455 545 112 1 718 912 791 757 860 -10000 455 792 204 894 543 722 346 174 580 -10000 325 902 714 397 239 130 836 392 836 -10000 264 12 778 640 913 923 154 892 198 -10000 309 931 306 679 486 700 303 145 438 -10000 715 138 20 242 966 36 869 812 868 -10000 704 141 702 667 440 12 642 10 944 -10000 623 859 857 631 849 770 267 8 329 -10000 610 322 547 27 366 987 785 867 809 -10000 97 578 331 665 409 596 156 851 292 -10000 203 951 910 794 358 41 819 419 167 -10000 570 32 198 386 205 760 60 994 660 -10000 383 349 553 172 382 88 753 803 195 -10000 439 260 522 57 881 604 676 915 155 -10000 896 273 190 192 785 808 951 434 821 -10000 437 408 231 19 84 308 921 970 386 -10000 451 255 99 620 817 527 335 551 155 -10000 0 944 561 654 713 977 505 171 556 -10000 525 109 559 572 786 709 54 716 100 -10000 701 251 682 371 422 232 165 263 430 -10000 768 302 247 40 982 457 327 102 740 -10000 617 827 70 956 516 903 175 101 958 -10000 785 663 685 547 200 981 68 727 975 -10000 299 738 348 876 301 759 446 369 891 -10000 805 68 170 565 63 158 85 770 322 -10000 110 612 617 680 684 538 254 445 212 -10000 121 339 53 97 667 29 80 585 262 -10000 166 703 189 15 837 285 271 977 92 -10000 154 669 962 454 950 493 20 966 26 -10000 469 366 192 506 161 834 739 761 635 -10000 828 781 36 589 699 803 607 599 790 -10000 578 330 464 838 853 966 225 750 304 -10000 564 702 347 663 483 523 688 185 443 -10000 837 161 940 504 289 498 2 569 55 -10000 495 442 11 811 908 627 567 699 596 -10000 883 408 468 533 416 216 760 3 55 -10000 975 117 70 87 485 235 690 505 14 -10000 579 132 973 936 149 402 767 346 710 -10000 994 822 9 812 966 226 829 239 808 -10000 44 215 11 291 853 473 751 441 51 -10000 203 600 635 16 588 808 34 451 568 -10000 399 75 369 641 987 358 147 388 179 -10000 192 828 722 658 858 449 522 7 733 -10000 474 425 353 148 955 823 726 336 67 -10000 702 465 194 717 835 221 402 695 730 -10000 194 703 498 798 441 244 61 142 239 -10000 207 374 725 704 41 482 20 604 241 -10000 6 879 184 348 548 576 140 610 202 -10000 293 620 493 10 780 794 914 190 726 -10000 368 270 350 505 548 741 161 365 828 -10000 8 14 516 999 205 677 354 98 197 -10000 930 447 282 147 446 70 802 829 899 -10000 508 276 714 199 46 608 45 207 851 -10000 193 648 992 190 308 129 270 315 329 -10000 245 638 174 896 838 439 627 847 37 -10000 371 311 691 755 904 537 652 549 225 -10000 421 630 66 219 244 74 72 976 58 -10000 702 525 995 80 194 129 203 417 431 -10000 431 777 44 895 421 464 77 175 851 -10000 214 472 500 94 289 73 220 34 165 -10000 184 461 523 762 174 938 153 534 319 -10000 386 129 636 806 228 345 90 891 507 -10000 107 403 665 590 579 513 74 776 82 -10000 230 918 817 251 285 256 985 656 644 -10000 919 630 842 76 14 34 971 165 335 -10000 667 319 286 519 968 467 84 585 599 -10000 774 814 959 89 750 846 64 896 644 -10000 474 711 50 502 660 382 19 256 845 -10000 727 635 783 980 341 259 490 752 617 -10000 410 189 947 458 948 128 642 353 998 -10000 461 791 881 160 318 955 525 523 884 -10000 233 114 10 99 283 489 936 580 577 -10000 92 447 949 854 343 519 223 716 706 -10000 424 121 454 190 6 374 880 83 563 -10000 549 348 44 606 557 956 109 181 823 -10000 550 876 291 810 787 963 105 454 27 -10000 89 646 816 304 802 656 352 24 828 -10000 793 348 667 133 615 954 982 864 644 -10000 846 709 88 369 238 519 629 904 465 -10000 340 1000 185 513 537 586 321 414 395 -10000 810 999 365 498 359 51 497 17 454 -10000 91 820 867 829 468 198 894 138 72 -10000 53 176 428 726 631 767 13 295 300 -10000 661 540 27 221 563 724 767 224 362 -10000 8 315 169 875 218 294 393 369 81 -10000 156 345 521 588 535 441 928 70 874 -10000 45 212 891 727 308 994 491 634 120 -10000 717 641 995 805 107 330 943 461 93 -10000 251 987 51 133 679 503 572 184 512 -10000 568 178 24 654 254 232 343 346 457 -10000 50 815 877 278 626 1000 577 652 791 -10000 227 356 336 516 441 949 357 779 498 -10000 65 965 369 593 343 262 828 86 759 -10000 520 285 968 256 373 336 361 495 762 -10000 985 482 49 781 275 8 211 381 476 -10000 488 55 514 436 62 678 578 593 735 -10000 355 639 322 446 301 71 786 723 904 -10000 668 888 455 208 172 764 181 582 1000 -10000 665 931 455 238 338 720 184 655 705 -10000 386 34 939 505 257 821 571 853 290 -10000 201 395 814 245 843 309 495 669 793 -10000 646 689 23 921 599 488 573 724 164 -10000 409 494 550 714 489 113 231 220 386 -10000 801 737 757 616 469 976 568 230 274 -10000 21 378 813 806 981 189 787 821 879 -10000 874 543 466 646 281 603 231 359 282 -10000 756 870 828 396 317 8 797 366 451 -10000 744 632 405 772 914 714 125 994 553 -10000 470 938 76 29 741 373 993 18 635 -10000 651 710 398 1000 549 67 875 174 91 -10000 712 166 114 323 35 207 636 755 686 -10000 719 395 426 208 598 249 498 941 693 -10000 104 39 19 554 502 813 810 255 666 -10000 470 482 970 162 955 752 249 738 728 -10000 50 706 463 646 451 250 847 866 21 -10000 129 912 909 509 583 241 585 611 432 -10000 172 599 562 605 243 941 429 568 628 -10000 831 876 627 217 942 998 804 836 983 -10000 446 99 646 309 561 447 739 715 635 -10000 906 175 430 163 438 183 332 417 441 -10000 617 159 337 532 913 471 978 133 297 -10000 678 906 855 71 944 383 510 303 255 -10000 659 388 387 894 720 661 682 708 745 -10000 800 490 978 330 152 784 495 814 681 -10000 370 112 117 930 491 25 10 117 449 -10000 865 615 134 60 630 791 567 867 79 -10000 699 865 672 183 645 536 74 485 671 -10000 209 636 635 664 618 790 308 387 192 -10000 245 645 670 750 558 414 125 348 742 -10000 478 405 573 997 582 749 799 74 963 -10000 827 552 317 36 639 789 318 42 659 -10000 121 648 81 345 667 468 516 150 652 -10000 569 226 308 0 384 387 651 433 935 -10000 879 856 439 660 116 147 865 194 179 -10000 986 913 478 8 4 83 984 845 995 -10000 965 108 618 485 442 936 620 972 47 -10000 651 62 707 746 3 733 386 9 659 -10000 675 251 130 637 539 158 306 554 260 -10000 69 285 796 632 393 591 884 833 477 -10000 537 406 933 972 463 837 486 446 502 -10000 613 922 410 762 645 128 248 368 523 -10000 579 146 216 867 926 767 954 874 530 -10000 933 552 242 236 558 752 676 495 872 -10000 268 845 253 903 503 393 551 593 908 -10000 436 856 224 114 310 816 421 352 222 -10000 720 683 983 818 954 339 621 946 696 -10000 926 630 14 806 971 483 513 143 890 -10000 796 718 71 391 613 136 626 543 326 -10000 748 843 614 703 403 507 748 629 79 -10000 696 732 122 302 499 423 781 925 893 -10000 792 238 478 66 319 67 984 490 218 -10000 352 447 323 433 886 367 370 955 59 -10000 136 776 671 485 717 780 767 24 874 -10000 846 957 788 779 878 583 385 133 778 -10000 471 968 878 922 606 318 340 811 769 -10000 610 234 549 361 748 846 983 518 840 -10000 755 444 469 528 188 631 895 515 959 -10000 498 364 929 957 258 396 188 72 295 -10000 574 553 168 736 390 187 256 312 283 -10000 717 396 794 981 301 616 633 329 96 -10000 44 28 230 882 154 688 827 377 908 -10000 200 875 541 153 100 867 216 41 968 -10000 763 211 445 108 224 676 703 40 231 -10000 27 665 512 981 192 105 802 352 964 -10000 465 350 327 135 444 340 439 518 209 -10000 165 450 274 548 668 689 286 346 237 -10000 493 182 900 426 165 710 353 64 924 -10000 646 410 878 577 841 527 457 228 575 -10000 105 634 646 941 380 218 76 132 703 -10000 219 383 637 496 592 309 673 400 956 -10000 973 953 518 381 646 79 276 626 224 -10000 876 136 886 811 647 556 113 148 268 -10000 132 334 166 835 972 283 580 610 948 -10000 994 481 491 670 892 387 586 677 443 -10000 409 755 305 934 776 822 609 617 526 -10000 889 353 168 910 418 619 896 549 77 -10000 218 95 283 580 421 883 55 221 378 -10000 521 693 765 332 256 983 866 628 414 -10000 760 750 941 97 959 46 827 378 827 -10000 895 30 197 403 153 77 104 181 966 -10000 948 226 654 326 134 37 337 842 561 -10000 457 871 356 602 333 187 205 496 305 -10000 653 962 199 338 532 658 64 896 973 -10000 245 595 774 61 666 307 690 75 585 -10000 441 928 335 217 637 766 333 595 856 -10000 731 355 662 757 446 58 114 598 990 -10000 857 178 495 698 652 997 965 344 454 -10000 252 33 20 278 397 627 943 186 565 -10000 101 583 661 60 470 637 137 83 81 -10000 414 624 297 457 292 136 170 95 89 -10000 469 84 330 841 749 209 504 623 394 -10000 249 538 69 968 236 25 545 245 372 -10000 124 325 575 510 305 673 882 371 614 -10000 402 764 486 103 96 788 559 307 339 -10000 131 48 655 614 441 540 420 95 993 -10000 607 44 870 214 912 979 220 506 485 -10000 60 905 396 766 36 861 496 100 390 -10000 98 6 765 851 647 159 762 916 927 -10000 79 284 585 813 498 754 376 464 853 -10000 372 978 213 607 77 443 742 270 451 -10000 355 142 800 573 614 560 138 123 202 -10000 363 921 401 782 97 860 745 927 362 -10000 31 384 719 247 711 457 965 326 242 -10000 551 845 502 917 903 251 88 592 329 -10000 488 66 469 808 23 974 222 745 971 -10000 85 763 747 189 58 109 55 764 17 -10000 268 580 52 85 433 241 379 77 617 -10000 86 390 899 388 115 373 722 903 324 -10000 710 872 655 577 937 752 282 311 304 -10000 399 557 20 708 499 310 376 257 404 -10000 98 92 254 568 339 367 66 594 671 -10000 506 696 122 926 240 268 700 151 878 -10000 830 775 404 168 648 182 792 412 42 -10000 594 785 141 30 344 915 579 864 147 -10000 445 208 157 858 232 176 905 403 535 -10000 380 532 488 961 769 894 841 317 809 -10000 459 171 387 799 444 921 535 737 632 -10000 76 661 399 832 955 811 379 542 152 -10000 340 801 922 93 761 876 503 776 928 -10000 405 558 207 906 735 465 724 817 983 -10000 757 998 394 593 907 66 932 91 696 -10000 691 401 32 920 992 79 374 383 678 -10000 17 771 794 55 733 694 720 261 859 -10000 820 418 457 361 82 733 812 116 790 -10000 631 916 359 839 690 995 747 595 609 -10000 186 766 309 807 474 337 106 922 247 -10000 746 597 537 177 791 695 636 499 978 -10000 517 901 878 4 819 559 719 124 631 -10000 300 492 815 782 20 486 613 964 644 -10000 425 285 682 750 912 451 60 794 752 -10000 357 664 459 550 994 370 553 331 997 -10000 445 301 909 755 791 461 840 522 44 -10000 835 412 803 910 53 517 388 142 504 -10000 188 310 994 588 248 388 471 556 868 -10000 419 318 968 989 68 171 474 49 164 -10000 580 159 794 691 442 838 647 423 769 -10000 914 855 287 85 949 800 565 1000 47 -10000 891 195 353 741 644 579 730 540 427 -10000 101 607 7 136 881 680 537 679 338 -10000 762 199 946 652 141 328 445 212 376 -10000 324 833 262 887 804 626 516 845 326 -10000 34 546 538 482 163 344 9 390 484 -10000 713 459 814 419 572 646 46 660 344 -10000 936 405 838 494 755 67 627 543 54 -10000 297 358 122 697 451 676 480 630 649 -10000 431 121 136 347 348 765 629 496 120 -10000 668 1 855 584 59 426 272 258 698 -10000 946 16 566 268 410 552 146 992 367 -10000 893 289 419 454 684 581 75 807 197 -10000 613 207 147 604 102 66 325 346 612 -10000 601 770 614 754 681 981 58 108 90 -10000 973 323 8 603 931 472 830 394 373 -10000 913 692 906 798 223 168 935 343 215 -10000 322 716 391 237 80 829 745 157 50 -10000 459 840 350 783 580 578 651 678 138 -10000 977 309 345 362 964 607 116 388 584 -10000 245 335 845 846 833 743 414 300 105 -10000 191 348 137 307 912 185 674 709 707 -10000 264 616 217 268 310 609 813 78 66 -10000 951 192 795 464 372 783 89 946 280 -10000 355 560 799 919 100 838 736 665 673 -10000 738 821 881 272 475 921 487 717 682 -10000 474 993 912 794 178 320 300 870 725 -10000 702 407 641 45 703 655 723 944 879 -10000 514 112 205 133 131 3 416 814 490 -10000 932 153 759 783 82 699 265 246 156 -10000 392 958 369 208 44 134 795 376 850 -10000 373 102 999 690 393 695 179 514 64 -10000 869 590 435 847 49 278 604 65 860 -10000 290 757 835 414 569 357 512 805 239 -10000 655 951 920 447 553 342 407 449 968 -10000 40 321 346 860 888 240 255 191 355 -10000 630 91 945 755 505 863 326 270 925 -10000 262 85 712 657 195 22 158 809 175 -10000 839 186 12 388 271 619 116 290 375 -10000 883 695 870 179 733 298 255 672 953 -10000 98 311 292 605 64 788 926 10 350 -10000 448 683 154 85 936 672 857 87 461 -10000 427 590 329 321 427 365 161 242 718 -10000 46 962 23 897 270 863 466 326 742 -10000 599 528 488 563 437 548 122 697 631 -10000 83 554 900 900 195 517 324 236 249 -10000 544 556 564 550 315 491 889 500 69 -10000 323 619 620 885 1000 986 228 297 172 -10000 916 825 277 121 300 346 339 798 279 -10000 767 885 856 77 819 452 453 246 733 -10000 427 603 636 961 302 263 890 717 779 -10000 42 568 38 397 539 52 226 41 525 -10000 804 655 687 425 794 924 721 442 542 -10000 830 895 872 255 3 777 541 648 507 -10000 500 19 977 511 191 286 807 745 675 -10000 565 343 34 241 495 50 589 482 848 -10000 861 711 719 137 64 143 36 607 715 -10000 403 993 132 529 886 460 120 576 841 -10000 423 406 248 306 353 139 118 438 562 -10000 444 166 3 659 762 111 828 269 12 -10000 518 758 952 201 887 398 348 607 507 -10000 294 277 267 770 722 60 696 491 306 -10000 743 970 112 665 429 484 142 351 2 -10000 567 302 128 386 968 47 302 130 610 -10000 968 699 572 806 93 700 38 479 243 -10000 320 651 251 835 361 89 460 273 557 -10000 520 190 622 843 730 517 779 810 389 -10000 203 690 602 635 901 401 568 398 990 -10000 421 606 935 963 607 665 127 191 735 -10000 453 756 711 389 767 748 680 69 916 -10000 867 766 18 367 516 868 710 354 686 -10000 963 256 209 827 365 9 109 628 564 -10000 446 194 481 50 305 633 878 844 581 -10000 350 807 544 695 232 796 299 416 561 -10000 913 997 393 648 213 487 340 291 387 -10000 562 506 651 674 494 251 814 633 879 -10000 971 980 186 40 630 849 69 454 857 -10000 147 105 113 700 313 8 212 903 410 -10000 539 94 609 127 31 813 96 644 766 -10000 671 961 941 730 421 117 733 440 351 -10000 958 710 365 856 172 468 112 188 921 -10000 948 689 683 23 931 243 134 252 405 -10000 471 908 132 301 137 997 493 138 551 -10000 566 396 616 47 933 558 444 212 848 -10000 607 410 457 245 97 937 969 892 441 -10000 359 182 949 75 428 162 833 253 663 -10000 802 877 560 65 781 886 319 635 993 -10000 553 312 165 449 336 679 700 782 212 -10000 988 392 720 483 617 95 771 37 472 -10000 704 406 363 547 466 807 575 107 578 -10000 972 886 549 553 354 208 43 240 878 -10000 509 534 745 620 761 905 365 769 350 -10000 817 327 211 606 132 305 775 146 747 -10000 513 283 244 417 514 277 176 248 621 -10000 728 247 612 271 858 132 197 936 101 -10000 333 781 111 336 913 966 716 144 573 -10000 289 382 131 141 454 200 484 932 189 -10000 862 236 127 783 12 957 477 816 638 -10000 133 751 864 613 917 409 357 98 881 -10000 686 84 750 136 572 948 263 546 401 -10000 576 179 71 446 282 390 108 676 928 -10000 442 602 859 752 443 387 657 955 297 -10000 723 534 845 403 921 128 486 566 114 -10000 255 316 693 197 378 715 869 36 726 -10000 398 652 482 36 74 791 550 955 1 -10000 927 605 118 89 519 70 458 796 967 -10000 540 470 704 678 212 369 112 186 653 -10000 907 182 774 822 142 608 358 449 259 -10000 555 891 952 266 343 975 84 661 24 -10000 619 350 91 140 691 232 290 571 666 -10000 730 856 741 357 733 435 630 7 616 -10000 765 638 476 963 210 896 382 582 965 -10000 75 816 942 757 100 247 137 474 398 -10000 323 684 355 743 295 961 269 242 593 -10000 224 446 95 52 478 870 744 167 310 -10000 250 531 382 359 804 218 608 882 12 -10000 872 982 191 510 113 97 304 985 551 -10000 883 595 960 347 89 787 519 885 34 -10000 983 101 939 866 270 30 968 731 435 -10000 572 523 982 426 509 378 369 357 479 -10000 681 206 172 536 307 160 110 359 492 -10000 77 751 964 127 455 162 620 893 17 -10000 112 877 358 296 553 372 337 254 887 -10000 198 381 387 489 267 812 152 557 260 -10000 845 25 1000 304 837 794 131 592 556 -10000 670 308 260 128 652 928 966 941 559 -10000 830 148 127 786 191 217 485 174 851 -10000 618 786 269 632 821 364 36 202 347 -10000 138 66 153 949 208 70 20 269 224 -10000 260 26 142 574 980 985 311 767 585 -10000 86 902 859 583 12 688 622 117 636 -10000 769 510 982 368 829 171 376 193 628 -10000 198 460 278 987 97 932 64 327 448 -10000 910 585 14 211 86 414 256 711 377 -10000 488 983 730 698 254 292 569 485 964 -10000 376 876 311 446 653 773 438 58 740 -10000 548 935 863 30 809 376 621 13 46 -10000 192 725 536 958 541 346 370 75 69 -10000 499 724 144 60 302 195 246 483 307 -10000 650 129 873 478 50 48 113 86 520 -10000 54 353 996 155 122 572 871 984 368 -10000 157 693 291 512 98 105 84 312 362 -10000 557 465 416 575 858 383 902 284 211 -10000 438 166 506 633 847 742 609 256 674 -10000 771 456 172 497 429 933 762 459 816 -10000 197 31 439 438 17 827 183 199 977 -10000 236 756 387 927 491 820 699 183 518 -10000 263 865 416 223 276 522 330 876 945 -10000 589 905 80 888 676 186 410 902 775 -10000 348 600 341 495 356 320 725 366 566 -10000 391 763 238 762 6 880 763 789 883 -10000 815 625 51 905 782 155 8 256 217 -10000 802 601 602 412 78 721 1 129 477 -10000 45 942 479 297 866 264 179 668 128 -10000 994 360 827 1 95 392 965 374 578 -10000 659 734 679 601 74 836 90 213 957 -10000 953 832 486 789 193 778 389 568 126 -10000 621 954 660 462 483 816 167 597 424 -10000 996 566 383 812 65 341 996 338 419 -10000 212 410 530 210 439 933 965 796 100 -10000 284 953 381 406 349 827 573 874 339 -10000 397 380 511 298 254 664 175 687 36 -10000 816 448 666 113 523 177 588 514 933 -10000 578 436 644 489 372 519 167 744 172 -10000 857 871 13 830 535 647 875 594 777 -10000 71 440 192 460 953 5 871 740 438 -10000 398 758 997 298 131 405 308 445 0 -10000 405 471 591 334 535 6 497 248 443 -10000 954 687 416 416 790 969 685 536 686 -10000 317 349 300 284 269 247 227 879 797 -10000 515 316 372 529 277 543 355 343 297 -10000 516 260 273 245 899 153 248 773 762 -10000 16 304 756 87 48 132 977 695 657 -10000 887 693 396 641 461 939 586 972 70 -10000 164 12 627 962 929 527 860 942 989 -10000 750 526 465 565 345 994 452 603 915 -10000 80 480 830 523 419 547 107 412 742 -10000 28 287 107 848 977 981 667 571 81 -10000 521 148 573 552 569 939 260 101 720 -10000 999 444 332 376 9 874 759 795 33 -10000 905 560 160 582 535 829 433 979 480 -10000 859 200 375 479 442 588 730 367 808 -10000 150 775 359 998 872 437 632 791 370 -10000 939 732 98 914 148 721 946 372 461 -10000 295 178 999 1 170 624 235 441 975 -10000 736 48 371 858 866 314 403 634 34 -10000 537 162 189 741 973 804 187 959 547 -10000 573 82 523 135 440 515 616 162 498 -10000 194 260 996 397 861 16 674 854 495 -10000 448 46 704 131 510 901 350 950 294 -10000 637 167 258 798 270 261 254 853 130 -10000 62 211 215 473 670 586 426 261 226 -10000 651 157 855 228 334 69 221 281 370 -10000 999 811 603 581 674 20 127 220 715 -10000 603 589 809 339 418 547 44 471 655 -10000 13 797 929 432 749 592 982 756 692 -10000 655 750 581 447 852 739 263 699 930 -10000 227 748 251 345 213 945 738 669 847 -10000 844 41 193 787 321 739 137 5 909 -10000 267 794 833 397 906 155 260 767 137 -10000 828 779 710 661 73 993 420 121 735 -10000 626 745 379 758 830 863 376 54 159 -10000 158 651 890 423 15 906 588 322 725 -10000 74 643 766 571 212 658 467 510 621 -10000 143 145 444 287 47 302 725 151 886 -10000 776 684 483 818 549 268 631 930 136 -10000 922 814 210 162 3 201 917 673 229 -10000 604 542 704 738 185 143 725 465 968 -10000 196 821 460 436 415 29 903 447 280 -10000 430 232 927 794 277 645 736 269 898 -10000 247 852 515 951 259 783 556 301 687 -10000 624 471 900 89 818 833 196 155 204 -10000 500 173 2 261 525 805 675 396 951 -10000 672 554 117 33 96 570 349 712 704 -10000 919 897 117 733 212 481 586 183 468 -10000 446 422 71 185 377 391 592 372 470 -10000 642 76 578 730 216 872 138 852 377 -10000 360 606 185 836 849 359 525 217 85 -10000 271 574 526 360 20 297 351 140 783 -10000 87 763 668 117 777 162 630 54 408 -10000 921 981 7 551 962 43 886 764 163 -10000 698 498 117 695 390 606 928 337 163 -10000 81 536 548 967 131 270 942 608 224 -10000 340 282 253 357 951 394 502 400 893 -10000 7 882 317 594 156 935 581 183 308 -10000 565 677 943 202 540 855 70 618 568 -10000 504 129 346 550 442 1 697 565 80 -10000 582 752 182 46 40 908 389 943 69 -10000 852 210 439 84 840 565 800 90 387 -10000 283 934 515 249 124 98 870 209 886 -10000 60 480 333 210 438 29 716 881 455 -10000 352 380 563 325 801 352 717 549 660 -10000 228 926 227 77 942 408 421 285 92 -10000 598 404 276 673 813 888 8 536 84 -10000 464 596 354 786 311 241 248 582 227 -10000 430 571 676 367 672 142 248 145 269 -10000 673 123 188 825 510 954 664 245 753 -10000 329 225 235 869 597 476 901 102 751 -10000 734 649 468 739 366 967 711 636 990 -10000 59 194 967 666 382 839 85 983 578 -10000 775 17 455 373 678 403 269 523 1000 -10000 861 493 379 324 108 268 490 742 641 -10000 739 487 779 370 955 134 107 698 965 -10000 843 993 423 719 980 733 100 558 918 -10000 211 125 262 129 15 49 282 490 864 -10000 891 354 850 118 152 91 553 760 805 -10000 890 352 794 282 220 706 242 258 211 -10000 685 500 384 58 81 567 275 459 659 -10000 167 517 330 487 766 311 812 764 852 -10000 356 374 2 342 673 291 4 309 405 -10000 809 421 762 241 611 98 337 659 500 -10000 504 956 636 107 723 936 950 934 436 -10000 566 817 847 278 845 308 150 458 168 -10000 762 135 400 556 626 200 849 182 490 -10000 431 649 751 76 820 125 273 29 644 -10000 682 490 656 264 183 892 428 239 112 -10000 969 862 809 598 964 784 422 116 990 -10000 513 182 900 788 690 573 753 834 389 -10000 801 339 492 952 255 830 24 669 713 -10000 874 926 287 336 794 377 115 172 272 -10000 170 210 511 523 136 18 899 682 94 -10000 229 888 843 639 167 560 814 298 612 -10000 510 565 965 80 251 478 548 940 633 -10000 966 612 773 344 101 336 462 375 312 -10000 749 617 536 895 831 640 366 698 955 -10000 939 665 650 718 654 411 471 172 964 -10000 2 555 959 957 733 353 414 988 907 -10000 462 803 484 462 112 32 987 681 653 -10000 927 330 200 615 362 733 497 333 253 -10000 826 31 110 84 375 98 541 490 330 -10000 590 453 237 646 694 848 655 834 551 -10000 950 999 223 709 725 191 347 689 717 -10000 388 694 361 626 242 226 936 63 313 -10000 624 160 722 332 885 454 636 972 992 -10000 545 282 226 904 512 240 352 981 944 -10000 203 281 291 846 1000 133 464 138 408 -10000 720 952 511 855 221 724 938 441 813 -10000 773 759 8 158 359 823 85 335 54 -10000 341 901 133 425 242 890 302 462 861 -10000 848 925 295 336 410 875 407 371 907 -10000 352 638 471 79 142 635 582 115 481 -10000 626 888 58 404 41 157 766 336 963 -10000 607 304 667 230 199 588 181 337 378 -10000 970 687 866 440 691 838 476 69 105 -10000 100 128 373 381 13 34 749 871 11 -10000 567 250 348 583 255 178 146 514 197 -10000 943 89 662 421 280 810 239 698 939 -10000 498 928 971 131 425 839 595 270 124 -10000 303 679 763 729 678 372 289 772 95 -10000 343 996 999 808 425 976 387 809 55 -10000 930 643 615 524 983 236 352 49 210 -10000 634 478 590 79 90 137 40 539 803 -10000 560 863 946 8 844 457 820 922 222 -10000 591 726 558 206 669 577 272 27 928 -10000 47 633 100 825 685 821 222 897 900 -10000 187 335 298 835 844 240 485 561 241 -10000 757 568 739 44 332 958 469 494 911 -10000 437 639 313 497 634 438 646 277 343 -10000 809 86 741 359 3 199 389 701 400 -10000 895 251 516 77 595 909 470 964 873 -10000 833 703 227 347 995 441 82 688 466 -10000 79 972 721 601 809 136 924 8 375 -10000 395 697 510 755 580 334 697 424 660 -10000 714 244 599 0 919 849 168 33 510 -10000 383 318 260 331 989 903 714 27 170 -10000 798 480 437 175 866 580 273 335 475 -10000 299 549 113 108 634 192 883 755 931 -10000 719 313 809 206 847 749 54 258 756 -10000 171 32 785 641 822 382 788 275 546 -10000 111 80 185 733 240 899 297 798 313 -10000 467 456 107 166 780 727 312 777 761 -10000 592 119 218 286 286 405 625 931 628 -10000 832 41 300 707 205 690 550 619 122 -10000 607 907 744 513 122 540 268 809 262 -10000 659 740 166 709 157 301 74 224 322 -10000 166 137 570 295 939 26 956 267 475 -10000 649 430 912 817 436 982 807 471 420 -10000 124 289 771 179 90 428 460 64 434 -10000 789 525 470 68 684 390 365 38 122 -10000 806 843 590 50 268 460 929 139 251 -10000 316 379 148 391 137 681 953 996 462 -10000 782 630 299 197 583 88 31 497 741 -10000 482 620 309 712 904 200 850 890 76 -10000 834 653 592 280 787 480 890 601 699 -10000 744 506 356 12 909 83 907 723 96 -10000 48 338 210 489 39 552 483 334 961 -10000 754 175 599 645 198 329 243 931 248 -10000 252 241 821 22 218 113 0 887 129 -10000 846 649 784 756 192 95 789 654 85 -10000 418 974 615 770 569 748 880 9 615 -10000 143 904 132 953 763 893 632 968 119 -10000 297 675 562 351 574 506 93 686 255 -10000 93 333 552 937 333 105 433 976 696 -10000 750 760 905 89 978 817 504 348 612 -10000 829 315 52 91 392 141 249 100 288 -10000 185 757 754 591 133 994 52 550 548 -10000 571 895 699 781 332 300 261 529 294 -10000 376 924 782 56 776 630 418 816 391 -10000 241 515 922 387 558 237 446 400 936 -10000 557 361 745 692 335 758 555 673 576 -10000 247 594 274 847 31 876 444 483 586 -10000 474 167 817 957 545 990 933 281 596 -10000 926 87 151 595 250 996 354 649 482 -10000 420 43 722 712 168 94 30 566 392 -10000 777 866 724 795 278 168 352 832 168 -10000 511 966 675 5 619 105 436 844 893 -10000 112 328 340 523 631 309 743 143 11 -10000 241 953 807 388 950 195 670 416 759 -10000 491 701 942 77 616 373 915 264 205 -10000 671 854 774 904 479 444 513 482 123 -10000 536 539 280 622 666 469 331 632 364 -10000 706 638 371 578 150 445 200 338 41 -10000 396 544 470 144 645 536 27 169 80 -10000 19 444 326 737 155 402 279 459 322 -10000 204 385 563 566 834 927 842 146 970 -10000 599 991 20 97 965 542 233 381 463 -10000 671 253 511 781 433 255 109 844 507 -10000 437 150 123 799 296 42 458 620 923 -10000 245 529 163 278 716 359 270 136 136 -10000 931 867 176 598 952 159 378 597 123 -10000 73 504 83 651 693 13 229 693 139 -10000 432 161 678 760 359 965 674 993 325 -10000 351 565 552 160 43 81 756 879 392 -10000 84 677 638 886 801 95 335 695 282 -10000 566 778 541 453 769 527 97 779 331 -10000 961 265 965 996 807 831 654 44 231 -10000 105 779 928 146 414 139 260 640 492 -10000 113 206 432 614 313 583 968 688 266 -10000 369 582 68 731 463 513 771 837 944 -10000 127 737 548 333 184 982 861 170 646 -10000 4 492 287 678 987 467 254 141 575 -10000 111 472 23 729 434 255 733 53 258 -10000 784 326 706 295 220 139 124 400 681 -10000 654 22 804 99 106 230 652 836 692 -10000 530 18 546 25 775 9 284 60 750 -10000 680 811 219 571 360 724 261 409 924 -10000 513 332 422 614 911 537 160 847 476 -10000 85 444 242 683 389 436 38 332 48 -10000 890 896 423 364 301 457 377 143 971 -10000 806 313 479 589 601 812 365 631 325 -10000 442 765 478 811 521 659 889 339 94 -10000 288 461 237 469 924 495 874 570 104 -10000 667 108 972 840 707 875 663 904 678 -10000 525 871 707 186 283 89 265 203 198 -10000 848 219 697 632 348 538 904 830 787 -10000 92 952 759 51 599 633 498 720 903 -10000 378 208 971 531 362 394 498 622 703 -10000 830 735 687 154 170 925 106 128 62 -10000 64 372 404 94 54 866 843 197 780 -10000 127 743 466 363 230 451 435 131 561 -10000 532 185 652 236 697 492 737 2 176 -10000 457 593 666 787 234 46 142 853 525 -10000 653 384 276 888 270 136 469 591 817 -10000 423 850 541 536 130 248 65 75 246 -10000 2 784 121 632 795 569 910 751 630 -10000 516 15 844 128 420 412 900 683 900 -10000 643 819 477 121 537 42 398 144 677 -10000 371 512 668 610 376 24 519 859 269 -10000 905 22 902 255 323 663 833 426 863 -10000 21 418 985 429 8 109 107 981 636 -10000 589 3 606 163 106 719 590 755 222 -10000 665 391 373 208 506 929 927 382 229 -10000 448 17 1 2 777 819 435 358 549 -10000 240 157 104 518 958 730 581 846 108 -10000 772 145 580 35 913 263 440 898 424 -10000 909 804 273 586 364 291 890 595 616 -10000 939 699 727 618 80 618 875 77 134 -10000 874 690 350 357 320 229 419 889 482 -10000 140 269 540 209 736 559 230 912 438 -10000 613 948 682 882 136 579 690 10 699 -10000 829 423 566 459 314 816 13 47 569 -10000 77 936 645 542 996 879 323 491 78 -10000 782 672 0 819 35 372 939 701 279 -10000 523 332 887 124 462 695 336 286 610 -10000 438 817 959 635 132 829 350 744 232 -10000 54 634 144 742 104 392 204 226 890 -10000 750 677 643 794 169 894 196 668 262 -10000 572 201 812 922 906 581 281 459 120 -10000 440 514 901 277 995 117 834 654 935 -10000 32 736 318 610 486 765 389 866 70 -10000 183 356 804 890 565 582 295 232 705 -10000 645 541 943 184 97 25 116 961 468 -10000 921 791 768 256 375 154 993 934 206 -10000 983 266 506 970 102 598 353 589 171 -10000 332 934 84 850 826 43 412 173 778 -10000 561 841 327 703 163 223 246 882 234 -10000 132 809 188 100 430 623 16 294 160 -10000 936 604 886 372 112 727 956 807 208 -10000 181 703 417 321 409 143 264 274 502 -10000 105 59 698 449 992 780 781 946 297 -10000 751 517 967 599 713 582 534 927 527 -10000 969 372 465 861 854 840 440 568 402 -10000 267 318 12 215 833 11 221 552 8 -10000 828 442 669 730 620 229 96 828 357 -10000 586 403 701 609 321 3 510 656 474 -10000 647 845 912 486 184 586 557 30 826 -10000 47 51 313 581 788 563 228 621 493 -10000 341 824 126 686 842 998 306 919 848 -10000 965 352 975 306 359 134 672 372 981 -10000 349 485 457 648 662 702 451 517 792 -10000 675 589 448 542 303 10 43 429 602 -10000 150 856 74 784 409 736 159 79 968 -10000 232 46 313 809 41 611 533 905 21 -10000 668 930 898 808 462 935 290 802 77 -10000 635 556 834 439 747 272 571 128 416 -10000 767 985 912 893 907 312 779 124 479 -10000 642 331 501 456 423 469 299 578 732 -10000 240 485 696 717 206 268 634 744 819 -10000 407 963 587 964 637 513 676 530 653 -10000 804 16 164 973 913 272 997 702 388 -10000 291 882 567 630 10 766 638 44 478 -10000 417 237 416 468 458 354 807 532 764 -10000 131 163 13 257 221 988 882 862 989 -10000 980 435 31 419 760 859 49 44 391 -10000 111 837 369 230 901 547 161 108 529 -10000 361 578 998 682 437 553 154 276 364 -10000 324 713 456 314 796 540 427 420 147 -10000 551 472 385 329 894 359 253 260 681 -10000 1 353 636 215 518 737 535 826 705 -10000 984 200 864 684 403 84 827 449 916 -10000 264 522 954 277 621 166 328 906 421 -10000 823 932 512 804 352 943 966 66 971 -10000 394 197 960 203 641 922 848 144 76 -10000 168 894 915 578 709 647 469 293 536 -10000 596 530 215 488 367 259 12 342 96 -10000 849 361 72 100 941 797 5 180 329 -10000 587 877 867 280 477 649 297 33 431 -10000 499 45 214 524 309 693 654 434 716 -10000 983 270 96 600 751 128 791 441 171 -10000 209 621 800 133 908 329 336 631 92 -10000 957 738 415 250 958 337 377 391 549 -10000 609 775 870 627 844 77 149 652 422 -10000 907 739 672 657 937 584 236 957 670 -10000 600 393 656 345 530 334 61 656 824 -10000 248 747 745 640 629 533 972 538 7 -10000 414 702 605 411 32 602 548 142 155 -10000 972 777 838 784 849 964 376 937 697 -10000 566 329 728 332 605 461 996 662 945 -10000 225 545 633 216 214 708 810 987 345 -10000 564 827 599 668 956 478 254 557 534 -10000 589 968 724 701 363 222 887 488 640 -10000 979 756 722 985 612 578 547 318 964 -10000 368 116 28 569 535 854 926 751 372 -10000 490 89 17 197 788 139 930 841 25 -10000 477 907 802 824 506 59 862 534 731 -10000 657 541 127 760 783 818 246 475 232 -10000 30 660 469 205 197 406 212 932 602 -10000 744 64 977 995 274 735 296 850 941 -10000 377 56 184 975 152 205 728 156 205 -10000 492 165 528 639 292 280 588 144 823 -10000 645 976 741 90 162 178 459 746 281 -10000 3 98 103 356 663 756 62 76 742 -10000 58 833 834 750 873 603 138 240 513 -10000 337 378 723 119 73 585 684 66 861 -10000 979 534 873 559 10 552 31 618 257 -10000 680 963 387 95 518 798 853 606 163 -10000 922 107 916 428 900 866 776 84 54 -10000 877 394 376 678 347 389 825 817 51 -10000 465 440 755 884 327 156 318 787 275 -10000 500 187 317 368 611 74 639 347 859 -10000 342 873 966 296 481 275 274 694 136 -10000 306 508 575 579 776 111 950 401 139 -10000 728 389 639 74 67 921 227 736 184 -10000 310 53 621 562 479 828 771 186 97 -10000 852 321 201 825 495 507 290 897 189 -10000 399 940 507 438 47 886 165 250 81 -10000 489 970 166 954 67 117 210 997 742 -10000 618 743 670 842 345 729 843 247 752 -10000 917 158 647 190 1000 134 790 905 849 -10000 693 193 215 537 59 100 865 392 846 -10000 981 816 924 674 987 373 407 395 396 -10000 662 907 246 997 635 866 682 693 358 -10000 219 428 642 29 806 2 289 698 750 -10000 823 623 163 273 460 453 681 333 640 -10000 953 798 809 610 848 360 867 956 49 -10000 151 917 624 802 92 412 793 970 513 -10000 324 925 782 990 986 71 960 162 257 -10000 47 749 18 53 28 686 635 809 429 -10000 68 442 926 73 34 313 960 272 728 -10000 675 417 124 753 805 502 303 89 893 -10000 394 835 527 679 261 774 63 362 767 -10000 780 639 724 81 104 146 287 73 51 -10000 943 389 386 995 622 751 867 681 611 -10000 255 366 776 837 727 166 987 71 704 -10000 957 107 960 273 781 99 398 15 82 -10000 928 733 478 67 926 172 152 326 3 -10000 564 152 162 692 880 808 498 970 661 -10000 717 404 543 82 832 785 404 420 184 -10000 126 364 350 708 846 699 549 202 606 -10000 525 12 837 665 635 610 499 410 824 -10000 770 250 847 822 729 463 10 605 468 -10000 198 472 609 910 904 290 195 906 489 -10000 188 394 111 28 193 784 51 870 672 -10000 199 333 198 757 195 14 581 744 3 -10000 937 756 772 248 35 353 614 233 838 -10000 336 900 970 256 336 508 488 788 77 -10000 610 474 943 471 302 91 461 497 172 -10000 450 410 864 18 975 437 85 980 90 -10000 102 386 968 977 884 435 285 103 594 -10000 116 698 841 505 813 318 456 767 700 -10000 750 370 121 771 12 79 783 347 373 -10000 313 178 409 375 928 344 490 583 796 -10000 545 36 788 432 756 687 462 74 434 -10000 635 818 805 20 992 191 617 953 530 -10000 67 926 846 199 958 680 118 541 283 -10000 217 977 13 238 449 769 301 927 985 -10000 791 660 657 352 73 800 476 616 859 -10000 527 498 963 59 693 1000 276 703 729 -10000 551 950 102 71 833 0 435 815 48 -10000 987 174 99 993 753 330 537 828 503 -10000 151 139 132 882 26 4 62 845 54 -10000 925 863 277 27 445 58 855 621 677 -10000 433 72 897 49 404 896 958 553 421 -10000 203 624 166 190 611 892 853 671 914 -10000 620 152 229 41 310 102 61 412 21 -10000 153 917 826 728 275 897 458 972 593 -10000 196 903 769 608 426 838 275 743 899 -10000 98 555 771 784 143 467 672 762 280 -10000 675 452 511 92 461 559 195 47 724 -10000 338 889 197 53 284 255 782 805 415 -10000 867 459 911 83 395 162 144 655 390 -10000 562 462 246 109 993 217 890 27 862 -10000 444 1000 469 32 384 971 967 713 865 -10000 917 947 84 885 156 364 90 90 377 -10000 357 215 260 310 567 279 198 995 145 -10000 682 409 952 246 690 173 581 328 855 -10000 396 752 94 396 53 949 464 175 163 -10000 654 427 329 668 99 590 868 39 86 -10000 888 109 195 486 908 184 230 160 547 -10000 500 184 807 268 860 261 901 735 594 -10000 391 442 73 710 68 21 387 598 88 -10000 211 128 330 581 383 528 444 435 749 -10000 286 617 896 553 236 868 100 734 927 -10000 509 731 570 870 92 461 130 418 873 -10000 330 875 485 249 622 787 810 379 783 -10000 500 427 667 451 237 680 295 673 372 -10000 748 196 304 854 276 855 835 554 76 -10000 508 950 332 886 106 551 776 123 481 -10000 474 353 96 692 873 532 543 534 994 -10000 588 148 845 975 206 813 486 218 20 -10000 952 10 377 160 304 49 632 785 430 -10000 845 708 539 424 437 153 881 779 272 -10000 670 934 257 832 943 371 645 828 194 -10000 108 402 116 354 5 72 165 915 285 -10000 707 640 241 625 708 305 779 18 674 -10000 87 839 824 415 628 676 321 405 491 -10000 557 669 463 500 105 36 812 185 615 -10000 577 198 424 477 143 682 801 398 355 -10000 99 0 473 598 664 464 854 540 195 -10000 819 869 58 249 497 625 769 63 36 -10000 371 439 375 787 193 831 536 164 728 -10000 377 551 940 678 45 702 489 674 756 -10000 24 706 143 847 964 505 600 556 130 -10000 672 834 242 214 835 124 942 962 846 -10000 728 225 413 228 841 616 243 871 927 -10000 894 503 823 184 183 546 627 37 448 -10000 149 181 603 500 817 852 778 249 460 -10000 11 894 891 853 628 258 694 669 17 -10000 455 446 42 988 158 175 789 628 422 -10000 766 595 649 910 156 319 702 609 694 -10000 785 675 485 605 635 788 234 825 325 -10000 451 177 572 524 716 334 225 562 632 -10000 813 118 254 690 458 257 552 613 595 -10000 740 680 887 94 850 361 779 522 422 -10000 806 187 139 959 484 723 23 379 772 -10000 207 523 733 960 211 565 199 475 761 -10000 283 533 359 348 601 966 821 961 611 -10000 358 137 70 535 500 401 178 35 433 -10000 720 131 832 933 755 663 983 738 811 -10000 266 972 954 615 43 290 698 484 6 -10000 439 612 496 228 990 691 82 47 41 -10000 389 27 998 706 334 989 922 920 581 -10000 94 530 374 502 502 957 500 831 192 -10000 767 84 661 350 718 93 678 754 949 -10000 550 161 694 661 707 149 366 626 986 -10000 616 572 788 113 903 57 605 906 245 -10000 654 181 664 718 73 272 431 274 805 -10000 292 395 199 289 55 123 885 971 330 -10000 479 807 745 174 492 130 111 782 338 -10000 631 124 206 687 392 102 564 579 472 -10000 594 267 510 694 646 160 921 228 122 -10000 212 543 644 910 912 337 434 767 153 -10000 487 894 437 956 289 803 158 859 729 -10000 273 61 585 89 440 81 494 96 713 -10000 947 573 130 134 121 59 728 865 85 -10000 242 754 927 337 731 780 826 970 611 -10000 945 930 625 967 801 491 433 613 199 -10000 452 498 748 235 644 479 953 37 472 -10000 401 53 175 111 622 817 556 970 674 -10000 291 480 988 846 604 404 890 745 972 -10000 927 753 897 27 542 37 825 954 649 -10000 400 207 342 320 191 477 628 699 314 -10000 627 773 182 789 653 129 955 512 745 -10000 741 459 550 897 91 929 519 42 638 -10000 50 241 745 298 43 368 351 507 638 -10000 694 843 32 225 89 976 206 452 469 -10000 433 286 868 15 724 404 678 62 184 -10000 419 311 778 358 96 305 265 247 538 -10000 887 750 50 558 483 600 330 173 623 -10000 155 887 27 54 992 890 121 997 416 -10000 217 777 397 770 160 466 22 9 322 -10000 838 175 247 432 407 322 125 653 354 -10000 277 706 450 787 775 326 264 959 887 -10000 592 69 232 877 313 509 308 365 377 -10000 393 466 87 878 63 925 454 866 351 -10000 123 575 324 308 696 553 476 1000 279 -10000 182 624 920 261 779 230 350 418 40 -10000 372 63 282 531 327 372 698 374 478 -10000 797 948 422 176 247 221 283 300 248 -10000 142 250 642 262 19 704 890 145 823 -10000 957 660 577 23 348 568 729 137 293 -10000 504 143 343 495 857 274 381 826 890 -10000 382 175 782 740 537 883 560 235 604 -10000 629 673 985 746 467 831 194 252 667 -10000 392 751 153 244 807 881 475 443 699 -10000 550 245 413 338 638 196 991 987 186 -10000 134 64 728 238 213 765 876 4 979 -10000 267 3 246 681 405 96 487 344 528 -10000 954 960 896 30 502 843 593 9 454 -10000 831 514 319 929 972 413 60 607 684 -10000 794 367 859 503 888 264 215 336 690 -10000 469 326 298 269 606 281 984 761 732 -10000 469 50 783 605 861 694 654 909 414 -10000 679 152 287 322 592 690 57 47 827 -10000 585 541 122 773 666 521 27 470 818 -10000 581 874 357 103 309 91 396 913 581 -10000 872 101 5 381 351 44 440 174 277 -10000 530 333 897 999 586 64 318 495 413 -10000 829 893 560 836 459 135 344 98 737 -10000 381 387 740 934 786 415 122 693 508 -10000 397 37 903 411 594 363 18 979 297 -10000 63 77 776 566 149 906 896 738 489 -10000 700 404 505 234 486 19 189 680 602 -10000 413 920 118 737 880 518 271 190 472 -10000 425 750 637 728 973 572 413 224 497 -10000 632 744 967 336 535 130 216 959 602 -10000 106 312 595 223 90 621 683 958 6 -10000 130 605 853 300 388 399 668 918 166 -10000 183 348 328 990 82 350 566 919 197 -10000 838 103 126 297 315 220 814 946 201 -10000 884 273 309 313 201 112 239 231 665 -10000 117 587 584 248 491 732 528 243 205 -10000 24 406 307 781 778 617 277 343 117 -10000 301 168 470 123 527 397 802 366 780 -10000 631 972 726 496 799 503 630 763 409 -10000 502 747 73 584 88 797 350 746 458 -10000 301 481 897 524 959 864 744 75 694 -10000 576 82 239 248 964 384 947 413 302 -10000 315 339 708 605 810 334 236 935 449 -10000 515 138 994 293 117 142 787 533 122 -10000 78 317 552 287 957 72 5 285 546 -10000 352 598 151 310 516 62 718 36 854 -10000 854 813 689 188 603 510 212 685 256 -10000 267 435 795 774 919 715 565 696 778 -10000 586 634 601 34 687 768 823 785 753 -10000 950 925 278 254 42 358 318 477 646 -10000 604 892 676 447 152 500 864 792 91 -10000 99 872 384 946 608 334 245 63 656 -10000 579 835 581 320 372 822 390 593 347 -10000 931 332 311 594 907 95 861 766 623 -10000 737 211 541 757 38 366 148 957 776 -10000 175 197 880 780 782 854 959 925 129 -10000 297 754 866 46 414 12 411 111 28 -10000 719 267 327 852 876 984 737 596 45 -10000 782 59 744 731 189 304 563 666 176 -10000 409 408 556 535 608 523 193 431 773 -10000 474 323 961 496 243 788 8 337 686 -10000 99 365 11 398 856 835 371 568 603 -10000 648 336 891 320 220 939 291 90 865 -10000 87 64 486 483 896 415 110 135 47 -10000 563 135 778 428 387 90 518 377 378 -10000 557 693 311 638 57 961 167 90 26 -10000 818 28 893 667 682 680 978 428 489 -10000 542 52 64 626 525 987 837 113 179 -10000 563 449 438 95 659 80 906 25 603 -10000 592 267 67 400 929 587 149 512 398 -10000 423 57 554 187 977 978 453 858 152 -10000 181 479 368 715 856 772 428 628 873 -10000 894 329 743 130 183 467 758 759 686 -10000 255 398 653 489 587 447 175 981 651 -10000 991 20 927 526 636 326 467 769 530 -10000 289 320 425 377 282 902 360 138 384 -10000 488 540 385 830 402 117 728 820 937 -10000 875 642 323 652 91 606 918 772 216 -10000 882 616 547 836 673 334 229 196 586 -10000 14 274 533 93 530 375 139 374 815 -10000 245 882 858 476 987 108 723 719 235 -10000 405 793 884 539 621 418 512 35 341 -10000 545 272 988 928 507 68 480 725 959 -10000 508 988 867 760 310 84 371 541 451 -10000 630 422 932 962 252 461 928 967 217 -10000 352 795 405 417 154 762 806 844 693 -10000 127 221 981 581 275 320 991 261 493 -10000 658 414 923 74 742 425 258 901 15 -10000 153 792 974 687 269 150 188 152 295 -10000 532 859 229 158 227 193 726 372 253 -10000 232 634 618 438 263 146 759 278 346 -10000 326 1000 775 226 894 208 175 555 204 -10000 861 851 790 452 21 798 756 635 492 -10000 120 403 714 841 47 68 653 597 883 -10000 276 341 743 104 555 235 158 332 25 -10000 210 379 167 930 855 158 196 745 515 -10000 938 322 972 934 998 187 175 437 421 -10000 991 368 363 934 971 726 748 53 791 -10000 967 858 966 169 590 193 92 25 691 -10000 276 759 897 1000 783 783 7 69 672 -10000 988 37 317 81 476 607 537 275 6 -10000 410 734 771 237 122 424 283 801 226 -10000 306 370 13 884 842 488 268 722 603 -10000 100 739 171 274 384 757 729 434 172 -10000 384 456 755 244 694 561 84 341 731 -10000 647 172 159 885 523 32 25 67 48 -10000 197 267 466 138 572 764 761 466 170 -10000 358 104 23 290 88 752 998 918 839 -10000 577 940 341 906 851 760 352 218 171 -10000 792 2 139 309 977 448 808 484 232 -10000 714 157 469 339 86 672 723 206 427 -10000 433 227 795 498 344 707 296 846 942 -10000 951 708 453 864 332 339 901 312 587 -10000 703 871 517 825 631 341 896 616 327 -10000 663 976 118 795 518 383 668 982 276 -10000 554 291 195 37 655 544 233 307 471 -10000 708 1000 983 997 363 808 863 654 102 -10000 477 282 10 958 968 531 209 844 611 -10000 506 437 203 265 137 376 687 482 235 -10000 601 103 368 912 549 398 209 114 625 -10000 138 509 486 781 950 534 876 527 111 -10000 520 790 565 578 177 760 408 93 816 -10000 976 554 787 761 165 527 547 744 638 -10000 891 207 144 817 574 219 895 968 870 -10000 176 292 338 731 968 271 444 229 348 -10000 976 482 646 358 657 123 787 604 789 -10000 405 976 765 667 41 404 389 596 815 -10000 489 820 446 106 56 341 473 612 936 -10000 388 400 77 398 993 842 662 348 629 -10000 373 821 583 410 865 946 150 996 796 -10000 614 11 786 49 52 768 262 3 395 -10000 955 43 739 748 700 590 697 890 384 -10000 488 194 447 7 417 619 320 28 811 -10000 706 326 60 392 563 644 527 234 591 -10000 983 311 387 119 940 681 398 783 685 -10000 609 931 631 934 444 979 469 545 12 -10000 833 487 699 201 238 170 207 135 110 -10000 274 230 348 795 561 633 0 278 85 -10000 437 83 873 43 343 586 84 450 784 -10000 716 963 45 235 641 987 24 163 857 -10000 133 744 592 227 540 866 626 170 641 -10000 271 262 679 554 986 768 310 619 136 -10000 31 973 646 367 439 994 65 896 302 -10000 471 762 16 102 110 70 851 244 554 -10000 360 181 823 667 380 619 438 392 998 -10000 35 427 127 224 531 373 952 576 483 -10000 509 759 904 93 580 517 373 810 127 -10000 830 7 987 425 274 760 65 718 995 -10000 580 548 123 652 851 242 612 168 372 -10000 452 130 256 931 68 96 353 345 662 -10000 772 838 69 993 819 829 828 934 885 -10000 861 247 322 469 480 196 296 524 571 -10000 819 108 437 241 471 146 463 125 646 -10000 474 82 501 357 402 443 555 561 591 -10000 471 711 374 878 889 201 472 63 42 -10000 293 700 880 706 641 427 945 849 26 -10000 167 382 665 2 516 723 88 768 603 -10000 100 762 774 419 75 136 653 302 133 -10000 293 352 105 944 162 112 172 640 403 -10000 139 121 336 706 137 592 953 209 902 -10000 460 15 799 559 987 170 637 134 769 -10000 475 277 497 67 847 62 364 852 879 -10000 127 825 766 930 661 983 391 187 572 -10000 437 709 404 165 867 32 787 268 553 -10000 480 168 175 988 967 455 178 66 272 -10000 203 958 953 848 311 827 430 660 903 -10000 309 818 732 655 351 738 81 242 858 -10000 140 924 49 448 580 438 950 186 274 -10000 383 512 257 182 339 475 694 990 571 -10000 196 242 34 43 716 515 68 992 197 -10000 747 247 228 378 830 816 321 370 939 -10000 440 140 974 570 819 674 612 323 583 -10000 552 955 393 42 172 908 451 591 962 -10000 16 778 556 432 778 279 954 848 699 -10000 671 132 113 433 29 234 23 290 650 -10000 231 190 790 486 972 601 82 930 441 -10000 287 907 628 891 322 261 572 870 883 -10000 60 266 748 386 625 295 627 428 914 -10000 648 224 23 785 171 937 768 612 679 -10000 82 516 941 104 97 624 17 664 216 -10000 239 203 970 619 396 991 56 869 551 -10000 579 139 975 826 95 616 674 773 834 -10000 430 318 213 720 287 747 849 395 407 -10000 519 983 665 531 418 469 397 242 2 -10000 677 948 777 827 934 745 857 373 293 -10000 340 675 430 588 875 87 402 111 282 -10000 643 150 349 503 510 531 995 154 396 -10000 570 681 970 209 551 167 383 843 87 -10000 115 390 984 402 947 822 859 433 760 -10000 776 176 670 27 850 709 977 250 955 -10000 354 429 688 406 484 253 303 67 736 -10000 842 174 6 575 579 933 563 93 541 -10000 925 40 684 928 749 684 224 355 214 -10000 221 739 406 512 727 506 914 402 31 -10000 720 167 544 348 852 953 848 247 346 -10000 358 402 551 941 409 580 624 984 880 -10000 844 983 4 290 312 538 260 635 493 -10000 91 386 237 51 893 88 626 770 488 -10000 369 982 640 24 2 305 641 457 736 -10000 44 742 885 179 562 362 6 48 684 -10000 786 156 887 213 745 500 957 216 84 -10000 937 343 498 991 157 552 42 502 355 -10000 628 453 389 434 447 11 438 960 739 -10000 835 109 64 187 727 417 705 1000 78 -10000 311 729 226 754 295 442 575 550 524 -10000 576 441 540 525 477 542 350 616 154 -10000 623 172 443 586 763 865 589 881 373 -10000 662 742 861 764 57 969 116 726 928 -10000 80 953 614 624 886 425 313 572 813 -10000 280 657 17 423 991 353 23 911 808 -10000 631 510 313 914 997 334 107 636 323 -10000 214 422 674 722 447 874 633 572 415 -10000 143 947 291 744 836 743 852 268 318 -10000 695 716 294 358 461 92 72 86 721 -10000 761 167 805 249 46 664 721 181 375 -10000 432 601 741 275 711 640 926 227 843 -10000 660 920 229 140 353 241 356 541 842 -10000 910 970 209 517 962 143 340 236 748 -10000 260 454 216 196 403 962 39 327 380 -10000 292 819 9 798 987 621 423 200 381 -10000 457 431 353 910 74 82 79 492 787 -10000 437 195 991 962 61 668 638 161 755 -10000 847 9 661 610 799 184 280 327 674 -10000 431 94 471 406 327 611 626 46 375 -10000 17 741 746 932 203 499 774 34 352 -10000 1 742 527 744 922 409 549 272 711 -10000 830 374 223 618 526 257 846 8 998 -10000 888 926 683 678 608 547 90 730 291 -10000 614 576 282 720 558 516 179 515 801 -10000 856 215 550 225 607 319 664 721 829 -10000 329 49 168 298 594 875 935 9 398 -10000 755 254 129 883 5 442 11 357 742 -10000 184 891 269 94 48 115 634 664 16 -10000 935 203 554 770 901 320 271 498 304 -10000 808 479 437 348 385 577 318 868 443 -10000 358 425 110 445 554 975 474 950 488 -10000 115 449 728 299 611 251 900 582 254 -10000 272 990 936 569 743 580 958 905 964 -10000 414 473 290 959 8 820 599 693 840 -10000 175 348 511 205 511 999 613 302 874 -10000 553 233 371 872 882 424 589 791 442 -10000 42 22 970 984 622 18 88 536 270 -10000 93 528 143 441 224 247 183 284 608 -10000 973 415 887 459 181 20 752 333 715 -10000 595 223 633 718 160 415 259 35 579 -10000 792 660 738 398 423 684 676 711 1 -10000 198 900 168 919 64 720 570 762 135 -10000 372 859 501 796 170 668 831 973 240 -10000 179 72 674 941 210 464 487 364 996 -10000 509 524 922 236 946 455 986 582 0 -10000 628 48 254 982 335 474 997 499 140 -10000 115 7 298 716 94 433 813 256 940 -10000 93 775 297 731 870 484 230 747 878 -10000 55 133 618 225 257 925 672 284 191 -10000 494 51 948 336 434 799 899 642 472 -10000 588 772 899 356 864 720 379 315 842 -10000 439 679 533 773 500 817 719 732 556 -10000 121 978 160 989 932 130 414 242 599 -10000 980 315 681 897 811 11 444 451 341 -10000 40 927 458 136 589 713 152 285 179 -10000 361 972 821 235 653 883 394 333 607 -10000 995 203 371 197 360 254 558 896 871 -10000 582 113 910 701 432 783 356 947 459 -10000 621 175 551 229 991 524 420 183 174 -10000 329 960 552 542 618 656 829 335 29 -10000 23 648 482 741 735 693 568 584 15 -10000 788 329 919 722 369 70 929 518 465 -10000 314 559 58 236 95 950 555 466 873 -10000 443 272 379 701 667 892 553 757 853 -10000 654 625 131 765 699 262 78 540 671 -10000 345 570 226 290 291 570 45 217 953 -10000 29 548 487 545 772 671 316 173 604 -10000 363 127 406 413 347 417 100 282 722 -10000 850 703 243 871 287 537 614 352 871 -10000 135 416 39 722 869 988 12 805 235 -10000 950 410 195 963 694 802 608 684 465 -10000 742 705 145 768 516 7 935 64 12 -10000 16 998 53 280 775 703 385 225 580 -10000 403 184 474 840 535 448 296 451 880 -10000 195 428 290 270 144 667 836 746 118 -10000 253 228 525 831 140 325 620 113 614 -10000 930 431 424 683 884 783 348 20 279 -10000 134 134 277 418 609 204 481 981 48 -10000 611 225 431 434 176 475 145 190 91 -10000 461 846 875 465 457 541 326 225 310 -10000 376 150 899 287 138 306 29 332 457 -10000 245 48 387 211 111 764 37 460 992 -10000 838 322 994 498 134 126 215 301 533 -10000 496 120 368 498 873 373 719 781 593 -10000 661 673 142 317 483 564 259 628 843 -10000 608 706 90 187 607 795 857 710 657 -10000 296 588 380 540 252 82 382 654 400 -10000 811 728 348 570 320 215 518 490 549 -10000 613 263 717 880 452 855 787 451 95 -10000 675 110 611 993 527 521 764 470 378 -10000 767 64 833 355 752 680 914 682 863 -10000 745 214 36 46 356 682 799 388 489 -10000 262 657 407 418 675 627 591 519 925 -10000 915 162 225 382 970 205 152 560 683 -10000 781 757 701 228 540 410 118 997 377 -10000 999 200 126 897 165 455 56 990 936 -10000 424 84 432 539 4 303 551 122 737 -10000 943 844 978 404 981 50 75 790 460 -10000 17 344 380 743 363 120 887 8 598 -10000 324 930 929 873 164 27 775 719 687 -10000 740 741 872 352 290 690 547 562 333 -10000 463 86 682 407 98 783 696 910 753 -10000 893 96 300 33 462 419 971 205 99 -10000 196 837 373 895 965 126 449 23 834 -10000 671 219 454 875 774 378 327 745 515 -10000 500 536 737 350 426 608 25 338 955 -10000 984 65 989 102 135 906 890 350 626 -10000 603 435 42 879 624 582 590 143 20 -10000 808 248 419 258 368 351 735 508 216 -10000 775 448 945 840 372 133 263 999 560 -10000 815 676 397 578 760 773 98 718 559 -10000 842 223 299 628 426 613 537 730 278 -10000 60 180 334 151 322 414 365 173 209 -10000 514 578 212 326 158 282 111 695 868 -10000 551 636 234 608 621 614 301 942 506 -10000 889 938 800 1000 90 750 898 431 456 -10000 855 138 845 575 457 998 919 829 744 -10000 928 35 329 338 351 412 452 145 69 -10000 980 486 417 648 414 745 126 304 35 -10000 152 248 296 373 819 7 9 302 729 -10000 590 844 377 720 789 165 745 79 449 -10000 0 752 865 17 495 736 480 317 389 -10000 852 946 742 241 750 375 18 304 843 -10000 801 209 250 634 11 528 957 826 367 -10000 555 55 609 781 200 925 844 837 622 -10000 70 292 284 240 221 540 957 727 581 -10000 752 800 294 624 302 960 109 143 372 -10000 641 461 761 289 654 569 538 660 203 -10000 751 880 917 783 474 262 678 168 396 -10000 197 520 354 659 601 732 991 281 575 -10000 397 204 317 533 654 708 449 322 871 -10000 785 328 445 100 299 104 3 166 217 -10000 525 786 494 231 399 413 680 523 227 -10000 867 987 906 852 928 945 870 847 553 -10000 704 770 127 389 570 300 454 253 968 -10000 797 290 86 325 962 81 148 426 722 -10000 592 41 688 206 523 642 403 539 330 -10000 769 624 746 943 241 113 38 118 552 -10000 974 62 11 541 181 498 716 744 376 -10000 866 586 260 688 987 217 768 105 384 -10000 935 378 144 209 456 540 846 536 50 -10000 938 571 70 496 237 397 888 244 46 -10000 608 408 411 928 766 126 575 18 290 -10000 982 22 630 890 282 834 497 217 440 -10000 163 693 962 977 820 385 940 902 641 -10000 559 824 262 617 367 92 690 104 581 -10000 563 138 325 68 960 740 720 328 663 -10000 853 86 841 324 458 683 605 707 603 -10000 783 291 723 833 199 15 762 851 139 -10000 306 19 881 662 635 753 134 202 549 -10000 260 494 382 684 665 705 577 240 322 -10000 492 401 83 759 562 527 172 480 784 -10000 30 167 678 10 670 767 220 628 723 -10000 416 665 728 226 727 299 744 380 642 -10000 309 688 271 333 529 372 35 515 305 -10000 331 105 805 795 106 374 250 496 410 -10000 580 824 593 343 16 233 294 677 924 -10000 912 497 106 433 695 788 534 668 37 -10000 686 314 321 161 952 46 699 354 383 -10000 694 366 919 436 525 254 209 993 272 -10000 27 438 580 923 386 163 536 969 419 -10000 946 289 773 258 832 549 628 27 45 -10000 962 822 199 566 548 878 283 93 902 -10000 868 618 856 340 324 962 643 988 729 -10000 863 642 143 156 918 798 960 438 968 -10000 672 409 391 16 215 320 325 709 493 -10000 821 119 758 140 495 957 518 99 193 -10000 155 511 210 60 188 479 604 321 892 -10000 81 264 658 455 280 32 49 342 394 -10000 334 963 206 884 949 33 461 881 18 -10000 176 556 239 299 94 93 573 730 137 -10000 524 38 748 707 18 989 989 44 409 -10000 947 68 612 318 430 574 297 131 485 -10000 928 549 934 411 733 286 505 564 654 -10000 336 555 533 418 412 562 13 117 388 -10000 162 823 80 695 305 253 66 490 919 -10000 656 2 973 386 868 511 788 385 409 -10000 794 363 460 865 304 707 807 983 457 -10000 554 410 435 417 251 907 328 708 131 -10000 159 439 730 364 745 63 965 477 336 -10000 751 823 458 626 281 596 3 93 21 -10000 27 147 622 6 585 241 272 241 220 -10000 153 569 314 407 440 742 80 931 652 -10000 329 280 832 996 809 958 84 340 816 -10000 123 373 409 819 1 84 918 789 243 -10000 314 251 483 463 148 477 568 15 60 -10000 179 5 879 302 240 827 181 766 977 -10000 396 147 847 555 770 626 473 21 900 -10000 932 477 258 465 913 45 136 883 420 -10000 320 161 619 943 425 197 232 497 466 -10000 506 701 729 663 903 584 212 231 400 -10000 326 453 391 430 636 829 508 57 533 -10000 422 271 120 159 245 876 499 659 731 -10000 869 67 114 871 268 973 980 209 84 -10000 588 354 463 886 414 681 514 527 15 -10000 612 177 286 752 586 377 775 248 721 -10000 636 888 769 240 304 470 178 355 123 -10000 669 802 354 637 285 602 699 53 275 -10000 765 680 427 624 321 125 86 480 746 -10000 110 170 825 327 481 319 852 842 22 -10000 667 604 422 336 148 863 858 805 301 -10000 166 531 908 356 742 592 884 940 546 -10000 209 838 397 936 222 425 875 957 904 -10000 144 996 610 158 736 498 933 541 955 -10000 635 412 369 141 347 213 99 405 998 -10000 514 654 348 454 781 317 660 29 63 -10000 881 165 907 210 310 951 627 885 801 -10000 440 429 19 94 930 5 570 886 753 -10000 974 889 404 539 858 238 790 27 16 -10000 787 690 574 315 452 173 412 707 286 -10000 359 877 268 966 823 362 519 172 123 -10000 354 952 790 166 184 938 946 456 113 -10000 148 889 577 645 48 633 323 563 537 -10000 149 515 36 375 102 528 770 87 363 -10000 138 513 336 732 401 170 138 379 881 -10000 770 63 889 197 973 877 430 974 462 -10000 664 374 897 127 393 389 386 719 802 -10000 552 448 497 488 150 141 120 115 724 -10000 205 768 557 594 428 430 66 902 47 -10000 520 186 749 405 834 773 192 941 892 -10000 288 305 801 971 594 318 338 594 237 -10000 643 373 213 215 983 482 864 483 816 -10000 361 896 929 867 34 640 440 222 639 -10000 242 724 195 829 379 3 646 79 221 -10000 328 807 533 229 20 113 334 530 411 -10000 803 855 34 9 209 938 192 472 440 -10000 760 114 390 452 156 872 802 912 72 -10000 140 921 327 650 276 45 946 240 299 -10000 812 637 784 441 172 521 903 477 729 -10000 183 76 785 603 687 637 472 283 137 -10000 354 902 526 712 526 8 929 596 439 -10000 584 23 545 126 831 518 392 727 329 -10000 960 861 193 29 75 981 264 971 420 -10000 80 534 865 317 589 929 432 765 171 -10000 83 354 365 473 67 452 880 847 443 -10000 519 815 726 491 619 193 125 711 654 -10000 636 276 809 151 800 683 559 74 982 -10000 621 241 974 339 529 400 122 797 111 -10000 277 753 282 549 297 938 473 655 941 -10000 787 731 351 843 506 760 487 206 65 -10000 397 356 758 439 717 549 361 697 811 -10000 952 762 288 750 758 4 540 571 394 -10000 39 428 303 561 155 819 840 969 76 -10000 208 115 879 933 927 267 672 203 928 -10000 901 561 380 806 382 104 936 349 988 -10000 194 231 382 235 624 347 305 30 102 -10000 540 974 106 36 603 770 478 54 781 -10000 3 845 447 323 312 87 287 626 134 -10000 841 238 311 384 441 416 569 110 34 -10000 832 657 362 526 969 939 795 417 937 -10000 737 379 73 880 172 99 217 994 554 -10000 72 777 277 371 737 840 201 566 358 -10000 864 133 119 839 850 544 713 344 966 -10000 71 136 746 853 92 200 466 49 810 -10000 865 370 248 976 452 508 708 930 89 -10000 611 335 51 34 612 406 751 438 418 -10000 914 556 587 714 526 436 34 408 385 -10000 48 567 795 724 250 915 568 377 325 -10000 735 641 36 690 453 501 891 142 707 -10000 111 607 795 814 51 435 237 481 964 -10000 583 849 447 562 981 196 996 161 734 -10000 696 681 208 721 744 117 591 646 782 -10000 801 319 671 670 813 343 969 564 933 -10000 724 432 451 685 764 766 952 109 181 -10000 797 60 720 560 474 699 551 800 274 -10000 976 260 938 259 994 887 387 671 86 -10000 726 87 178 851 978 979 692 739 59 -10000 285 389 510 308 613 367 247 754 56 -10000 741 754 478 214 535 672 376 941 986 -10000 708 583 624 626 280 742 818 938 479 -10000 407 676 494 595 365 704 455 989 756 -10000 258 533 754 991 88 721 833 99 205 -10000 52 494 380 865 766 199 382 106 985 -10000 237 382 681 104 13 248 450 643 261 -10000 740 180 554 586 505 214 302 188 202 -10000 958 958 700 400 896 718 493 52 927 -10000 778 686 394 489 318 214 210 387 210 -10000 911 392 71 971 741 278 783 586 98 -10000 528 443 128 616 707 545 291 580 208 -10000 65 492 164 797 932 929 269 769 470 -10000 68 259 598 501 445 55 706 811 42 -10000 391 124 516 957 684 360 449 122 468 -10000 898 328 421 915 779 145 315 196 687 -10000 578 79 114 944 692 697 67 746 45 -10000 407 322 29 274 695 370 609 202 40 -10000 643 300 989 682 945 375 542 846 397 -10000 475 60 790 657 34 256 806 110 277 -10000 446 360 667 295 727 748 34 739 359 -10000 191 947 206 349 731 177 367 274 733 -10000 132 585 50 527 690 148 944 880 178 -10000 926 246 374 869 899 13 441 508 88 -10000 719 150 970 558 794 860 196 191 510 -10000 297 637 482 251 342 658 333 611 863 -10000 532 598 996 500 625 891 847 544 65 -10000 161 2 252 680 730 331 356 895 660 -10000 213 842 778 3 271 288 411 729 794 -10000 480 74 905 107 292 866 774 717 613 -10000 47 605 70 830 924 606 494 437 638 -10000 838 794 97 91 455 273 880 746 831 -10000 235 386 532 988 889 86 133 476 486 -10000 586 402 389 422 455 786 477 650 332 -10000 699 34 578 648 182 252 516 608 622 -10000 306 448 912 903 661 275 631 530 659 -10000 827 725 822 983 27 868 86 57 986 -10000 530 998 153 510 312 171 888 195 195 -10000 57 509 365 160 476 798 557 216 523 -10000 831 23 880 197 353 261 144 78 939 -10000 302 970 802 461 861 561 533 253 32 -10000 705 645 300 540 47 631 672 838 197 -10000 892 487 52 358 890 126 571 43 786 -10000 117 879 60 158 768 275 544 495 936 -10000 216 409 233 267 18 132 215 338 571 -10000 607 505 928 926 931 423 430 202 152 -10000 933 323 861 4 532 52 787 278 242 -10000 347 710 57 60 637 104 196 962 863 -10000 96 339 717 839 447 369 584 793 855 -10000 442 316 501 947 609 599 840 463 123 -10000 168 798 798 304 955 946 749 986 301 -10000 806 367 500 494 196 178 440 748 573 -10000 917 265 452 704 271 656 935 671 125 -10000 400 490 470 26 759 897 15 264 760 -10000 736 754 373 397 123 490 311 851 832 -10000 280 779 459 413 171 79 578 213 232 -10000 240 620 597 352 540 478 905 198 748 -10000 457 961 838 622 716 461 398 874 995 -10000 482 204 291 437 344 959 566 225 381 -10000 409 176 816 769 290 19 325 705 971 -10000 129 233 986 619 499 776 807 98 155 -10000 537 548 806 387 633 484 214 682 960 -10000 195 857 123 831 573 930 414 378 17 -10000 656 145 467 754 157 760 857 135 751 -10000 626 389 826 513 81 334 845 77 802 -10000 653 314 780 402 307 714 252 384 880 -10000 53 868 340 965 848 448 452 189 912 -10000 165 118 750 323 486 142 213 840 288 -10000 548 421 924 489 758 24 263 347 374 -10000 956 265 114 153 367 602 448 987 946 -10000 981 255 490 854 628 320 49 359 350 -10000 147 383 294 87 26 207 378 421 187 -10000 549 107 197 472 746 843 761 830 774 -10000 762 594 554 29 987 248 1000 946 95 -10000 505 541 428 782 662 471 574 609 134 -10000 97 463 716 959 447 585 499 733 128 -10000 491 464 311 468 57 728 358 425 765 -10000 490 579 626 260 268 409 291 61 155 -10000 3 119 143 430 284 888 976 777 719 -10000 900 703 976 453 672 48 161 134 892 -10000 462 717 457 857 215 36 8 555 913 -10000 27 786 659 680 607 878 754 505 269 -10000 65 478 255 857 2 935 279 738 781 -10000 315 917 481 154 817 652 711 909 121 -10000 727 433 734 437 257 532 353 459 953 -10000 863 924 373 792 960 999 747 669 165 -10000 4 144 799 919 230 494 127 316 414 -10000 902 861 573 593 485 834 581 237 618 -10000 179 239 958 821 792 914 528 794 473 -10000 720 243 928 942 405 387 828 462 544 -10000 562 173 466 41 761 168 540 402 276 -10000 220 220 132 47 352 991 335 505 679 -10000 155 743 309 913 819 144 19 887 171 -10000 579 662 636 579 754 402 309 739 373 -10000 925 220 111 219 910 998 893 273 572 -10000 572 208 548 241 968 87 882 401 278 -10000 559 375 341 953 362 177 526 674 17 -10000 888 738 352 556 994 371 628 790 712 -10000 5 819 570 981 114 310 396 218 184 -10000 711 820 378 792 678 641 641 943 56 -10000 704 582 583 335 249 241 843 842 255 -10000 610 993 74 799 477 402 98 38 583 -10000 110 269 669 275 726 18 32 675 378 -10000 60 840 657 413 626 145 932 773 386 -10000 708 243 54 15 701 835 991 961 763 -10000 874 605 527 493 946 735 98 872 206 -10000 654 424 456 709 804 46 160 882 579 -10000 173 463 753 85 180 634 813 833 559 -10000 460 751 901 739 617 447 537 275 773 -10000 978 239 483 643 293 129 613 461 378 -10000 306 295 266 458 486 822 719 355 822 -10000 834 331 323 693 344 133 427 405 881 -10000 735 147 101 23 745 414 134 35 501 -10000 377 556 783 143 859 699 474 242 449 -10000 455 655 598 941 814 591 791 216 249 -10000 617 800 60 841 0 661 253 576 984 -10000 355 330 303 969 613 623 37 864 922 -10000 127 449 995 607 457 972 554 314 565 -10000 620 983 518 69 845 321 765 76 448 -10000 738 30 152 833 589 327 265 785 260 -10000 885 768 177 433 586 15 529 424 495 -10000 278 444 320 394 178 372 33 114 771 -10000 562 572 45 429 889 212 715 12 453 -10000 568 49 128 543 619 291 310 102 63 -10000 58 661 519 731 376 394 705 607 521 -10000 443 752 834 708 758 242 650 848 67 -10000 515 675 824 869 747 343 210 127 493 -10000 132 965 375 112 543 370 368 501 336 -10000 362 928 803 910 676 599 548 155 302 -10000 772 695 654 130 952 518 685 358 616 -10000 705 88 10 184 285 284 273 386 431 -10000 824 291 321 398 228 642 126 18 221 -10000 731 942 859 501 627 652 840 808 216 -10000 929 268 70 605 414 399 409 755 610 -10000 15 664 360 361 562 631 75 231 778 -10000 405 128 601 557 788 943 817 916 747 -10000 85 333 457 448 960 893 191 741 457 -10000 120 524 55 1 341 914 338 551 57 -10000 86 161 239 142 287 503 544 67 780 -10000 134 371 675 72 868 46 987 37 774 -10000 158 447 349 813 110 319 985 360 923 -10000 794 399 134 676 686 474 564 248 231 -10000 388 97 977 778 909 346 875 525 10 -10000 964 845 22 606 508 50 294 690 640 -10000 439 101 332 520 248 992 529 392 986 -10000 860 297 688 161 689 19 659 744 789 -10000 755 487 837 383 268 628 476 690 966 -10000 169 643 960 291 627 583 929 817 995 -10000 506 29 106 165 350 20 890 419 959 -10000 898 804 258 137 530 911 895 801 729 -10000 418 959 567 363 717 597 990 848 992 -10000 201 291 98 402 6 314 220 835 639 -10000 169 810 847 814 424 97 73 381 610 -10000 790 677 119 247 339 197 653 653 709 -10000 808 2 710 871 897 938 572 769 459 -10000 509 43 814 747 949 433 710 7 939 -10000 832 504 850 455 853 131 124 618 419 -10000 431 689 922 644 593 853 673 123 101 -10000 91 425 275 355 433 726 803 720 818 -10000 109 551 829 80 696 186 575 238 73 -10000 137 404 89 452 884 46 746 638 670 -10000 251 814 387 217 774 999 969 116 676 -10000 75 794 702 671 127 661 163 539 488 -10000 159 356 949 458 284 481 418 783 886 -10000 220 79 655 502 861 616 734 738 141 -10000 502 97 294 195 34 885 105 3 374 -10000 109 87 177 893 83 670 593 322 494 -10000 552 210 676 676 303 382 891 406 707 -10000 692 559 883 662 982 598 868 349 159 -10000 117 733 440 400 364 524 863 73 260 -10000 15 933 726 240 478 575 784 456 862 -10000 686 525 140 369 15 292 748 577 474 -10000 466 647 850 649 106 76 540 616 6 -10000 198 507 441 426 662 869 849 735 41 -10000 952 928 867 304 407 488 837 23 519 -10000 639 577 912 173 314 717 599 369 586 -10000 254 824 296 372 474 174 295 628 28 -10000 689 454 654 784 577 332 812 614 879 -10000 466 598 899 95 91 914 302 963 33 -10000 276 847 506 328 420 712 372 614 144 -10000 348 688 315 120 326 662 657 886 764 -10000 341 880 314 655 373 304 71 335 892 -10000 390 608 517 849 681 411 484 120 328 -10000 550 110 538 416 797 465 952 211 78 -10000 692 53 782 813 343 628 934 802 627 -10000 447 901 584 304 656 108 788 506 308 -10000 89 293 294 411 108 346 57 919 687 -10000 636 808 495 305 44 153 768 957 964 -10000 623 873 71 622 394 666 624 123 235 -10000 70 809 338 412 362 236 279 145 999 -10000 624 450 946 862 472 59 641 365 47 -10000 669 259 634 704 464 340 225 571 103 -10000 141 7 306 874 931 742 490 321 980 -10000 808 116 99 63 827 883 250 866 750 -10000 196 445 768 929 634 957 992 749 36 -10000 980 373 785 752 147 649 38 725 998 -10000 919 491 340 628 385 958 540 279 999 -10000 146 259 473 729 730 305 67 188 378 -10000 341 343 579 115 82 493 774 706 698 -10000 646 130 896 462 499 331 236 26 168 -10000 143 567 34 394 691 377 298 810 708 -10000 945 77 207 760 741 389 422 755 652 -10000 499 763 18 696 38 222 93 563 414 -10000 307 36 653 890 524 996 908 694 587 -10000 799 909 369 361 709 57 126 133 591 -10000 225 166 348 567 521 894 636 148 290 -10000 544 413 684 798 443 48 82 743 807 -10000 293 778 603 221 998 443 22 288 910 -10000 85 785 295 380 635 452 381 901 686 -10000 614 77 806 144 538 284 281 231 154 -10000 936 146 866 905 163 542 152 994 21 -10000 396 728 802 690 330 115 374 725 339 -10000 896 307 876 391 624 949 932 798 263 -10000 852 33 706 896 265 557 232 828 133 -10000 62 692 23 39 797 389 395 230 135 -10000 577 181 62 454 173 986 48 965 749 -10000 265 794 573 674 535 611 656 287 342 -10000 908 539 437 833 432 577 75 496 913 -10000 423 976 169 631 764 976 343 865 303 -10000 315 341 563 710 765 34 324 221 262 -10000 44 593 109 232 372 604 84 482 804 -10000 973 912 606 502 633 241 906 338 818 -10000 547 264 540 35 141 103 160 843 910 -10000 583 536 671 386 350 100 959 612 885 -10000 857 95 332 242 988 513 616 11 555 -10000 387 231 183 451 393 85 766 252 160 -10000 372 469 487 362 953 462 528 171 222 -10000 630 856 199 214 345 171 736 560 660 -10000 107 375 128 394 170 346 738 234 601 -10000 142 378 728 209 427 953 20 868 279 -10000 434 699 178 191 506 303 723 605 334 -10000 748 469 739 763 476 192 711 23 879 -10000 521 229 151 847 857 431 297 682 715 -10000 527 249 38 926 972 177 541 65 534 -10000 130 522 375 977 24 489 842 678 943 -10000 633 243 490 703 209 626 884 928 504 -10000 346 565 791 909 486 375 202 849 158 -10000 134 755 336 475 479 284 940 110 924 -10000 558 956 330 102 562 674 696 730 178 -10000 586 781 935 660 328 456 401 518 647 -10000 922 300 857 570 479 850 890 213 239 -10000 158 922 113 603 742 678 190 200 587 -10000 355 136 904 102 209 691 684 516 343 -10000 452 687 484 889 701 707 260 752 879 -10000 317 735 579 380 791 818 461 225 228 -10000 907 157 273 751 20 538 680 795 760 -10000 736 365 658 294 208 311 24 48 6 -10000 230 662 108 941 195 785 326 228 975 -10000 238 99 656 557 346 515 942 665 946 -10000 364 551 938 16 126 849 618 671 472 -10000 599 568 861 336 496 137 375 855 391 -10000 520 559 253 297 122 433 923 848 494 -10000 244 956 734 823 242 636 542 517 184 -10000 665 404 473 319 198 871 524 972 463 -10000 521 847 848 679 635 391 642 157 215 -10000 708 673 355 996 11 271 498 9 721 -10000 230 561 892 161 1000 272 494 599 255 -10000 471 180 496 937 220 677 596 458 456 -10000 372 447 54 841 386 313 698 879 727 -10000 301 853 407 316 489 229 103 468 130 -10000 533 537 78 90 31 296 342 250 607 -10000 235 614 476 105 828 273 154 445 961 -10000 647 958 434 986 456 839 9 158 955 -10000 693 652 910 270 561 594 707 489 430 -10000 370 812 866 66 784 496 524 370 328 -10000 945 785 770 659 783 783 589 250 434 -10000 277 235 208 466 718 25 242 316 727 -10000 213 948 846 723 972 498 487 902 772 -10000 524 245 81 405 232 988 762 543 656 -10000 650 256 731 824 216 1 619 539 423 -10000 160 492 553 979 535 236 154 877 22 -10000 641 145 519 696 541 757 416 284 989 -10000 668 460 592 813 219 237 78 414 435 -10000 381 37 11 984 823 160 888 590 612 -10000 762 346 785 135 800 144 89 489 567 -10000 593 660 965 973 482 625 511 142 979 -10000 317 353 61 335 839 671 838 393 514 -10000 590 989 560 266 298 962 562 837 470 -10000 246 389 456 436 356 493 900 220 1000 -10000 232 555 887 836 696 759 755 672 616 -10000 734 194 311 86 969 654 718 846 472 -10000 474 360 189 433 352 705 362 233 20 -10000 943 292 358 36 164 59 254 291 808 -10000 307 221 957 249 666 551 22 36 473 -10000 525 787 179 775 66 297 187 587 592 -10000 759 86 533 43 316 592 500 160 303 -10000 981 402 574 439 611 372 831 398 1 -10000 125 116 567 245 641 121 412 877 690 -10000 674 71 935 389 828 467 960 819 94 -10000 386 902 740 612 520 191 286 820 340 -10000 811 425 58 78 702 801 581 26 76 -10000 720 187 397 683 416 158 509 474 202 -10000 477 556 714 232 558 787 142 820 210 -10000 706 591 529 731 168 249 575 98 389 -10000 393 768 650 660 570 612 48 589 814 -10000 161 950 267 141 545 868 81 980 880 -10000 772 496 416 636 861 153 102 363 160 -10000 122 65 702 805 365 874 400 780 964 -10000 843 773 156 942 865 256 44 768 892 -10000 683 106 378 328 627 391 64 775 91 -10000 212 973 124 119 826 698 192 152 876 -10000 31 48 12 990 258 400 998 55 735 -10000 124 734 945 651 217 382 161 230 644 -10000 808 586 504 930 406 572 523 277 661 -10000 313 890 338 754 604 330 50 125 865 -10000 806 870 160 956 951 224 186 624 820 -10000 657 470 746 295 279 80 336 407 487 -10000 742 118 881 144 398 783 142 499 629 -10000 64 629 114 659 315 445 118 681 582 -10000 69 419 406 714 532 697 491 470 570 -10000 966 609 609 514 384 24 632 617 17 -10000 531 18 214 874 805 507 78 500 307 -10000 791 147 665 422 439 496 686 657 492 -10000 430 306 451 576 568 81 100 231 818 -10000 935 286 187 538 92 744 998 422 946 -10000 579 863 599 522 408 816 238 595 478 -10000 34 377 216 935 610 969 747 896 15 -10000 401 985 463 9 780 408 806 484 862 -10000 205 600 818 118 883 270 388 570 150 -10000 382 849 651 74 896 74 805 862 95 -10000 515 520 805 839 417 390 2 251 241 -10000 543 107 152 414 420 699 918 829 671 -10000 767 294 694 945 583 441 412 997 882 -10000 76 909 765 94 118 139 856 448 753 -10000 686 857 784 800 565 713 534 590 379 -10000 680 779 614 935 150 327 472 612 758 -10000 622 242 594 770 950 981 28 345 392 -10000 679 407 135 759 374 642 227 968 510 -10000 652 309 816 221 82 139 692 375 49 -10000 831 247 361 434 445 654 725 279 650 -10000 575 469 632 406 56 761 81 238 717 -10000 211 903 591 814 766 620 188 861 80 -10000 446 305 887 165 680 154 178 768 74 -10000 313 425 507 646 285 441 244 888 340 -10000 617 999 252 189 70 913 265 993 812 -10000 520 972 192 187 849 593 93 32 855 -10000 453 369 87 264 536 928 754 576 655 -10000 181 779 995 33 831 827 745 61 26 -10000 77 977 798 28 909 212 307 158 672 -10000 738 618 24 762 18 248 564 269 45 -10000 883 635 64 599 613 232 205 694 287 -10000 358 115 355 449 71 768 615 986 139 -10000 39 405 843 41 352 531 58 884 118 -10000 920 365 683 324 665 235 648 692 528 -10000 842 253 998 498 259 736 82 700 731 -10000 199 122 756 403 77 69 780 177 278 -10000 901 152 719 40 830 347 706 960 662 -10000 82 553 261 988 898 739 339 343 13 -10000 75 863 79 684 935 566 411 802 360 -10000 965 279 547 87 156 167 187 57 888 -10000 701 574 975 54 108 535 59 452 318 -10000 560 316 558 506 278 780 935 768 86 -10000 856 264 452 959 939 799 529 12 710 -10000 268 736 746 435 132 424 416 441 151 -10000 855 481 239 463 487 835 342 325 359 -10000 97 840 499 486 52 508 892 415 265 -10000 751 399 812 618 22 673 616 673 927 -10000 438 492 542 650 10 799 571 163 724 -10000 56 29 570 787 232 147 54 340 706 -10000 926 295 373 589 530 629 1 319 378 -10000 401 362 923 405 528 655 416 656 608 -10000 304 92 739 82 213 101 397 529 104 -10000 377 194 583 398 730 964 102 17 17 -10000 433 293 762 558 514 344 515 318 750 -10000 796 957 561 812 744 470 798 325 735 -10000 755 454 4 169 132 860 754 347 185 -10000 340 307 378 128 640 164 169 901 450 -10000 127 16 732 760 639 666 964 621 296 -10000 76 834 987 990 73 125 601 388 707 -10000 722 209 174 887 562 460 376 817 132 -10000 525 489 177 317 723 479 970 237 535 -10000 504 630 653 718 377 315 482 55 218 -10000 631 838 12 868 589 279 536 121 91 -10000 695 350 867 434 40 424 236 829 723 -10000 149 694 348 377 785 793 171 892 515 -10000 656 133 348 302 25 543 898 762 984 -10000 926 200 54 474 466 842 299 802 68 -10000 665 77 743 27 959 295 192 119 281 -10000 941 648 97 660 700 562 15 842 349 -10000 100 827 179 912 457 57 249 398 48 -10000 415 915 229 869 186 89 907 819 305 -10000 906 616 462 993 239 873 927 150 595 -10000 747 374 834 359 792 9 125 669 697 -10000 205 120 633 98 827 661 215 863 276 -10000 643 507 601 352 27 986 529 993 49 -10000 353 499 448 922 404 437 863 529 950 -10000 534 877 819 193 26 808 225 704 500 -10000 974 339 815 328 591 445 139 245 998 -10000 108 608 166 357 55 562 93 96 511 -10000 416 820 40 35 831 801 752 466 480 -10000 265 242 36 647 830 851 386 22 235 -10000 737 39 304 14 649 76 797 507 386 -10000 946 682 750 925 812 817 935 539 984 -10000 3 66 671 440 706 110 96 154 164 -10000 617 283 422 230 166 825 321 931 73 -10000 899 80 775 165 462 498 546 461 336 -10000 987 175 495 553 431 913 354 606 113 -10000 771 429 521 233 480 546 314 972 752 -10000 532 287 69 538 6 319 41 156 328 -10000 63 900 735 783 321 172 124 268 176 -10000 708 444 27 110 429 723 540 720 457 -10000 105 522 134 339 540 772 429 649 954 -10000 727 857 657 608 292 904 206 222 335 -10000 499 90 248 680 424 361 377 305 673 -10000 13 930 285 403 636 678 703 879 850 -10000 402 790 245 334 98 1000 503 671 471 -10000 441 475 161 344 742 125 117 977 646 -10000 152 326 182 77 100 636 798 689 153 -10000 856 593 807 975 251 437 883 874 230 -10000 484 666 135 97 205 850 285 260 551 -10000 761 756 384 667 872 235 408 781 555 -10000 1000 134 744 857 325 664 428 651 707 -10000 737 288 901 871 356 765 734 925 65 -10000 526 556 492 214 596 682 79 807 352 -10000 778 825 100 680 591 834 712 70 323 -10000 19 88 756 565 43 677 215 950 433 -10000 669 296 821 397 855 17 528 617 203 -10000 434 645 581 275 518 653 493 739 769 -10000 729 217 472 850 39 651 212 979 140 -10000 741 611 81 556 500 286 728 583 362 -10000 40 62 442 462 944 49 446 282 636 -10000 895 457 301 786 157 935 430 459 374 -10000 42 839 607 441 69 913 367 305 926 -10000 483 530 478 883 522 387 470 87 972 -10000 676 760 536 291 12 826 371 584 479 -10000 163 241 839 423 494 349 418 245 131 -10000 197 987 97 60 112 78 106 958 9 -10000 552 602 908 324 736 551 699 758 231 -10000 899 985 501 277 310 666 306 546 312 -10000 550 728 156 905 544 306 630 763 986 -10000 895 30 919 333 96 23 895 497 751 -10000 678 25 349 928 46 649 412 975 841 -10000 97 135 357 653 351 125 674 955 497 -10000 927 852 154 751 864 874 717 782 771 -10000 184 393 402 502 342 44 985 227 796 -10000 336 90 67 541 884 370 194 311 780 -10000 509 758 984 608 301 675 763 345 23 -10000 28 707 880 111 369 53 718 648 619 -10000 596 665 163 682 367 619 889 629 33 -10000 357 721 932 384 258 494 783 678 52 -10000 290 190 690 159 962 371 605 743 96 -10000 159 466 883 416 586 979 470 648 37 -10000 151 543 414 416 49 750 830 24 982 -10000 372 320 571 88 825 915 490 838 648 -10000 498 345 864 536 971 973 309 704 320 -10000 353 745 4 158 19 598 618 367 373 -10000 454 595 874 199 629 541 99 901 389 -10000 930 512 342 154 896 942 38 677 861 -10000 190 835 836 387 675 568 516 156 411 -10000 302 576 692 433 841 761 698 562 157 -10000 208 84 943 301 138 190 848 221 271 -10000 590 323 514 640 152 212 489 679 307 -10000 293 878 7 293 812 579 689 258 650 -10000 1000 493 981 679 692 647 796 165 218 -10000 957 622 49 415 363 71 948 256 948 -10000 690 192 528 886 786 809 104 152 346 -10000 828 933 604 242 435 418 385 505 242 -10000 864 463 78 722 233 331 661 808 533 -10000 867 258 402 892 159 375 362 614 796 -10000 253 660 664 19 616 818 94 212 362 -10000 567 633 617 479 795 998 958 236 349 -10000 888 334 927 786 4 340 560 258 58 -10000 976 784 983 894 610 769 968 124 797 -10000 404 263 878 640 359 787 508 656 551 -10000 389 688 277 798 52 823 260 870 263 -10000 864 869 740 946 929 794 898 284 329 -10000 244 567 185 827 372 615 187 902 866 -10000 474 256 593 349 325 410 414 831 684 -10000 822 705 434 39 287 362 618 436 468 -10000 897 458 74 121 822 610 648 50 246 -10000 450 954 390 523 411 899 632 875 426 -10000 373 391 187 182 403 562 513 398 470 -10000 42 526 675 272 789 958 632 10 392 -10000 38 282 708 251 404 153 765 795 775 -10000 748 302 177 869 402 572 71 666 486 -10000 656 144 361 479 194 392 514 850 376 -10000 1 531 353 246 330 939 133 825 284 -10000 999 673 903 624 458 779 598 876 717 -10000 520 509 549 875 945 581 33 9 241 -10000 327 147 963 890 266 414 944 157 327 -10000 690 480 215 80 39 13 709 966 306 -10000 284 540 864 487 965 676 713 645 128 -10000 897 834 890 572 161 717 902 588 729 -10000 938 680 101 205 314 249 862 868 626 -10000 768 633 386 676 630 891 611 827 986 -10000 321 933 961 28 361 610 574 143 360 -10000 421 550 358 731 38 840 852 860 627 -10000 347 297 3 490 231 53 557 639 638 -10000 172 311 502 670 849 175 791 171 886 -10000 29 423 381 872 495 105 420 241 671 -10000 528 349 213 572 53 68 767 189 557 -10000 17 211 702 940 538 768 150 293 740 -10000 252 524 345 737 834 20 386 303 255 -10000 973 626 312 705 6 764 428 770 226 -10000 477 949 854 444 163 892 273 85 80 -10000 902 637 468 901 29 432 558 693 963 -10000 643 727 315 190 972 530 402 158 347 -10000 821 708 790 593 834 644 785 761 910 -10000 789 382 863 183 178 554 91 669 649 -10000 216 989 391 617 473 394 743 466 446 -10000 430 237 428 100 141 677 706 531 645 -10000 936 936 599 946 961 228 667 395 969 -10000 995 567 723 607 708 745 649 585 417 -10000 148 114 696 206 904 891 113 674 421 -10000 771 49 817 854 770 975 45 123 688 -10000 624 383 870 406 118 310 891 439 332 -10000 721 791 580 760 944 394 460 572 151 -10000 753 141 40 675 757 453 114 423 480 -10000 705 827 139 848 962 43 933 110 327 -10000 299 56 244 16 324 918 992 292 597 -10000 326 236 916 508 661 487 175 331 71 -10000 68 977 271 710 813 828 654 349 827 -10000 424 435 374 80 894 337 787 696 438 -10000 481 249 954 684 327 468 309 169 540 -10000 944 737 818 221 30 366 990 150 194 -10000 284 39 58 342 668 197 58 329 886 -10000 281 133 637 900 523 118 918 254 372 -10000 295 865 278 684 557 580 645 797 993 -10000 695 426 611 944 817 265 959 493 754 -10000 671 890 228 769 495 59 840 949 58 -10000 255 613 243 931 177 834 557 917 247 -10000 121 348 583 944 625 495 685 862 1 -10000 549 594 14 414 767 499 915 199 573 -10000 944 439 215 689 783 25 678 4 601 -10000 299 836 33 855 150 383 586 838 48 -10000 910 206 949 193 611 467 784 525 971 -10000 637 462 970 745 147 884 670 963 61 -10000 675 706 423 846 983 967 243 931 647 -10000 73 723 82 702 631 427 357 669 185 -10000 166 39 500 207 284 762 727 590 638 -10000 474 307 516 709 260 194 270 798 333 -10000 21 914 945 702 587 80 590 665 902 -10000 38 738 912 38 566 330 619 545 409 -10000 778 496 377 320 64 933 852 592 175 -10000 756 195 507 66 317 473 467 715 684 -10000 95 894 429 416 974 925 173 174 75 -10000 979 985 777 457 716 807 82 754 328 -10000 263 883 782 529 652 540 175 403 124 -10000 706 992 922 670 843 754 96 836 835 -10000 720 71 690 477 370 680 751 449 464 -10000 601 368 147 722 856 132 898 610 974 -10000 247 386 623 516 876 792 855 41 382 -10000 307 982 298 747 126 709 580 335 917 -10000 926 136 219 638 37 522 118 746 437 -10000 876 748 882 455 718 987 585 392 130 -10000 219 332 664 806 831 672 723 472 405 -10000 583 840 696 273 584 810 501 64 814 -10000 356 225 445 366 360 463 828 88 189 -10000 44 268 974 480 461 622 88 414 242 -10000 893 294 745 268 135 849 424 684 773 -10000 191 899 802 835 25 551 373 760 654 -10000 961 240 61 879 58 539 881 328 45 -10000 848 639 686 297 190 594 808 681 940 -10000 684 239 365 163 194 859 670 759 898 -10000 523 172 373 266 45 711 484 624 659 -10000 427 610 482 336 786 60 714 815 27 -10000 969 662 804 101 3 579 15 776 140 -10000 578 524 316 770 653 876 570 836 618 -10000 777 416 542 640 798 81 170 112 974 -10000 2 494 200 456 989 236 400 440 950 -10000 360 230 416 668 779 539 919 23 369 -10000 805 689 770 768 450 259 227 376 485 -10000 873 656 382 695 343 785 381 92 403 -10000 813 122 891 187 701 763 662 720 731 -10000 506 363 366 256 799 950 724 167 532 -10000 662 412 869 827 638 973 195 157 482 -10000 725 755 624 951 73 173 698 135 510 -10000 472 577 443 927 672 334 198 724 448 -10000 324 90 991 623 44 542 134 658 574 -10000 459 49 703 423 844 779 30 425 721 -10000 493 972 418 24 113 653 307 705 238 -10000 149 469 855 603 428 119 657 354 297 -10000 457 446 147 715 539 967 755 837 593 -10000 990 998 406 457 906 785 159 703 977 -10000 433 724 247 83 845 160 218 336 278 -10000 755 228 842 232 288 230 60 615 152 -10000 611 621 152 808 838 874 474 635 242 -10000 600 120 542 719 222 47 34 354 963 -10000 965 724 958 287 124 803 51 712 959 -10000 654 286 786 57 383 847 382 15 485 -10000 184 152 455 397 569 225 138 263 945 -10000 549 691 397 941 178 553 792 518 203 -10000 169 390 699 30 457 54 975 418 808 -10000 122 775 517 822 868 430 692 560 811 -10000 495 726 223 746 192 883 202 798 420 -10000 177 633 874 531 549 400 745 939 125 -10000 508 800 82 441 791 354 379 288 94 -10000 948 907 5 105 518 187 450 37 566 -10000 295 871 74 281 497 185 598 208 168 -10000 392 492 50 656 813 570 717 549 579 -10000 134 748 318 890 195 286 323 427 276 -10000 699 561 793 558 282 313 710 447 752 -10000 27 100 308 269 318 45 344 761 335 -10000 414 636 104 169 966 474 564 188 506 -10000 951 277 162 588 688 38 236 822 737 -10000 739 551 951 50 74 509 58 388 769 -10000 156 806 428 1 161 627 303 3 940 -10000 911 350 998 821 650 992 155 382 969 -10000 47 936 800 463 36 471 869 182 573 -10000 71 167 710 627 522 945 778 372 328 -10000 621 281 48 285 567 184 748 127 150 -10000 559 998 46 356 927 117 784 17 846 -10000 789 714 59 404 615 629 884 582 910 -10000 479 94 306 163 98 283 983 29 794 -10000 957 887 684 208 312 391 4 149 710 -10000 518 71 497 400 982 54 962 391 749 -10000 138 287 16 475 93 220 216 494 503 -10000 638 699 18 206 67 602 429 760 741 -10000 803 412 375 897 734 446 289 850 788 -10000 259 933 981 896 404 820 790 152 535 -10000 632 125 953 978 109 707 721 629 84 -10000 594 45 760 351 884 684 470 135 876 -10000 292 365 986 476 436 598 857 604 292 -10000 545 989 117 14 613 294 783 167 632 -10000 352 549 606 932 678 669 177 71 541 -10000 837 383 73 135 714 755 511 891 482 -10000 278 675 23 239 572 591 865 827 682 -10000 837 220 790 963 570 478 434 801 57 -10000 717 656 400 787 129 473 969 172 695 -10000 139 977 444 446 415 185 924 141 608 -10000 159 866 277 973 199 5 482 762 234 -10000 922 869 12 990 616 976 167 47 871 -10000 102 168 581 719 266 835 141 644 584 -10000 733 621 658 752 634 353 318 642 780 -10000 445 268 596 842 307 352 46 193 985 -10000 589 706 93 10 0 208 240 941 362 -10000 590 104 403 370 639 204 183 99 438 -10000 413 671 142 875 122 923 796 272 386 -10000 158 603 579 677 582 919 104 743 332 -10000 72 893 223 264 915 930 415 402 560 -10000 95 964 535 582 421 146 591 727 156 -10000 842 513 595 942 273 736 727 253 731 -10000 217 936 767 914 320 893 314 299 247 -10000 375 376 71 131 740 873 847 228 759 -10000 693 285 61 234 361 303 462 24 241 -10000 921 792 280 495 775 599 962 521 923 -10000 557 671 908 48 702 787 63 371 384 -10000 980 634 954 680 587 914 853 66 913 -10000 83 722 847 414 66 803 855 52 473 -10000 121 530 785 809 723 751 948 138 816 -10000 708 634 345 325 41 997 711 617 245 -10000 369 100 837 893 123 678 69 358 671 -10000 425 936 495 523 842 968 434 507 253 -10000 367 552 582 27 854 846 304 318 929 -10000 805 712 553 387 568 254 949 393 634 -10000 316 347 252 649 760 900 968 726 251 -10000 379 178 291 164 861 752 551 478 644 -10000 248 181 125 131 233 141 660 412 581 -10000 123 513 99 754 324 145 144 792 873 -10000 742 228 950 839 293 916 107 661 460 -10000 898 766 739 306 653 27 466 101 49 -10000 863 932 301 582 67 369 946 821 700 -10000 977 205 140 980 524 378 591 527 976 -10000 581 567 457 683 743 673 471 798 594 -10000 228 305 697 197 711 218 173 274 976 -10000 609 853 408 173 969 738 907 560 534 -10000 518 514 891 566 649 258 664 169 444 -10000 7 569 242 186 880 109 605 702 799 -10000 828 987 877 107 457 305 415 885 75 -10000 294 37 187 17 724 71 664 820 108 -10000 216 66 74 840 763 917 339 991 326 -10000 851 86 470 513 711 430 51 889 26 -10000 14 529 246 201 216 825 392 414 938 -10000 505 236 761 521 449 223 325 36 826 -10000 236 658 45 823 496 981 761 775 590 -10000 946 609 191 707 516 755 857 260 494 -10000 531 979 414 405 521 594 834 435 90 -10000 912 11 858 780 625 959 744 410 498 -10000 871 244 363 617 389 379 122 241 450 -10000 366 866 369 166 599 210 960 773 527 -10000 703 161 682 548 732 667 879 862 225 -10000 597 168 401 753 757 255 875 554 526 -10000 428 715 942 161 241 282 264 362 9 -10000 495 252 813 492 973 227 800 308 73 -10000 888 891 864 328 469 566 271 883 230 -10000 9 319 622 402 440 978 943 589 127 -10000 623 772 752 265 244 864 894 504 783 -10000 143 81 303 157 236 971 71 752 719 -10000 283 236 58 820 262 816 510 241 442 -10000 728 369 842 37 598 302 757 371 926 -10000 421 732 690 562 528 56 165 252 605 -10000 198 658 344 4 600 71 289 299 15 -10000 263 1000 737 467 107 442 931 746 974 -10000 442 109 235 272 601 208 934 544 924 -10000 937 603 476 571 730 726 73 440 804 -10000 559 35 245 564 28 397 952 873 385 -10000 834 870 949 860 145 464 432 55 756 -10000 916 971 882 184 366 313 621 963 741 -10000 235 463 29 778 401 169 919 1 305 -10000 574 670 140 676 463 980 471 386 96 -10000 475 237 439 162 487 900 279 601 753 -10000 996 122 413 992 293 249 989 323 926 -10000 499 43 86 583 561 248 135 436 622 -10000 103 133 507 148 853 433 57 287 603 -10000 486 858 434 990 637 286 884 425 200 -10000 9 185 263 99 799 697 388 927 938 -10000 26 207 10 482 131 607 98 381 749 -10000 773 965 665 576 94 80 916 471 1 -10000 474 241 333 342 418 122 945 752 159 -10000 44 598 274 664 662 28 563 433 179 -10000 45 278 511 760 830 549 217 583 968 -10000 825 412 111 885 501 257 874 470 115 -10000 967 275 692 679 593 727 569 856 571 -10000 992 596 903 597 517 920 314 965 795 -10000 601 477 198 699 349 596 320 666 559 -10000 499 410 146 250 699 848 61 494 911 -10000 169 882 563 572 294 948 848 447 77 -10000 402 706 404 255 635 641 669 437 39 -10000 183 279 641 90 590 250 326 203 707 -10000 152 971 307 8 744 954 284 268 847 -10000 13 526 366 524 985 909 934 429 416 -10000 801 753 856 856 373 795 123 169 37 -10000 407 978 117 711 798 131 897 232 717 -10000 906 736 500 531 526 149 39 651 561 -10000 252 692 807 653 775 987 576 240 437 -10000 357 312 59 741 296 327 699 935 826 -10000 765 617 322 861 921 6 233 282 46 -10000 651 878 12 855 844 729 468 739 726 -10000 537 179 393 466 961 683 776 570 3 -10000 538 534 381 540 442 461 833 4 281 -10000 812 896 4 658 777 575 139 848 314 -10000 347 369 913 994 385 156 497 62 381 -10000 950 325 172 291 299 81 588 207 729 -10000 666 171 922 845 710 214 250 540 53 -10000 330 917 871 464 679 625 705 995 145 -10000 844 80 949 216 690 582 581 889 750 -10000 656 330 825 460 743 156 903 95 312 -10000 148 53 384 947 155 982 195 212 236 -10000 91 117 633 826 728 85 564 720 449 -10000 204 557 906 316 88 250 971 754 315 -10000 467 676 809 626 292 116 967 687 376 -10000 686 1 921 329 124 391 188 481 400 -10000 74 218 586 859 395 832 539 64 771 -10000 347 454 83 705 551 593 341 583 427 -10000 690 268 892 144 999 51 742 194 547 -10000 316 569 169 54 506 12 835 173 771 -10000 328 969 756 5 465 385 23 263 598 -10000 327 512 540 950 204 764 400 252 886 -10000 194 335 872 969 465 474 243 737 941 -10000 891 535 298 522 585 791 470 578 458 -10000 458 885 53 688 575 83 797 293 600 -10000 934 639 456 206 519 521 712 834 363 -10000 293 315 137 368 665 924 546 645 892 -10000 147 222 407 433 421 712 307 434 664 -10000 853 742 931 402 212 881 462 601 130 -10000 479 773 408 644 262 508 883 186 708 -10000 387 713 897 331 401 85 461 255 565 -10000 623 878 432 747 589 886 278 842 798 -10000 341 651 801 808 975 714 148 299 115 -10000 45 471 549 2 714 784 34 88 562 -10000 660 255 623 551 392 592 908 484 23 -10000 374 257 364 912 586 718 688 447 501 -10000 927 747 963 542 214 190 358 91 62 -10000 160 492 219 118 816 752 186 335 934 -10000 62 254 933 786 619 719 689 508 727 -10000 538 966 350 470 769 189 775 763 482 -10000 950 533 599 886 44 984 485 736 978 -10000 620 510 564 989 656 126 925 209 11 -10000 205 172 299 972 368 906 441 296 867 -10000 179 308 179 487 268 438 872 789 46 -10000 399 147 968 13 632 194 239 237 881 -10000 52 35 172 111 266 581 504 466 4 -10000 681 39 366 682 86 888 846 798 62 -10000 118 66 723 732 335 784 925 981 510 -10000 415 45 668 760 231 298 123 580 920 -10000 80 17 33 962 471 840 644 71 676 -10000 462 119 761 56 71 555 297 502 35 -10000 808 379 617 684 381 338 850 138 67 -10000 247 392 958 685 605 562 435 735 605 -10000 80 651 851 837 236 45 897 384 857 -10000 732 452 294 77 904 901 693 753 811 -10000 46 856 829 673 282 298 320 882 951 -10000 813 322 429 418 634 568 940 802 120 -10000 613 246 96 219 263 739 854 542 80 -10000 71 788 211 598 405 218 297 647 349 -10000 603 513 820 772 998 301 391 567 87 -10000 303 51 833 683 76 40 211 763 684 -10000 689 686 214 343 535 661 498 531 293 -10000 416 778 109 505 578 8 109 926 637 -10000 409 227 857 514 760 818 864 889 76 -10000 81 573 640 526 686 806 813 963 648 -10000 848 800 871 991 629 452 820 459 375 -10000 440 725 75 875 521 302 686 380 895 -10000 309 319 133 745 413 84 868 135 972 -10000 175 177 896 611 927 886 904 510 677 -10000 453 18 805 946 770 103 507 583 499 -10000 851 183 492 92 16 525 775 81 5 -10000 451 131 110 535 969 623 352 58 737 -10000 300 204 908 95 980 416 378 194 354 -10000 755 469 968 511 100 781 236 850 158 -10000 661 384 513 728 573 779 646 673 541 -10000 515 953 311 991 351 511 387 945 538 -10000 763 902 366 360 726 318 671 916 459 -10000 665 824 879 229 241 783 773 120 484 -10000 751 315 686 90 350 664 373 868 456 -10000 399 553 762 53 843 718 541 132 633 -10000 370 586 372 845 19 794 542 107 939 -10000 16 283 174 525 590 536 528 980 540 -10000 408 653 314 62 160 306 51 248 693 -10000 548 854 435 889 335 165 308 663 453 -10000 460 796 63 185 559 574 700 196 284 -10000 776 694 161 313 387 918 167 917 527 -10000 396 659 800 923 829 899 657 412 524 -10000 215 872 55 643 874 809 897 373 310 -10000 219 862 601 726 427 683 925 841 391 -10000 781 107 110 51 904 589 125 261 656 -10000 762 521 821 685 843 305 221 38 734 -10000 228 896 572 719 584 275 542 815 55 -10000 840 17 301 445 159 883 268 897 990 -10000 770 166 290 235 535 276 100 465 309 -10000 242 376 12 332 432 871 580 922 778 -10000 350 389 301 802 935 283 802 234 363 -10000 866 787 652 594 623 395 995 518 746 -10000 627 241 458 886 805 159 528 162 802 -10000 580 680 272 281 273 150 814 305 231 -10000 241 434 837 20 3 478 518 140 38 -10000 857 432 951 891 972 996 498 797 58 -10000 58 83 19 73 727 13 963 410 739 -10000 506 736 397 193 837 58 503 732 669 -10000 18 69 149 933 104 809 999 100 188 -10000 932 778 898 496 722 169 441 130 356 -10000 487 159 238 365 457 724 128 326 806 -10000 323 572 728 397 191 937 199 96 619 -10000 103 835 145 882 773 871 867 885 345 -10000 531 449 884 645 356 545 250 201 374 -10000 234 190 283 473 853 863 879 455 323 -10000 848 260 293 277 97 757 185 764 259 -10000 811 686 273 631 660 621 271 363 428 -10000 397 440 779 960 596 389 140 541 888 -10000 612 897 254 420 320 304 585 958 614 -10000 188 228 31 345 78 219 595 57 401 -10000 83 594 349 537 716 608 934 14 231 -10000 914 692 488 39 653 404 188 538 495 -10000 824 43 639 316 404 450 222 961 755 -10000 957 847 512 373 472 914 680 25 452 -10000 588 561 813 212 661 884 793 542 485 -10000 424 928 628 972 699 252 76 367 761 -10000 253 311 154 171 141 208 407 705 973 -10000 623 318 805 565 770 923 578 578 907 -10000 478 796 58 967 817 882 152 269 780 -10000 388 667 420 736 385 763 602 407 886 -10000 492 370 782 320 298 868 59 924 593 -10000 924 223 399 506 865 561 777 68 958 -10000 306 165 960 524 394 907 975 883 585 -10000 729 851 184 506 509 130 307 747 46 -10000 417 89 256 981 231 486 638 426 943 -10000 627 367 341 221 349 318 459 461 803 -10000 365 471 777 565 282 209 320 998 583 -10000 185 982 119 562 252 700 89 800 644 -10000 726 47 608 397 11 129 211 886 398 -10000 375 70 349 535 340 723 376 37 285 -10000 8 716 640 20 365 434 814 265 982 -10000 858 326 205 335 974 335 957 78 910 -10000 830 628 681 597 385 670 58 549 343 -10000 28 426 289 493 283 624 868 903 468 -10000 47 958 654 120 747 652 590 588 328 -10000 207 323 491 182 24 569 214 696 732 -10000 418 940 109 801 333 531 149 673 937 -10000 917 477 869 132 497 13 764 579 329 -10000 720 845 648 265 335 4 265 874 329 -10000 489 124 122 486 642 930 800 549 911 -10000 239 419 486 827 920 683 251 740 576 -10000 928 360 928 171 484 53 363 89 817 -10000 806 46 930 32 335 935 294 377 551 -10000 400 128 110 76 57 429 426 495 871 -10000 241 638 676 938 499 868 368 233 243 -10000 27 61 90 834 672 617 913 510 50 -10000 581 127 160 697 171 168 376 794 197 -10000 18 790 104 600 800 326 565 564 42 -10000 931 172 420 583 904 198 424 121 998 -10000 378 828 86 329 753 583 401 178 503 -10000 103 413 448 362 487 213 770 177 698 -10000 339 491 47 447 523 953 26 473 675 -10000 781 59 680 514 706 174 900 687 756 -10000 363 499 217 494 312 885 378 36 301 -10000 602 513 800 750 884 157 38 302 443 -10000 241 168 740 531 984 434 900 585 342 -10000 478 102 436 723 434 167 854 562 124 -10000 283 188 494 229 365 452 15 585 223 -10000 650 835 101 669 19 815 801 87 641 -10000 221 451 549 270 827 404 471 141 715 -10000 669 355 230 205 794 944 66 233 758 -10000 650 501 585 409 562 76 742 493 959 -10000 725 542 148 1 856 483 814 536 177 -10000 247 316 312 15 282 160 672 108 24 -10000 641 767 64 97 699 488 710 725 76 -10000 148 792 78 64 373 1 333 582 992 -10000 605 789 583 441 22 906 372 259 812 -10000 760 664 934 752 458 859 264 917 31 -10000 409 650 306 15 832 414 997 441 203 -10000 128 413 938 772 563 126 364 561 749 -10000 409 254 812 293 882 606 447 90 376 -10000 103 930 554 961 303 176 556 645 758 -10000 355 806 618 460 491 985 809 286 330 -10000 215 27 792 33 190 32 327 278 512 -10000 261 193 211 624 231 259 184 328 335 -10000 867 999 345 829 27 322 93 28 961 -10000 129 189 820 424 800 550 615 536 851 -10000 688 575 349 483 40 454 900 176 0 -10000 385 930 933 186 707 844 240 618 395 -10000 439 563 18 972 164 38 715 78 585 -10000 939 851 635 64 201 696 56 534 924 -10000 286 853 815 223 274 644 641 288 313 -10000 559 554 64 908 541 137 787 321 712 -10000 619 136 506 316 878 498 511 809 124 -10000 716 700 511 817 794 329 991 761 635 -10000 929 919 189 990 366 111 288 961 88 -10000 717 615 635 393 684 660 185 807 174 -10000 128 918 976 92 79 335 695 123 199 -10000 224 193 633 715 93 474 344 417 138 -10000 96 80 859 375 21 43 341 569 262 -10000 910 704 733 468 450 366 260 946 403 -10000 489 621 231 196 598 908 210 670 327 -10000 256 367 11 393 398 723 877 903 253 -10000 367 186 186 262 382 833 793 367 257 -10000 936 794 467 924 145 714 479 360 611 -10000 114 440 855 785 350 737 799 445 7 -10000 624 623 313 984 57 583 850 454 705 -10000 138 430 131 935 831 4 433 160 938 -10000 569 21 524 113 433 386 493 187 966 -10000 1 4 873 358 158 728 327 775 379 -10000 865 816 287 75 962 603 367 653 538 -10000 809 671 490 85 464 943 849 422 375 -10000 626 675 155 897 157 317 586 595 312 -10000 543 992 928 384 571 665 600 878 263 -10000 952 928 863 500 292 57 313 641 245 -10000 557 435 19 269 546 225 923 474 143 -10000 532 791 765 644 216 231 863 361 352 -10000 105 970 762 435 114 150 25 183 88 -10000 124 946 463 868 518 722 269 515 590 -10000 242 433 257 726 416 406 721 251 829 -10000 36 481 189 997 414 245 443 730 872 -10000 277 827 274 531 763 58 696 22 201 -10000 248 971 610 620 271 683 720 191 408 -10000 451 661 222 409 972 999 331 130 353 -10000 906 418 767 140 150 437 370 948 569 -10000 928 785 344 855 528 981 560 283 537 -10000 222 673 957 144 753 381 857 545 222 -10000 904 972 644 150 153 285 566 821 134 -10000 976 738 814 523 611 574 452 555 170 -10000 580 192 775 840 746 566 842 989 791 -10000 535 430 708 404 735 141 123 374 931 -10000 769 135 957 884 935 429 759 770 534 -10000 423 793 199 634 344 19 225 953 286 -10000 668 426 313 366 624 616 410 78 453 -10000 702 909 231 249 685 650 455 427 856 -10000 28 440 9 76 216 860 496 83 595 -10000 635 562 543 990 268 349 445 650 272 -10000 628 545 934 355 415 1 465 158 249 -10000 947 779 196 766 895 443 471 563 844 -10000 370 877 639 462 180 413 779 819 519 -10000 507 814 223 252 728 454 77 577 114 -10000 281 104 53 90 162 335 414 717 274 -10000 287 15 621 93 181 724 744 666 510 -10000 748 698 742 499 905 154 473 410 601 -10000 582 641 295 722 866 185 296 743 487 -10000 956 291 704 293 662 395 658 380 487 -10000 175 120 969 972 116 214 737 454 225 -10000 232 872 710 991 364 927 740 921 903 -10000 164 511 625 31 328 584 362 744 286 -10000 373 244 775 809 573 206 903 540 804 -10000 708 309 463 205 91 143 31 42 319 -10000 460 217 939 50 411 299 682 426 836 -10000 726 140 145 217 285 244 888 309 885 -10000 660 696 931 329 29 901 833 734 860 -10000 295 311 72 408 195 225 914 807 644 -10000 441 55 839 442 256 695 41 844 413 -10000 979 812 569 753 261 980 603 458 862 -10000 882 82 265 800 88 446 452 301 441 -10000 70 205 472 878 309 844 558 665 355 -10000 966 373 303 289 885 56 735 442 409 -10000 238 64 149 744 255 524 721 170 668 -10000 11 861 104 196 86 465 954 581 683 -10000 515 797 916 703 729 750 360 900 673 -10000 848 600 916 825 495 100 507 79 117 -10000 695 971 113 922 937 156 997 24 791 -10000 973 27 787 270 808 709 18 525 148 -10000 64 269 14 979 288 372 460 256 0 -10000 671 421 827 608 254 251 735 601 230 -10000 901 163 859 867 174 838 192 853 67 -10000 802 633 876 975 799 46 192 163 986 -10000 2 591 328 561 870 163 31 652 263 -10000 990 822 327 851 792 162 207 202 794 -10000 212 168 653 437 430 244 95 97 738 -10000 102 568 757 644 972 304 142 415 823 -10000 24 53 411 408 795 868 383 683 534 -10000 271 96 373 593 53 609 719 928 593 -10000 405 222 932 260 555 412 347 806 715 -10000 644 274 808 69 877 974 611 892 263 -10000 18 255 148 54 221 303 135 150 639 -10000 676 542 568 845 303 825 905 778 136 -10000 550 110 362 810 379 967 632 970 525 -10000 152 871 263 17 264 247 941 524 740 -10000 826 528 522 148 422 39 137 74 432 -10000 575 974 743 552 173 424 863 237 548 -10000 489 421 790 164 467 796 942 381 847 -10000 798 750 201 811 625 925 605 14 754 -10000 670 878 524 743 210 996 744 939 979 -10000 360 685 897 103 75 245 186 651 819 -10000 458 935 640 211 355 858 32 99 647 -10000 872 521 127 353 638 476 1 41 759 -10000 495 989 429 552 654 75 929 591 645 -10000 398 303 425 254 687 850 544 495 657 -10000 830 552 991 434 52 289 958 192 368 -10000 303 326 157 431 289 145 489 527 358 -10000 353 671 427 439 220 725 68 66 311 -10000 726 566 638 733 939 394 599 235 317 -10000 3 642 623 2 688 623 791 161 953 -10000 773 670 489 625 898 211 138 632 695 -10000 868 274 331 560 688 692 705 614 969 -10000 486 753 804 529 912 566 476 33 267 -10000 727 308 981 138 898 783 46 261 296 -10000 185 241 472 736 119 738 108 149 607 -10000 960 261 168 880 487 613 524 928 198 -10000 678 491 387 769 880 413 401 873 355 -10000 943 934 559 92 289 427 982 263 851 -10000 433 83 108 417 623 174 523 626 524 -10000 269 508 917 442 570 971 768 752 489 -10000 860 314 219 102 925 308 532 222 124 -10000 307 334 991 849 548 44 663 830 274 -10000 65 612 319 559 51 90 805 235 652 -10000 628 287 150 154 710 327 791 309 9 -10000 858 115 73 14 176 524 388 360 727 -10000 926 881 702 227 407 803 85 997 753 -10000 700 742 642 355 133 256 129 406 756 -10000 269 4 187 324 257 99 358 102 96 -10000 427 283 794 409 696 917 808 376 957 -10000 898 372 27 928 952 461 198 816 396 -10000 818 103 455 646 984 264 718 202 852 -10000 808 449 311 783 327 440 400 991 224 -10000 777 662 545 329 912 7 25 0 50 -10000 560 212 684 899 378 629 981 344 207 -10000 824 437 944 943 171 807 177 528 638 -10000 957 178 664 858 513 590 28 949 619 -10000 879 787 493 739 151 244 827 805 228 -10000 229 693 460 198 283 875 44 554 818 -10000 180 838 281 38 839 565 61 608 764 -10000 154 346 878 835 580 647 798 341 947 -10000 951 280 180 368 346 111 893 439 212 -10000 854 986 340 12 833 491 909 589 653 -10000 593 824 31 230 106 303 27 628 529 -10000 551 594 306 508 589 256 848 569 505 -10000 821 284 403 596 378 827 913 340 584 -10000 882 313 391 472 7 252 488 323 484 -10000 412 62 359 506 699 238 115 31 39 -10000 211 217 641 839 335 125 716 300 109 -10000 271 265 855 420 123 100 126 475 571 -10000 801 732 843 869 829 828 86 53 933 -10000 86 255 699 105 308 188 793 641 484 -10000 989 874 861 844 120 814 464 75 790 -10000 148 644 651 298 687 409 394 697 672 -10000 35 666 863 288 703 355 393 396 670 -10000 213 440 163 143 177 591 120 460 868 -10000 996 778 878 70 840 444 139 45 777 -10000 593 416 241 767 22 784 245 137 20 -10000 683 959 834 998 534 51 982 938 47 -10000 808 835 480 580 351 610 995 922 556 -10000 365 987 542 134 499 929 239 463 15 -10000 560 192 370 336 55 67 668 379 898 -10000 297 126 538 132 886 576 716 638 255 -10000 621 336 906 970 75 279 651 719 657 -10000 370 650 626 151 473 160 298 831 419 -10000 795 635 397 901 712 875 593 806 744 -10000 584 916 179 662 121 386 65 58 910 -10000 128 322 262 79 768 329 484 10 381 -10000 1000 847 477 711 387 746 382 828 889 -10000 691 384 74 520 715 355 332 351 558 -10000 452 444 216 415 73 59 18 414 789 -10000 213 728 288 907 303 527 129 760 692 -10000 798 891 128 27 333 942 181 416 286 -10000 534 525 826 956 644 279 91 428 417 -10000 905 25 413 933 141 917 186 378 928 -10000 803 114 251 112 492 700 789 135 242 -10000 948 53 219 182 471 868 82 726 271 -10000 867 329 791 100 69 592 392 635 975 -10000 669 269 728 761 609 540 152 951 1 -10000 341 253 328 68 84 414 961 880 54 -10000 926 971 825 329 609 951 600 286 541 -10000 761 370 611 163 738 314 756 500 34 -10000 735 101 631 119 107 426 464 983 999 -10000 411 843 344 798 374 886 33 597 893 -10000 65 729 192 416 595 333 955 702 5 -10000 308 152 503 606 354 985 942 599 8 -10000 182 132 474 606 103 320 81 241 871 -10000 855 49 110 359 471 236 594 389 900 -10000 959 372 698 518 714 967 773 939 774 -10000 161 804 861 594 274 137 137 43 519 -10000 368 636 864 679 488 827 734 441 22 -10000 423 733 502 915 553 982 216 961 619 -10000 905 186 753 516 585 907 552 338 47 -10000 433 973 667 202 626 393 988 938 362 -10000 879 423 846 249 261 631 397 27 62 -10000 24 563 302 142 25 484 38 592 828 -10000 412 640 195 7 39 984 628 863 375 -10000 983 717 912 754 888 204 458 825 379 -10000 746 780 140 503 221 687 609 24 727 -10000 21 513 96 501 351 470 891 203 136 -10000 84 840 395 492 693 56 669 544 982 -10000 512 740 272 291 278 762 274 960 926 -10000 978 989 453 689 13 468 71 777 828 -10000 747 936 216 530 406 990 306 383 709 -10000 698 908 434 310 160 499 78 829 50 -10000 23 857 631 184 532 8 363 714 391 -10000 590 11 835 899 539 591 305 374 348 -10000 617 632 831 452 958 891 370 2 271 -10000 116 323 886 717 659 173 687 463 12 -10000 661 356 48 179 175 956 417 186 7 -10000 166 112 712 672 891 714 520 591 374 -10000 677 816 15 290 669 357 856 228 507 -10000 806 258 715 397 277 422 324 176 263 -10000 983 496 692 822 402 60 746 664 113 -10000 467 355 515 185 339 47 465 720 218 -10000 911 69 254 499 322 580 792 786 475 -10000 467 878 635 427 607 930 877 453 861 -10000 284 823 456 916 95 191 966 641 301 -10000 495 804 906 603 227 212 878 566 0 -10000 673 266 395 207 543 562 416 381 963 -10000 128 251 204 367 590 743 437 103 59 -10000 378 102 637 143 280 34 500 238 259 -10000 373 359 291 985 81 397 601 620 517 -10000 338 794 968 498 219 128 320 639 649 -10000 524 852 522 561 417 258 842 374 896 -10000 351 980 963 722 484 184 537 588 877 -10000 58 85 10 213 916 652 300 9 230 -10000 239 363 168 299 804 858 741 624 177 -10000 905 43 831 355 883 201 805 955 440 -10000 754 866 702 980 767 199 726 661 282 -10000 726 385 116 960 159 624 158 489 335 -10000 584 811 995 409 691 740 521 595 516 -10000 446 539 99 46 931 190 794 878 199 -10000 626 724 34 901 969 579 712 610 146 -10000 130 593 138 88 229 260 860 110 636 -10000 351 484 568 487 406 756 50 795 988 -10000 424 846 966 750 897 435 503 891 256 -10000 502 367 498 350 937 16 101 724 58 -10000 569 968 62 201 105 431 101 958 570 -10000 715 692 226 585 251 281 184 542 517 -10000 271 848 585 471 322 976 855 385 9 -10000 705 679 413 434 802 786 335 418 96 -10000 58 934 671 789 958 687 917 227 592 -10000 898 978 903 264 1000 695 929 838 168 -10000 710 973 700 624 774 790 811 106 892 -10000 618 869 979 754 21 739 398 457 401 -10000 636 341 241 110 583 672 524 780 917 -10000 863 695 936 298 570 740 459 654 802 -10000 76 589 447 370 925 920 952 67 305 -10000 938 412 35 963 615 31 412 761 252 -10000 566 214 393 306 778 78 706 487 719 -10000 435 381 478 224 610 949 3 640 426 -10000 342 441 455 643 261 466 414 119 538 -10000 833 982 49 908 854 699 924 36 123 -10000 935 420 532 163 662 567 997 122 454 -10000 500 220 291 553 676 963 987 537 815 -10000 324 75 87 826 743 363 880 372 418 -10000 703 485 381 764 313 577 932 21 432 -10000 337 472 557 805 460 129 328 454 707 -10000 702 852 873 420 535 915 82 772 364 -10000 974 330 569 973 465 880 18 200 807 -10000 367 885 226 204 451 908 585 72 624 -10000 49 157 431 343 572 64 797 234 708 -10000 742 552 279 541 782 255 34 590 358 -10000 545 791 736 755 827 41 746 764 689 -10000 400 51 464 661 687 76 168 127 500 -10000 771 440 85 528 1 60 575 729 140 -10000 752 622 0 582 97 784 666 395 475 -10000 391 928 739 639 913 640 624 830 4 -10000 136 994 865 452 939 104 164 660 188 -10000 966 763 709 667 75 748 566 44 474 -10000 311 74 740 692 586 361 179 292 416 -10000 471 988 132 269 95 302 554 561 388 -10000 35 456 586 692 448 796 959 670 500 -10000 423 669 707 779 379 908 823 236 180 -10000 17 360 245 238 88 138 81 242 274 -10000 341 470 84 746 448 387 588 367 506 -10000 503 869 817 854 585 355 240 215 265 -10000 344 372 91 164 362 124 611 141 573 -10000 151 633 979 891 238 679 582 493 908 -10000 861 977 733 513 852 394 507 748 683 -10000 904 523 612 708 81 352 453 361 790 -10000 762 124 327 517 613 430 25 205 149 -10000 134 220 904 792 973 241 857 834 505 -10000 282 122 663 525 986 604 450 792 888 -10000 340 956 113 844 343 199 534 527 768 -10000 444 956 466 238 422 605 489 371 602 -10000 10 60 662 218 403 622 741 390 130 -10000 632 415 842 92 464 827 211 359 628 -10000 793 535 963 42 881 862 561 84 865 -10000 441 96 164 339 422 89 849 386 595 -10000 384 298 319 330 809 324 543 528 582 -10000 209 124 602 554 953 381 685 468 132 -10000 236 732 98 829 197 842 140 663 349 -10000 707 677 253 191 250 792 691 126 902 -10000 886 919 189 98 322 908 555 57 966 -10000 926 286 986 533 572 278 430 983 442 -10000 738 903 128 420 560 989 703 182 802 -10000 533 797 333 767 766 338 945 791 352 -10000 519 62 707 774 358 877 611 811 583 -10000 168 912 163 425 43 539 145 267 932 -10000 9 137 633 95 464 609 565 569 395 -10000 129 111 612 586 910 768 535 325 787 -10000 85 405 899 108 19 155 768 566 250 -10000 930 878 117 471 529 575 979 905 739 -10000 154 1 804 554 530 234 325 675 632 -10000 874 790 457 535 189 980 564 291 820 -10000 896 882 215 925 864 315 61 512 906 -10000 558 333 948 654 424 464 959 475 341 -10000 939 31 778 99 307 309 574 810 609 -10000 850 296 502 152 736 75 851 9 512 -10000 54 262 509 365 745 866 242 440 673 -10000 12 309 60 349 847 599 335 852 253 -10000 973 603 330 887 509 846 34 309 926 -10000 55 759 944 572 126 695 70 457 642 -10000 228 74 442 446 467 201 11 166 569 -10000 715 250 576 38 866 159 827 9 703 -10000 180 694 618 444 252 140 922 405 384 -10000 138 257 509 458 329 625 182 705 955 -10000 507 827 184 26 36 709 263 779 765 -10000 238 273 952 918 18 338 918 827 73 -10000 700 711 450 117 179 865 350 849 856 -10000 561 7 47 907 103 22 145 986 462 -10000 652 127 877 700 821 601 828 230 108 -10000 738 896 967 568 427 462 994 471 920 -10000 310 901 467 479 488 740 962 500 939 -10000 914 679 287 196 140 673 924 638 819 -10000 251 557 47 819 307 743 51 712 105 -10000 358 252 995 762 893 414 526 850 606 -10000 697 302 821 491 179 275 529 910 641 -10000 277 536 314 338 493 718 470 300 889 -10000 688 674 344 796 602 993 809 823 949 -10000 790 91 636 711 970 713 236 121 209 -10000 288 736 550 970 213 21 161 343 448 -10000 184 883 74 785 533 182 690 335 389 -10000 252 774 4 15 145 224 588 521 456 -10000 15 188 355 901 257 131 406 485 187 -10000 789 474 148 157 237 124 247 392 60 -10000 249 852 333 415 338 971 931 459 726 -10000 236 163 759 261 337 937 80 562 608 -10000 373 609 594 84 361 354 1000 30 167 -10000 141 428 207 695 248 917 236 886 871 -10000 255 116 374 964 918 660 523 53 594 -10000 75 187 427 36 901 995 987 787 513 -10000 880 391 534 837 213 5 2 582 431 -10000 470 254 561 79 66 49 948 388 517 -10000 814 497 704 272 486 74 991 133 630 -10000 19 79 709 188 775 674 39 306 452 -10000 12 76 97 53 159 290 290 888 662 -10000 168 330 268 666 859 591 903 760 9 -10000 719 772 160 536 576 896 335 927 971 -10000 91 877 738 116 747 981 79 128 732 -10000 780 898 810 774 618 813 615 421 458 -10000 419 749 503 322 357 877 760 470 861 -10000 733 28 266 132 961 645 586 277 792 -10000 477 919 449 664 470 724 726 300 447 -10000 149 959 164 328 435 724 360 458 516 -10000 312 969 946 937 270 424 773 187 718 -10000 660 434 11 205 724 801 662 325 897 -10000 610 959 402 904 816 32 719 422 771 -10000 768 690 134 286 980 808 248 455 172 -10000 180 430 489 31 601 361 15 289 523 -10000 638 925 377 692 238 359 498 35 761 -10000 829 550 415 988 778 935 408 987 364 -10000 205 535 566 944 907 897 220 13 403 -10000 365 190 208 680 803 989 657 29 271 -10000 99 791 864 554 335 838 176 145 937 -10000 491 496 204 749 331 212 52 160 935 -10000 943 54 816 227 450 774 340 907 14 -10000 750 187 476 103 676 715 763 936 580 -10000 783 326 663 932 860 174 558 342 198 -10000 828 433 357 961 56 630 266 772 843 -10000 335 499 102 619 73 307 84 860 910 -10000 412 904 987 308 242 958 839 314 573 -10000 819 991 454 403 967 548 443 407 143 -10000 873 477 239 374 743 534 206 980 308 -10000 965 491 722 398 29 860 682 987 95 -10000 877 615 830 331 458 275 519 155 647 -10000 319 254 463 335 705 616 19 661 773 -10000 656 216 93 245 422 730 286 457 214 -10000 632 556 285 595 970 690 122 696 979 -10000 894 605 854 692 666 465 67 906 836 -10000 422 791 526 30 510 531 361 614 883 -10000 401 794 737 401 479 420 179 19 891 -10000 47 0 654 527 390 630 313 324 259 -10000 649 850 626 216 26 724 24 20 942 -10000 838 518 965 797 366 757 383 131 151 -10000 606 477 715 893 262 588 252 766 256 -10000 260 783 542 303 58 684 355 142 114 -10000 811 119 302 447 646 633 143 173 858 -10000 471 988 130 530 637 733 989 280 37 -10000 817 460 957 400 462 132 145 903 109 -10000 925 135 551 487 869 663 276 114 288 -10000 937 311 856 425 797 516 757 527 37 -10000 785 455 25 51 663 196 911 0 205 -10000 286 249 267 82 609 971 22 774 86 -10000 449 846 970 416 845 51 647 171 375 -10000 478 128 665 916 623 692 600 830 14 -10000 689 705 663 29 932 806 366 601 691 -10000 707 352 490 179 480 680 419 332 432 -10000 460 146 624 275 742 149 129 858 346 -10000 765 300 869 529 35 409 374 264 68 -10000 313 149 858 823 13 969 307 769 143 -10000 374 2 957 270 724 797 521 366 465 -10000 457 741 87 303 149 657 290 944 338 -10000 277 839 151 834 659 57 218 741 774 -10000 333 231 404 360 96 565 891 120 640 -10000 950 736 155 2 463 107 138 310 93 -10000 925 723 37 62 289 943 630 578 351 -10000 518 597 817 293 162 370 850 13 172 -10000 939 720 993 872 21 211 617 931 885 -10000 440 621 902 618 19 214 943 287 690 -10000 565 560 42 843 244 516 69 168 402 -10000 862 962 79 479 22 141 852 312 209 -10000 640 761 105 655 634 180 829 951 530 -10000 538 245 441 639 404 94 88 878 255 -10000 368 210 496 650 857 14 629 492 561 -10000 74 440 97 514 645 697 224 656 554 -10000 602 680 893 215 467 74 976 573 334 -10000 630 692 268 211 787 792 887 429 730 -10000 971 993 672 497 153 253 633 392 682 -10000 600 931 841 792 252 569 798 681 303 -10000 718 300 503 398 671 252 761 440 989 -10000 333 553 569 891 15 314 836 22 734 -10000 63 971 926 590 441 958 825 918 636 -10000 178 506 249 449 203 164 741 222 1000 -10000 42 775 227 176 512 389 364 664 304 -10000 321 104 93 39 44 284 420 120 598 -10000 781 782 327 195 619 532 840 907 381 -10000 639 261 202 282 219 778 313 171 221 -10000 612 339 930 192 92 552 405 463 307 -10000 579 277 699 643 30 652 481 349 611 -10000 91 289 59 94 683 751 587 633 82 -10000 335 126 563 416 41 385 739 492 320 -10000 764 412 555 291 524 647 123 961 861 -10000 425 719 38 593 887 684 902 415 246 -10000 287 846 318 719 474 653 300 728 688 -10000 37 149 583 249 713 997 57 346 66 -10000 366 377 590 950 366 691 991 327 98 -10000 965 652 682 81 408 564 174 225 439 -10000 953 355 740 562 761 190 949 94 387 -10000 875 648 357 320 193 717 576 520 486 -10000 645 499 838 218 759 908 397 679 625 -10000 830 274 833 533 474 889 425 0 629 -10000 649 734 737 822 396 81 32 956 456 -10000 352 450 425 830 742 915 226 294 632 -10000 609 664 695 658 295 577 842 204 526 -10000 449 434 885 743 848 987 177 593 995 -10000 152 549 884 699 145 727 953 797 531 -10000 394 101 422 84 896 622 284 758 379 -10000 526 182 885 478 875 398 576 472 908 -10000 676 368 788 600 859 540 334 247 145 -10000 406 367 520 68 492 569 144 301 411 -10000 248 896 329 907 191 590 996 158 535 -10000 926 107 763 121 772 536 681 206 652 -10000 705 884 562 41 400 624 759 496 792 -10000 645 41 404 666 42 586 263 180 672 -10000 964 659 702 797 31 576 252 581 689 -10000 271 686 486 981 757 562 741 29 604 -10000 659 745 551 663 808 453 595 808 155 -10000 925 947 274 264 290 299 968 757 593 -10000 395 216 187 469 53 738 345 566 41 -10000 302 873 276 869 362 839 284 887 357 -10000 632 742 442 940 815 308 806 369 837 -10000 896 463 247 819 217 225 681 301 349 -10000 498 444 570 521 574 737 359 197 213 -10000 593 50 857 4 961 968 177 365 566 -10000 924 965 549 176 938 73 0 143 422 -10000 148 932 409 602 636 629 572 884 729 -10000 910 526 317 759 83 710 813 847 509 -10000 711 741 984 441 299 751 713 387 999 -10000 731 520 409 235 460 527 170 707 380 -10000 706 192 933 235 748 694 966 48 308 -10000 892 60 822 373 100 472 179 768 755 -10000 805 972 770 557 775 907 129 106 427 -10000 818 312 502 992 706 598 234 956 175 -10000 495 639 962 402 373 234 829 792 199 -10000 490 204 215 391 482 163 937 941 831 -10000 30 947 103 753 306 370 969 178 329 -10000 236 408 327 852 600 163 972 281 122 -10000 417 264 519 75 158 992 210 194 182 -10000 603 189 879 952 236 790 975 553 944 -10000 336 229 0 210 426 754 242 163 665 -10000 955 395 177 884 758 192 384 403 6 -10000 848 912 969 641 931 923 925 738 340 -10000 169 663 762 573 410 208 461 519 569 -10000 394 990 459 237 802 677 987 516 775 -10000 703 634 865 125 766 953 38 192 276 -10000 904 39 358 560 935 216 116 993 388 -10000 195 330 542 316 408 175 279 202 921 -10000 105 526 150 843 833 184 387 566 496 -10000 489 193 142 531 848 280 315 391 241 -10000 450 408 291 690 694 779 735 724 266 -10000 139 705 903 701 671 909 399 751 89 -10000 109 400 851 659 892 512 530 633 877 -10000 926 371 247 786 271 674 877 776 391 -10000 396 493 157 117 205 685 605 396 117 -10000 755 638 507 135 358 332 583 875 852 -10000 414 155 400 546 738 844 104 966 940 -10000 109 897 970 423 734 522 565 931 73 -10000 279 820 820 153 449 144 408 857 386 -10000 194 194 545 721 676 358 476 352 4 -10000 935 480 641 950 955 725 182 815 665 -10000 907 719 773 243 275 846 899 201 487 -10000 377 503 494 195 18 79 402 798 684 -10000 120 592 45 497 207 328 606 4 752 -10000 10 362 24 534 463 636 738 330 951 -10000 862 25 680 220 622 723 96 976 79 -10000 631 230 465 919 278 978 359 947 846 -10000 555 584 620 656 747 802 954 947 307 -10000 832 901 437 808 705 984 313 140 863 -10000 227 370 493 498 987 918 771 833 808 -10000 954 449 640 97 953 498 793 557 754 -10000 89 976 281 365 279 336 220 352 548 -10000 223 489 765 883 804 12 187 827 864 -10000 283 578 806 733 299 883 361 163 662 -10000 421 95 364 63 551 451 854 415 591 -10000 932 655 216 36 10 162 454 211 195 -10000 339 682 916 748 326 613 380 461 640 -10000 182 760 109 499 346 727 24 135 955 -10000 229 191 243 653 82 52 754 670 932 -10000 622 545 182 630 615 923 726 292 284 -10000 715 407 343 57 20 571 805 277 527 -10000 227 318 215 448 888 414 194 32 422 -10000 81 460 394 455 510 170 310 655 883 -10000 729 664 405 738 462 782 643 928 444 -10000 157 410 646 79 225 573 443 547 56 -10000 294 255 416 362 613 929 571 346 401 -10000 342 49 915 505 972 467 327 57 823 -10000 142 796 385 86 274 575 603 793 804 -10000 376 43 287 893 735 724 385 829 507 -10000 306 207 937 891 668 121 187 692 746 -10000 693 938 784 490 263 223 266 318 740 -10000 728 154 993 649 479 186 194 269 921 -10000 521 598 534 364 546 438 369 589 958 -10000 996 853 363 110 736 143 906 0 175 -10000 314 401 218 400 877 438 276 235 238 -10000 125 845 399 963 683 442 337 943 644 -10000 700 741 993 641 682 607 992 551 9 -10000 264 931 291 911 523 489 202 109 866 -10000 668 69 770 932 369 469 60 845 764 -10000 362 413 964 271 504 899 713 91 98 -10000 714 663 886 226 994 376 444 274 275 -10000 834 678 261 821 488 697 481 673 755 -10000 17 971 949 786 811 161 626 841 568 -10000 849 196 289 659 863 242 411 382 719 -10000 223 165 857 740 464 820 540 868 607 -10000 873 806 887 282 763 971 125 20 234 -10000 717 543 589 269 900 756 967 582 201 -10000 329 830 687 769 320 655 318 148 49 -10000 441 455 992 190 827 366 28 598 614 -10000 605 824 845 364 601 838 150 885 510 -10000 618 498 431 170 748 72 700 302 294 -10000 456 793 881 276 708 862 961 831 285 -10000 424 977 413 313 756 501 721 632 779 -10000 754 213 272 683 186 658 691 978 871 -10000 78 480 683 317 574 590 708 933 78 -10000 556 876 287 805 43 3 470 834 29 -10000 415 307 119 731 133 248 240 390 623 -10000 107 19 95 314 588 788 682 83 77 -10000 257 267 799 651 686 374 351 509 55 -10000 853 612 131 285 738 23 76 375 864 -10000 92 425 155 628 56 831 655 557 568 -10000 683 744 241 672 597 809 925 497 901 -10000 557 797 761 813 512 115 139 23 405 -10000 191 12 160 211 708 665 960 88 851 -10000 37 943 719 490 132 561 708 224 511 -10000 966 300 687 926 188 579 583 551 945 -10000 329 846 674 653 781 706 309 719 541 -10000 458 266 718 195 541 196 319 830 133 -10000 84 642 600 524 754 247 195 195 263 -10000 483 628 726 909 245 277 588 871 523 -10000 133 111 624 466 749 712 524 756 858 -10000 501 51 416 39 257 58 805 309 706 -10000 223 835 865 567 830 662 465 848 180 -10000 2 534 427 42 740 103 92 382 132 -10000 781 612 302 768 790 51 100 537 173 -10000 269 52 717 392 909 644 853 334 447 -10000 908 927 491 943 399 356 132 776 152 -10000 540 884 479 512 273 971 1 312 72 -10000 170 33 299 798 58 974 524 952 674 -10000 240 371 942 325 751 43 694 88 993 -10000 225 44 701 567 630 565 705 399 289 -10000 516 91 464 148 454 21 75 154 19 -10000 769 496 758 493 276 170 324 515 313 -10000 446 479 740 568 969 953 578 262 513 -10000 93 417 483 214 319 289 637 944 798 -10000 103 747 661 349 157 279 108 317 153 -10000 856 762 173 879 256 618 96 23 335 -10000 478 897 296 591 806 446 739 671 996 -10000 387 961 574 439 851 539 222 317 76 -10000 270 825 277 513 99 431 157 526 547 -10000 200 126 315 69 673 53 335 820 632 -10000 923 865 137 559 939 391 196 581 219 -10000 331 617 416 109 892 613 84 979 719 -10000 253 198 520 324 914 676 59 571 393 -10000 956 825 675 858 855 154 485 334 772 -10000 421 459 465 302 732 729 609 455 853 -10000 277 517 167 216 928 919 168 390 185 -10000 320 356 954 694 825 466 477 835 210 -10000 770 260 274 912 654 974 829 451 6 -10000 63 149 372 85 641 438 724 759 148 -10000 912 826 237 55 918 378 428 464 145 -10000 511 253 599 906 470 623 825 618 957 -10000 19 918 931 11 365 864 186 795 496 -10000 477 323 302 608 665 350 45 450 857 -10000 132 553 254 233 406 800 945 664 727 -10000 216 987 179 302 913 585 440 386 264 -10000 880 931 93 135 482 83 142 673 273 -10000 346 971 843 279 946 522 625 745 259 -10000 622 977 37 426 756 958 713 266 293 -10000 496 391 797 938 110 862 469 841 680 -10000 443 882 377 272 193 396 561 392 666 -10000 769 857 594 868 249 841 615 945 279 -10000 372 30 212 34 837 231 266 731 103 -10000 997 745 445 363 365 169 614 814 166 -10000 297 567 524 156 239 705 151 779 600 -10000 114 93 708 663 834 310 256 638 783 -10000 357 996 592 520 837 715 590 371 666 -10000 847 322 884 96 750 772 906 988 753 -10000 602 63 656 587 392 990 490 620 909 -10000 578 819 24 702 985 375 772 176 266 -10000 352 394 467 185 528 362 225 399 834 -10000 772 916 799 294 515 574 100 987 401 -10000 385 833 363 430 412 998 783 213 452 -10000 163 248 259 509 292 236 930 214 355 -10000 396 710 707 540 345 674 309 315 259 -10000 877 37 564 250 165 970 959 603 995 -10000 366 223 986 206 415 900 606 696 455 -10000 408 29 97 590 766 539 444 931 830 -10000 808 789 245 38 300 801 566 911 615 -10000 408 709 670 885 301 964 670 608 853 -10000 138 604 588 670 335 868 246 480 514 -10000 422 942 507 58 997 479 807 597 10 -10000 464 517 831 191 186 117 304 784 5 -10000 496 478 681 128 343 907 568 174 536 -10000 92 133 748 283 631 618 949 541 893 -10000 570 898 101 779 540 998 25 448 362 -10000 297 109 89 93 70 213 987 991 147 -10000 732 238 623 823 642 744 585 575 9 -10000 105 329 870 445 945 947 452 359 345 -10000 468 532 171 499 896 12 963 996 766 -10000 557 674 20 971 216 495 875 829 597 -10000 868 443 899 539 780 158 543 563 334 -10000 590 247 169 161 767 470 648 998 370 -10000 173 780 793 952 298 785 651 165 771 -10000 407 839 230 976 774 613 725 375 268 -10000 973 120 181 746 258 17 425 887 408 -10000 283 557 947 541 292 499 932 28 682 -10000 590 661 197 254 895 514 209 402 64 -10000 695 204 863 454 899 783 81 228 549 -10000 709 808 288 658 997 403 5 460 616 -10000 422 989 456 44 352 976 748 259 971 -10000 22 579 529 517 971 353 808 552 611 -10000 815 167 792 105 710 28 931 862 395 -10000 827 72 962 839 428 706 78 623 76 -10000 871 986 448 557 919 163 972 139 642 -10000 993 231 269 272 989 272 469 854 149 -10000 746 950 820 277 987 772 500 395 24 -10000 877 334 9 388 54 782 905 198 941 -10000 492 39 307 905 543 65 650 89 535 -10000 989 104 93 588 489 340 612 470 149 -10000 732 451 615 155 154 723 490 836 970 -10000 352 963 736 432 190 385 17 543 597 -10000 473 991 409 505 748 479 890 318 168 -10000 550 865 183 385 777 857 49 127 958 -10000 799 95 461 113 728 977 593 45 968 -10000 50 438 516 268 546 664 389 279 786 -10000 725 940 979 461 494 442 938 419 106 -10000 905 599 519 199 541 760 871 463 259 -10000 109 951 941 861 945 862 159 11 281 -10000 341 647 947 362 408 27 362 64 72 -10000 404 365 333 479 460 866 336 313 473 -10000 249 92 982 456 597 96 636 552 183 -10000 129 842 810 201 547 614 986 869 547 -10000 556 929 308 451 871 840 703 281 920 -10000 582 64 177 159 635 487 820 636 134 -10000 868 408 461 358 845 78 526 354 102 -10000 320 49 543 237 542 803 318 269 912 -10000 144 19 531 188 903 457 943 933 47 -10000 652 157 636 873 316 602 809 44 861 -10000 705 742 156 810 898 679 806 225 102 -10000 812 381 644 776 941 272 148 984 910 -10000 570 297 687 993 537 667 557 981 845 -10000 886 605 54 389 662 621 193 634 467 -10000 204 269 712 952 380 646 169 535 954 -10000 53 995 696 490 476 765 174 395 487 -10000 805 611 913 792 897 852 885 438 474 -10000 871 100 850 810 672 43 786 822 172 -10000 531 437 23 140 753 748 162 613 15 -10000 303 808 11 214 540 820 602 440 766 -10000 803 245 648 760 128 669 955 737 312 -10000 882 475 28 224 672 831 229 651 937 -10000 844 600 334 655 426 603 104 635 95 -10000 688 662 22 372 859 665 756 299 264 -10000 501 186 277 186 839 890 292 706 13 -10000 896 379 306 601 350 434 170 13 849 -10000 547 747 546 110 996 263 88 217 692 -10000 818 476 674 468 936 2 909 986 691 -10000 322 424 255 171 605 966 324 65 75 -10000 373 672 371 260 57 339 745 699 351 -10000 761 477 34 362 862 551 171 119 430 -10000 806 368 843 474 757 859 877 304 51 -10000 992 415 946 214 537 38 762 435 932 -10000 257 131 31 484 395 601 805 336 825 -10000 149 233 778 19 662 910 570 867 503 -10000 840 529 620 589 120 185 949 876 20 -10000 378 343 84 34 508 801 964 23 714 -10000 545 493 128 44 880 274 957 20 771 -10000 420 235 748 714 300 389 500 889 64 -10000 327 88 235 131 468 48 439 124 555 -10000 128 469 507 47 913 915 516 666 232 -10000 483 595 809 532 728 837 152 142 974 -10000 898 671 688 22 124 384 640 623 247 -10000 187 638 749 709 624 498 983 641 604 -10000 155 969 808 214 94 831 173 640 386 -10000 717 516 86 533 621 887 376 210 880 -10000 361 446 701 695 604 435 95 637 754 -10000 883 54 101 475 132 262 948 225 991 -10000 921 311 644 715 133 572 777 280 721 -10000 754 157 693 322 377 285 503 19 789 -10000 196 715 604 250 155 376 202 141 903 -10000 908 530 765 18 265 576 95 898 938 -10000 979 773 806 994 89 103 701 133 655 -10000 548 958 144 521 461 600 182 361 740 -10000 810 826 165 304 327 953 68 70 345 -10000 398 734 369 268 627 452 333 971 979 -10000 668 985 575 391 748 100 350 459 447 -10000 134 193 2 535 756 133 416 769 279 -10000 739 190 966 195 512 546 715 960 761 -10000 959 38 240 747 668 778 20 495 609 -10000 924 572 443 219 821 347 564 582 930 -10000 29 201 448 861 579 157 116 495 996 -10000 263 976 282 915 470 440 363 887 531 -10000 778 499 366 266 9 473 87 672 607 -10000 475 591 809 447 509 534 1000 732 291 -10000 301 185 667 862 32 377 474 765 103 -10000 783 381 529 213 929 743 845 715 561 -10000 414 249 130 378 83 855 512 875 811 -10000 855 886 131 734 352 330 805 902 220 -10000 379 157 524 130 357 743 784 400 317 -10000 935 529 266 419 302 610 988 753 673 -10000 418 536 95 886 343 62 254 568 326 -10000 315 270 968 906 57 281 579 265 575 -10000 82 871 456 54 27 562 868 412 632 -10000 71 318 740 50 321 54 80 194 934 -10000 837 312 836 12 3 239 621 359 23 -10000 345 916 773 282 928 698 313 64 32 -10000 175 480 723 924 135 508 930 371 154 -10000 815 201 708 662 878 57 909 285 626 -10000 652 752 847 732 378 367 86 733 251 -10000 854 108 993 563 887 892 858 772 718 -10000 734 982 257 144 824 691 317 957 772 -10000 800 378 557 513 922 25 556 863 224 -10000 172 588 336 583 196 644 997 751 911 -10000 573 454 584 111 485 952 891 77 740 -10000 349 999 734 376 415 552 812 356 560 -10000 187 388 468 585 336 479 186 958 492 -10000 501 205 91 959 828 64 347 364 437 -10000 511 736 64 897 955 867 273 178 158 -10000 1 392 137 801 113 203 348 632 720 -10000 296 953 658 685 650 16 255 602 557 -10000 123 7 396 286 628 659 853 0 762 -10000 383 863 850 258 29 880 835 32 27 -10000 841 173 648 287 852 209 334 387 944 -10000 72 144 813 659 179 341 417 389 754 -10000 262 635 927 176 360 509 825 453 561 -10000 739 377 951 974 269 187 756 916 630 -10000 327 620 787 549 119 574 425 400 167 -10000 228 737 49 597 319 422 75 859 348 -10000 353 671 556 730 47 493 198 426 866 -10000 803 361 127 600 147 633 241 253 788 -10000 901 837 711 957 149 720 872 488 276 -10000 670 783 475 791 643 789 177 14 718 -10000 809 437 518 502 113 402 847 692 437 -10000 941 450 306 119 952 603 481 135 914 -10000 149 211 414 821 251 982 944 479 363 -10000 594 18 34 897 770 650 651 145 131 -10000 549 516 718 911 50 811 875 762 405 -10000 865 6 620 310 450 226 590 345 421 -10000 605 100 289 163 886 65 403 273 773 -10000 493 162 480 232 592 695 157 682 649 -10000 104 265 234 706 519 151 272 143 150 -10000 128 783 570 898 369 300 75 141 592 -10000 870 553 358 410 26 908 506 702 247 -10000 68 205 965 756 241 790 416 736 859 -10000 175 537 518 956 903 91 786 757 210 -10000 600 291 619 51 708 686 116 174 803 -10000 989 335 411 526 122 91 885 927 787 -10000 193 978 969 630 823 188 915 632 594 -10000 409 389 471 22 365 17 77 149 810 -10000 534 354 26 327 651 812 608 226 182 -10000 845 780 744 356 346 735 294 115 585 -10000 855 326 232 159 578 903 120 166 247 -10000 59 453 532 268 984 538 865 12 893 -10000 933 122 90 670 603 718 327 395 965 -10000 489 459 493 720 753 33 144 490 564 -10000 623 808 570 242 648 323 459 96 135 -10000 961 913 23 227 311 235 728 70 682 -10000 885 131 941 933 679 375 866 31 342 -10000 972 993 784 328 558 106 203 269 720 -10000 410 727 618 194 672 238 652 144 391 -10000 73 688 576 889 540 436 136 865 598 -10000 814 39 667 387 244 688 753 500 539 -10000 390 536 571 766 493 116 255 843 615 -10000 349 264 297 229 960 438 865 587 525 -10000 489 753 291 137 260 851 73 362 325 -10000 776 119 691 271 364 461 346 455 861 -10000 299 618 984 366 280 454 285 814 159 -10000 58 642 901 719 216 905 410 766 275 -10000 339 587 744 853 891 372 781 698 140 -10000 594 645 161 257 921 910 462 418 964 -10000 646 135 886 390 16 294 120 299 681 -10000 408 40 610 11 363 613 855 874 437 -10000 280 1000 722 68 945 771 651 457 414 -10000 805 650 904 364 19 823 843 11 244 -10000 375 387 966 479 465 428 954 550 496 -10000 814 581 683 270 530 537 440 184 290 -10000 911 849 948 959 489 212 408 828 517 -10000 919 822 392 526 925 863 745 113 925 -10000 14 860 636 552 87 87 394 899 726 -10000 128 820 167 178 692 790 936 965 554 -10000 70 443 254 575 298 601 649 841 111 -10000 705 599 587 462 493 94 746 359 399 -10000 166 935 771 4 603 354 356 267 63 -10000 895 378 285 735 691 206 327 972 605 -10000 669 600 884 959 438 152 671 338 351 -10000 100 952 865 991 997 623 387 874 39 -10000 431 704 422 874 456 252 138 73 380 -10000 885 325 414 777 379 991 389 323 868 -10000 800 243 72 668 210 75 520 482 273 -10000 550 56 193 857 683 390 9 350 216 -10000 25 15 515 65 95 664 890 173 619 -10000 168 242 429 565 289 327 189 263 991 -10000 766 278 95 15 863 174 158 370 265 -10000 634 655 738 456 387 9 354 360 823 -10000 593 34 451 97 89 450 195 868 216 -10000 922 467 572 671 974 606 238 919 575 -10000 294 218 810 484 420 966 637 742 583 -10000 676 996 825 408 219 592 834 629 874 -10000 302 627 381 71 150 493 572 351 787 -10000 833 904 370 520 943 779 572 881 25 -10000 377 17 727 372 114 167 912 791 776 -10000 949 389 435 857 753 325 543 64 988 -10000 332 498 528 516 899 465 941 606 50 -10000 798 773 154 689 582 684 549 753 450 -10000 613 824 302 265 270 917 594 280 543 -10000 717 490 986 143 360 19 417 540 111 -10000 309 464 824 866 154 519 628 189 954 -10000 763 593 794 503 668 671 511 858 707 -10000 146 769 36 20 835 765 34 101 356 -10000 543 357 850 473 909 574 749 810 651 -10000 750 929 952 190 970 564 488 253 76 -10000 519 605 481 53 623 980 15 601 430 -10000 588 60 32 195 150 330 31 107 822 -10000 217 694 336 616 53 719 924 869 224 -10000 314 971 942 13 807 462 171 290 260 -10000 742 782 116 301 467 84 977 349 106 -10000 389 208 222 920 850 704 350 488 952 -10000 499 176 168 221 892 130 276 517 157 -10000 659 779 648 238 839 714 443 872 832 -10000 983 140 670 981 31 412 333 539 297 -10000 791 454 954 521 560 369 150 181 794 -10000 837 200 278 885 452 680 403 297 647 -10000 125 317 683 233 324 852 720 449 878 -10000 46 19 71 733 629 360 458 752 673 -10000 466 646 103 45 162 424 703 658 351 -10000 855 167 935 942 236 958 835 255 452 -10000 480 647 853 575 866 632 346 741 428 -10000 110 659 222 897 12 495 713 232 503 -10000 976 414 242 79 384 459 775 6 577 -10000 102 189 566 41 977 887 377 836 636 -10000 393 620 598 853 743 767 328 872 618 -10000 510 293 772 458 4 697 886 851 817 -10000 988 74 325 919 157 46 543 199 393 -10000 428 953 253 758 205 657 982 220 214 -10000 233 947 6 989 57 313 187 886 447 -10000 674 451 396 489 794 244 253 366 612 -10000 762 762 433 587 576 506 557 613 954 -10000 925 548 582 571 139 916 282 110 475 -10000 195 919 283 549 574 53 652 224 901 -10000 107 936 844 436 380 59 596 489 903 -10000 186 78 112 964 354 662 300 871 408 -10000 642 435 473 605 827 757 495 333 753 -10000 52 434 198 642 202 390 779 436 144 -10000 666 559 410 614 140 157 527 412 125 -10000 529 18 933 999 290 495 350 774 265 -10000 349 398 90 949 679 153 533 201 538 -10000 791 537 896 567 797 685 151 232 745 -10000 186 604 251 284 921 920 395 237 835 -10000 122 122 784 107 612 239 517 889 973 -10000 276 778 701 899 815 931 340 458 688 -10000 9 19 228 219 694 421 960 845 752 -10000 196 994 817 585 108 121 262 678 616 -10000 861 837 392 35 708 159 652 126 547 -10000 692 75 920 620 312 537 36 763 112 -10000 62 610 525 388 301 49 465 588 354 -10000 814 950 49 257 684 473 2 301 119 -10000 55 149 815 759 121 986 983 908 733 -10000 913 1 316 204 226 976 590 523 85 -10000 487 843 813 357 833 799 659 556 372 -10000 865 643 707 843 178 463 858 357 480 -10000 988 766 913 926 789 269 189 319 590 -10000 601 728 618 599 560 772 326 480 915 -10000 652 443 780 400 93 479 614 0 109 -10000 148 526 828 536 374 238 184 120 619 -10000 340 941 352 716 991 634 938 547 539 -10000 138 894 654 74 692 172 701 977 662 -10000 764 84 337 410 173 419 410 986 733 -10000 274 322 392 172 460 95 516 606 692 -10000 851 683 417 550 787 850 912 681 456 -10000 643 675 65 828 260 0 5 500 391 -10000 92 421 779 353 429 298 755 724 773 -10000 504 387 915 826 547 106 888 728 446 -10000 489 404 587 836 617 662 376 202 508 -10000 229 748 208 169 381 503 266 218 156 -10000 316 804 610 643 135 971 104 428 9 -10000 786 753 681 63 614 639 927 43 388 -10000 687 391 856 254 312 611 885 199 612 -10000 985 626 59 704 180 712 120 29 685 -10000 944 57 666 552 806 804 934 606 932 -10000 554 137 60 264 220 869 684 729 337 -10000 926 102 959 704 202 651 941 431 228 -10000 44 892 77 94 757 940 770 436 155 -10000 785 917 757 306 279 532 124 727 890 -10000 341 18 560 308 578 258 922 590 861 -10000 401 838 959 615 847 786 974 430 611 -10000 908 730 687 440 363 28 435 172 317 -10000 163 451 744 622 619 482 671 927 442 -10000 465 769 332 853 221 266 283 758 786 -10000 880 302 289 781 196 575 746 144 203 -10000 89 737 716 689 327 804 719 966 226 -10000 895 246 213 758 918 242 478 872 777 -10000 908 377 639 290 108 713 778 135 451 -10000 701 163 680 179 115 108 738 546 679 -10000 252 412 148 973 429 448 495 741 12 -10000 384 788 298 559 393 298 263 208 253 -10000 961 782 176 602 798 518 527 360 557 -10000 760 263 156 833 359 709 752 373 915 -10000 269 926 449 766 781 675 850 960 742 -10000 493 670 310 919 81 208 242 908 854 -10000 611 168 735 273 436 574 660 829 304 -10000 229 992 712 445 673 174 494 865 157 -10000 861 115 583 630 781 990 1000 92 832 -10000 905 797 590 328 819 746 679 292 851 -10000 835 952 553 964 203 370 43 688 751 -10000 978 146 407 530 347 678 207 389 26 -10000 164 452 537 259 810 369 119 225 872 -10000 399 859 646 465 893 484 387 55 907 -10000 489 341 174 70 258 514 897 366 741 -10000 9 956 238 697 585 348 450 518 186 -10000 711 136 750 422 976 863 77 419 616 -10000 585 801 511 843 673 64 310 459 9 -10000 325 139 69 977 70 624 169 691 626 -10000 81 683 673 665 14 986 926 852 68 -10000 642 499 378 274 554 848 601 584 239 -10000 131 186 911 214 698 740 529 168 769 -10000 697 885 689 572 944 356 282 209 533 -10000 649 749 998 437 944 982 219 741 980 -10000 431 56 995 639 311 137 970 106 430 -10000 529 934 887 872 334 529 108 647 309 -10000 79 58 424 7 234 256 535 193 43 -10000 510 463 361 201 379 993 896 238 711 -10000 441 488 883 65 664 576 927 921 533 -10000 829 327 711 245 512 99 374 711 454 -10000 188 355 167 485 905 292 662 396 277 -10000 641 723 558 223 620 915 813 469 126 -10000 292 269 551 829 508 342 162 22 768 -10000 289 881 609 90 368 428 26 430 887 -10000 695 776 230 969 557 806 508 395 601 -10000 416 154 861 874 234 276 487 301 137 -10000 236 297 987 565 576 122 41 570 401 -10000 455 306 561 116 843 261 233 189 601 -10000 922 546 481 862 493 481 233 307 528 -10000 331 867 310 408 779 171 605 390 558 -10000 793 650 746 87 914 62 903 665 543 -10000 0 25 532 298 448 734 153 618 260 -10000 756 478 150 677 610 564 256 638 766 -10000 491 932 55 714 114 849 655 879 108 -10000 771 240 95 742 815 447 647 889 205 -10000 314 26 230 154 133 335 155 609 606 -10000 993 85 236 148 753 98 894 25 932 -10000 910 715 982 977 632 151 16 89 158 -10000 412 463 752 657 876 610 331 352 676 -10000 753 571 535 16 631 248 228 304 83 -10000 826 212 578 382 640 723 953 216 629 -10000 647 624 317 863 907 445 551 732 927 -10000 371 736 218 200 507 190 405 641 154 -10000 41 629 974 123 898 822 610 213 448 -10000 388 106 528 714 173 865 780 696 670 -10000 615 16 770 596 191 396 267 481 731 -10000 364 723 412 284 256 621 785 681 465 -10000 796 305 966 539 420 796 323 14 659 -10000 891 865 914 817 871 43 528 454 729 -10000 292 145 400 26 507 264 109 524 668 -10000 940 525 30 850 897 962 383 500 819 -10000 189 710 497 514 162 972 72 12 752 -10000 430 845 906 208 824 404 925 362 594 -10000 488 334 406 905 474 400 962 335 990 -10000 802 100 684 750 256 345 142 814 793 -10000 673 723 83 530 209 918 47 446 311 -10000 254 998 938 484 708 526 115 205 876 -10000 634 952 504 217 742 425 871 800 218 -10000 229 31 459 121 336 318 44 434 432 -10000 290 61 951 70 912 3 397 833 611 -10000 909 547 914 853 557 534 630 708 358 -10000 816 713 360 730 255 377 461 948 694 -10000 499 904 81 917 97 935 818 601 116 -10000 594 623 575 242 487 684 301 686 592 -10000 840 209 253 877 802 246 183 382 214 -10000 262 851 479 280 333 707 664 273 505 -10000 908 960 675 710 944 674 906 278 858 -10000 920 509 823 602 291 703 331 915 32 -10000 287 521 748 346 2 172 910 893 864 -10000 335 207 903 137 512 381 328 428 543 -10000 56 365 501 949 918 112 893 966 435 -10000 950 947 997 877 519 982 790 880 723 -10000 536 184 802 836 943 787 360 863 668 -10000 214 150 818 944 582 457 741 117 462 -10000 1000 202 988 28 833 38 528 120 961 -10000 352 270 3 58 291 161 959 822 141 -10000 385 353 628 226 461 317 4 984 773 -10000 226 623 310 650 938 143 221 990 549 -10000 34 622 664 670 214 81 251 95 281 -10000 135 588 218 561 243 972 396 592 349 -10000 739 769 996 149 743 144 187 231 833 -10000 107 17 621 346 191 261 361 562 22 -10000 641 272 218 331 770 475 32 351 742 -10000 483 554 609 342 260 686 763 800 172 -10000 892 959 622 86 38 406 135 482 501 -10000 77 113 548 225 624 813 887 236 170 -10000 16 242 560 473 908 503 94 900 545 -10000 925 541 868 568 953 900 696 882 364 -10000 6 162 711 151 532 258 253 306 661 -10000 583 457 209 468 782 160 94 873 394 -10000 664 377 524 549 475 220 162 333 782 -10000 652 229 734 454 39 325 212 685 675 -10000 119 418 399 626 328 844 327 923 183 -10000 497 709 784 927 647 793 363 453 446 -10000 814 347 892 298 855 786 312 368 989 -10000 53 879 153 675 570 624 781 494 662 -10000 433 375 944 390 659 821 17 499 665 -10000 130 840 89 587 883 391 715 20 361 -10000 589 612 912 721 899 832 178 309 755 -10000 609 353 657 544 716 301 753 573 957 -10000 209 338 745 487 997 671 91 303 285 -10000 699 55 903 139 129 482 736 203 129 -10000 457 447 969 231 293 684 689 551 929 -10000 833 422 619 71 260 975 942 388 342 -10000 401 277 111 298 147 734 183 723 981 -10000 531 642 565 709 208 223 955 590 799 -10000 520 105 301 450 522 928 541 0 492 -10000 365 291 523 890 827 917 11 418 908 -10000 813 139 933 376 465 163 773 923 879 -10000 565 14 189 622 685 802 340 69 512 -10000 854 421 9 864 976 657 895 466 512 -10000 113 410 347 29 706 281 563 645 83 -10000 858 507 258 339 689 159 283 371 191 -10000 992 974 703 786 650 629 328 997 878 -10000 827 309 279 335 253 476 425 967 115 -10000 920 484 548 43 42 153 551 631 63 -10000 987 35 620 520 115 191 399 979 705 -10000 780 260 152 32 551 555 135 419 416 -10000 708 186 37 510 922 87 833 78 17 -10000 660 336 643 120 479 733 567 517 657 -10000 545 450 498 438 776 808 671 988 772 -10000 588 318 325 695 170 952 815 989 56 -10000 730 47 684 807 251 942 544 513 242 -10000 180 187 772 644 681 652 383 748 429 -10000 256 942 220 716 733 437 28 379 618 -10000 344 569 109 909 414 335 147 907 851 -10000 106 606 13 878 934 951 870 970 60 -10000 593 618 237 956 867 356 95 337 370 -10000 347 909 768 509 907 155 416 102 912 -10000 18 680 524 527 868 815 133 413 667 -10000 984 425 597 868 537 787 522 361 287 -10000 860 141 883 562 221 690 32 100 613 -10000 750 453 108 620 259 64 121 438 409 -10000 949 798 728 407 853 505 674 239 623 -10000 963 778 900 975 39 793 421 865 417 -10000 595 266 351 404 3 234 166 497 130 -10000 282 939 342 505 959 185 58 354 269 -10000 499 323 485 185 489 100 807 195 596 -10000 80 45 239 692 721 238 99 175 118 -10000 918 27 971 952 607 400 670 582 961 -10000 641 134 302 346 308 627 985 757 870 -10000 487 483 752 761 90 866 37 298 924 -10000 769 704 483 469 866 569 395 683 397 -10000 592 484 900 501 936 485 595 45 720 -10000 16 280 897 636 321 915 360 946 796 -10000 826 372 861 125 804 548 914 78 491 -10000 934 441 653 842 162 408 195 994 979 -10000 5 279 41 467 901 201 627 910 928 -10000 664 188 358 135 537 427 905 991 996 -10000 120 891 614 328 511 875 410 976 9 -10000 731 269 820 288 913 144 636 445 668 -10000 959 645 245 878 825 311 960 668 717 -10000 928 576 402 37 411 63 201 74 488 -10000 128 27 665 812 498 423 223 151 132 -10000 843 291 286 628 388 130 422 755 761 -10000 910 920 700 623 897 254 78 249 355 -10000 867 674 124 883 852 115 282 899 121 -10000 171 162 259 883 101 315 805 224 789 -10000 592 79 749 526 928 990 367 253 149 -10000 962 821 952 909 392 838 904 975 843 -10000 309 969 117 680 115 654 882 842 523 -10000 385 307 265 77 858 736 90 518 328 -10000 796 20 367 398 632 321 839 969 71 -10000 65 540 424 392 396 893 318 97 772 -10000 745 866 875 568 541 288 146 633 603 -10000 187 56 350 210 205 895 422 896 503 -10000 386 891 265 493 968 753 326 889 245 -10000 894 903 917 452 672 471 30 99 883 -10000 815 461 484 36 855 369 86 159 772 -10000 556 955 659 865 973 671 66 515 668 -10000 293 158 727 445 110 196 84 313 364 -10000 311 350 249 114 890 150 751 118 979 -10000 304 162 371 784 339 777 456 336 712 -10000 384 165 949 780 347 914 572 860 552 -10000 262 828 344 244 365 646 588 862 570 -10000 827 57 268 758 144 808 37 440 271 -10000 830 205 189 63 97 391 569 801 172 -10000 646 346 464 991 180 44 866 452 275 -10000 553 247 863 56 467 11 513 234 764 -10000 641 945 901 236 381 431 716 504 112 -10000 647 375 450 23 560 6 66 741 699 -10000 89 585 721 650 366 174 258 843 317 -10000 547 983 455 319 650 565 8 178 489 -10000 55 849 356 375 871 303 88 424 536 -10000 57 29 681 107 494 831 904 928 935 -10000 219 542 196 197 200 354 47 830 633 -10000 883 131 524 352 144 590 636 685 439 -10000 409 804 999 148 522 868 2 811 399 -10000 343 397 13 41 921 906 792 599 308 -10000 638 894 71 449 860 269 552 406 606 -10000 640 774 244 579 514 928 598 532 466 -10000 683 693 576 203 316 251 18 249 360 -10000 511 869 229 504 630 565 452 140 913 -10000 534 813 880 512 887 758 531 628 335 -10000 504 626 704 24 660 682 566 582 808 -10000 84 822 50 235 125 779 913 390 358 -10000 185 182 234 380 366 813 778 68 150 -10000 363 370 826 664 937 321 796 306 404 -10000 386 926 811 566 495 723 486 760 984 -10000 922 290 264 399 414 1 707 243 788 -10000 789 292 753 318 850 597 284 386 500 -10000 914 380 942 393 672 982 658 285 984 -10000 997 425 844 556 527 492 913 928 289 -10000 693 214 727 93 778 99 465 607 556 -10000 773 893 1000 491 371 217 778 595 978 -10000 493 663 124 928 803 59 357 21 701 -10000 901 305 317 793 109 800 534 202 890 -10000 299 533 310 46 79 939 662 320 286 -10000 757 483 641 181 10 725 454 938 312 -10000 643 945 728 161 772 609 87 678 869 -10000 431 152 968 579 912 420 393 26 510 -10000 642 259 853 510 566 670 698 818 430 -10000 194 399 354 120 977 287 144 368 295 -10000 212 769 868 690 372 11 382 422 622 -10000 702 973 266 340 748 85 229 993 939 -10000 411 794 431 994 963 222 13 721 571 -10000 302 216 437 651 306 999 682 992 391 -10000 30 664 113 146 939 750 789 337 795 -10000 885 126 364 713 314 278 108 704 915 -10000 784 133 613 513 928 72 634 660 352 -10000 853 358 635 191 20 919 725 301 567 -10000 177 942 158 744 543 269 690 58 874 -10000 775 469 182 527 286 254 510 654 447 -10000 816 834 616 664 273 864 98 301 48 -10000 299 458 495 809 401 221 940 958 339 -10000 233 823 850 498 214 949 936 190 213 -10000 122 553 863 995 13 961 296 736 422 -10000 620 343 686 518 307 62 964 960 452 -10000 598 403 914 570 724 573 543 80 109 -10000 889 361 746 657 260 920 74 521 877 -10000 466 416 507 508 433 707 757 79 47 -10000 336 543 427 203 844 226 762 441 951 -10000 220 34 829 240 493 406 753 127 1 -10000 9 50 485 953 755 234 40 87 357 -10000 112 672 205 406 652 351 394 67 418 -10000 745 181 306 378 219 476 249 472 61 -10000 862 840 512 425 753 327 75 693 13 -10000 205 422 159 227 269 953 962 587 519 -10000 857 184 662 182 269 168 688 511 370 -10000 956 158 728 459 333 483 13 22 778 -10000 31 850 840 323 208 206 786 273 361 -10000 543 371 641 573 34 577 947 90 684 -10000 850 736 491 925 156 303 625 792 340 -10000 909 848 399 292 311 829 298 99 609 -10000 410 528 684 207 424 162 863 405 730 -10000 860 642 533 915 10 479 19 961 671 -10000 276 731 802 243 285 287 803 447 629 -10000 951 171 532 649 672 427 259 719 814 -10000 255 936 619 826 594 372 905 937 363 -10000 887 421 74 37 768 699 794 523 700 -10000 109 680 1000 669 85 999 298 748 289 -10000 222 667 94 164 258 604 987 108 541 -10000 168 649 891 628 387 872 785 433 893 -10000 449 20 358 438 302 471 364 872 628 -10000 366 410 19 86 993 375 516 622 374 -10000 574 759 971 340 433 858 647 354 808 -10000 866 360 771 195 83 562 692 717 526 -10000 787 738 432 238 565 602 320 498 643 -10000 510 29 15 711 931 94 396 810 305 -10000 840 306 480 822 827 303 774 942 979 -10000 664 754 103 806 519 39 434 850 2 -10000 21 258 237 304 545 50 73 674 865 -10000 594 121 480 789 128 173 220 985 937 -10000 330 620 735 287 729 772 678 50 560 -10000 900 445 237 919 418 489 128 250 979 -10000 746 500 144 499 305 476 138 277 758 -10000 169 189 892 532 631 464 636 246 120 -10000 924 897 736 684 627 593 385 674 709 -10000 851 363 388 769 297 711 940 254 321 -10000 758 115 469 237 785 326 489 514 239 -10000 387 978 412 16 480 664 110 678 180 -10000 968 646 68 242 653 511 173 348 294 -10000 113 887 981 739 613 972 489 809 691 -10000 537 294 108 386 961 820 36 870 359 -10000 245 803 492 73 326 175 914 558 603 -10000 257 870 887 361 389 44 87 682 771 -10000 172 946 588 220 314 299 100 991 864 -10000 867 10 421 397 918 134 182 550 676 -10000 506 284 74 385 877 907 388 876 398 -10000 63 208 114 31 654 741 505 353 101 -10000 665 283 329 635 639 531 786 588 750 -10000 958 235 202 475 969 897 254 320 204 -10000 902 350 778 24 943 18 509 598 510 -10000 139 627 698 14 575 733 610 384 66 -10000 767 516 218 350 101 876 830 196 364 -10000 958 1000 593 978 372 947 637 691 369 -10000 939 448 438 57 155 780 564 904 684 -10000 326 138 145 676 120 190 632 477 144 -10000 557 43 519 801 938 610 211 67 112 -10000 653 875 109 90 508 95 475 618 459 -10000 371 677 799 421 113 795 148 719 383 -10000 137 448 667 502 272 835 801 627 17 -10000 839 615 530 291 431 147 908 712 268 -10000 555 994 892 566 4 849 382 124 919 -10000 273 646 630 32 153 746 423 767 66 -10000 561 635 530 990 63 729 402 655 411 -10000 152 817 969 934 174 2 202 848 669 -10000 870 108 0 905 491 289 721 817 1000 -10000 89 113 137 935 145 747 448 442 921 -10000 912 231 228 190 949 608 309 256 557 -10000 174 597 953 789 973 437 496 58 938 -10000 542 499 934 51 852 830 198 606 701 -10000 594 113 518 53 222 734 637 438 24 -10000 281 934 415 488 941 867 377 324 158 -10000 617 330 32 452 753 692 334 390 447 -10000 661 227 119 846 697 673 415 421 927 -10000 519 623 875 851 391 396 739 127 111 -10000 278 640 197 721 656 299 410 194 954 -10000 275 229 990 941 975 591 963 347 642 -10000 914 455 10 294 194 380 108 818 74 -10000 472 434 323 348 982 835 729 528 549 -10000 365 906 860 677 170 903 966 94 736 -10000 53 58 135 927 878 900 384 926 747 -10000 878 444 846 838 357 432 517 578 80 -10000 832 851 892 48 73 141 199 881 369 -10000 795 152 594 511 22 885 137 108 946 -10000 731 361 520 654 709 958 873 638 596 -10000 982 593 701 343 833 852 964 277 514 -10000 862 137 895 156 213 493 757 883 277 -10000 977 417 420 721 195 664 247 584 959 -10000 565 512 906 917 689 614 846 743 131 -10000 755 634 138 948 148 413 35 533 32 -10000 494 723 623 528 419 689 300 533 737 -10000 681 351 15 831 458 907 347 532 875 -10000 494 522 694 695 675 367 956 538 119 -10000 747 796 765 176 698 294 506 697 983 -10000 162 678 773 709 164 273 757 873 7 -10000 531 166 452 423 926 33 36 922 383 -10000 459 597 548 330 776 639 611 477 775 -10000 974 791 980 125 325 721 402 371 51 -10000 711 735 403 150 31 580 557 239 188 -10000 165 831 532 923 287 834 923 870 129 -10000 493 210 65 668 973 420 25 110 364 -10000 414 865 278 848 437 887 813 130 827 -10000 114 414 323 897 131 981 638 62 71 -10000 688 734 244 443 944 310 396 442 609 -10000 311 381 119 332 240 503 556 89 311 -10000 796 529 269 112 926 627 295 234 715 -10000 107 240 7 927 786 99 425 147 524 -10000 97 247 678 530 193 349 217 279 970 -10000 597 873 347 614 817 395 328 614 926 -10000 526 20 696 608 858 154 810 785 459 -10000 410 517 180 179 214 808 865 428 849 -10000 245 490 294 966 567 736 10 187 864 -10000 169 977 521 13 521 748 914 465 253 -10000 507 540 508 39 524 620 464 920 184 -10000 625 740 618 164 963 15 292 687 504 -10000 222 466 108 947 972 950 428 199 589 -10000 608 812 853 538 671 609 152 340 357 -10000 335 360 985 671 609 568 25 166 253 -10000 660 949 381 874 379 385 352 26 591 -10000 894 956 610 299 292 306 461 434 376 -10000 236 925 12 990 527 287 97 82 222 -10000 241 952 311 167 675 623 172 0 889 -10000 273 169 195 589 240 869 63 787 602 -10000 173 992 831 854 43 543 561 567 249 -10000 776 546 321 220 620 324 725 974 304 -10000 700 287 519 405 839 212 34 60 607 -10000 765 822 499 823 353 69 458 284 104 -10000 588 709 224 546 309 157 218 53 200 -10000 455 698 346 69 701 245 836 231 153 -10000 805 617 472 343 356 973 952 903 728 -10000 646 570 924 251 280 809 844 926 448 -10000 677 566 860 751 901 499 662 248 175 -10000 932 408 51 53 265 729 964 880 328 -10000 146 349 383 720 114 456 281 271 75 -10000 50 928 778 304 378 542 258 286 645 -10000 824 294 329 890 945 66 776 658 659 -10000 120 466 210 93 533 5 925 62 119 -10000 978 403 547 431 794 708 425 334 136 -10000 602 305 104 436 170 955 142 420 654 -10000 996 6 520 102 548 867 163 566 857 -10000 932 143 655 331 478 915 612 13 970 -10000 384 287 265 185 318 479 214 769 196 -10000 401 334 885 80 964 717 920 445 981 -10000 9 963 719 123 725 599 164 102 167 -10000 916 217 363 744 386 190 743 496 775 -10000 170 480 157 530 595 930 442 885 908 -10000 161 421 530 331 798 444 937 262 326 -10000 682 16 31 769 948 353 186 278 633 -10000 100 579 499 608 843 476 682 660 572 -10000 988 635 902 632 161 942 659 48 933 -10000 393 197 735 545 711 171 763 648 907 -10000 291 579 304 80 581 539 777 251 678 -10000 143 595 386 1 868 188 314 820 418 -10000 416 299 575 953 192 638 211 623 17 -10000 878 554 927 697 434 891 566 550 369 -10000 473 332 882 843 843 613 54 248 757 -10000 365 222 293 226 100 418 898 199 35 -10000 672 626 520 677 796 273 783 420 736 -10000 48 837 935 463 757 293 919 758 618 -10000 234 841 105 161 983 656 359 408 432 -10000 621 257 198 196 654 824 823 668 197 -10000 575 812 404 204 597 91 984 767 998 -10000 733 910 469 393 728 814 344 85 69 -10000 283 82 960 700 892 536 809 662 528 -10000 770 169 390 748 354 277 281 300 21 -10000 285 244 283 846 160 342 17 296 751 -10000 39 166 606 880 288 330 559 380 294 -10000 170 17 837 384 620 515 597 844 476 -10000 504 166 810 605 624 716 365 381 863 -10000 397 518 167 272 603 96 708 591 449 -10000 129 242 224 359 289 166 215 593 540 -10000 718 77 70 907 111 918 509 387 117 -10000 157 535 300 409 751 197 383 995 635 -10000 13 61 113 409 593 983 644 481 259 -10000 371 603 449 789 224 989 172 603 402 -10000 738 550 660 841 990 696 797 465 794 -10000 350 496 145 430 64 807 85 534 901 -10000 347 757 297 843 160 676 643 406 177 -10000 166 763 595 353 373 695 436 388 473 -10000 588 717 689 890 941 676 891 573 249 -10000 65 290 206 243 996 50 629 799 700 -10000 443 667 445 982 34 354 545 149 123 -10000 896 974 257 351 111 341 317 285 971 -10000 538 577 628 889 76 700 853 795 299 -10000 252 992 108 709 901 30 999 914 668 -10000 47 232 31 351 580 216 252 848 635 -10000 631 498 453 99 393 537 19 738 965 -10000 283 39 402 463 825 831 356 867 167 -10000 98 241 646 226 867 345 621 241 371 -10000 456 195 740 952 473 302 30 64 229 -10000 207 637 360 945 877 568 685 275 583 -10000 508 676 509 918 249 0 787 569 493 -10000 282 878 475 982 804 912 53 880 454 -10000 412 64 166 581 596 970 267 545 675 -10000 894 199 274 267 746 511 249 697 267 -10000 286 251 44 950 208 173 419 225 627 -10000 132 8 96 708 898 134 724 842 410 -10000 222 306 549 9 458 123 590 318 621 -10000 183 559 377 691 962 793 375 79 653 -10000 984 151 159 18 943 261 95 646 144 -10000 386 528 887 581 661 925 958 892 377 -10000 781 77 810 261 500 128 201 29 446 -10000 591 941 891 211 493 714 814 468 615 -10000 235 394 211 947 120 174 980 682 719 -10000 68 5 968 248 201 756 366 470 557 -10000 404 543 719 746 92 687 646 859 14 -10000 20 434 732 816 385 133 818 151 726 -10000 665 563 108 33 933 4 122 746 354 -10000 376 993 435 921 612 712 691 869 446 -10000 52 17 586 737 656 948 413 643 695 -10000 520 168 5 499 257 261 869 691 46 -10000 820 15 251 757 166 653 245 395 694 -10000 896 347 186 979 365 669 697 184 355 -10000 981 790 382 391 999 32 830 850 171 -10000 918 593 786 628 639 610 47 251 374 -10000 228 775 241 83 258 591 812 979 521 -10000 445 118 726 93 732 372 498 478 695 -10000 749 222 8 876 252 652 311 968 731 -10000 82 920 947 819 355 54 171 730 779 -10000 462 696 542 677 113 65 388 248 716 -10000 967 519 570 579 753 815 196 590 905 -10000 620 773 925 654 239 589 593 198 412 -10000 519 601 521 737 750 52 839 283 570 -10000 531 864 694 237 187 437 913 513 953 -10000 610 6 321 851 474 511 474 734 626 -10000 528 671 685 739 676 654 417 664 419 -10000 967 110 109 100 790 901 285 273 721 -10000 523 408 553 525 263 343 465 518 996 -10000 990 285 650 426 709 905 572 509 66 -10000 814 898 596 389 665 914 412 986 680 -10000 429 237 816 341 414 222 697 274 961 -10000 435 789 845 730 970 304 42 556 141 -10000 226 442 565 891 566 768 317 595 344 -10000 9 750 379 178 167 985 118 830 695 -10000 423 205 853 663 526 111 953 693 918 -10000 674 807 909 691 276 393 765 473 234 -10000 543 358 425 475 2 328 821 198 216 -10000 772 157 786 268 834 530 303 994 745 -10000 275 164 126 279 751 959 444 114 790 -10000 561 609 901 392 900 419 821 189 66 -10000 51 732 25 218 310 485 392 15 381 -10000 766 374 837 126 743 440 635 909 6 -10000 638 196 109 192 554 721 538 571 684 -10000 792 826 974 353 305 245 419 592 138 -10000 138 687 567 264 32 513 434 328 617 -10000 104 253 396 997 979 287 194 685 648 -10000 603 455 622 246 887 467 282 394 554 -10000 350 533 269 179 451 550 693 872 469 -10000 68 754 630 602 861 307 625 162 448 -10000 979 205 918 574 88 12 869 49 831 -10000 866 440 663 483 642 845 304 751 738 -10000 713 658 225 530 58 341 608 684 172 -10000 496 746 792 107 128 833 461 271 3 -10000 957 742 976 673 308 649 59 491 764 -10000 487 643 78 464 568 751 927 73 614 -10000 341 828 73 769 481 56 374 824 225 -10000 549 246 798 694 905 159 566 13 260 -10000 360 630 350 860 75 727 512 324 664 -10000 564 88 590 584 541 589 643 554 645 -10000 295 43 317 296 4 274 693 655 2 -10000 156 443 375 240 446 967 261 81 337 -10000 522 394 924 388 283 672 433 101 5 -10000 879 630 181 589 436 66 430 771 160 -10000 161 106 595 610 293 940 984 220 170 -10000 949 645 504 248 177 226 834 408 910 -10000 739 48 555 959 61 0 898 707 989 -10000 217 306 634 158 48 719 421 450 571 -10000 934 559 735 453 506 556 280 319 941 -10000 685 861 596 490 101 737 781 783 248 -10000 797 485 793 443 918 224 473 823 507 -10000 907 976 110 0 781 975 246 361 206 -10000 351 308 27 142 772 608 416 957 852 -10000 279 894 174 791 286 551 939 645 140 -10000 192 164 398 80 476 242 274 52 885 -10000 710 560 719 82 141 257 593 345 487 -10000 73 215 407 746 502 498 426 546 529 -10000 186 711 870 635 233 539 854 968 99 -10000 93 391 254 779 745 655 475 726 899 -10000 11 566 603 852 222 318 744 26 101 -10000 188 296 992 465 825 689 309 698 734 -10000 314 592 57 526 703 323 107 9 341 -10000 40 272 396 649 884 211 250 76 615 -10000 530 287 83 805 491 845 785 871 923 -10000 203 508 531 914 93 908 699 309 462 -10000 988 457 812 861 518 179 26 776 261 -10000 33 570 710 504 739 462 936 767 990 -10000 150 212 87 286 678 131 340 783 285 -10000 131 527 597 315 208 175 964 859 190 -10000 580 354 49 937 729 168 966 586 59 -10000 811 547 88 971 808 855 857 262 759 -10000 524 805 105 564 836 886 358 672 719 -10000 750 874 466 288 535 589 694 215 862 -10000 532 222 132 262 613 925 453 874 414 -10000 513 158 948 875 661 512 66 624 902 -10000 860 559 508 347 43 237 875 769 492 -10000 263 578 958 215 661 857 1000 821 780 -10000 322 408 828 523 798 436 122 332 445 -10000 230 22 862 72 865 667 61 150 585 -10000 410 978 603 368 495 980 234 6 924 -10000 521 501 36 392 511 800 406 624 721 -10000 753 316 319 610 910 410 196 982 133 -10000 4 642 134 963 671 708 548 57 894 -10000 770 514 387 407 18 608 503 606 123 -10000 115 578 15 975 585 775 969 292 928 -10000 808 193 294 21 751 560 544 201 694 -10000 431 881 83 513 827 359 904 698 495 -10000 461 818 181 593 814 829 957 414 403 -10000 79 168 807 537 508 992 435 414 657 -10000 206 356 222 470 358 929 814 995 262 -10000 762 453 259 183 532 207 663 818 805 -10000 668 15 30 315 549 343 70 997 453 -10000 731 425 843 836 394 345 629 907 751 -10000 529 101 710 312 138 204 67 359 943 -10000 703 359 546 148 136 387 246 806 299 -10000 399 773 535 31 295 146 896 314 879 -10000 327 603 454 254 878 789 118 415 975 -10000 658 414 46 42 982 790 110 820 45 -10000 334 260 28 36 745 544 811 695 879 -10000 942 843 209 828 271 508 626 12 619 -10000 869 385 297 144 673 885 628 130 262 -10000 28 313 137 159 115 75 774 544 571 -10000 627 802 290 182 731 620 530 59 518 -10000 459 395 581 422 355 397 312 986 848 -10000 569 699 522 371 112 135 214 314 322 -10000 312 757 556 139 868 157 202 665 644 -10000 869 256 238 943 300 393 190 666 136 -10000 474 763 746 755 26 182 246 694 589 -10000 67 70 325 328 284 280 326 3 983 -10000 271 87 886 429 575 378 263 213 406 -10000 830 185 669 836 33 700 48 566 897 -10000 593 179 354 117 526 634 562 855 98 -10000 646 567 5 822 218 35 177 946 232 -10000 470 373 518 926 64 480 101 398 888 -10000 695 828 289 364 194 693 695 635 962 -10000 326 271 195 701 304 440 338 718 844 -10000 779 109 856 114 911 898 2 357 215 -10000 159 811 23 378 831 866 577 355 857 -10000 878 480 861 183 230 570 870 3 610 -10000 462 373 690 683 139 858 87 714 915 -10000 999 62 33 555 778 842 150 889 158 -10000 281 24 527 685 23 18 17 456 29 -10000 459 773 249 882 110 100 284 722 402 -10000 942 429 742 973 925 877 985 307 510 -10000 882 54 173 270 949 631 155 31 181 -10000 595 596 514 633 893 819 853 325 356 -10000 269 247 314 585 642 72 492 530 183 -10000 332 124 428 566 912 997 694 151 377 -10000 252 835 383 753 225 854 479 518 15 -10000 117 772 997 631 43 444 324 203 950 -10000 426 971 678 695 695 494 500 790 446 -10000 209 293 189 868 385 349 866 590 185 -10000 746 361 123 440 333 430 779 377 320 -10000 65 190 206 478 459 883 317 445 187 -10000 711 619 191 522 858 760 837 762 220 -10000 207 460 787 695 936 123 541 389 711 -10000 900 545 233 189 840 226 226 221 908 -10000 396 716 816 364 23 960 170 79 218 -10000 826 670 831 150 239 739 599 876 394 -10000 979 754 929 344 711 194 535 817 0 -10000 675 987 555 195 291 280 735 951 637 -10000 946 264 111 836 121 498 491 123 164 -10000 728 205 191 648 250 280 381 443 252 -10000 202 336 566 386 576 125 729 642 134 -10000 124 226 989 901 639 90 855 998 668 -10000 476 144 341 683 358 375 65 410 611 -10000 464 158 271 960 124 427 997 337 303 -10000 431 894 858 929 181 827 101 721 515 -10000 111 749 694 943 404 561 888 396 933 -10000 82 461 775 864 117 809 251 622 218 -10000 631 455 924 315 968 499 364 593 85 -10000 57 94 902 776 222 683 289 25 588 -10000 626 501 723 21 682 939 50 817 825 -10000 959 653 841 349 930 610 13 244 170 -10000 929 910 146 9 405 406 640 283 882 -10000 357 587 38 314 943 789 124 426 89 -10000 700 164 728 593 193 574 237 522 80 -10000 859 234 481 554 846 880 656 486 841 -10000 198 873 493 6 589 96 849 316 173 -10000 653 964 89 966 42 487 772 607 654 -10000 372 250 623 145 105 126 619 909 665 -10000 893 291 388 830 383 458 815 953 341 -10000 412 704 630 129 493 518 283 721 171 -10000 767 478 999 411 831 349 606 426 19 -10000 110 569 179 780 803 593 744 421 159 -10000 636 278 627 92 238 127 77 382 766 -10000 500 68 563 481 737 786 165 641 680 -10000 0 516 648 383 568 981 926 861 142 -10000 43 593 813 994 665 400 786 671 677 -10000 289 614 927 584 739 19 412 968 484 -10000 85 536 605 521 600 198 551 366 62 -10000 165 580 626 254 577 30 957 873 50 -10000 412 264 349 909 894 81 771 308 446 -10000 269 675 164 767 585 467 957 909 866 -10000 341 286 108 134 972 363 808 807 684 -10000 139 27 142 690 615 504 905 170 845 -10000 237 794 177 943 9 566 783 338 995 -10000 804 278 712 663 47 608 193 1 319 -10000 922 524 940 286 943 313 310 721 356 -10000 546 253 232 292 490 39 607 174 440 -10000 38 187 902 685 947 52 458 880 0 -10000 170 944 496 636 47 433 316 291 594 -10000 86 763 240 668 164 306 43 5 694 -10000 198 75 9 521 941 417 20 976 906 -10000 841 242 665 384 436 17 840 200 983 -10000 560 643 446 998 2 39 434 716 609 -10000 210 578 479 167 186 280 256 192 660 -10000 975 805 67 676 971 795 903 46 402 -10000 399 270 166 163 608 286 998 292 419 -10000 822 330 228 57 723 946 825 956 119 -10000 103 326 720 616 82 992 571 838 569 -10000 911 208 0 323 926 555 877 60 790 -10000 855 432 252 704 332 166 150 723 157 -10000 665 127 102 998 215 922 264 558 814 -10000 240 999 941 384 508 596 976 2 760 -10000 653 156 382 237 25 286 929 348 692 -10000 775 968 343 657 540 309 625 0 278 -10000 911 24 234 118 777 121 310 603 8 -10000 206 375 641 706 71 435 511 52 866 -10000 57 854 244 23 398 659 812 604 893 -10000 838 869 699 428 0 970 174 623 153 -10000 271 120 368 601 517 942 589 263 323 -10000 885 146 977 613 420 505 770 786 445 -10000 672 444 252 398 260 984 501 442 598 -10000 70 616 946 715 839 444 515 568 268 -10000 321 210 168 472 268 421 204 570 191 -10000 480 96 635 456 880 510 231 217 520 -10000 531 368 452 8 77 594 414 778 197 -10000 420 429 919 416 412 599 532 681 95 -10000 402 197 88 492 615 226 674 240 803 -10000 974 40 618 36 285 599 28 568 332 -10000 216 306 713 219 774 124 443 483 386 -10000 640 652 625 31 955 266 464 123 947 -10000 791 354 600 698 212 699 605 879 954 -10000 33 896 314 465 101 926 480 174 601 -10000 229 494 671 32 398 18 895 274 124 -10000 367 580 185 626 30 39 687 577 733 -10000 13 622 400 700 323 489 208 763 495 -10000 738 957 169 562 689 104 124 55 547 -10000 318 482 511 619 602 384 267 16 575 -10000 348 352 924 806 827 725 785 721 323 -10000 211 352 767 280 94 110 171 383 451 -10000 443 544 406 771 692 206 210 471 586 -10000 429 480 107 887 573 602 911 427 330 -10000 713 737 576 784 875 688 221 251 263 -10000 270 732 485 648 910 460 820 736 735 -10000 13 477 892 419 263 863 857 304 0 -10000 300 552 311 971 781 164 690 648 928 -10000 777 671 28 29 849 360 59 318 472 -10000 835 31 399 446 314 92 187 129 153 -10000 958 919 125 688 29 910 953 268 282 -10000 300 299 501 688 798 384 771 978 486 -10000 584 863 414 53 795 783 829 502 86 -10000 467 59 155 62 16 485 446 436 82 -10000 305 257 445 520 202 308 824 247 691 -10000 910 704 377 534 241 811 384 951 967 -10000 286 599 356 706 409 212 203 66 807 -10000 406 297 473 285 319 651 314 24 978 -10000 561 840 140 858 431 366 710 9 483 -10000 969 938 709 477 314 64 427 576 696 -10000 954 376 404 15 393 481 828 274 628 -10000 995 240 775 571 317 743 922 730 77 -10000 920 598 856 57 253 997 8 435 669 -10000 833 544 467 912 182 663 805 445 36 -10000 841 143 545 518 238 871 740 527 763 -10000 847 492 34 588 358 30 867 364 732 -10000 797 501 804 156 524 207 330 258 269 -10000 721 754 388 889 854 290 680 929 417 -10000 465 892 765 814 300 359 606 949 402 -10000 21 301 605 371 127 915 659 122 62 -10000 480 140 55 103 993 725 80 873 960 -10000 67 625 516 98 204 272 321 959 199 -10000 451 545 970 880 400 763 412 722 383 -10000 839 304 23 824 305 862 43 192 940 -10000 831 998 499 364 451 344 21 199 905 -10000 67 316 201 368 222 875 311 86 356 -10000 185 56 673 967 237 560 134 320 908 -10000 700 259 107 830 991 544 92 977 698 -10000 299 297 229 969 198 989 51 760 909 -10000 57 734 221 771 824 452 972 81 607 -10000 619 257 875 10 807 992 459 732 620 -10000 269 747 957 191 484 352 965 590 903 -10000 966 614 323 454 4 637 104 334 899 -10000 877 453 188 532 603 847 148 495 602 -10000 119 911 707 895 150 462 650 578 690 -10000 847 791 77 461 50 874 955 110 263 -10000 203 541 807 420 294 31 197 399 413 -10000 206 252 415 265 536 805 596 288 15 -10000 851 997 819 128 662 146 607 605 229 -10000 603 827 512 766 350 983 592 273 215 -10000 465 875 459 810 308 803 146 363 521 -10000 198 541 972 766 69 430 578 903 999 -10000 273 485 361 829 344 349 550 141 404 -10000 530 520 229 526 947 515 887 228 243 -10000 666 622 286 661 173 134 643 414 268 -10000 11 994 198 726 640 701 971 846 158 -10000 411 889 498 906 214 69 655 406 596 -10000 396 763 903 238 76 7 625 883 589 -10000 236 71 522 275 403 85 786 261 865 -10000 708 103 199 894 411 190 680 649 660 -10000 168 471 419 240 616 628 456 162 91 -10000 131 618 188 391 806 188 644 687 461 -10000 632 618 750 308 403 213 806 870 88 -10000 747 323 384 986 681 329 322 721 21 -10000 386 519 429 519 963 667 538 745 34 -10000 431 655 700 825 616 984 634 342 153 -10000 725 242 171 754 310 473 175 780 360 -10000 459 409 919 325 576 465 290 954 794 -10000 595 438 157 679 8 497 37 911 861 -10000 99 781 625 676 828 108 300 616 761 -10000 891 152 235 683 146 799 840 419 964 -10000 738 306 393 953 966 153 320 631 455 -10000 959 221 605 248 408 675 771 444 446 -10000 850 773 277 244 145 748 814 697 113 -10000 978 531 244 115 474 438 45 141 839 -10000 89 832 541 247 114 963 826 515 765 -10000 746 193 480 441 325 236 765 585 642 -10000 845 829 840 754 968 176 550 136 903 -10000 661 754 561 407 508 634 78 354 380 -10000 664 757 245 660 244 723 972 571 759 -10000 400 676 35 74 499 471 271 210 930 -10000 216 845 635 628 199 707 427 853 431 -10000 848 715 341 247 968 465 599 303 737 -10000 502 758 454 700 313 670 417 560 919 -10000 660 690 601 550 502 805 424 221 152 -10000 422 685 65 138 140 126 913 959 316 -10000 202 693 459 384 527 34 479 132 878 -10000 143 456 74 935 225 510 445 864 435 -10000 896 889 475 39 73 221 424 541 57 -10000 342 656 152 878 494 435 629 795 269 -10000 987 874 818 581 174 29 574 342 469 -10000 761 566 226 316 949 832 43 752 25 -10000 427 386 248 353 503 200 561 220 818 -10000 355 354 672 985 975 266 557 813 234 -10000 782 794 400 467 620 726 136 117 660 -10000 106 202 953 616 780 199 373 997 323 -10000 748 99 963 83 684 930 666 323 248 -10000 490 718 32 575 61 344 600 256 506 -10000 739 750 299 452 303 887 998 815 323 -10000 844 916 431 231 181 310 285 718 724 -10000 490 83 489 121 383 678 543 468 357 -10000 841 832 299 926 636 934 54 835 136 -10000 736 891 656 606 857 273 727 106 180 -10000 690 338 953 605 934 737 127 433 662 -10000 989 141 788 856 111 656 477 503 520 -10000 366 557 196 30 622 662 681 7 869 -10000 276 204 505 389 522 431 771 116 762 -10000 86 35 19 751 859 422 839 551 725 -10000 300 46 792 408 422 37 74 173 537 -10000 121 462 922 743 891 307 823 758 192 -10000 224 187 433 349 882 920 571 70 896 -10000 539 110 282 321 692 858 262 379 365 -10000 726 730 554 481 668 566 277 374 766 -10000 325 242 275 50 479 960 745 764 926 -10000 280 28 621 331 91 224 971 390 388 -10000 626 322 525 259 170 298 889 195 805 -10000 239 150 160 648 568 985 20 847 995 -10000 549 157 742 654 310 935 259 750 777 -10000 364 236 698 610 880 945 529 301 399 -10000 774 268 179 204 934 446 507 523 634 -10000 445 680 622 610 161 149 727 557 365 -10000 433 887 506 128 202 202 402 545 433 -10000 217 90 814 678 428 664 816 434 319 -10000 605 390 507 270 570 553 3 638 771 -10000 275 240 578 64 642 37 780 660 301 -10000 931 66 183 221 334 330 566 392 532 -10000 434 537 309 716 949 644 373 771 174 -10000 981 42 523 170 404 133 732 253 160 -10000 214 266 624 87 889 508 454 216 770 -10000 52 342 413 211 212 347 134 584 947 -10000 21 766 55 197 1000 653 278 442 629 -10000 545 528 304 263 50 502 198 675 692 -10000 574 420 592 30 640 507 799 974 477 -10000 760 483 786 402 94 335 192 969 573 -10000 247 134 82 388 853 237 612 491 729 -10000 727 53 800 42 229 516 320 89 333 -10000 366 822 527 481 840 716 525 421 947 -10000 835 702 84 440 463 251 357 305 335 -10000 228 704 496 386 316 127 669 150 792 -10000 480 891 168 663 517 761 378 271 626 -10000 84 341 855 666 699 404 15 387 744 -10000 421 586 648 766 168 716 899 134 479 -10000 285 979 994 650 918 777 934 41 418 -10000 314 671 95 7 49 657 232 448 539 -10000 464 406 76 750 451 346 861 743 60 -10000 544 136 783 438 647 412 625 924 225 -10000 799 19 668 616 136 726 9 959 268 -10000 852 885 88 960 611 675 853 301 160 -10000 292 491 541 126 469 180 684 957 969 -10000 395 276 181 163 93 452 341 134 260 -10000 522 142 862 114 93 958 721 858 270 -10000 364 922 991 427 153 781 971 693 57 -10000 294 644 0 223 740 903 468 234 130 -10000 882 635 602 839 257 114 3 494 896 -10000 944 369 549 254 671 839 929 76 807 -10000 120 599 234 715 534 467 399 934 998 -10000 282 482 579 512 868 875 436 483 249 -10000 250 156 935 326 811 26 374 472 969 -10000 558 872 625 35 779 504 733 591 668 -10000 739 469 933 675 922 776 191 184 195 -10000 1000 845 454 200 747 585 25 338 260 -10000 310 461 78 645 103 170 204 749 198 -10000 496 71 697 192 814 375 343 574 958 -10000 41 784 400 824 421 597 467 824 469 -10000 14 650 545 678 593 163 107 253 836 -10000 157 270 656 464 728 403 15 889 974 -10000 373 732 642 73 193 671 0 87 243 -10000 817 902 751 425 199 340 910 737 659 -10000 284 531 391 237 742 100 16 246 915 -10000 45 965 86 279 993 208 169 767 906 -10000 426 945 143 133 870 574 354 980 588 -10000 108 378 448 591 235 49 861 570 528 -10000 936 413 107 549 949 339 870 877 786 -10000 94 179 879 625 614 936 58 891 645 -10000 80 419 277 177 273 390 270 845 561 -10000 937 331 99 12 953 32 633 668 759 -10000 96 417 460 818 215 882 102 808 743 -10000 642 728 281 660 386 820 373 333 11 -10000 284 46 697 953 785 841 238 188 635 -10000 235 489 513 400 450 934 634 144 263 -10000 564 181 160 764 907 839 675 574 577 -10000 839 464 223 984 282 727 37 561 247 -10000 201 527 965 971 114 631 66 203 393 -10000 460 753 902 30 189 560 495 468 854 -10000 523 627 66 880 464 304 947 508 500 -10000 436 926 853 321 321 60 957 777 246 -10000 335 512 456 605 112 798 414 893 788 -10000 342 131 375 454 254 842 844 730 33 -10000 553 334 887 989 861 292 79 227 763 -10000 481 942 363 679 485 537 840 945 623 -10000 968 357 960 872 35 998 516 113 402 -10000 906 262 173 930 235 997 319 257 794 -10000 853 505 197 246 583 117 419 758 775 -10000 920 614 730 393 615 598 693 19 520 -10000 311 603 706 104 5 812 363 348 525 -10000 728 685 975 541 686 377 303 79 291 -10000 515 129 653 729 902 742 617 288 203 -10000 250 884 946 625 596 763 361 240 706 -10000 526 376 235 312 92 89 172 875 894 -10000 153 416 86 687 726 142 823 667 674 -10000 400 73 484 773 431 281 589 181 529 -10000 634 328 573 748 69 690 909 866 127 -10000 307 306 838 432 731 663 286 805 965 -10000 584 944 93 846 4 824 787 115 956 -10000 155 753 763 618 429 0 383 686 412 -10000 576 66 558 658 886 726 428 186 346 -10000 1 956 545 25 141 648 459 664 783 -10000 508 759 173 714 882 122 299 845 729 -10000 569 10 788 86 243 707 929 906 445 -10000 233 753 740 740 464 544 689 529 740 -10000 82 933 387 586 183 905 95 795 901 -10000 749 786 703 787 587 124 712 598 617 -10000 25 536 139 564 427 942 719 257 167 -10000 293 59 481 515 133 271 763 633 63 -10000 82 280 175 25 424 677 423 966 515 -10000 452 563 771 836 811 365 895 337 15 -10000 56 10 501 805 215 403 758 539 156 -10000 309 629 897 114 760 846 701 63 610 -10000 336 476 574 799 569 391 929 351 34 -10000 531 10 813 376 990 170 415 653 290 -10000 967 245 982 561 837 25 33 204 788 -10000 15 443 681 885 903 818 666 547 419 -10000 632 17 151 586 179 661 559 719 342 -10000 851 47 702 651 93 511 599 165 928 -10000 297 72 824 895 567 908 758 79 284 -10000 763 424 604 367 162 808 257 891 15 -10000 80 141 649 827 609 876 283 677 321 -10000 773 388 819 437 702 89 144 512 549 -10000 624 441 375 145 690 40 630 834 815 -10000 649 549 846 934 914 194 531 204 363 -10000 654 535 990 839 609 783 943 367 385 -10000 395 356 552 988 846 772 761 326 639 -10000 216 337 64 200 366 194 654 274 359 -10000 461 550 760 271 708 78 521 779 393 -10000 83 13 505 309 603 131 389 743 891 -10000 745 258 875 654 41 774 192 421 969 -10000 271 386 188 517 243 391 147 465 146 -10000 836 607 236 286 487 310 598 646 465 -10000 285 880 141 372 870 354 294 457 697 -10000 976 847 422 715 472 529 221 869 618 -10000 673 589 917 493 592 892 39 218 716 -10000 778 793 973 237 874 340 187 202 782 -10000 765 417 954 987 634 98 794 648 13 -10000 138 509 336 99 217 381 792 238 260 -10000 112 644 205 686 803 245 315 410 242 -10000 708 485 32 384 129 514 86 418 499 -10000 0 518 508 591 278 724 874 546 228 -10000 957 379 921 961 942 242 448 14 310 -10000 665 641 140 379 720 713 581 572 246 -10000 559 770 456 531 855 49 379 489 957 -10000 497 444 716 59 631 863 735 146 93 -10000 31 795 514 976 463 411 798 103 95 -10000 247 128 499 522 786 345 467 952 496 -10000 91 979 15 633 835 741 711 481 507 -10000 365 412 813 934 755 495 543 943 750 -10000 479 295 510 639 399 499 908 66 653 -10000 82 837 458 660 23 293 390 682 915 -10000 877 360 92 394 626 203 400 250 563 -10000 572 933 318 717 193 15 584 7 872 -10000 500 276 950 450 171 135 893 346 168 -10000 354 632 255 974 927 845 604 561 750 -10000 570 647 392 213 980 323 362 807 3 -10000 860 211 115 923 266 266 210 925 817 -10000 665 326 809 952 370 542 961 6 279 -10000 80 507 856 478 160 240 849 728 129 -10000 472 232 947 120 386 531 488 289 560 -10000 192 136 536 566 654 872 432 995 490 -10000 513 458 717 16 957 816 959 846 401 -10000 204 804 668 807 649 979 599 949 47 -10000 308 625 548 538 76 138 3 48 348 -10000 633 18 637 311 270 468 654 647 762 -10000 822 953 34 464 895 9 615 475 440 -10000 735 400 549 439 854 661 51 11 258 -10000 509 894 949 176 72 570 639 890 974 -10000 987 323 75 780 974 758 391 392 76 -10000 686 929 627 473 931 63 663 939 626 -10000 105 200 550 443 890 732 570 281 769 -10000 806 79 872 992 527 587 423 210 570 -10000 636 440 131 204 849 484 966 191 590 -10000 674 2 590 226 41 773 660 59 731 -10000 273 900 666 829 168 902 941 768 71 -10000 88 528 169 419 42 96 431 724 101 -10000 452 373 850 146 114 753 108 56 666 -10000 104 888 672 831 624 367 69 708 170 -10000 965 432 920 629 924 987 84 161 143 -10000 721 569 269 839 517 953 988 794 811 -10000 136 255 401 586 222 727 995 856 661 -10000 89 250 125 300 520 295 38 964 942 -10000 41 623 70 211 122 76 129 169 256 -10000 763 426 122 75 40 33 469 593 957 -10000 780 758 41 668 864 144 281 323 857 -10000 769 506 468 292 642 142 295 652 540 -10000 564 904 133 104 116 643 532 296 934 -10000 4 403 466 823 389 620 847 538 530 -10000 401 253 740 989 814 830 171 681 584 -10000 1 705 912 48 336 922 504 845 94 -10000 185 471 807 99 582 45 966 209 719 -10000 147 823 349 30 499 740 756 955 330 -10000 226 900 166 539 277 550 720 987 112 -10000 36 834 700 160 967 330 812 593 623 -10000 172 722 879 512 749 146 19 406 329 -10000 654 790 663 215 467 434 616 399 187 -10000 281 593 757 711 691 103 332 882 281 -10000 613 970 115 565 785 857 160 935 54 -10000 856 847 923 552 776 775 355 848 931 -10000 196 637 172 116 363 989 278 282 616 -10000 9 319 968 55 504 63 791 588 347 -10000 447 469 14 268 852 996 650 656 62 -10000 440 294 830 304 79 848 363 203 320 -10000 846 265 457 654 118 919 652 77 66 -10000 204 162 750 558 81 515 20 994 192 -10000 220 460 792 60 344 2 809 186 735 -10000 271 633 223 844 597 864 897 681 469 -10000 336 619 759 401 605 256 70 593 324 -10000 61 65 169 283 920 305 622 395 679 -10000 785 157 634 436 886 306 534 247 843 -10000 223 69 259 865 550 530 54 991 902 -10000 451 532 499 882 30 945 44 687 99 -10000 760 726 600 679 817 738 524 303 576 -10000 587 383 159 745 49 460 940 324 540 -10000 233 792 786 373 498 214 324 921 745 -10000 768 90 14 858 667 321 967 497 765 -10000 782 243 230 347 809 711 165 0 111 -10000 593 770 320 211 506 512 945 964 590 -10000 957 994 553 965 538 149 872 330 827 -10000 98 508 794 966 512 19 441 424 0 -10000 71 974 144 306 775 679 415 686 786 -10000 528 406 832 593 936 605 247 442 190 -10000 188 724 641 642 315 391 952 612 923 -10000 813 614 648 582 525 552 806 177 251 -10000 552 373 167 720 641 749 641 920 191 -10000 999 521 749 777 372 162 252 641 849 -10000 96 941 104 122 801 362 465 953 50 -10000 307 616 906 275 317 266 871 477 329 -10000 622 120 381 975 634 839 207 965 23 -10000 832 565 544 395 313 828 693 292 785 -10000 362 176 49 543 260 77 186 683 746 -10000 835 68 923 81 203 267 876 917 926 -10000 179 299 690 129 753 351 741 260 619 -10000 704 400 642 930 951 847 303 192 73 -10000 87 931 927 273 609 885 730 425 864 -10000 932 691 712 772 541 331 878 933 314 -10000 696 265 532 809 458 910 657 890 92 -10000 296 863 74 355 1000 203 399 574 625 -10000 965 532 494 650 196 577 283 162 431 -10000 134 532 863 706 598 644 976 76 59 -10000 960 859 643 920 172 680 312 702 834 -10000 953 698 212 680 817 722 650 968 214 -10000 903 799 618 296 571 401 391 131 717 -10000 675 579 297 677 611 363 895 588 988 -10000 204 538 486 503 308 684 348 356 221 -10000 31 319 759 689 355 328 714 532 39 -10000 562 788 884 505 10 890 407 540 41 -10000 774 47 386 723 159 625 550 457 401 -10000 572 790 832 338 133 938 562 22 697 -10000 141 915 678 610 621 491 898 41 709 -10000 700 103 664 755 696 924 926 108 664 -10000 223 878 876 310 492 302 828 646 318 -10000 438 220 385 991 208 103 757 73 127 -10000 903 880 695 364 205 680 272 626 757 -10000 902 844 307 289 748 523 909 984 930 -10000 949 673 678 510 478 660 274 205 406 -10000 142 91 84 445 448 205 190 530 386 -10000 476 191 634 712 700 383 697 884 758 -10000 194 486 713 43 598 629 217 167 735 -10000 548 463 756 210 130 239 48 907 966 -10000 892 893 235 971 137 168 383 854 292 -10000 425 632 425 248 735 906 583 199 490 -10000 45 792 167 39 54 19 316 8 252 -10000 122 460 13 631 276 542 356 484 203 -10000 687 932 386 91 641 111 454 589 149 -10000 893 837 949 127 352 131 567 195 627 -10000 793 198 878 819 870 980 240 350 592 -10000 942 469 475 972 206 563 289 915 103 -10000 636 484 802 649 925 225 506 281 573 -10000 518 928 761 777 932 421 400 937 549 -10000 743 824 314 628 383 245 470 147 414 -10000 922 983 584 265 303 839 360 309 968 -10000 316 555 774 589 153 501 991 219 367 -10000 333 687 445 56 521 882 30 960 232 -10000 727 533 11 907 286 871 573 431 70 -10000 940 647 411 914 649 390 86 8 554 -10000 975 251 433 885 932 256 768 550 788 -10000 567 529 606 313 30 770 929 364 186 -10000 86 972 179 121 675 59 107 96 201 -10000 127 385 629 808 469 348 102 361 434 -10000 919 714 328 618 407 273 261 837 758 -10000 118 943 487 736 379 171 747 110 823 -10000 187 971 80 211 559 990 151 302 525 -10000 835 512 748 60 79 784 463 849 851 -10000 294 306 744 621 638 238 786 513 779 -10000 629 969 91 677 337 841 125 998 209 -10000 53 635 529 309 874 222 474 837 464 -10000 190 983 810 85 217 220 643 441 271 -10000 364 505 999 516 557 431 757 89 511 -10000 152 290 590 347 941 528 956 990 565 -10000 77 849 917 765 398 795 713 475 131 -10000 572 775 919 668 875 732 585 157 443 -10000 792 976 199 793 13 671 428 352 546 -10000 185 528 948 883 601 157 666 10 494 -10000 852 250 288 753 441 445 600 852 463 -10000 54 167 104 789 659 103 800 521 285 -10000 258 39 807 257 386 60 989 599 351 -10000 605 48 458 377 336 519 611 467 226 -10000 527 102 184 945 98 734 620 537 472 -10000 670 939 980 344 752 126 992 246 450 -10000 395 89 108 926 272 865 186 415 381 -10000 586 766 709 598 910 237 626 834 810 -10000 221 509 675 313 658 537 672 726 100 -10000 601 150 180 618 157 265 664 342 173 -10000 456 111 220 741 989 238 694 487 671 -10000 807 218 835 835 257 279 134 540 689 -10000 956 721 921 763 602 984 685 582 909 -10000 257 137 743 197 70 672 943 686 103 -10000 659 580 518 114 147 372 309 265 1 -10000 253 257 848 263 824 500 687 204 953 -10000 640 478 953 511 280 526 858 504 505 -10000 330 107 599 23 631 49 591 704 658 -10000 435 726 286 770 354 631 279 355 355 -10000 2 391 539 992 638 800 930 860 12 -10000 277 106 191 606 251 907 542 47 335 -10000 995 637 672 885 108 864 29 904 882 -10000 898 770 657 312 503 134 7 209 374 -10000 365 813 147 0 988 556 198 694 738 -10000 456 366 565 505 151 115 750 219 476 -10000 709 610 879 734 66 926 167 442 620 -10000 810 768 836 960 671 163 645 644 225 -10000 795 799 77 529 240 978 135 472 330 -10000 583 745 154 1 614 172 853 145 454 -10000 588 291 874 140 744 348 70 234 644 -10000 559 732 999 309 610 460 136 108 708 -10000 369 456 216 211 166 876 622 997 346 -10000 262 955 650 310 96 114 499 13 927 -10000 400 462 319 114 34 778 131 719 543 -10000 84 362 786 717 600 379 247 160 172 -10000 587 79 539 278 718 524 450 35 220 -10000 726 112 193 429 997 975 58 8 77 -10000 685 522 374 516 279 69 554 376 144 -10000 118 817 776 331 828 766 19 73 729 -10000 116 404 2 485 548 698 45 289 555 -10000 480 815 412 86 747 346 258 213 637 -10000 540 751 64 767 752 884 29 930 957 -10000 549 711 796 599 268 206 614 128 291 -10000 789 160 38 128 749 182 575 109 841 -10000 313 275 290 848 818 320 825 741 22 -10000 866 678 730 908 957 700 702 512 715 -10000 452 703 424 328 500 32 654 37 744 -10000 615 975 786 410 567 318 627 210 704 -10000 662 978 328 569 842 937 697 832 769 -10000 109 63 378 197 525 442 208 63 641 -10000 580 142 879 461 544 459 406 716 944 -10000 498 953 470 625 790 158 658 895 824 -10000 983 629 301 294 742 699 555 325 865 -10000 468 323 613 296 639 548 674 837 88 -10000 351 233 716 644 637 546 702 141 83 -10000 925 946 453 960 38 139 728 316 758 -10000 457 842 519 835 504 603 683 24 690 -10000 139 538 255 345 575 623 329 301 619 -10000 226 20 987 577 648 985 624 84 963 -10000 396 853 641 329 661 958 46 380 197 -10000 703 665 639 934 884 610 764 984 381 -10000 792 456 946 895 706 467 11 226 915 -10000 275 227 513 233 429 185 386 855 927 -10000 769 464 801 993 292 818 977 893 680 -10000 914 843 955 423 684 252 869 140 656 -10000 83 390 627 632 861 546 121 614 432 -10000 892 723 383 786 429 22 979 298 716 -10000 120 270 786 727 467 125 254 322 41 -10000 980 853 96 967 491 303 972 13 685 -10000 400 177 272 888 426 595 701 527 202 -10000 176 246 973 22 72 951 243 503 53 -10000 810 644 119 711 616 694 783 863 397 -10000 754 742 207 173 150 341 754 390 325 -10000 642 273 875 870 833 428 897 432 442 -10000 610 310 158 232 118 184 788 302 310 -10000 469 226 249 206 945 84 501 294 861 -10000 59 645 982 228 149 997 77 600 739 -10000 467 670 584 960 543 501 687 844 2 -10000 633 334 919 507 450 83 257 938 360 -10000 712 306 948 89 389 630 161 4 102 -10000 986 605 276 584 839 784 748 994 583 -10000 967 877 203 931 186 84 302 244 106 -10000 347 364 672 275 701 981 968 831 584 -10000 774 93 762 348 72 804 679 285 337 -10000 161 359 870 858 225 235 493 581 38 -10000 317 106 833 344 195 927 388 448 64 -10000 913 235 667 40 98 834 303 824 922 -10000 656 817 134 714 837 750 105 1 459 -10000 869 950 960 101 80 621 65 229 985 -10000 963 524 775 345 66 4 765 576 661 -10000 206 417 687 705 501 561 618 147 382 -10000 104 433 741 213 968 849 105 537 226 -10000 894 635 118 276 620 420 37 188 817 -10000 82 319 304 804 574 383 618 138 447 -10000 797 134 158 123 819 580 281 620 816 -10000 331 64 425 830 614 967 410 660 735 -10000 287 627 750 719 880 238 170 104 819 -10000 874 533 532 210 440 163 695 898 634 -10000 871 480 433 244 556 552 395 192 930 -10000 642 975 186 322 18 838 658 665 729 -10000 104 102 621 25 593 166 239 956 177 -10000 765 398 132 395 985 60 1 838 724 -10000 785 804 403 382 572 47 560 105 257 -10000 592 512 763 632 37 652 187 578 484 -10000 813 517 897 955 285 345 838 191 2 -10000 345 123 23 930 682 859 789 675 600 -10000 118 712 812 245 129 487 717 632 274 -10000 263 355 124 182 568 253 836 185 315 -10000 538 743 940 888 587 593 231 697 158 -10000 609 360 433 42 220 186 136 263 426 -10000 706 343 995 477 923 907 491 501 732 -10000 378 32 254 792 813 615 548 125 204 -10000 360 340 231 761 286 715 669 58 73 -10000 248 15 776 50 876 690 685 205 694 -10000 124 708 839 189 84 334 754 838 802 -10000 844 887 360 99 808 518 585 876 479 -10000 207 725 130 723 290 921 194 486 246 -10000 688 677 677 542 457 625 629 764 558 -10000 685 88 101 462 792 823 472 926 368 -10000 682 960 472 197 264 701 878 41 257 -10000 419 875 300 954 494 641 845 417 465 -10000 814 170 117 314 710 918 956 359 293 -10000 807 408 708 525 779 785 86 414 989 -10000 532 676 612 944 222 496 503 301 632 -10000 838 455 115 519 80 451 110 565 820 -10000 656 705 274 444 697 785 396 750 588 -10000 896 209 434 383 972 293 390 827 834 -10000 539 305 659 171 922 389 448 653 454 -10000 639 555 47 289 967 297 950 862 499 -10000 695 937 3 254 921 992 241 797 675 -10000 57 838 996 27 818 303 245 868 226 -10000 52 533 335 890 342 20 521 866 95 -10000 691 867 578 229 920 546 587 703 212 -10000 812 142 258 510 521 669 180 221 34 -10000 553 69 236 567 188 78 517 508 778 -10000 544 810 481 140 272 463 693 304 809 -10000 272 141 471 966 342 97 415 778 971 -10000 172 791 459 104 45 600 765 948 555 -10000 399 253 414 707 427 274 438 657 575 -10000 361 880 857 706 878 492 37 719 997 -10000 389 637 335 893 346 154 991 33 608 -10000 303 841 489 381 915 783 373 127 910 -10000 259 134 109 839 307 38 191 108 895 -10000 674 779 924 543 586 298 580 576 291 -10000 309 389 544 769 354 532 654 631 831 -10000 837 174 332 468 628 507 394 680 436 -10000 596 884 255 787 419 433 781 339 587 -10000 877 799 56 591 233 858 814 426 330 -10000 288 237 543 90 441 934 581 486 794 -10000 571 951 26 248 329 423 388 965 91 -10000 616 951 146 333 395 803 643 962 748 -10000 41 824 902 880 978 151 126 883 32 -10000 230 505 800 123 203 909 813 946 320 -10000 864 615 809 678 209 364 848 518 909 -10000 620 528 595 684 184 83 263 931 60 -10000 827 562 24 676 881 661 275 877 93 -10000 992 842 68 687 58 706 193 383 914 -10000 411 592 25 689 578 276 556 685 529 -10000 738 744 136 571 855 439 817 123 284 -10000 959 79 226 240 541 378 771 833 77 -10000 450 29 776 691 1 189 287 594 865 -10000 697 873 165 943 915 166 66 622 856 -10000 333 774 595 916 135 76 742 194 554 -10000 479 990 601 790 873 498 478 572 800 -10000 174 925 4 427 482 198 895 969 292 -10000 490 523 418 168 208 468 497 746 996 -10000 77 779 486 579 868 982 817 422 827 -10000 902 874 287 593 935 864 959 446 138 -10000 212 842 767 897 357 421 165 394 66 -10000 181 300 594 707 205 231 348 766 277 -10000 932 46 779 841 292 790 143 310 449 -10000 178 48 413 510 978 759 410 676 542 -10000 957 621 494 536 107 642 214 767 879 -10000 478 48 499 426 16 782 946 18 222 -10000 178 887 566 108 910 170 659 295 39 -10000 123 325 567 524 612 550 515 514 109 -10000 582 351 959 432 367 883 671 89 290 -10000 388 131 264 10 323 249 933 7 282 -10000 840 899 785 735 965 345 529 92 465 -10000 577 522 868 761 51 295 887 161 436 -10000 417 324 722 697 647 989 801 252 761 -10000 493 618 918 286 801 947 193 386 103 -10000 809 825 393 233 503 980 786 911 921 -10000 167 633 704 766 168 725 708 507 510 -10000 340 335 562 640 822 205 917 17 655 -10000 748 770 529 16 43 882 923 836 674 -10000 83 847 429 983 886 969 298 278 412 -10000 291 537 213 792 314 188 303 932 826 -10000 37 285 190 340 121 342 794 67 848 -10000 163 185 883 495 495 617 604 103 617 -10000 95 565 74 400 661 286 820 313 245 -10000 763 54 387 795 643 381 904 935 238 -10000 47 608 947 15 267 449 109 948 929 -10000 113 697 677 990 570 288 870 600 703 -10000 734 182 911 224 727 278 633 197 325 -10000 823 614 197 467 961 249 389 276 345 -10000 526 591 783 933 517 796 197 311 765 -10000 213 188 916 771 303 661 676 705 862 -10000 658 202 321 646 711 159 6 785 842 -10000 746 195 39 262 103 435 489 182 466 -10000 868 619 775 354 211 675 303 821 282 -10000 966 522 376 275 908 868 288 800 201 -10000 111 119 564 716 160 884 489 441 598 -10000 905 265 367 554 436 547 412 302 53 -10000 190 453 516 956 706 100 226 279 607 -10000 145 695 55 21 142 830 867 293 979 -10000 361 314 512 887 429 839 110 132 583 -10000 406 607 21 761 949 705 766 252 941 -10000 11 742 445 420 495 259 533 38 423 -10000 475 891 809 970 687 475 958 922 956 -10000 850 463 303 927 755 674 944 390 116 -10000 113 594 514 631 500 697 622 151 568 -10000 833 187 746 814 31 645 847 230 382 -10000 755 214 541 14 777 976 656 900 116 -10000 831 559 588 968 103 953 716 287 521 -10000 98 456 4 635 874 270 394 361 880 -10000 561 634 465 616 808 777 568 991 38 -10000 947 392 804 65 917 782 436 179 672 -10000 409 589 136 448 586 177 806 503 12 -10000 383 272 639 137 669 459 933 670 508 -10000 813 121 539 504 753 363 432 197 145 -10000 883 154 325 665 642 340 130 320 734 -10000 515 584 354 119 738 949 122 664 711 -10000 518 123 556 128 863 0 527 539 486 -10000 842 383 107 200 821 837 116 414 239 -10000 94 991 662 264 880 183 647 112 898 -10000 450 732 848 734 203 709 131 747 488 -10000 210 211 183 282 350 479 889 936 700 -10000 491 645 569 905 106 94 756 825 132 -10000 240 251 519 944 908 605 977 166 804 -10000 510 75 756 79 735 169 479 688 415 -10000 312 111 131 815 393 533 873 227 249 -10000 8 9 712 648 250 682 508 63 765 -10000 583 481 218 813 434 88 799 494 297 -10000 37 894 273 627 2 490 47 363 949 -10000 956 398 996 642 357 124 657 69 478 -10000 124 356 417 63 822 801 886 728 584 -10000 543 97 906 928 993 108 995 534 948 -10000 693 977 941 690 171 735 847 465 25 -10000 737 785 589 53 499 323 280 329 841 -10000 37 231 128 247 372 619 589 547 665 -10000 63 921 667 101 289 898 972 381 95 -10000 704 203 984 720 359 868 195 990 66 -10000 810 16 703 830 591 154 541 621 271 -10000 858 183 229 106 945 236 176 401 428 -10000 573 811 623 327 937 135 613 150 569 -10000 165 466 322 735 481 928 22 451 719 -10000 648 588 394 421 595 101 41 737 247 -10000 931 825 303 319 775 94 785 67 195 -10000 786 155 313 95 688 292 250 642 760 -10000 344 825 417 572 143 912 174 877 676 -10000 95 904 536 785 936 699 735 760 45 -10000 238 221 708 668 830 927 926 888 866 -10000 694 323 368 846 677 896 571 424 536 -10000 388 628 856 61 898 695 674 669 139 -10000 16 954 922 309 991 684 476 381 144 -10000 540 603 651 337 564 196 234 330 500 -10000 183 180 470 171 611 523 97 315 896 -10000 518 626 85 379 402 394 295 487 145 -10000 853 671 82 370 11 857 837 733 367 -10000 40 401 555 967 106 386 605 377 433 -10000 985 670 222 468 349 193 433 734 147 -10000 624 979 649 417 40 414 91 378 914 -10000 682 113 40 142 573 429 304 450 481 -10000 560 395 188 384 355 181 995 522 816 -10000 937 47 759 96 531 699 558 209 380 -10000 725 397 565 953 564 459 475 545 202 -10000 211 851 491 352 619 294 603 533 918 -10000 18 469 678 617 981 478 516 805 756 -10000 683 277 952 679 493 264 723 97 744 -10000 71 207 929 118 216 705 704 364 403 -10000 485 103 797 428 631 49 161 367 782 -10000 493 264 979 893 168 764 652 839 296 -10000 35 225 75 388 165 75 322 190 735 -10000 396 901 82 317 883 840 610 874 686 -10000 525 637 845 379 872 295 81 950 627 -10000 40 585 632 537 820 12 783 901 824 -10000 558 943 354 202 495 206 56 319 984 -10000 690 394 32 30 624 194 521 536 839 -10000 474 26 999 665 59 687 732 80 112 -10000 952 867 645 243 872 404 288 296 695 -10000 746 436 583 842 681 725 621 471 640 -10000 481 779 578 310 261 218 709 445 61 -10000 576 722 985 199 331 288 55 405 427 -10000 532 921 64 857 836 726 175 408 222 -10000 877 361 181 530 413 197 206 730 906 -10000 261 298 614 165 869 329 197 596 454 -10000 896 128 279 941 42 343 121 422 72 -10000 863 980 434 983 935 979 234 878 188 -10000 220 467 535 890 757 62 837 280 68 -10000 509 843 148 941 625 825 718 669 245 -10000 567 107 644 711 760 206 868 935 5 -10000 610 19 778 277 289 808 315 992 789 -10000 705 938 413 590 39 93 305 856 683 -10000 525 337 14 971 264 832 546 948 620 -10000 400 848 470 673 257 860 62 565 929 -10000 292 312 731 253 252 687 442 822 963 -10000 394 556 100 510 790 588 470 80 730 -10000 343 742 252 607 125 34 654 300 906 -10000 397 181 892 179 15 14 864 855 700 -10000 597 705 934 599 553 403 667 357 294 -10000 112 552 631 35 34 789 219 876 446 -10000 382 256 850 999 799 130 53 365 287 -10000 866 724 256 756 628 444 357 214 510 -10000 437 892 120 251 589 31 380 363 753 -10000 428 583 116 967 195 412 202 928 823 -10000 695 801 392 767 204 348 978 109 119 -10000 964 457 266 217 735 521 145 52 251 -10000 394 58 568 151 6 998 743 400 649 -10000 927 300 771 844 131 504 443 742 799 -10000 888 346 0 434 126 268 491 902 741 -10000 390 757 98 610 769 340 11 374 581 -10000 281 874 904 346 712 487 406 570 261 -10000 462 217 603 885 64 927 339 379 550 -10000 257 831 629 225 798 680 178 99 984 -10000 437 553 600 143 466 763 776 274 868 -10000 305 710 512 321 338 538 618 183 584 -10000 246 783 89 675 509 624 472 397 189 -10000 216 732 199 144 773 120 952 939 804 -10000 257 5 127 781 499 807 298 16 594 -10000 827 451 850 609 835 27 662 12 388 -10000 439 587 516 443 465 473 945 163 252 -10000 769 967 96 734 709 717 457 627 200 -10000 254 791 391 820 875 197 151 33 428 -10000 480 434 739 150 821 341 231 297 237 -10000 815 322 776 90 926 198 627 755 736 -10000 584 732 21 968 888 134 80 333 281 -10000 929 806 659 918 906 716 962 131 275 -10000 440 762 20 100 132 176 65 433 126 -10000 549 877 120 211 957 871 594 778 781 -10000 217 575 994 659 813 376 240 788 831 -10000 703 413 9 11 806 88 898 590 236 -10000 119 131 355 767 374 311 972 77 145 -10000 224 633 155 842 543 709 187 916 359 -10000 213 147 781 621 689 548 351 849 333 -10000 868 891 805 682 167 842 280 564 617 -10000 464 868 834 612 733 224 587 654 5 -10000 743 688 336 748 795 776 960 397 82 -10000 213 375 169 581 739 306 314 299 738 -10000 604 14 449 747 37 78 170 1000 154 -10000 467 186 426 841 939 751 430 655 829 -10000 670 490 444 610 60 428 455 289 227 -10000 16 790 973 680 357 439 748 62 369 -10000 54 157 439 726 69 220 272 374 152 -10000 422 805 338 741 373 279 240 866 845 -10000 415 256 589 650 853 280 422 304 502 -10000 885 586 186 583 456 343 197 266 30 -10000 136 688 462 773 557 193 932 571 737 -10000 395 615 799 15 130 747 845 793 855 -10000 392 257 262 773 468 780 339 50 579 -10000 109 530 647 557 648 182 40 965 802 -10000 48 407 261 743 305 296 377 125 568 -10000 223 730 755 82 11 103 908 917 958 -10000 609 121 537 772 348 891 346 36 748 -10000 178 285 764 849 646 871 726 541 959 -10000 351 145 383 987 481 654 703 677 293 -10000 86 114 475 745 163 52 614 937 281 -10000 883 627 78 906 490 866 38 189 477 -10000 946 588 994 720 857 880 397 937 800 -10000 122 14 239 924 752 43 971 173 288 -10000 774 280 203 377 341 544 234 982 525 -10000 459 34 993 203 694 817 143 436 193 -10000 517 389 292 713 216 799 116 11 834 -10000 544 485 502 33 22 164 318 210 164 -10000 620 42 888 723 434 783 980 813 100 -10000 876 457 963 548 99 135 485 109 252 -10000 379 750 405 812 502 339 278 40 803 -10000 396 74 744 387 533 803 879 884 229 -10000 562 243 624 489 996 680 621 160 800 -10000 326 8 436 249 153 570 716 868 463 -10000 100 179 897 498 365 162 720 271 66 -10000 460 311 649 525 172 59 368 325 953 -10000 272 15 511 31 966 606 612 336 824 -10000 934 822 29 14 652 294 239 607 17 -10000 489 418 850 728 840 532 261 998 274 -10000 661 452 682 17 153 641 751 62 933 -10000 412 774 672 75 540 872 47 767 479 -10000 240 846 221 718 595 252 280 959 424 -10000 110 43 641 565 94 720 845 146 87 -10000 357 953 496 469 905 425 404 654 559 -10000 103 126 137 500 780 510 983 41 403 -10000 820 609 24 471 258 734 243 469 111 -10000 713 520 527 426 306 784 32 477 907 -10000 752 762 250 275 632 950 193 484 8 -10000 999 373 542 185 367 431 588 236 219 -10000 344 807 948 519 864 606 812 746 772 -10000 774 693 210 601 583 312 272 436 933 -10000 449 751 834 727 859 626 1 357 795 -10000 400 375 869 64 483 924 498 849 578 -10000 12 810 935 126 990 298 193 453 852 -10000 671 796 480 765 963 851 353 4 923 -10000 753 275 140 273 255 424 594 870 270 -10000 528 249 270 238 140 458 163 247 770 -10000 27 900 594 954 677 851 487 726 92 -10000 567 832 807 147 152 81 629 750 306 -10000 491 420 252 133 615 665 584 962 586 -10000 668 196 702 915 949 243 14 875 796 -10000 459 116 955 379 940 405 125 194 359 -10000 539 778 490 862 628 970 361 631 351 -10000 821 210 601 207 92 662 255 176 558 -10000 635 463 390 552 166 820 295 106 416 -10000 751 859 343 382 687 663 509 143 688 -10000 970 375 521 30 188 830 210 247 95 -10000 81 194 347 645 687 711 176 99 727 -10000 668 748 282 925 521 122 591 580 488 -10000 399 902 98 726 430 573 788 566 692 -10000 253 79 449 693 323 908 776 912 90 -10000 487 90 882 264 57 761 148 576 111 -10000 754 359 544 463 290 891 310 941 43 -10000 799 743 335 824 615 916 240 590 638 -10000 527 499 228 198 35 237 425 166 52 -10000 867 638 782 78 35 839 229 36 394 -10000 958 270 586 800 79 140 242 819 133 -10000 809 197 856 572 383 400 775 658 598 -10000 573 303 565 691 786 729 31 124 41 -10000 934 582 128 291 805 59 427 363 84 -10000 634 164 759 855 339 80 93 153 722 -10000 414 534 181 244 695 135 576 983 625 -10000 746 548 961 80 512 222 1000 182 70 -10000 985 412 111 20 513 247 62 31 210 -10000 476 686 576 888 862 782 454 437 320 -10000 463 674 803 69 526 544 732 614 30 -10000 595 471 495 795 532 915 341 319 552 -10000 746 925 995 323 30 284 110 315 59 -10000 163 515 438 64 185 432 842 165 388 -10000 622 497 718 155 568 242 839 472 758 -10000 537 705 660 567 211 539 970 697 175 -10000 889 777 227 425 687 238 999 625 448 -10000 368 816 123 635 288 273 626 491 713 -10000 522 167 879 24 454 390 347 682 830 -10000 507 100 28 597 992 201 901 536 550 -10000 976 459 988 13 58 599 668 290 730 -10000 742 197 948 315 570 672 268 251 981 -10000 983 397 759 974 275 148 532 803 706 -10000 589 828 144 536 87 66 576 365 40 -10000 101 356 180 664 283 815 187 547 22 -10000 357 120 974 256 955 14 515 367 973 -10000 593 730 687 638 765 509 557 502 689 -10000 412 396 982 464 331 10 952 784 678 -10000 36 606 700 781 974 894 392 826 414 -10000 414 55 678 552 618 427 976 280 333 -10000 345 550 611 238 391 737 93 601 691 -10000 882 952 720 904 208 97 17 217 811 -10000 968 189 935 983 250 350 598 387 76 -10000 569 227 738 785 978 176 751 930 724 -10000 794 537 771 413 191 848 750 396 456 -10000 391 16 641 64 899 286 916 19 45 -10000 76 225 465 549 614 693 604 808 500 -10000 766 971 417 802 830 586 660 314 168 -10000 433 39 588 662 299 389 99 593 143 -10000 511 674 694 913 890 937 275 495 475 -10000 549 709 120 693 343 878 365 192 734 -10000 666 671 789 218 226 538 517 880 856 -10000 958 868 987 445 427 806 688 275 649 -10000 398 504 517 276 666 474 909 437 125 -10000 802 454 40 656 156 825 334 689 268 -10000 915 459 7 772 47 825 174 516 301 -10000 526 316 622 967 113 416 948 655 4 -10000 752 966 891 350 138 641 485 631 452 -10000 998 649 310 248 116 688 20 136 543 -10000 290 349 943 951 908 608 757 664 798 -10000 767 82 327 399 569 356 783 309 588 -10000 252 432 478 308 363 881 423 756 435 -10000 921 65 741 451 870 329 529 538 336 -10000 406 271 957 448 66 348 353 819 774 -10000 904 938 920 935 954 585 442 650 240 -10000 572 389 404 908 787 476 833 227 892 -10000 379 644 630 985 819 928 768 738 921 -10000 198 335 44 298 390 842 687 834 512 -10000 816 532 986 729 180 573 920 596 221 -10000 223 907 574 847 613 201 914 438 981 -10000 658 138 882 346 558 198 183 639 721 -10000 276 131 642 145 601 417 145 834 537 -10000 741 405 264 697 318 408 476 239 666 -10000 76 6 661 88 936 347 927 35 951 -10000 808 969 344 718 766 650 236 910 666 -10000 775 23 651 790 196 550 409 954 78 -10000 435 917 940 106 806 991 68 308 497 -10000 94 952 480 725 683 570 479 120 842 -10000 127 585 365 652 385 833 404 398 734 -10000 185 885 445 654 586 708 368 901 417 -10000 861 214 601 641 289 884 927 649 8 -10000 880 119 315 568 398 326 693 864 94 -10000 889 65 229 724 855 341 234 487 23 -10000 24 800 854 215 898 329 567 580 687 -10000 445 814 254 570 795 441 941 195 187 -10000 606 630 250 592 691 467 758 831 545 -10000 847 510 291 628 938 782 925 14 44 -10000 552 928 815 50 72 840 841 615 727 -10000 417 72 409 390 214 642 647 99 422 -10000 381 487 312 101 595 11 367 866 63 -10000 162 524 468 646 698 972 573 587 818 -10000 778 400 485 845 558 518 337 550 532 -10000 741 418 357 883 675 175 361 969 93 -10000 589 332 832 131 668 8 920 516 507 -10000 180 500 162 391 739 723 167 458 123 -10000 377 665 161 465 981 186 899 878 541 -10000 861 949 527 783 292 305 51 644 240 -10000 758 925 712 813 546 817 80 591 865 -10000 619 59 642 164 376 832 891 897 347 -10000 895 129 419 406 797 938 564 270 877 -10000 594 379 30 893 46 80 642 493 37 -10000 480 924 818 420 1 615 942 925 859 -10000 474 531 398 275 383 298 759 307 447 -10000 998 10 540 511 233 642 457 113 760 -10000 621 220 285 470 565 467 870 908 420 -10000 859 43 132 864 75 879 231 512 286 -10000 380 421 626 285 883 273 335 272 687 -10000 567 459 538 685 374 490 34 315 566 -10000 167 541 997 299 575 898 547 554 758 -10000 384 555 963 456 951 539 290 921 579 -10000 188 328 708 668 599 546 43 941 490 -10000 839 154 164 813 510 290 454 869 481 -10000 931 795 570 896 503 600 518 997 56 -10000 268 708 814 982 184 346 620 313 341 -10000 285 442 342 939 327 307 840 27 202 -10000 833 387 343 502 493 447 19 787 471 -10000 339 851 910 845 886 653 285 287 972 -10000 208 810 864 279 398 296 436 366 558 -10000 271 274 605 131 453 737 5 542 691 -10000 310 612 541 436 141 836 55 242 967 -10000 889 326 27 584 998 34 686 786 516 -10000 59 846 583 890 16 120 653 250 401 -10000 644 877 894 267 1000 202 805 603 755 -10000 471 727 231 74 384 739 310 532 862 -10000 146 266 251 80 388 494 715 707 580 -10000 796 134 547 738 986 502 917 578 182 -10000 124 388 780 169 724 424 615 983 63 -10000 869 894 222 345 792 989 718 723 944 -10000 736 434 198 429 16 939 88 518 429 -10000 69 596 395 835 780 1 25 439 950 -10000 299 140 7 987 122 83 923 93 383 -10000 304 705 247 161 679 862 139 503 301 -10000 228 116 393 107 888 431 406 64 660 -10000 750 605 149 609 246 231 851 377 327 -10000 834 924 685 37 415 42 510 277 783 -10000 80 342 631 452 593 347 322 477 190 -10000 466 133 199 603 455 916 530 854 656 -10000 511 287 370 566 331 739 546 383 477 -10000 452 528 860 912 127 291 621 369 819 -10000 402 560 457 805 924 309 838 284 781 -10000 961 79 802 484 622 483 776 758 740 -10000 497 428 814 126 49 617 453 688 180 -10000 206 38 908 891 581 816 822 945 938 -10000 898 492 503 215 39 474 999 400 218 -10000 102 52 929 295 863 984 108 17 969 -10000 868 488 785 624 240 558 340 714 163 -10000 175 883 137 7 886 981 196 842 619 -10000 907 212 223 928 714 28 755 523 711 -10000 208 401 721 896 182 799 601 1000 482 -10000 421 779 371 960 424 829 646 135 757 -10000 692 83 995 213 317 426 236 295 665 -10000 650 429 22 1000 981 636 188 333 477 -10000 689 31 580 241 54 483 278 229 876 -10000 337 915 826 319 994 282 534 98 321 -10000 477 194 244 917 745 28 329 275 230 -10000 404 242 817 242 66 851 225 767 578 -10000 531 874 376 682 719 494 82 726 507 -10000 67 398 236 883 932 672 715 406 652 -10000 587 820 204 276 728 684 200 340 522 -10000 559 247 264 603 825 402 469 42 727 -10000 185 863 945 10 316 818 675 612 65 -10000 966 959 866 331 367 479 768 839 362 -10000 434 198 53 8 140 465 456 553 884 -10000 440 108 72 991 315 328 561 823 556 -10000 936 815 419 267 454 941 669 646 527 -10000 826 644 470 683 561 876 611 465 175 -10000 240 159 332 257 226 54 674 841 453 -10000 873 860 328 927 674 314 68 818 624 -10000 912 56 687 366 538 601 629 790 921 -10000 400 808 145 687 561 129 640 230 337 -10000 16 425 971 288 801 549 594 178 276 -10000 653 507 1 400 483 165 946 976 711 -10000 940 46 680 308 986 196 190 699 170 -10000 134 88 914 759 172 453 846 535 104 -10000 664 383 534 78 121 709 955 216 90 -10000 618 145 473 263 386 413 237 832 22 -10000 300 653 26 554 897 15 468 868 200 -10000 23 974 527 740 713 607 531 781 974 -10000 150 37 209 65 500 960 784 732 86 -10000 837 280 376 115 797 365 498 37 444 -10000 156 113 992 814 942 772 922 245 354 -10000 925 427 632 861 870 848 935 766 198 -10000 809 739 8 766 990 741 741 453 269 -10000 115 1000 560 276 90 599 73 358 941 -10000 340 439 634 139 822 793 793 720 626 -10000 158 270 79 78 652 967 667 879 596 -10000 232 881 403 482 573 253 605 540 107 -10000 146 395 412 486 821 279 406 637 698 -10000 287 332 14 602 974 441 477 453 489 -10000 993 147 738 928 896 745 150 452 952 -10000 8 110 273 738 809 146 646 844 161 -10000 352 241 877 598 940 920 966 441 862 -10000 91 548 2 819 297 191 539 659 253 -10000 59 794 451 815 32 162 633 82 402 -10000 573 771 881 943 287 533 929 345 0 -10000 851 923 44 94 520 897 751 365 566 -10000 16 9 299 350 199 389 803 418 542 -10000 966 508 907 66 4 909 967 393 108 -10000 662 378 156 404 163 183 952 134 719 -10000 877 212 200 428 935 169 798 183 249 -10000 128 437 583 185 447 525 112 964 917 -10000 118 830 3 253 778 478 127 99 836 -10000 531 403 729 952 429 808 981 594 119 -10000 85 636 229 425 775 61 259 278 260 -10000 74 421 110 574 789 881 762 382 551 -10000 223 447 297 292 977 781 262 801 655 -10000 818 565 311 454 236 208 432 646 808 -10000 171 207 622 894 678 868 251 655 752 -10000 984 558 988 541 527 832 832 929 123 -10000 998 833 946 180 904 364 786 3 720 -10000 266 641 546 783 605 830 927 965 954 -10000 58 680 148 224 133 213 439 43 173 -10000 752 791 180 535 646 620 197 783 759 -10000 554 180 279 985 752 911 695 659 475 -10000 548 887 350 836 394 727 178 110 652 -10000 167 240 370 647 888 929 771 252 504 -10000 591 884 983 352 510 233 443 773 427 -10000 383 786 467 772 272 107 934 905 772 -10000 254 184 337 458 517 835 245 488 953 -10000 112 408 653 718 637 605 712 609 632 -10000 272 579 914 220 853 898 66 710 605 -10000 75 632 354 628 493 412 905 561 963 -10000 843 40 979 735 560 682 900 961 37 -10000 307 165 565 464 771 808 556 678 403 -10000 110 339 764 991 149 463 803 618 561 -10000 810 728 563 643 35 810 101 618 976 -10000 39 550 816 727 956 760 552 4 899 -10000 549 504 87 209 953 210 547 802 411 -10000 998 81 450 250 564 402 574 717 72 -10000 582 581 360 720 100 84 578 140 916 -10000 912 804 57 793 728 362 580 760 234 -10000 440 514 351 224 298 313 767 396 171 -10000 752 568 949 641 41 535 772 468 882 -10000 103 733 25 376 220 296 778 572 787 -10000 989 288 369 903 3 913 662 594 492 -10000 382 818 353 130 747 846 215 688 488 -10000 490 718 108 619 380 676 926 277 919 -10000 155 641 916 440 965 249 581 598 290 -10000 770 632 809 466 25 381 160 659 413 -10000 504 235 342 508 126 753 276 516 729 -10000 76 123 781 280 592 413 660 737 574 -10000 445 960 720 500 650 475 472 407 195 -10000 185 963 432 294 861 880 795 413 33 -10000 853 726 732 258 270 245 994 99 556 -10000 98 391 901 531 862 165 152 215 641 -10000 990 309 553 178 481 730 784 371 334 -10000 991 399 878 315 610 656 673 756 806 -10000 40 843 444 647 182 293 805 486 159 -10000 344 235 574 657 937 539 288 368 714 -10000 336 418 337 158 600 555 371 335 550 -10000 494 819 549 113 526 886 399 746 558 -10000 872 730 19 385 40 563 156 65 707 -10000 188 706 976 762 282 510 935 614 159 -10000 976 876 543 655 804 210 504 113 30 -10000 840 235 467 603 349 5 64 74 742 -10000 638 535 609 561 178 249 53 286 703 -10000 815 169 465 127 908 811 504 293 402 -10000 520 852 148 399 791 24 189 738 382 -10000 312 383 960 73 2 11 73 291 39 -10000 393 745 661 917 737 209 252 578 16 -10000 179 566 682 636 382 760 665 723 21 -10000 313 950 267 67 217 454 570 531 302 -10000 338 505 852 202 266 130 951 544 951 -10000 65 33 39 118 223 372 148 885 579 -10000 572 897 929 468 25 13 934 861 828 -10000 567 122 447 82 211 11 515 384 469 -10000 156 61 662 368 50 244 984 382 144 -10000 690 698 121 160 502 140 95 403 608 -10000 156 296 153 865 573 115 272 318 775 -10000 787 962 423 70 484 973 596 885 624 -10000 848 477 441 718 195 210 439 836 75 -10000 97 942 491 734 789 758 83 907 502 -10000 38 621 220 21 704 896 187 674 543 -10000 938 642 755 860 944 811 874 552 277 -10000 273 117 856 961 392 624 403 344 294 -10000 345 578 163 996 599 217 41 609 94 -10000 765 718 611 357 762 146 666 301 171 -10000 447 549 777 134 74 243 594 375 678 -10000 372 923 914 251 632 574 884 794 498 -10000 505 653 928 347 81 897 235 995 53 -10000 658 519 130 56 693 980 542 641 146 -10000 187 660 193 152 296 553 791 174 858 -10000 606 342 76 562 13 54 299 94 871 -10000 148 964 838 781 402 424 909 163 714 -10000 273 269 257 987 653 389 559 987 922 -10000 126 57 607 144 62 831 559 645 727 -10000 524 785 40 833 389 607 398 653 711 -10000 713 330 133 403 797 892 116 716 816 -10000 170 578 498 366 833 18 455 954 35 -10000 959 101 690 441 177 875 997 819 528 -10000 476 272 329 230 130 761 776 740 659 -10000 86 692 999 953 842 918 324 675 152 -10000 88 534 101 20 333 87 222 772 137 -10000 572 688 910 999 950 152 913 615 57 -10000 445 706 129 638 351 111 300 398 212 -10000 100 575 989 68 704 437 819 781 267 -10000 605 335 584 247 568 117 389 544 993 -10000 947 688 349 173 299 445 799 427 387 -10000 27 168 222 349 561 338 517 317 601 -10000 0 457 437 766 989 174 336 229 989 -10000 508 290 260 339 716 649 618 975 156 -10000 199 856 80 897 37 529 185 774 424 -10000 463 77 778 968 846 453 794 912 189 -10000 207 264 461 592 638 798 528 163 775 -10000 103 96 966 98 701 951 494 896 557 -10000 511 464 39 194 932 16 668 773 449 -10000 502 685 411 226 789 732 231 250 930 -10000 817 861 945 130 46 111 308 750 136 -10000 164 38 925 795 603 75 843 954 676 -10000 917 480 119 9 633 854 983 918 944 -10000 774 949 697 536 849 62 625 93 722 -10000 486 52 502 593 395 407 897 248 488 -10000 125 224 981 399 525 980 573 952 469 -10000 571 778 313 132 106 952 920 200 396 -10000 541 468 732 72 238 454 785 89 373 -10000 512 177 898 972 867 614 673 285 289 -10000 539 361 732 429 891 252 333 946 816 -10000 878 582 694 77 420 810 977 917 397 -10000 575 4 226 140 809 892 694 389 226 -10000 746 376 108 970 796 847 558 190 713 -10000 750 498 719 999 960 264 694 22 875 -10000 429 568 444 591 920 654 849 534 713 -10000 629 64 335 290 577 874 716 110 147 -10000 177 237 560 208 772 514 65 228 744 -10000 716 521 519 763 322 475 238 44 633 -10000 306 263 33 318 666 159 40 526 196 -10000 200 856 16 879 639 774 330 459 590 -10000 47 717 457 878 818 134 951 203 425 -10000 331 21 369 404 993 539 84 75 388 -10000 144 344 658 676 497 715 243 437 510 -10000 750 280 750 72 681 956 608 913 851 -10000 771 121 668 901 619 570 148 436 534 -10000 515 59 909 845 241 810 863 251 255 -10000 320 305 923 858 663 413 143 604 685 -10000 253 16 543 128 302 712 595 467 543 -10000 5 296 109 400 731 943 381 468 405 -10000 421 441 140 70 505 333 886 474 226 -10000 666 94 789 284 606 964 138 249 969 -10000 308 780 777 452 866 718 914 779 908 -10000 12 353 112 441 624 684 984 306 875 -10000 246 847 300 470 487 691 562 621 945 -10000 924 528 595 186 793 118 342 710 343 -10000 431 123 240 216 565 167 175 679 935 -10000 63 888 313 455 540 719 158 182 991 -10000 424 757 156 688 24 499 285 435 342 -10000 347 955 891 12 311 375 950 417 402 -10000 954 755 553 449 924 42 469 202 632 -10000 377 665 215 631 805 332 928 588 224 -10000 223 609 75 159 386 591 115 312 611 -10000 353 318 106 900 731 148 367 83 613 -10000 207 675 636 16 440 659 209 751 34 -10000 486 343 969 775 190 142 727 469 830 -10000 209 469 590 161 168 952 723 459 869 -10000 390 878 203 277 968 430 917 641 152 -10000 856 762 614 120 44 823 796 938 741 -10000 989 428 960 730 496 403 314 910 871 -10000 588 217 351 66 338 929 860 567 256 -10000 619 679 921 296 890 610 924 624 889 -10000 417 869 103 549 321 121 277 709 118 -10000 564 573 239 194 869 865 491 284 157 -10000 696 868 35 209 849 435 811 238 943 -10000 908 471 764 81 663 332 928 305 652 -10000 626 843 550 229 91 251 137 217 489 -10000 373 872 407 816 341 485 349 758 613 -10000 302 118 113 28 188 357 823 237 418 -10000 470 757 520 977 482 203 348 798 174 -10000 320 962 306 959 736 434 678 618 531 -10000 128 214 829 560 279 727 879 777 96 -10000 916 81 404 652 645 24 61 565 458 -10000 819 356 372 755 113 297 963 697 248 -10000 903 672 547 773 593 251 0 422 732 -10000 904 370 859 932 258 607 173 456 276 -10000 734 100 41 474 51 815 238 526 303 -10000 839 273 372 822 345 130 220 379 4 -10000 735 629 402 494 550 470 730 109 439 -10000 162 850 423 159 707 119 545 267 172 -10000 838 296 987 80 628 963 738 71 891 -10000 841 838 584 242 36 293 537 293 267 -10000 795 916 352 270 18 313 430 369 129 -10000 313 494 891 135 432 385 377 73 155 -10000 28 724 261 402 756 361 919 514 922 -10000 522 981 993 282 145 764 567 216 29 -10000 791 731 797 797 722 314 47 741 417 -10000 767 676 684 178 460 891 746 776 447 -10000 431 424 277 456 184 949 199 67 741 -10000 455 121 915 12 355 807 145 742 527 -10000 945 592 337 504 80 474 453 291 210 -10000 68 156 967 789 138 454 993 474 458 -10000 5 539 789 910 977 848 388 830 220 -10000 77 92 627 357 370 555 377 42 149 -10000 134 433 516 118 745 313 223 594 58 -10000 533 793 523 441 315 254 852 762 343 -10000 560 321 37 17 770 188 585 900 978 -10000 829 293 903 346 500 344 466 458 472 -10000 423 837 12 356 629 987 141 364 505 -10000 574 663 713 846 258 613 840 464 439 -10000 840 446 44 693 60 896 779 628 837 -10000 266 502 908 812 533 704 904 694 506 -10000 301 496 482 61 91 913 723 945 632 -10000 677 802 166 318 411 911 792 271 16 -10000 356 218 190 21 352 541 947 240 863 -10000 470 298 314 76 756 889 734 986 236 -10000 412 95 710 168 95 847 126 137 60 -10000 926 381 530 70 651 637 67 603 224 -10000 886 913 607 743 398 185 441 808 232 -10000 807 451 846 608 617 447 319 327 449 -10000 611 111 886 106 728 707 877 99 383 -10000 553 165 597 706 932 193 807 438 871 -10000 43 177 193 580 927 950 764 376 394 -10000 221 229 206 355 563 640 564 523 538 -10000 409 199 477 340 937 224 352 371 813 -10000 44 578 940 468 48 663 500 970 874 -10000 502 643 656 537 9 745 601 753 207 -10000 198 748 274 671 208 967 638 541 218 -10000 850 643 320 662 867 37 776 207 430 -10000 647 735 69 314 930 48 654 870 691 -10000 71 522 172 19 578 39 626 116 59 -10000 392 235 370 154 652 542 396 284 672 -10000 290 176 451 308 697 991 590 396 101 -10000 120 779 195 121 358 691 939 593 586 -10000 495 176 177 877 536 548 351 859 273 -10000 475 507 434 80 631 749 991 832 77 -10000 785 534 535 902 792 973 715 406 445 -10000 231 800 102 266 461 84 360 148 397 -10000 869 365 436 480 305 956 818 152 731 -10000 655 571 155 342 557 333 318 787 404 -10000 825 88 753 454 975 6 501 92 804 -10000 746 747 798 170 628 802 56 360 381 -10000 252 247 336 485 135 804 476 822 858 -10000 410 988 656 767 318 183 68 715 829 -10000 298 287 640 195 540 214 255 492 550 -10000 978 306 825 767 28 719 976 288 869 -10000 357 278 539 584 846 483 692 346 967 -10000 346 434 675 184 60 764 510 760 726 -10000 118 320 860 154 343 483 461 727 707 -10000 49 701 318 862 729 65 391 305 376 -10000 115 932 920 57 164 5 895 689 367 -10000 198 642 804 702 709 471 496 491 805 -10000 140 62 549 946 558 769 120 518 69 -10000 470 526 897 10 95 919 87 475 77 -10000 325 961 415 344 357 575 112 639 978 -10000 123 86 416 801 636 265 377 194 296 -10000 367 319 430 618 246 889 3 764 784 -10000 831 55 843 386 179 901 691 588 706 -10000 346 458 542 169 454 78 556 75 702 -10000 351 24 480 737 380 984 345 748 215 -10000 754 346 43 948 623 854 878 153 355 -10000 721 345 715 542 769 489 574 665 151 -10000 12 767 893 453 384 712 40 29 619 -10000 505 0 827 906 272 239 614 180 958 -10000 371 743 747 626 822 548 954 322 185 -10000 312 568 725 929 279 673 455 402 870 -10000 47 355 779 255 612 810 360 144 628 -10000 760 80 469 891 731 242 269 816 68 -10000 407 860 596 368 118 949 453 592 468 -10000 232 863 236 473 384 601 428 492 889 -10000 793 66 66 642 469 429 526 554 905 -10000 598 148 448 25 156 656 408 337 107 -10000 288 198 541 750 274 692 252 535 374 -10000 655 78 410 505 553 674 901 335 33 -10000 820 811 158 207 607 686 195 824 363 -10000 138 505 800 710 495 756 256 819 65 -10000 258 538 194 273 407 322 646 531 764 -10000 131 750 351 152 188 841 201 629 201 -10000 998 843 193 208 357 677 151 574 451 -10000 328 813 288 859 639 723 885 580 594 -10000 77 151 55 20 80 675 329 218 19 -10000 20 799 260 464 193 29 715 276 544 -10000 372 270 438 664 452 633 859 308 879 -10000 539 962 951 486 948 450 834 963 974 -10000 559 819 95 368 965 392 430 389 646 -10000 684 778 778 454 544 499 447 694 940 -10000 50 981 64 376 201 108 688 375 611 -10000 717 592 26 803 917 103 168 1 88 -10000 394 834 249 527 51 264 307 709 680 -10000 706 149 235 182 886 369 428 776 753 -10000 418 416 977 989 790 854 261 64 865 -10000 485 680 222 926 896 196 60 62 902 -10000 718 311 959 525 203 943 921 737 629 -10000 977 797 125 376 993 479 164 230 264 -10000 291 627 759 584 173 59 946 456 297 -10000 943 663 767 314 95 967 279 258 219 -10000 201 293 861 14 467 619 136 294 7 -10000 37 190 860 947 251 114 1000 192 699 -10000 499 456 248 940 193 568 943 22 32 -10000 654 506 943 438 193 480 112 664 602 -10000 124 14 980 142 607 865 365 133 233 -10000 503 476 648 19 78 585 693 686 542 -10000 968 27 299 774 740 766 120 197 46 -10000 786 476 171 268 847 204 505 691 86 -10000 426 683 922 935 900 959 586 431 121 -10000 984 529 453 29 291 77 189 504 74 -10000 357 341 526 507 443 921 62 103 9 -10000 152 882 910 44 947 380 726 189 675 -10000 974 296 334 744 793 994 39 797 668 -10000 155 761 448 257 173 882 705 320 27 -10000 582 267 193 919 415 413 476 460 462 -10000 452 567 214 725 18 792 535 471 324 -10000 571 478 130 282 658 91 901 33 121 -10000 119 609 858 811 591 130 383 765 456 -10000 689 577 156 343 208 580 367 198 92 -10000 509 610 455 117 434 96 499 298 703 -10000 257 872 693 957 717 468 620 272 725 -10000 119 612 612 572 849 293 410 184 449 -10000 813 107 399 524 515 975 478 875 109 -10000 707 393 76 740 460 314 975 413 306 -10000 680 766 747 26 921 154 102 762 603 -10000 930 618 288 614 622 804 726 225 651 -10000 801 609 242 910 252 717 110 386 310 -10000 879 738 959 218 835 761 620 866 623 -10000 421 163 212 39 356 19 7 961 843 -10000 8 605 891 796 80 511 619 480 0 -10000 719 106 388 704 290 641 308 129 889 -10000 628 694 137 583 917 17 718 430 137 -10000 640 675 274 567 490 450 505 382 649 -10000 464 228 679 757 708 194 875 790 379 -10000 531 324 467 598 495 984 710 364 390 -10000 486 942 982 767 458 132 716 200 312 -10000 285 377 121 694 604 570 152 787 240 -10000 546 528 596 709 2 973 947 397 927 -10000 564 76 279 921 822 38 928 950 859 -10000 430 88 561 26 331 716 533 894 930 -10000 386 833 355 855 306 807 228 604 34 -10000 879 434 985 459 636 706 824 446 718 -10000 454 198 919 567 147 112 48 976 369 -10000 379 28 20 329 640 480 200 714 961 -10000 701 74 855 520 403 521 807 250 50 -10000 460 51 663 638 40 912 567 163 205 -10000 880 133 973 274 942 828 210 696 991 -10000 909 746 287 563 811 151 54 613 174 -10000 35 415 834 610 510 247 500 510 51 -10000 782 291 457 441 3 886 657 484 234 -10000 705 965 152 31 225 585 680 498 108 -10000 944 393 331 979 495 38 575 280 204 -10000 161 558 44 67 429 423 969 191 454 -10000 547 255 545 54 355 815 346 262 753 -10000 289 366 212 100 890 753 77 343 62 -10000 883 912 999 597 237 832 607 433 496 -10000 330 54 580 540 958 517 312 394 500 -10000 917 64 947 974 139 475 443 784 882 -10000 351 974 15 2 613 159 652 313 808 -10000 346 67 682 441 813 58 324 693 260 -10000 388 993 106 362 294 264 86 292 433 -10000 185 750 826 315 357 542 215 173 796 -10000 332 984 482 569 686 169 11 389 271 -10000 19 649 40 760 234 770 100 143 928 -10000 701 580 243 841 974 443 32 120 35 -10000 295 38 797 95 618 317 228 175 300 -10000 289 721 161 434 887 301 499 505 68 -10000 979 700 177 837 358 24 669 94 750 -10000 393 242 993 337 992 998 51 534 595 -10000 399 513 494 499 79 545 446 519 457 -10000 527 435 67 43 884 23 429 594 889 -10000 969 55 698 792 468 392 642 908 832 -10000 161 784 76 892 866 152 680 102 18 -10000 332 975 908 283 845 336 550 967 22 -10000 306 826 661 654 68 330 208 529 408 -10000 520 82 393 968 77 14 629 266 381 -10000 923 611 945 50 28 972 473 246 306 -10000 372 179 388 386 692 775 714 805 438 -10000 124 868 500 990 775 592 124 818 253 -10000 734 863 257 689 853 137 501 721 557 -10000 62 542 379 448 607 812 297 140 242 -10000 669 470 941 979 668 516 261 302 607 -10000 143 391 730 510 450 160 211 430 943 -10000 213 511 438 536 922 298 919 155 606 -10000 352 369 699 593 871 148 671 706 136 -10000 201 399 568 508 945 732 780 17 152 -10000 764 937 71 263 142 558 545 380 285 -10000 569 866 141 62 374 506 483 840 430 -10000 845 413 632 407 731 846 705 852 854 -10000 546 938 381 18 893 428 594 143 81 -10000 462 912 960 802 107 208 518 512 281 -10000 547 764 850 194 910 936 390 925 540 -10000 679 114 168 138 75 11 260 115 301 -10000 30 747 210 294 993 755 147 844 931 -10000 13 953 587 161 705 513 713 659 549 -10000 421 690 423 357 153 207 372 0 890 -10000 553 165 940 238 465 535 776 269 558 -10000 389 203 983 544 176 662 363 795 387 -10000 145 491 832 116 893 992 302 626 661 -10000 389 629 967 72 953 136 96 551 859 -10000 726 989 28 542 736 997 454 822 487 -10000 875 9 291 503 768 548 674 409 393 -10000 337 551 809 187 940 794 881 688 529 -10000 613 912 818 591 580 280 65 398 71 -10000 209 827 546 582 724 686 357 59 443 -10000 491 796 280 527 20 352 650 955 202 -10000 122 273 613 260 639 488 203 769 8 -10000 812 335 372 828 297 97 735 424 550 -10000 586 418 709 558 304 328 719 746 604 -10000 683 237 481 439 565 231 846 116 584 -10000 156 361 280 243 217 151 834 207 551 -10000 809 967 268 192 136 621 468 284 420 -10000 88 664 826 467 383 299 617 191 733 -10000 836 615 345 892 595 849 696 313 696 -10000 263 350 37 24 675 44 841 133 385 -10000 844 79 790 172 350 123 923 15 810 -10000 65 952 669 270 656 690 5 530 920 -10000 853 890 207 242 343 939 80 75 175 -10000 604 534 460 706 484 660 714 191 57 -10000 626 677 8 50 151 581 414 637 274 -10000 329 710 560 671 344 408 965 606 230 -10000 232 460 918 41 943 624 347 461 351 -10000 991 670 751 377 126 665 638 565 190 -10000 295 625 455 304 50 464 809 787 963 -10000 818 619 700 239 293 822 787 898 574 -10000 984 195 169 867 311 106 383 941 841 -10000 109 792 785 237 918 766 605 517 981 -10000 601 372 77 423 934 708 13 449 930 -10000 210 123 1000 7 286 127 637 53 452 -10000 449 79 851 458 662 633 737 629 720 -10000 555 15 895 849 883 680 266 372 225 -10000 201 732 250 744 145 293 278 549 809 -10000 167 530 820 242 409 571 597 632 642 -10000 10 822 711 369 61 763 887 580 78 -10000 10 407 874 623 849 506 454 944 637 -10000 491 107 1 225 596 272 263 637 153 -10000 833 478 308 617 562 633 451 214 142 -10000 347 459 5 751 731 912 870 525 626 -10000 98 365 99 33 588 655 779 164 207 -10000 646 924 528 623 802 688 467 991 926 -10000 483 544 717 491 711 348 379 484 267 -10000 28 473 644 889 872 506 889 745 656 -10000 519 660 282 750 36 487 37 20 720 -10000 169 190 380 699 809 557 633 18 867 -10000 14 360 6 492 499 689 629 536 646 -10000 253 40 482 875 402 485 757 695 539 -10000 478 109 308 46 156 59 292 831 452 -10000 825 989 555 735 572 607 444 107 873 -10000 382 797 813 611 554 629 787 843 106 -10000 736 418 144 173 51 413 153 907 123 -10000 403 648 946 586 41 483 333 66 504 -10000 378 683 258 320 314 907 437 674 801 -10000 974 348 867 671 366 317 479 212 422 -10000 545 80 656 800 124 107 717 119 327 -10000 639 340 672 954 596 175 334 519 459 -10000 870 436 265 442 5 490 726 660 945 -10000 174 822 848 310 315 720 78 642 843 -10000 187 301 673 392 173 89 426 378 807 -10000 121 195 622 159 359 486 655 458 980 -10000 863 167 951 470 919 565 350 782 37 -10000 842 301 524 241 55 848 363 853 489 -10000 23 249 861 109 198 409 652 504 604 -10000 890 210 851 299 381 456 383 615 665 -10000 983 166 155 275 615 165 720 913 305 -10000 996 626 492 598 358 499 181 721 630 -10000 619 909 11 901 38 816 877 460 463 -10000 337 70 788 776 625 853 95 990 605 -10000 815 487 175 31 148 415 850 670 666 -10000 179 338 133 843 526 684 998 80 176 -10000 47 610 451 289 459 327 181 948 888 -10000 824 461 910 776 348 745 215 650 816 -10000 259 139 586 602 248 900 239 614 121 -10000 180 501 2 763 264 324 825 41 155 -10000 891 599 114 291 740 669 924 491 893 -10000 362 655 320 68 916 735 732 329 441 -10000 697 273 808 989 862 507 279 103 845 -10000 968 55 361 193 389 495 968 441 20 -10000 357 526 388 706 100 252 253 541 949 -10000 46 472 381 822 377 944 516 280 243 -10000 682 354 748 225 533 997 876 523 387 -10000 848 932 834 42 489 702 674 358 154 -10000 311 211 835 372 796 49 297 446 453 -10000 529 994 631 216 716 297 617 831 285 -10000 305 376 704 786 143 417 434 193 866 -10000 503 887 209 140 901 912 242 142 757 -10000 208 712 302 586 118 149 872 585 181 -10000 645 860 470 291 907 612 465 266 547 -10000 84 996 964 363 9 14 823 389 987 -10000 273 813 914 222 735 195 464 196 854 -10000 81 354 536 385 523 661 244 535 955 -10000 86 942 180 303 290 697 55 751 805 -10000 975 321 835 236 58 537 553 65 48 -10000 151 391 840 116 94 407 547 582 214 -10000 745 69 246 544 135 395 947 711 739 -10000 605 75 116 672 448 636 800 380 347 -10000 526 245 583 937 956 888 10 692 137 -10000 714 500 326 233 84 94 444 380 486 -10000 47 3 607 365 2 107 591 181 271 -10000 643 143 231 536 747 991 286 157 290 -10000 331 120 39 501 476 601 904 78 804 -10000 862 233 637 641 988 755 187 636 69 -10000 894 429 901 12 463 447 951 337 976 -10000 113 695 749 825 268 827 639 75 251 -10000 353 429 426 478 830 311 620 407 596 -10000 851 27 826 822 64 13 891 153 282 -10000 525 863 595 429 71 945 186 692 927 -10000 920 463 673 223 312 876 616 289 861 -10000 737 38 540 687 442 807 775 254 767 -10000 849 329 413 396 714 387 183 399 980 -10000 118 76 946 389 617 752 982 720 963 -10000 692 86 870 131 594 209 546 776 465 -10000 95 66 537 491 405 314 74 509 791 -10000 233 157 590 767 921 800 100 636 366 -10000 814 961 650 994 767 826 107 474 537 -10000 885 441 774 135 634 217 624 154 836 -10000 732 23 3 516 455 272 371 425 241 -10000 798 38 781 729 826 304 713 642 646 -10000 482 803 647 157 450 175 826 931 860 -10000 711 320 47 925 985 931 424 854 688 -10000 599 398 317 739 833 955 245 736 124 -10000 484 908 425 311 610 654 976 874 889 -10000 189 870 348 825 911 623 722 15 875 -10000 196 344 316 31 55 647 845 509 179 -10000 931 615 987 234 77 847 567 593 23 -10000 308 240 47 106 951 433 936 931 399 -10000 542 122 467 343 907 770 233 385 430 -10000 763 527 502 325 608 1000 508 468 866 -10000 709 507 660 152 846 440 966 20 320 -10000 981 221 758 308 625 897 467 437 90 -10000 799 756 756 256 102 264 131 172 72 -10000 408 454 39 329 919 302 973 75 776 -10000 323 923 210 280 902 877 39 599 536 -10000 27 454 208 858 783 536 747 775 191 -10000 413 252 31 255 465 584 149 583 484 -10000 247 426 96 292 852 505 330 375 325 -10000 164 84 774 119 203 417 713 18 653 -10000 60 636 911 581 127 18 948 90 817 -10000 103 357 943 549 924 713 758 219 997 -10000 341 285 535 774 839 736 305 973 350 -10000 861 845 482 574 542 256 22 651 891 -10000 94 987 531 390 217 880 220 57 181 -10000 282 781 501 83 653 120 441 635 83 -10000 53 375 542 912 599 905 642 385 217 -10000 281 861 937 224 444 498 433 157 295 -10000 775 120 785 521 463 349 416 700 890 -10000 323 512 736 799 691 636 573 616 832 -10000 528 325 167 966 697 132 878 863 435 -10000 518 808 971 735 149 787 821 302 93 -10000 583 362 929 860 936 763 504 182 36 -10000 400 576 325 807 800 75 128 623 463 -10000 694 969 842 233 911 623 379 483 31 -10000 227 513 629 705 710 621 55 545 930 -10000 331 196 994 758 153 585 942 522 694 -10000 570 137 925 225 280 3 446 198 693 -10000 488 252 111 410 225 49 144 1 52 -10000 809 985 889 512 545 633 563 502 107 -10000 326 851 474 78 16 637 431 504 899 -10000 738 74 137 243 862 938 970 508 377 -10000 509 255 424 82 540 172 655 905 278 -10000 705 264 287 192 189 28 865 568 333 -10000 299 394 758 757 171 148 106 493 859 -10000 220 279 872 842 571 377 826 946 591 -10000 268 224 583 426 1000 945 636 146 538 -10000 157 273 78 241 664 444 26 122 987 -10000 670 827 463 875 522 563 867 856 66 -10000 908 260 127 578 794 586 214 490 782 -10000 350 479 277 206 66 158 725 18 74 -10000 84 242 199 620 872 486 86 561 60 -10000 983 684 517 108 934 477 831 278 773 -10000 262 640 550 743 889 198 874 339 806 -10000 861 858 495 744 333 916 570 225 55 -10000 414 205 3 275 308 572 80 628 700 -10000 987 607 619 691 250 952 629 218 439 -10000 129 644 556 412 135 960 47 845 969 -10000 164 677 11 253 339 542 838 712 516 -10000 229 698 496 272 822 951 499 405 338 -10000 863 693 586 817 195 551 745 109 27 -10000 455 557 464 633 759 458 909 342 639 -10000 52 206 69 245 31 157 747 936 899 -10000 989 376 954 892 42 49 439 984 885 -10000 429 261 155 492 799 471 384 9 411 -10000 913 170 818 291 693 275 413 44 318 -10000 987 206 64 823 230 716 343 201 812 -10000 939 364 46 552 101 240 18 888 438 -10000 875 995 146 898 113 704 84 454 551 -10000 747 673 545 256 182 224 301 378 1000 -10000 773 980 112 111 525 773 993 342 838 -10000 603 211 488 582 876 118 176 705 671 -10000 374 760 911 125 530 646 471 682 865 -10000 190 198 336 445 434 77 148 906 576 -10000 835 486 764 993 459 244 232 561 488 -10000 391 675 902 481 665 252 523 849 191 -10000 328 87 381 739 70 389 444 995 671 -10000 505 843 213 615 247 382 85 859 86 -10000 394 592 697 872 623 610 222 928 350 -10000 116 397 880 340 85 731 169 385 124 -10000 556 642 481 228 112 907 583 702 64 -10000 524 479 866 315 171 456 356 948 82 -10000 82 213 151 989 106 391 413 320 691 -10000 350 504 47 538 873 251 154 993 432 -10000 183 755 369 388 118 301 220 607 700 -10000 412 113 965 257 23 852 925 233 832 -10000 938 762 57 693 408 551 645 739 968 -10000 278 169 939 571 733 935 542 746 71 -10000 271 615 736 278 557 498 353 529 792 -10000 786 445 457 534 75 406 991 62 120 -10000 664 104 427 92 607 860 83 514 151 -10000 775 623 849 637 484 920 284 344 131 -10000 113 831 387 391 732 832 55 889 928 -10000 289 322 290 567 697 186 484 588 486 -10000 516 729 583 597 539 252 826 508 196 -10000 623 841 766 901 725 375 108 473 781 -10000 371 294 118 740 519 6 347 214 336 -10000 53 809 140 904 810 355 539 352 907 -10000 136 971 153 382 24 701 555 591 178 -10000 857 821 563 106 242 194 196 609 150 -10000 949 392 495 912 393 190 352 518 516 -10000 469 146 334 432 251 313 565 934 611 -10000 778 304 711 892 835 601 892 490 103 -10000 391 541 887 182 949 752 888 649 549 -10000 466 279 994 114 813 862 267 689 462 -10000 293 851 678 65 974 904 227 178 726 -10000 576 910 176 569 735 531 387 392 863 -10000 251 432 785 288 867 627 530 222 64 -10000 881 215 980 569 204 933 26 924 562 -10000 620 560 885 844 54 751 858 805 593 -10000 731 159 752 937 28 145 213 131 69 -10000 257 54 695 68 715 248 547 969 454 -10000 679 35 878 610 855 102 467 362 400 -10000 254 399 530 337 546 352 392 451 445 -10000 498 453 663 977 249 272 211 59 521 -10000 663 6 579 897 18 743 866 116 917 -10000 145 826 36 798 472 939 642 502 541 -10000 260 335 889 494 301 827 527 238 468 -10000 186 43 191 955 211 3 300 49 923 -10000 179 560 347 777 963 680 84 339 799 -10000 540 971 405 978 798 117 253 482 672 -10000 532 499 777 763 400 752 376 847 577 -10000 585 926 92 901 349 60 413 705 759 -10000 979 907 854 165 913 117 717 841 803 -10000 227 716 356 136 532 392 853 907 202 -10000 751 499 586 136 5 489 514 824 985 -10000 131 453 966 559 966 151 483 941 72 -10000 746 539 65 450 632 924 175 239 864 -10000 289 484 10 872 975 863 471 113 985 -10000 392 940 393 91 986 741 210 238 484 -10000 536 353 320 827 219 534 337 699 365 -10000 641 597 946 659 212 639 44 470 793 -10000 613 705 567 445 360 69 848 717 561 -10000 951 2 262 422 967 382 431 779 427 -10000 695 921 834 42 880 21 189 559 263 -10000 167 64 341 826 488 136 22 627 112 -10000 771 637 824 519 102 221 257 905 152 -10000 524 924 622 305 604 976 199 152 442 -10000 724 442 233 480 892 122 111 960 686 -10000 162 3 683 729 163 823 391 823 587 -10000 615 847 608 336 229 557 936 727 102 -10000 448 390 764 21 141 38 625 451 60 -10000 139 374 583 46 850 553 245 386 398 -10000 482 89 450 763 565 43 83 919 945 -10000 186 679 352 556 895 531 174 660 753 -10000 245 46 488 979 711 968 223 199 393 -10000 638 558 362 973 999 25 710 241 757 -10000 950 41 138 945 657 3 634 581 127 -10000 125 790 243 941 701 682 776 544 536 -10000 217 88 870 771 88 574 71 536 263 -10000 686 594 711 779 45 28 771 849 292 -10000 618 736 754 292 990 298 682 278 139 -10000 920 408 996 769 407 705 964 725 118 -10000 804 275 171 948 501 443 704 601 150 -10000 186 324 85 233 668 812 396 733 199 -10000 986 284 525 240 363 482 809 57 564 -10000 440 995 887 409 830 349 415 878 690 -10000 610 934 497 722 411 880 678 294 662 -10000 957 714 320 444 974 124 933 678 878 -10000 217 964 356 835 735 629 141 596 370 -10000 599 79 179 692 960 998 750 417 923 -10000 343 476 592 767 281 12 906 550 222 -10000 352 601 693 226 896 397 238 727 832 -10000 415 252 187 35 627 956 935 316 937 -10000 702 22 664 59 608 521 519 208 432 -10000 870 602 144 50 33 769 868 983 264 -10000 871 297 492 391 540 819 698 818 266 -10000 390 98 24 560 444 340 61 706 196 -10000 993 144 418 516 101 436 343 935 481 -10000 967 464 783 901 294 627 832 809 805 -10000 495 83 661 930 299 334 242 909 635 -10000 608 82 187 382 769 284 696 700 619 -10000 34 896 237 355 337 957 27 696 327 -10000 957 447 955 726 121 26 644 381 523 -10000 565 148 871 91 946 370 109 404 884 -10000 919 953 846 605 184 699 929 126 720 -10000 691 17 210 67 294 418 276 644 647 -10000 799 912 643 800 233 79 286 307 986 -10000 246 972 884 314 703 100 34 955 435 -10000 912 55 677 705 290 993 337 809 523 -10000 606 695 249 265 905 288 147 158 8 -10000 920 240 610 108 287 628 103 392 540 -10000 50 530 585 880 58 297 827 363 222 -10000 320 901 528 123 961 816 321 588 887 -10000 621 197 101 477 355 239 34 59 945 -10000 191 708 833 21 234 462 389 193 879 -10000 262 878 710 562 891 6 447 821 418 -10000 166 336 722 18 698 416 107 861 853 -10000 213 158 146 482 775 213 557 361 312 -10000 411 7 705 859 795 717 500 160 820 -10000 585 381 905 100 929 286 853 771 737 -10000 672 381 606 123 469 341 734 11 1 -10000 180 484 437 469 42 214 261 442 633 -10000 166 176 217 67 151 906 329 289 67 -10000 978 806 173 115 599 627 962 412 192 -10000 529 811 746 527 566 681 322 528 237 -10000 966 971 933 400 504 951 779 996 721 -10000 821 79 570 677 932 585 378 149 713 -10000 807 748 613 849 541 170 145 70 526 -10000 983 734 193 898 851 967 640 869 171 -10000 300 649 878 198 47 824 963 468 529 -10000 789 674 549 433 549 798 117 593 739 -10000 500 440 960 276 482 947 391 110 303 -10000 155 827 735 363 51 62 569 297 795 -10000 107 121 613 786 255 910 384 277 807 -10000 338 1000 716 831 763 341 707 572 550 -10000 488 310 450 497 640 599 752 743 228 -10000 779 488 498 241 586 261 316 18 439 -10000 340 342 222 371 819 764 809 137 142 -10000 442 20 52 826 216 71 172 735 436 -10000 293 434 87 113 175 30 776 204 748 -10000 786 30 849 116 266 204 770 138 26 -10000 844 744 88 685 409 50 127 926 818 -10000 849 193 657 134 25 368 84 369 847 -10000 740 362 628 746 863 255 83 904 704 -10000 167 723 194 670 558 723 286 448 298 -10000 461 763 401 773 457 235 410 443 809 -10000 201 647 798 834 372 255 312 27 574 -10000 691 770 424 132 739 693 826 107 896 -10000 46 488 768 502 172 787 315 32 571 -10000 402 544 148 21 601 101 938 381 908 -10000 615 567 45 618 192 514 40 357 605 -10000 74 480 512 841 112 526 838 974 549 -10000 279 665 318 540 425 304 454 180 995 -10000 68 566 131 627 637 781 690 589 62 -10000 205 644 905 596 657 691 960 684 501 -10000 650 214 819 254 410 715 675 266 526 -10000 106 141 614 269 955 506 269 331 576 -10000 548 19 675 648 332 157 575 927 173 -10000 482 415 664 125 295 859 931 658 208 -10000 230 741 588 242 453 480 964 896 611 -10000 403 216 950 577 968 83 238 873 182 -10000 708 533 839 123 953 95 327 420 222 -10000 694 981 225 949 957 131 204 867 14 -10000 956 822 165 33 500 895 395 210 439 -10000 598 549 917 251 225 912 671 665 975 -10000 337 57 396 252 795 420 242 453 266 -10000 941 161 461 223 369 73 761 297 246 -10000 925 81 72 534 172 86 344 495 980 -10000 810 456 107 473 318 933 706 486 917 -10000 127 169 242 468 530 174 963 189 454 -10000 477 554 620 546 298 411 318 907 494 -10000 594 79 918 708 74 265 59 460 351 -10000 273 413 915 202 87 527 500 683 477 -10000 631 294 711 267 385 726 170 581 597 -10000 641 886 403 250 825 400 870 423 196 -10000 678 207 809 472 606 884 931 387 573 -10000 505 406 122 247 548 736 945 574 787 -10000 651 64 799 481 302 672 951 368 834 -10000 43 26 568 388 461 114 889 972 584 -10000 886 578 532 416 540 693 876 506 958 -10000 616 10 522 228 578 377 670 820 466 -10000 778 333 131 610 458 524 681 807 469 -10000 837 303 510 535 795 320 133 665 319 -10000 638 881 400 513 962 339 256 647 510 -10000 364 391 151 534 419 368 649 881 431 -10000 834 38 455 815 1 190 423 174 313 -10000 100 637 134 109 633 103 501 355 469 -10000 381 609 221 177 255 307 81 717 447 -10000 426 649 559 934 563 277 231 416 679 -10000 509 104 418 829 770 547 320 624 762 -10000 758 124 777 65 675 11 719 112 722 -10000 953 971 273 173 621 306 571 97 625 -10000 956 17 621 110 519 675 182 320 290 -10000 74 263 92 74 364 498 875 170 952 -10000 850 896 271 28 712 187 705 695 557 -10000 162 835 850 560 187 649 246 79 565 -10000 193 97 479 471 39 192 436 627 793 -10000 72 153 332 224 993 647 303 980 276 -10000 266 892 759 397 709 469 598 534 801 -10000 975 600 502 938 486 525 142 218 530 -10000 604 81 290 327 704 450 21 265 431 -10000 129 790 111 275 574 650 464 313 571 -10000 50 157 403 676 201 792 315 402 993 -10000 738 267 234 900 904 338 476 656 127 -10000 301 495 600 211 101 455 942 710 798 -10000 915 859 150 997 778 607 27 705 586 -10000 87 29 706 393 503 103 230 45 137 -10000 634 266 942 237 281 8 293 815 511 -10000 905 619 527 326 613 655 890 145 300 -10000 317 837 663 892 706 754 981 172 58 -10000 534 6 180 773 893 486 618 119 411 -10000 486 796 111 969 396 435 237 84 84 -10000 90 949 308 199 241 745 183 624 440 -10000 886 482 108 604 580 288 136 42 73 -10000 776 133 935 991 638 959 839 709 490 -10000 23 608 672 120 67 615 12 616 209 -10000 787 743 609 639 351 467 200 116 167 -10000 201 150 65 456 550 711 145 599 332 -10000 195 68 542 901 450 724 813 841 763 -10000 409 546 128 955 215 586 730 966 415 -10000 993 822 264 275 936 66 890 699 737 -10000 63 696 464 433 410 609 653 626 232 -10000 707 187 963 321 14 381 401 582 689 -10000 391 215 441 779 305 52 399 945 446 -10000 98 693 929 856 384 118 953 349 330 -10000 33 913 966 919 985 504 817 634 953 -10000 650 847 921 409 784 370 457 439 446 -10000 647 169 358 679 604 144 91 363 429 -10000 44 475 394 983 17 730 835 543 109 -10000 436 323 702 326 731 904 494 529 491 -10000 973 614 403 0 776 690 475 175 318 -10000 654 158 490 598 821 71 318 315 427 -10000 909 434 437 295 982 15 723 247 487 -10000 720 339 684 103 942 106 504 177 708 -10000 154 702 996 85 874 681 600 646 991 -10000 540 822 52 646 631 389 842 642 423 -10000 261 723 94 166 811 567 353 403 447 -10000 487 866 667 560 758 451 844 413 418 -10000 825 873 958 965 582 703 92 573 683 -10000 913 275 686 756 346 921 632 32 354 -10000 21 565 87 151 900 196 489 187 942 -10000 742 39 898 830 948 460 980 968 296 -10000 263 211 827 372 213 352 606 339 403 -10000 525 691 847 261 564 742 254 446 602 -10000 460 883 676 262 954 602 93 72 240 -10000 497 172 247 586 736 905 47 577 404 -10000 47 678 0 520 293 788 681 960 419 -10000 444 151 585 130 176 778 94 861 772 -10000 181 57 659 614 37 70 455 46 285 -10000 361 305 465 200 851 836 244 799 602 -10000 750 387 298 417 253 978 218 523 709 -10000 746 117 132 811 836 197 633 59 664 -10000 465 755 497 656 223 720 80 179 786 -10000 891 729 960 797 311 58 295 245 486 -10000 853 739 882 943 174 460 100 290 700 -10000 667 789 948 350 231 587 867 241 559 -10000 445 404 200 396 358 708 875 872 983 -10000 825 948 559 58 742 980 281 190 997 -10000 262 655 633 982 296 859 383 235 917 -10000 710 361 572 129 274 542 613 933 625 -10000 409 840 718 210 218 504 992 547 559 -10000 777 946 631 27 666 969 826 167 862 -10000 943 978 272 146 338 601 875 579 368 -10000 753 824 872 631 810 108 818 724 683 -10000 936 48 784 23 474 676 734 859 53 -10000 666 108 420 489 469 544 118 676 234 -10000 626 523 765 419 418 772 73 598 82 -10000 971 722 161 129 69 952 56 662 430 -10000 9 388 814 316 563 667 839 340 38 -10000 605 137 985 942 961 551 990 596 643 -10000 644 818 15 902 809 578 466 497 381 -10000 903 125 165 897 413 446 491 112 93 -10000 117 913 18 884 90 160 646 570 969 -10000 290 97 181 656 533 996 963 91 205 -10000 357 420 854 274 815 469 42 34 62 -10000 261 447 816 230 216 661 186 39 300 -10000 941 929 949 109 351 577 412 877 459 -10000 848 50 942 913 230 109 454 505 919 -10000 422 544 854 504 416 11 29 662 253 -10000 648 917 242 236 570 788 787 516 858 -10000 408 757 495 373 68 183 915 294 331 -10000 729 681 692 781 698 833 404 555 379 -10000 178 506 729 571 103 445 887 869 98 -10000 629 260 290 506 197 633 959 891 343 -10000 277 627 250 831 971 238 485 464 707 -10000 515 674 897 791 376 75 886 330 650 -10000 254 139 349 63 479 205 165 687 881 -10000 197 540 875 334 589 313 405 256 151 -10000 454 707 538 709 940 821 739 335 773 -10000 81 751 509 432 958 707 170 64 629 -10000 80 438 22 172 218 677 321 374 429 -10000 568 481 527 44 878 396 577 433 830 -10000 390 885 732 734 165 340 877 999 1 -10000 908 315 400 953 990 226 225 567 423 -10000 453 406 470 793 9 364 53 638 985 -10000 287 889 637 617 312 102 432 156 845 -10000 813 995 411 3 730 323 824 300 945 -10000 270 614 245 504 838 879 498 787 675 -10000 76 111 614 928 783 222 863 683 256 -10000 154 863 266 307 258 94 937 566 185 -10000 318 628 948 374 170 23 276 705 721 -10000 751 722 673 209 557 664 300 989 894 -10000 181 112 272 606 466 644 658 154 555 -10000 909 243 349 374 320 185 331 901 255 -10000 848 866 1000 768 952 263 108 628 174 -10000 625 590 108 505 361 649 409 346 909 -10000 96 638 453 173 934 819 653 73 737 -10000 799 642 632 967 610 85 448 778 505 -10000 522 977 986 588 225 692 377 664 534 -10000 18 298 359 166 833 174 99 315 920 -10000 134 352 866 168 578 298 99 977 985 -10000 538 393 592 286 685 69 77 943 902 -10000 411 178 395 676 880 895 306 18 387 -10000 184 681 868 847 970 195 393 494 766 -10000 50 183 934 190 836 552 522 570 878 -10000 70 376 194 885 226 229 791 506 377 -10000 779 152 291 161 638 539 249 863 536 -10000 997 776 422 751 973 685 837 884 315 -10000 125 524 955 353 98 419 409 305 202 -10000 794 92 769 22 103 790 743 413 17 -10000 739 382 889 687 924 441 180 32 691 -10000 663 789 297 752 179 933 541 16 931 -10000 272 708 168 492 54 74 574 992 909 -10000 522 374 414 163 319 868 356 736 327 -10000 936 387 873 668 608 218 925 722 71 -10000 487 120 755 261 739 765 394 174 746 -10000 77 859 565 52 939 225 494 19 117 -10000 47 801 1 291 342 126 488 861 996 -10000 442 187 555 262 762 695 297 308 129 -10000 681 766 549 304 884 491 59 714 89 -10000 343 183 601 946 380 35 559 480 106 -10000 681 533 156 672 320 422 763 288 190 -10000 43 734 912 899 671 751 460 74 417 -10000 872 822 456 967 492 82 146 552 720 -10000 228 159 275 705 301 280 58 346 443 -10000 9 210 51 748 680 655 387 779 140 -10000 784 783 936 274 856 996 89 231 126 -10000 802 632 667 357 247 625 334 689 445 -10000 917 644 972 228 962 848 317 169 619 -10000 706 78 444 406 847 683 609 419 697 -10000 39 142 110 700 212 194 691 836 987 -10000 555 562 894 704 777 455 23 102 865 -10000 645 710 492 203 815 161 880 839 760 -10000 172 296 46 903 112 202 561 275 183 -10000 741 815 553 746 442 209 131 223 1000 -10000 453 554 721 822 460 191 134 326 399 -10000 400 22 619 497 130 188 293 164 528 -10000 308 402 592 707 3 478 607 798 535 -10000 93 200 303 403 770 933 54 982 154 -10000 860 195 528 167 384 447 96 373 228 -10000 835 873 513 16 357 129 180 595 410 -10000 493 295 712 552 345 730 382 361 726 -10000 758 56 735 378 189 947 60 721 953 -10000 893 134 560 265 490 749 986 891 137 -10000 541 511 375 57 83 75 289 68 745 -10000 408 111 650 309 588 582 717 867 795 -10000 148 731 41 592 69 964 796 386 629 -10000 18 966 666 578 105 278 259 591 174 -10000 92 759 661 264 48 966 453 617 801 -10000 669 162 956 234 759 337 86 239 302 -10000 881 6 296 911 809 302 543 464 422 -10000 200 771 637 271 598 917 303 125 2 -10000 108 229 319 653 158 679 909 104 311 -10000 55 938 537 871 604 3 590 989 792 -10000 577 152 586 603 567 117 268 943 276 -10000 379 795 594 972 627 254 673 331 135 -10000 111 516 727 910 526 402 904 790 368 -10000 200 382 932 351 330 455 739 903 275 -10000 962 487 816 28 569 693 337 405 618 -10000 412 493 141 728 852 593 908 302 628 -10000 98 753 291 372 135 538 451 261 676 -10000 396 405 556 330 874 346 703 877 201 -10000 554 626 182 983 413 177 210 329 945 -10000 228 23 713 417 212 223 350 45 747 -10000 498 928 104 525 7 650 275 28 261 -10000 764 496 554 624 599 992 606 494 518 -10000 31 623 937 342 191 907 737 687 870 -10000 105 323 63 665 47 624 467 58 71 -10000 487 91 885 939 823 780 214 964 686 -10000 735 430 385 197 74 716 801 813 431 -10000 190 795 744 537 517 336 737 511 908 -10000 784 558 51 66 288 6 768 492 671 -10000 977 10 995 342 735 758 602 780 785 -10000 487 81 560 214 39 692 290 524 690 -10000 124 821 643 986 461 631 324 693 238 -10000 10 945 398 375 56 92 251 447 20 -10000 745 430 722 760 810 549 389 431 553 -10000 908 228 44 150 589 629 31 626 516 -10000 596 73 675 311 609 246 925 196 308 -10000 470 920 569 372 436 235 522 644 279 -10000 381 756 326 541 798 831 32 478 294 -10000 322 421 24 562 886 737 554 850 157 -10000 721 677 871 666 503 573 556 504 792 -10000 286 229 899 942 507 536 265 916 93 -10000 138 585 136 765 530 536 193 826 775 -10000 558 55 888 15 232 753 770 291 562 -10000 846 175 696 736 206 618 495 577 912 -10000 601 534 811 137 216 91 941 907 619 -10000 241 275 484 848 888 389 584 906 879 -10000 179 340 113 744 193 412 692 344 961 -10000 572 27 855 811 464 226 755 329 907 -10000 583 908 520 216 919 67 764 453 425 -10000 77 744 68 454 156 646 244 372 410 -10000 819 425 45 675 173 123 680 599 809 -10000 901 543 215 438 845 198 18 546 310 -10000 274 639 520 353 63 525 358 168 714 -10000 154 542 539 824 502 277 966 171 255 -10000 60 637 217 763 736 326 426 114 876 -10000 453 95 740 689 408 611 314 103 925 -10000 486 237 243 490 836 141 314 401 730 -10000 726 684 56 498 974 597 454 195 142 -10000 517 16 11 426 520 744 540 753 144 -10000 884 185 916 79 734 60 978 987 367 -10000 674 263 604 939 969 233 108 398 389 -10000 229 608 143 535 246 332 713 619 452 -10000 813 300 85 456 376 389 350 861 168 -10000 988 921 405 867 999 252 142 706 73 -10000 650 221 138 639 271 675 240 601 125 -10000 587 822 823 645 202 209 402 680 413 -10000 857 105 705 581 1 324 757 39 859 -10000 762 728 54 715 130 201 281 131 279 -10000 345 897 745 959 923 950 419 935 476 -10000 291 273 355 841 490 292 560 115 322 -10000 333 179 579 474 582 863 992 785 108 -10000 400 268 49 639 83 18 725 319 362 -10000 932 277 950 316 912 575 517 62 577 -10000 806 431 646 461 133 74 159 68 556 -10000 313 401 843 444 554 739 357 976 467 -10000 551 940 121 320 401 140 18 471 91 -10000 639 397 676 913 121 732 785 394 565 -10000 635 995 630 230 669 466 716 411 678 -10000 632 821 256 640 107 507 946 259 413 -10000 341 227 112 246 998 241 710 409 95 -10000 215 836 397 719 418 27 763 14 340 -10000 825 932 185 478 952 153 112 60 550 -10000 387 406 216 531 2 837 574 499 845 -10000 760 474 378 223 608 350 282 733 140 -10000 83 590 864 94 790 942 552 721 688 -10000 849 935 787 635 179 712 165 47 114 -10000 966 279 294 477 650 631 80 426 691 -10000 20 880 240 855 528 482 901 251 866 -10000 165 9 763 566 393 857 134 671 476 -10000 686 558 305 242 728 685 717 171 534 -10000 47 634 373 928 266 589 218 45 980 -10000 142 396 586 631 571 332 923 789 879 -10000 519 317 713 500 102 843 221 94 975 -10000 807 800 310 264 61 274 946 336 2 -10000 972 956 454 569 771 70 219 795 575 -10000 270 828 349 534 526 33 460 362 758 -10000 980 502 572 840 372 123 390 41 533 -10000 235 268 137 985 385 926 250 331 941 -10000 246 969 441 269 40 758 885 288 726 -10000 523 542 617 918 312 809 991 706 867 -10000 993 656 319 426 912 890 652 910 645 -10000 635 580 936 276 584 906 447 887 764 -10000 802 885 144 86 171 717 35 602 548 -10000 130 696 688 166 563 66 354 646 483 -10000 594 896 870 312 338 33 404 460 823 -10000 567 794 215 767 381 297 398 412 178 -10000 601 334 262 959 72 876 323 737 79 -10000 930 737 898 605 189 179 633 583 810 -10000 440 587 914 520 668 87 576 684 762 -10000 83 76 21 685 927 393 1000 107 624 -10000 256 405 484 599 375 876 115 720 624 -10000 770 826 423 115 161 919 796 444 132 -10000 436 702 141 835 856 988 229 563 722 -10000 85 786 989 222 532 507 245 730 217 -10000 980 151 527 835 844 224 955 335 480 -10000 967 154 375 411 29 500 84 672 718 -10000 582 213 66 307 625 519 901 727 197 -10000 661 952 994 29 75 157 244 973 605 -10000 847 448 888 460 242 556 92 945 934 -10000 523 87 632 134 832 144 688 825 620 -10000 869 198 279 697 824 728 231 268 257 -10000 91 937 266 154 456 4 481 429 342 -10000 874 148 527 462 704 52 3 202 15 -10000 471 296 128 17 263 533 563 143 633 -10000 224 810 990 551 974 324 364 429 554 -10000 77 256 930 44 505 612 339 0 562 -10000 0 826 438 1000 103 449 400 976 859 -10000 121 478 196 416 613 113 138 800 888 -10000 704 789 335 845 371 840 603 684 169 -10000 774 126 900 134 17 722 772 986 525 -10000 913 198 670 729 385 555 562 708 175 -10000 363 829 573 499 58 274 22 899 931 -10000 535 111 192 470 595 750 147 551 130 -10000 760 480 862 496 693 833 331 375 414 -10000 434 139 20 980 203 146 858 394 643 -10000 659 649 557 430 800 228 213 65 278 -10000 576 911 894 240 778 518 808 86 355 -10000 414 473 748 862 221 52 36 662 701 -10000 236 989 161 206 756 923 103 974 55 -10000 683 323 285 994 383 313 216 716 144 -10000 797 461 784 98 956 296 459 201 604 -10000 533 459 361 923 253 14 361 331 39 -10000 47 139 456 955 454 809 972 572 48 -10000 274 956 156 353 793 284 380 840 740 -10000 146 776 276 79 130 617 953 972 693 -10000 831 621 670 691 825 999 58 248 450 -10000 390 309 281 367 263 489 927 401 660 -10000 582 855 685 468 520 741 282 920 99 -10000 160 310 677 264 338 839 218 365 164 -10000 206 975 531 543 71 282 727 346 99 -10000 988 323 946 870 950 836 521 650 419 -10000 666 747 883 907 755 758 332 602 198 -10000 166 207 676 461 386 248 373 820 866 -10000 512 268 730 301 994 601 451 971 823 -10000 388 342 756 564 759 471 599 270 557 -10000 148 600 620 840 891 819 115 431 46 -10000 779 56 962 117 259 393 330 24 28 -10000 636 803 972 855 56 147 16 907 411 -10000 401 224 584 420 99 393 240 517 52 -10000 154 272 274 335 674 405 122 931 72 -10000 682 929 219 56 125 761 626 908 735 -10000 680 288 259 366 914 848 269 469 782 -10000 537 640 892 8 250 186 781 479 801 -10000 850 436 740 264 738 197 812 915 105 -10000 321 952 871 179 700 308 607 305 193 -10000 168 933 392 303 585 629 314 558 462 -10000 330 391 423 889 1 153 714 719 476 -10000 268 42 583 767 807 241 226 934 717 -10000 25 613 482 637 376 28 764 836 854 -10000 494 185 992 461 376 653 976 707 337 -10000 499 724 329 680 107 103 979 691 587 -10000 738 371 629 664 330 346 873 137 89 -10000 656 913 10 561 310 961 805 837 570 -10000 465 855 196 571 706 781 882 574 163 -10000 84 605 296 266 647 132 439 507 749 -10000 355 666 527 120 503 829 56 85 556 -10000 783 482 551 743 748 740 328 507 602 -10000 496 216 266 352 221 74 432 19 751 -10000 187 993 247 64 744 989 369 74 555 -10000 751 310 11 86 96 320 578 258 878 -10000 745 908 708 322 925 947 474 40 737 -10000 255 540 545 556 203 290 292 484 54 -10000 65 620 881 18 53 49 580 367 737 -10000 238 970 496 395 578 566 406 897 528 -10000 93 214 920 353 494 996 864 416 939 -10000 672 156 712 976 20 745 796 643 457 -10000 448 152 116 994 822 336 553 832 683 -10000 989 486 53 304 378 571 190 187 310 -10000 778 457 931 380 243 920 687 419 835 -10000 851 419 871 209 731 528 16 743 986 -10000 210 0 283 897 639 997 242 998 796 -10000 828 527 685 649 588 977 583 893 218 -10000 547 924 861 413 408 288 51 628 846 -10000 657 801 450 726 352 637 200 72 100 -10000 265 54 833 241 5 277 378 628 970 -10000 776 367 18 793 564 784 18 733 251 -10000 474 161 254 869 37 879 958 464 559 -10000 899 361 250 656 254 766 33 18 322 -10000 816 242 723 84 425 275 85 979 905 -10000 325 256 466 287 823 998 853 212 303 -10000 245 138 179 574 195 481 153 376 914 -10000 799 111 159 745 174 256 652 352 146 -10000 204 364 781 26 786 487 74 358 711 -10000 796 637 189 710 223 547 861 651 413 -10000 429 609 854 976 903 838 448 396 364 -10000 826 821 920 722 567 536 106 172 699 -10000 982 848 664 558 792 137 908 61 871 -10000 429 470 214 662 129 578 883 897 684 -10000 937 90 179 30 297 406 455 662 262 -10000 672 196 279 210 268 717 91 602 777 -10000 785 159 729 708 232 926 6 959 801 -10000 153 101 524 113 550 641 209 935 109 -10000 416 807 708 683 773 114 482 312 598 -10000 352 649 717 604 352 850 846 857 462 -10000 674 828 641 755 610 2 18 76 702 -10000 946 93 821 49 117 419 566 558 0 -10000 220 3 203 952 716 153 471 684 888 -10000 831 359 2 625 753 171 529 138 572 -10000 446 981 201 595 128 985 188 934 7 -10000 651 359 577 321 186 326 4 793 770 -10000 520 17 734 365 603 238 227 926 564 -10000 245 621 287 778 7 866 772 113 256 -10000 620 468 773 411 757 127 754 221 121 -10000 64 643 65 941 460 121 155 598 315 -10000 849 1 50 627 696 359 246 224 893 -10000 253 556 932 795 528 339 868 312 787 -10000 469 287 374 166 175 918 656 645 585 -10000 399 470 846 509 286 633 77 868 2 -10000 32 429 469 7 955 310 210 164 417 -10000 72 34 695 667 469 489 591 114 564 -10000 61 140 64 612 798 204 609 421 321 -10000 112 205 823 709 170 854 16 257 626 -10000 693 158 136 207 691 566 322 531 834 -10000 165 897 1000 738 338 556 657 487 342 -10000 942 579 686 358 604 678 982 600 929 -10000 93 102 1 1000 720 29 904 905 729 -10000 134 133 347 946 368 911 450 79 155 -10000 96 450 388 932 203 40 497 928 123 -10000 508 139 683 79 811 650 993 617 405 -10000 306 727 433 448 354 713 71 453 381 -10000 44 716 840 232 284 750 729 774 22 -10000 174 411 55 734 357 372 226 709 30 -10000 441 303 494 543 831 658 789 502 568 -10000 5 654 236 241 827 260 188 40 77 -10000 720 34 380 83 497 388 211 514 825 -10000 648 528 883 67 864 164 66 709 159 -10000 871 662 329 81 591 274 670 603 284 -10000 577 230 289 93 273 942 3 209 162 -10000 892 753 875 60 465 299 499 23 350 -10000 713 99 618 852 180 461 820 304 268 -10000 549 73 758 819 450 908 53 778 300 -10000 259 779 493 407 169 776 549 473 306 -10000 601 828 983 873 622 219 209 392 653 -10000 569 7 656 384 902 498 321 778 278 -10000 667 95 754 100 714 499 277 457 979 -10000 704 246 828 568 479 908 320 184 198 -10000 911 784 425 946 762 65 183 612 802 -10000 792 291 318 619 29 288 419 789 230 -10000 294 719 862 297 439 733 70 866 395 -10000 823 367 813 683 738 951 959 989 839 -10000 119 49 796 911 23 226 292 7 183 -10000 418 757 139 985 843 580 934 358 602 -10000 703 378 819 432 288 407 75 449 583 -10000 377 960 353 142 398 392 487 650 880 -10000 671 428 898 919 854 509 151 39 519 -10000 205 722 725 310 506 710 427 917 293 -10000 526 573 679 12 220 745 826 886 968 -10000 22 524 636 937 12 753 951 11 185 -10000 493 153 60 920 187 556 956 312 267 -10000 914 991 304 292 898 519 909 867 831 -10000 588 526 12 855 852 961 774 329 879 -10000 403 259 243 104 634 569 371 470 751 -10000 388 247 126 864 298 440 248 955 315 -10000 594 104 477 927 725 332 252 589 550 -10000 260 692 847 351 176 78 59 308 802 -10000 988 858 317 317 408 581 753 823 148 -10000 427 702 893 416 557 659 476 515 410 -10000 997 178 33 172 619 593 479 511 758 -10000 559 302 203 156 743 289 283 927 919 -10000 838 718 631 596 481 603 756 700 405 -10000 58 866 436 258 691 617 406 61 428 -10000 888 206 658 103 829 730 372 142 873 -10000 530 523 688 199 22 752 852 411 175 -10000 473 78 259 162 168 456 970 609 336 -10000 9 203 204 619 668 888 736 131 383 -10000 655 785 947 78 583 918 478 269 713 -10000 853 196 153 566 545 360 160 509 471 -10000 979 738 609 43 440 939 403 254 929 -10000 592 498 776 772 773 964 229 170 273 -10000 511 518 689 780 361 43 467 638 356 -10000 732 265 176 612 702 503 995 471 923 -10000 304 597 356 739 668 717 787 610 465 -10000 83 711 670 357 901 476 905 130 47 -10000 748 487 533 722 834 975 854 798 5 -10000 530 22 511 590 291 957 121 310 82 -10000 331 53 674 615 209 660 879 126 343 -10000 327 619 233 244 901 0 367 725 339 -10000 446 303 83 797 400 721 554 220 904 -10000 928 325 310 482 829 912 197 530 639 -10000 129 574 437 79 68 140 415 620 706 -10000 833 872 98 811 686 447 645 675 249 -10000 68 154 596 741 397 351 112 791 679 -10000 371 899 467 62 598 205 867 270 592 -10000 601 807 789 411 961 637 685 437 50 -10000 333 800 718 214 464 992 719 852 870 -10000 366 126 891 567 453 734 49 265 838 -10000 120 128 245 759 371 235 78 755 673 -10000 244 829 781 343 240 541 605 373 295 -10000 774 836 949 728 567 353 936 410 502 -10000 549 136 5 299 344 649 143 579 785 -10000 797 464 56 983 967 317 382 563 575 -10000 207 358 278 161 402 27 14 653 966 -10000 375 591 545 349 807 684 496 889 759 -10000 770 522 138 292 68 177 355 500 486 -10000 556 266 739 807 546 699 751 416 402 -10000 416 127 178 103 37 58 948 45 670 -10000 961 544 10 404 644 113 64 992 811 -10000 943 242 975 995 376 81 210 37 996 -10000 524 930 983 945 440 424 215 956 477 -10000 728 434 511 725 842 973 885 875 341 -10000 597 146 429 353 431 836 667 124 924 -10000 424 974 348 323 492 629 850 531 625 -10000 618 927 44 4 643 544 575 177 296 -10000 947 782 67 637 290 376 842 401 51 -10000 738 17 372 662 778 993 284 825 425 -10000 409 649 599 527 746 764 298 326 809 -10000 559 56 822 46 285 9 228 717 677 -10000 412 557 485 618 772 859 651 578 521 -10000 965 176 68 185 132 266 160 946 128 -10000 189 441 288 758 659 747 784 823 852 -10000 271 660 524 33 707 628 222 312 980 -10000 496 8 666 141 771 151 556 152 129 -10000 255 336 340 377 654 651 734 283 115 -10000 197 880 585 369 914 452 34 36 371 -10000 91 994 15 107 126 55 661 286 71 -10000 555 192 129 303 171 633 70 69 383 -10000 542 333 518 109 442 764 620 958 809 -10000 462 411 798 349 708 178 343 987 861 -10000 816 571 613 476 362 951 260 135 817 -10000 837 147 486 857 495 853 602 939 194 -10000 150 618 406 911 916 672 23 688 403 -10000 850 474 480 984 230 691 894 312 542 -10000 487 637 456 718 389 783 25 492 378 -10000 320 799 580 859 782 995 436 537 235 -10000 793 261 704 292 381 994 847 131 444 -10000 929 876 850 246 44 920 92 69 435 -10000 19 395 503 866 327 395 144 149 595 -10000 748 20 398 521 547 119 319 854 33 -10000 824 856 929 635 608 541 989 976 527 -10000 265 896 329 802 761 792 712 306 717 -10000 563 299 168 528 505 249 480 291 410 -10000 565 426 862 195 479 613 400 719 116 -10000 714 576 486 92 975 619 553 544 143 -10000 389 550 375 521 236 294 870 914 581 -10000 324 929 967 143 477 636 423 94 348 -10000 698 150 693 421 974 980 629 186 542 -10000 741 729 338 604 692 315 513 537 196 -10000 214 511 596 513 347 574 369 611 962 -10000 270 237 586 156 975 568 652 607 759 -10000 212 385 403 798 98 35 37 741 692 -10000 731 462 483 969 75 377 567 906 947 -10000 272 471 778 838 385 791 88 994 732 -10000 837 627 180 850 358 427 181 547 872 -10000 669 810 357 681 777 590 96 638 689 -10000 17 440 510 532 107 150 212 337 344 -10000 91 879 509 424 575 892 685 786 766 -10000 518 392 782 168 430 266 772 68 308 -10000 527 84 480 942 878 357 741 547 697 -10000 761 582 586 219 667 891 967 920 791 -10000 627 118 926 51 261 803 13 776 502 -10000 224 823 789 510 942 963 174 208 404 -10000 600 549 447 860 428 764 136 611 819 -10000 483 314 969 321 598 41 89 753 571 -10000 359 347 293 606 313 542 790 26 867 -10000 688 536 505 55 602 646 117 849 298 -10000 727 842 349 912 901 199 903 46 761 -10000 656 816 951 511 828 194 762 881 121 -10000 398 180 117 878 818 537 133 388 821 -10000 468 466 728 756 376 332 200 503 523 -10000 282 246 531 551 2 330 766 259 308 -10000 123 228 951 421 153 421 766 551 349 -10000 372 725 826 14 61 386 951 835 693 -10000 626 83 793 453 620 549 457 404 910 -10000 568 960 382 122 231 618 430 854 89 -10000 647 479 273 547 796 24 790 654 168 -10000 109 604 74 419 563 373 294 457 995 -10000 997 342 359 232 884 714 66 939 517 -10000 971 635 514 742 622 972 738 325 487 -10000 596 68 539 188 144 377 447 249 86 -10000 892 878 628 328 632 496 394 545 498 -10000 609 167 484 571 838 479 564 693 566 -10000 789 227 128 336 118 773 188 196 670 -10000 238 231 92 285 30 178 468 583 8 -10000 306 955 384 287 146 10 524 848 222 -10000 749 670 604 888 131 759 200 704 972 -10000 349 734 81 101 589 34 986 809 843 -10000 602 160 558 724 837 12 296 953 950 -10000 387 399 70 307 593 514 370 995 876 -10000 956 140 115 650 657 199 279 153 138 -10000 172 377 520 881 607 526 134 895 94 -10000 891 816 445 369 108 732 238 850 629 -10000 832 873 776 368 660 208 786 572 109 -10000 140 842 696 571 56 784 545 887 380 -10000 214 614 523 509 521 677 756 327 225 -10000 162 797 494 852 2 353 257 474 308 -10000 622 447 746 392 784 251 356 192 370 -10000 302 31 151 773 41 641 336 303 150 -10000 371 134 935 79 194 731 761 960 624 -10000 845 968 788 655 95 709 390 382 202 -10000 128 504 112 944 533 455 802 77 970 -10000 604 261 625 392 309 847 312 524 110 -10000 298 519 105 484 103 537 433 953 530 -10000 229 287 843 169 648 88 809 101 488 -10000 477 865 744 302 138 667 740 537 824 -10000 285 286 21 321 129 882 804 789 8 -10000 421 506 400 399 513 901 300 572 941 -10000 255 12 892 119 61 990 505 834 79 -10000 753 408 835 599 977 735 116 917 791 -10000 936 12 723 630 77 558 807 891 706 -10000 403 464 968 23 914 22 293 952 831 -10000 271 796 410 885 863 27 168 718 976 -10000 563 708 573 85 988 466 94 486 368 -10000 746 985 732 645 889 125 911 913 420 -10000 734 689 587 880 464 427 647 681 114 -10000 325 465 977 672 524 50 900 872 303 -10000 819 847 236 751 736 409 372 965 227 -10000 668 839 274 640 840 847 179 407 161 -10000 154 763 564 271 555 289 947 3 585 -10000 956 80 828 866 477 840 976 710 481 -10000 876 844 126 646 715 770 791 845 559 -10000 483 820 450 421 109 300 108 232 243 -10000 62 739 774 972 661 940 774 673 834 -10000 58 149 154 539 201 111 450 776 672 -10000 202 453 385 77 295 222 540 398 805 -10000 442 431 102 976 499 462 942 929 606 -10000 205 768 347 878 410 840 162 489 6 -10000 114 402 686 239 124 343 496 876 763 -10000 789 0 54 32 58 332 272 54 580 -10000 388 458 498 944 609 37 586 371 834 -10000 113 169 149 276 634 904 893 280 681 -10000 465 275 182 457 908 495 345 798 14 -10000 844 450 780 427 561 564 266 55 673 -10000 975 337 322 845 207 120 958 104 126 -10000 300 88 353 146 465 812 2 159 580 -10000 356 813 978 990 304 723 65 94 70 -10000 949 676 899 870 316 281 118 792 235 -10000 197 66 627 579 294 961 713 714 656 -10000 512 311 17 383 894 219 801 631 576 -10000 553 869 978 748 164 296 911 689 803 -10000 22 629 651 106 65 474 484 654 740 -10000 48 10 784 159 428 794 791 286 282 -10000 718 260 645 155 753 958 265 115 123 -10000 270 134 542 627 658 580 223 615 589 -10000 266 735 225 433 98 265 798 637 916 -10000 6 911 9 649 677 974 173 288 559 -10000 795 459 550 920 684 891 253 395 149 -10000 604 680 60 129 547 910 52 440 45 -10000 111 709 857 98 411 144 379 769 115 -10000 338 958 206 754 451 450 935 126 97 -10000 95 343 995 594 177 623 238 645 684 -10000 871 868 269 716 199 460 85 344 262 -10000 193 460 760 151 533 193 873 983 209 -10000 405 857 445 196 936 860 29 532 459 -10000 543 683 301 149 186 314 407 526 327 -10000 856 162 928 554 296 389 391 810 423 -10000 949 865 255 183 714 136 1 813 316 -10000 233 549 693 815 216 891 88 628 26 -10000 253 591 779 742 887 965 904 343 219 -10000 420 241 402 686 352 903 620 517 237 -10000 404 699 520 443 948 143 443 83 798 -10000 849 376 803 655 431 951 926 652 854 -10000 969 594 652 571 655 187 955 167 704 -10000 16 762 708 877 523 737 705 993 970 -10000 423 777 600 85 737 599 231 944 567 -10000 282 166 722 648 926 109 220 982 876 -10000 257 288 803 519 167 0 310 260 804 -10000 183 430 812 288 251 39 329 533 998 -10000 310 293 570 315 384 31 519 203 899 -10000 554 47 465 899 149 725 532 293 265 -10000 525 156 181 587 407 177 948 323 295 -10000 18 895 703 835 342 501 754 909 729 -10000 157 158 602 833 334 79 700 114 76 -10000 946 181 733 179 770 892 701 306 149 -10000 863 872 292 943 198 447 469 951 1000 -10000 251 153 751 885 567 503 3 6 807 -10000 504 298 153 484 733 139 606 355 400 -10000 872 774 462 8 836 406 298 758 375 -10000 874 143 873 102 791 901 241 766 434 -10000 532 786 734 575 936 756 653 492 295 -10000 21 496 303 355 275 910 827 220 791 -10000 420 696 570 31 159 793 747 176 352 -10000 99 457 98 628 113 840 655 71 753 -10000 914 415 917 568 639 95 687 126 462 -10000 822 651 828 451 485 855 697 280 304 -10000 801 762 915 154 57 704 587 363 777 -10000 185 568 627 504 866 140 938 324 213 -10000 28 970 824 84 137 699 767 289 160 -10000 267 887 423 154 998 707 741 219 766 -10000 773 999 855 334 310 737 936 362 122 -10000 884 819 522 174 587 990 372 672 456 -10000 625 31 966 929 991 458 979 422 880 -10000 929 388 669 624 558 889 548 905 170 -10000 742 430 859 981 409 960 879 661 490 -10000 726 210 255 878 848 206 138 244 549 -10000 915 366 641 408 355 11 153 128 395 -10000 281 87 589 521 431 521 175 970 443 -10000 74 615 881 562 616 996 268 667 127 -10000 293 988 66 47 826 104 37 791 82 -10000 926 920 337 175 321 218 477 575 396 -10000 1 697 883 534 738 565 981 841 559 -10000 702 388 308 346 265 507 73 796 405 -10000 228 978 994 749 3 533 221 96 624 -10000 46 92 323 247 917 696 937 408 93 -10000 790 734 612 204 442 265 221 589 261 -10000 463 286 296 894 853 787 303 596 55 -10000 631 301 501 655 774 626 494 817 629 -10000 27 147 937 973 782 801 436 565 664 -10000 934 131 80 196 504 560 466 224 927 -10000 286 486 150 995 915 270 767 414 35 -10000 718 431 16 300 23 969 70 684 783 -10000 793 299 302 319 61 815 201 696 887 -10000 160 79 860 81 276 172 461 53 932 -10000 348 568 690 120 933 634 361 26 892 -10000 868 861 446 86 246 518 384 396 250 -10000 257 771 29 800 967 574 615 792 785 -10000 707 974 723 256 92 979 499 3 928 -10000 594 962 828 700 3 814 932 643 32 -10000 335 908 120 351 155 754 423 783 595 -10000 168 150 56 575 695 90 56 326 77 -10000 368 834 80 995 383 225 793 486 882 -10000 474 47 272 315 728 203 827 425 219 -10000 777 722 746 22 993 317 735 31 464 -10000 500 574 305 169 809 210 315 150 302 -10000 907 760 802 801 700 546 111 298 690 -10000 661 490 543 698 670 179 504 68 558 -10000 400 666 308 265 338 430 171 360 608 -10000 39 802 174 940 353 122 769 451 12 -10000 678 450 537 181 169 65 493 445 247 -10000 744 465 391 121 443 425 114 898 115 -10000 758 591 602 403 520 40 330 131 452 -10000 262 597 391 57 953 284 993 223 167 -10000 546 712 807 195 166 374 626 618 187 -10000 523 92 12 594 367 556 685 25 179 -10000 545 866 782 381 407 199 567 863 242 -10000 425 690 320 78 816 818 897 257 978 -10000 468 247 140 803 513 591 351 594 839 -10000 973 861 665 971 511 259 971 26 904 -10000 590 16 398 26 228 474 465 538 336 -10000 948 805 916 50 339 942 532 737 421 -10000 748 884 646 373 871 82 170 221 684 -10000 111 185 910 962 237 258 525 124 313 -10000 920 237 837 469 705 522 665 886 474 -10000 463 511 846 899 690 157 114 565 880 -10000 55 485 203 922 827 626 564 228 132 -10000 783 553 45 513 274 197 749 611 288 -10000 947 226 763 528 543 772 220 887 480 -10000 158 447 332 14 127 117 550 230 709 -10000 640 521 302 194 483 635 670 24 247 -10000 935 37 999 11 696 325 298 372 217 -10000 874 751 306 781 47 335 767 81 39 -10000 402 129 995 76 784 698 275 258 833 -10000 67 485 574 172 882 519 37 707 476 -10000 596 880 333 384 952 338 712 575 488 -10000 768 35 464 598 359 815 74 204 836 -10000 591 515 744 145 731 896 980 416 653 -10000 799 731 135 44 99 319 193 890 193 -10000 283 271 29 500 114 189 15 700 647 -10000 471 763 934 338 97 173 865 138 808 -10000 116 246 346 275 240 408 855 742 149 -10000 647 849 770 669 942 813 973 908 151 -10000 457 654 0 396 869 890 307 566 990 -10000 84 968 92 31 485 810 179 508 484 -10000 98 862 585 735 48 107 133 326 438 -10000 312 8 777 433 995 106 494 294 529 -10000 364 319 660 88 645 585 559 561 847 -10000 314 757 958 532 497 315 155 760 366 -10000 549 999 330 576 742 268 226 300 617 -10000 586 55 802 984 516 80 237 730 269 -10000 620 595 184 304 424 625 850 624 61 -10000 533 401 885 17 85 817 42 474 601 -10000 825 420 588 362 741 239 528 123 804 -10000 604 288 883 973 446 869 976 239 86 -10000 292 93 730 871 663 837 54 982 685 -10000 226 632 104 791 693 72 794 262 12 -10000 226 557 599 385 883 319 583 148 108 -10000 8 203 928 746 875 428 882 169 71 -10000 158 856 962 476 843 242 345 780 198 -10000 418 620 929 666 887 250 732 727 901 -10000 409 492 394 661 983 864 327 248 939 -10000 948 851 268 357 559 358 826 299 276 -10000 56 726 86 494 973 529 767 87 858 -10000 837 921 554 108 689 601 336 555 650 -10000 631 867 852 343 994 881 212 888 549 -10000 956 155 95 1 110 880 891 59 206 -10000 862 72 722 632 238 34 315 725 183 -10000 537 340 846 748 549 265 939 437 628 -10000 669 36 139 368 526 95 95 398 234 -10000 530 612 971 891 638 567 628 769 983 -10000 893 954 195 545 179 104 472 845 572 -10000 644 148 480 165 180 906 255 738 850 -10000 25 484 969 684 275 601 870 246 598 -10000 448 971 77 431 964 498 8 49 101 -10000 988 893 301 301 438 416 860 28 984 -10000 933 141 615 604 491 258 802 611 834 -10000 423 720 136 924 977 22 2 887 419 -10000 514 412 453 297 82 874 17 403 555 -10000 727 1 106 431 824 152 353 206 130 -10000 459 122 468 404 378 413 312 390 986 -10000 587 866 144 142 552 294 292 988 92 -10000 621 50 365 328 956 984 182 823 788 -10000 86 24 116 873 187 974 552 188 122 -10000 718 923 397 362 404 14 351 449 128 -10000 317 372 460 758 23 543 196 552 311 -10000 695 685 430 488 379 474 54 326 704 -10000 1000 38 517 147 205 388 992 543 233 -10000 540 149 746 912 381 47 71 240 367 -10000 230 108 332 935 786 991 643 269 323 -10000 166 570 90 269 523 892 5 456 653 -10000 445 455 298 883 451 683 741 467 814 -10000 519 23 669 749 554 377 22 184 435 -10000 957 418 630 652 787 415 317 45 643 -10000 421 55 168 611 67 909 667 700 563 -10000 419 227 525 326 136 251 262 170 254 -10000 105 776 388 114 762 661 415 764 64 -10000 291 787 687 426 139 153 573 862 265 -10000 158 4 992 641 80 373 542 638 956 -10000 220 119 516 995 380 269 516 633 857 -10000 300 752 905 545 127 226 339 822 433 -10000 279 475 505 265 499 546 322 811 885 -10000 490 940 143 720 351 803 785 942 204 -10000 857 562 834 836 146 194 87 18 303 -10000 708 315 451 280 248 251 535 472 280 -10000 492 693 389 970 872 730 427 746 925 -10000 496 800 476 70 535 702 770 27 579 -10000 502 809 350 526 923 806 320 558 247 -10000 116 672 853 566 463 458 808 356 72 -10000 451 571 967 424 640 900 167 372 928 -10000 901 212 961 922 64 13 545 394 701 -10000 648 679 124 759 474 352 570 921 289 -10000 438 518 796 45 239 942 828 511 936 -10000 863 984 399 335 949 368 67 544 330 -10000 657 970 755 263 110 944 334 854 164 -10000 208 911 116 189 790 931 605 746 454 -10000 557 274 217 711 708 512 671 132 398 -10000 929 885 742 862 689 786 703 934 49 -10000 368 807 321 497 593 680 974 685 951 -10000 869 623 571 992 343 450 437 211 506 -10000 608 860 461 323 938 959 958 20 662 -10000 397 921 971 929 390 397 485 977 668 -10000 211 456 905 982 339 555 62 203 245 -10000 458 866 380 1000 448 588 442 142 862 -10000 951 264 173 490 118 421 971 372 542 -10000 593 964 609 436 401 219 45 47 526 -10000 697 2 85 118 911 511 429 182 811 -10000 637 278 664 222 645 783 865 777 624 -10000 716 830 178 424 723 231 371 42 5 -10000 665 159 714 770 191 495 837 983 104 -10000 957 967 144 94 28 362 407 310 691 -10000 85 288 710 563 634 316 729 903 763 -10000 738 470 500 766 266 100 824 915 308 -10000 193 632 79 348 729 829 474 213 836 -10000 294 95 335 67 120 75 569 808 541 -10000 78 967 202 530 71 193 230 511 275 -10000 678 220 815 823 46 680 741 500 872 -10000 396 276 110 401 288 527 676 867 302 -10000 980 714 756 725 562 540 580 844 840 -10000 703 494 740 986 868 705 392 821 14 -10000 605 893 263 899 171 565 414 744 236 -10000 242 421 603 262 96 764 111 476 865 -10000 996 925 579 666 110 328 270 181 247 -10000 9 284 570 53 321 672 557 437 427 -10000 865 415 197 278 876 504 27 415 277 -10000 926 199 886 247 169 356 228 659 30 -10000 171 14 740 990 795 210 615 268 634 -10000 286 98 756 994 756 276 310 167 650 -10000 689 233 91 417 746 980 436 348 735 -10000 627 97 940 143 464 817 129 95 208 -10000 436 303 505 183 236 112 525 983 396 -10000 380 604 798 209 471 644 408 925 515 -10000 22 678 176 362 65 233 686 29 556 -10000 565 355 284 904 222 610 836 784 202 -10000 600 817 809 598 807 40 263 991 62 -10000 96 447 377 9 957 562 659 120 153 -10000 950 563 548 448 547 186 370 939 215 -10000 575 951 55 236 461 879 502 525 376 -10000 876 475 186 55 836 235 574 929 187 -10000 789 150 627 742 801 259 880 979 267 -10000 168 131 139 127 564 493 107 952 111 -10000 808 719 992 44 274 730 328 898 415 -10000 786 511 210 140 36 913 676 790 605 -10000 25 72 381 273 172 152 213 292 763 -10000 995 611 956 483 602 135 475 188 536 -10000 647 844 876 44 830 299 830 630 306 -10000 713 926 692 314 291 518 970 683 449 -10000 306 502 404 321 927 61 114 528 148 -10000 724 46 74 326 546 816 374 135 790 -10000 463 483 480 92 939 21 849 9 297 -10000 694 6 242 616 34 903 298 726 55 -10000 518 815 217 750 354 986 553 709 745 -10000 212 744 459 738 541 651 922 690 516 -10000 631 670 347 619 940 485 402 356 667 -10000 167 219 743 354 235 155 471 143 320 -10000 468 667 525 71 245 896 507 95 112 -10000 888 750 465 531 476 549 392 550 846 -10000 409 515 931 436 917 40 748 938 810 -10000 868 232 625 934 668 808 553 738 657 -10000 537 969 380 418 145 326 505 98 768 -10000 526 183 921 822 732 242 998 456 308 -10000 916 854 954 537 851 640 713 329 513 -10000 246 908 395 815 923 863 656 803 765 -10000 860 584 807 0 67 197 5 395 498 -10000 531 984 973 210 623 383 716 158 554 -10000 346 167 508 551 583 474 886 359 451 -10000 14 904 325 989 493 196 425 623 163 -10000 556 333 233 179 325 984 207 871 35 -10000 908 437 983 336 342 632 480 687 533 -10000 695 808 229 811 447 841 903 904 278 -10000 284 30 864 585 435 926 957 275 86 -10000 179 890 383 599 752 352 6 622 20 -10000 570 504 951 850 122 91 682 135 795 -10000 692 115 734 75 668 908 217 790 10 -10000 927 953 71 783 961 697 764 15 45 -10000 144 430 524 597 562 671 694 405 802 -10000 822 755 130 163 235 43 460 509 864 -10000 30 602 752 866 261 539 894 620 528 -10000 290 502 585 996 745 870 892 347 921 -10000 753 38 387 987 458 223 489 359 667 -10000 170 60 889 240 182 819 782 847 807 -10000 263 336 310 312 81 946 785 801 392 -10000 828 436 726 572 478 215 939 986 863 -10000 269 243 375 43 308 604 887 960 362 -10000 908 869 278 64 962 872 857 575 638 -10000 987 323 346 520 227 88 142 325 926 -10000 10 541 803 346 228 607 651 885 820 -10000 215 140 226 104 972 892 77 319 449 -10000 120 923 236 626 145 609 247 518 631 -10000 863 468 945 995 738 668 683 69 58 -10000 294 515 799 987 854 295 761 708 468 -10000 261 747 871 512 483 480 801 720 20 -10000 16 282 522 659 344 280 99 971 753 -10000 453 293 600 893 195 343 154 81 224 -10000 301 960 250 504 420 176 849 813 316 -10000 97 10 194 481 837 112 866 871 157 -10000 345 1 85 824 623 455 662 143 244 -10000 579 28 722 717 689 370 361 216 474 -10000 221 672 202 488 191 716 759 990 762 -10000 426 193 189 692 367 767 678 17 80 -10000 61 488 512 403 542 491 333 575 489 -10000 590 357 164 453 995 708 237 383 20 -10000 714 381 975 573 766 32 348 23 676 -10000 888 387 747 282 801 507 861 398 565 -10000 731 997 827 752 700 898 998 154 3 -10000 373 393 309 533 497 853 829 235 549 -10000 815 761 74 490 573 471 551 320 825 -10000 10 474 216 89 595 229 49 309 50 -10000 674 637 38 189 493 763 171 349 503 -10000 580 243 721 239 257 975 945 207 29 -10000 177 290 160 873 207 954 324 426 793 -10000 476 601 254 910 567 949 187 830 181 -10000 497 755 761 98 546 313 536 638 469 -10000 832 84 329 865 130 638 97 21 534 -10000 796 606 222 505 573 368 670 160 362 -10000 194 26 270 937 120 742 871 465 326 -10000 195 207 23 14 48 299 210 244 102 -10000 524 471 282 766 172 754 280 922 77 -10000 203 250 193 466 485 330 468 474 562 -10000 288 864 685 980 380 373 80 377 5 -10000 331 250 232 611 763 823 383 767 849 -10000 610 60 945 790 335 330 936 970 12 -10000 154 910 256 194 11 6 386 159 147 -10000 295 814 954 789 138 744 415 57 847 -10000 573 533 797 508 177 609 402 871 619 -10000 52 950 779 144 690 311 691 644 997 -10000 639 192 484 900 32 525 360 215 84 -10000 109 176 260 231 257 927 780 754 40 -10000 593 802 596 694 304 31 293 876 441 -10000 876 74 231 473 841 214 763 94 105 -10000 593 302 33 967 159 66 391 205 917 -10000 832 232 189 504 741 981 887 30 635 -10000 112 162 397 672 649 103 879 406 161 -10000 362 647 120 922 274 928 31 79 307 -10000 110 465 602 802 110 781 985 510 659 -10000 528 379 377 887 405 705 212 844 737 -10000 67 432 137 78 443 247 803 343 150 -10000 133 512 932 552 732 544 332 107 534 -10000 421 560 101 266 730 217 763 643 981 -10000 728 853 142 222 909 721 385 608 144 -10000 922 838 849 408 166 5 156 265 892 -10000 66 259 641 677 587 497 487 261 733 -10000 919 52 99 100 179 128 172 9 367 -10000 379 59 573 248 70 662 649 920 436 -10000 28 467 969 350 453 78 603 668 478 -10000 739 751 659 328 654 211 865 227 515 -10000 858 894 212 863 154 477 196 252 190 -10000 996 566 495 964 26 45 589 582 251 -10000 664 403 152 569 572 89 819 769 326 -10000 923 48 612 72 523 506 228 458 714 -10000 960 482 194 693 104 818 426 826 828 -10000 188 460 828 298 506 899 244 383 195 -10000 824 824 471 379 52 103 125 208 179 -10000 510 139 722 605 566 274 944 708 443 -10000 926 308 76 829 265 882 41 919 310 -10000 320 14 820 917 636 898 269 602 78 -10000 143 403 491 484 600 518 340 671 851 -10000 62 892 306 452 61 322 404 463 90 -10000 381 255 665 495 909 845 292 749 329 -10000 686 839 530 987 724 952 384 292 850 -10000 176 609 740 538 990 159 534 782 494 -10000 384 596 736 976 875 6 507 126 715 -10000 276 821 496 449 810 251 604 540 151 -10000 433 429 403 108 950 229 734 224 510 -10000 988 442 673 701 630 512 220 448 544 -10000 959 570 822 439 231 102 966 573 307 -10000 646 685 603 518 526 860 256 917 894 -10000 560 447 398 281 868 81 296 650 527 -10000 80 860 407 610 34 321 620 572 183 -10000 409 897 660 803 497 186 52 363 934 -10000 491 820 118 580 513 692 589 6 325 -10000 865 679 690 932 605 813 890 59 564 -10000 90 473 575 822 201 710 808 39 622 -10000 726 987 906 916 245 152 180 186 476 -10000 284 254 548 750 77 598 115 103 791 -10000 210 749 136 315 179 633 707 144 91 -10000 315 309 396 219 804 119 555 560 761 -10000 329 584 27 197 446 624 771 580 592 -10000 47 593 641 938 283 122 687 108 829 -10000 220 489 106 885 107 6 519 202 526 -10000 508 706 968 864 767 314 363 374 810 -10000 397 216 327 931 492 215 625 92 271 -10000 338 907 931 922 792 407 493 8 52 -10000 643 88 737 507 610 872 381 296 277 -10000 56 889 364 288 965 209 955 981 458 -10000 887 397 222 307 513 592 609 509 205 -10000 692 758 874 245 274 564 565 276 36 -10000 863 110 815 790 345 186 891 379 845 -10000 831 586 887 547 135 833 884 350 308 -10000 296 414 773 440 431 690 841 521 231 -10000 256 572 897 868 281 536 282 235 775 -10000 843 290 374 327 24 34 470 198 132 -10000 462 493 598 777 227 731 844 372 527 -10000 717 419 541 916 472 663 94 671 517 -10000 883 408 183 115 90 118 453 418 525 -10000 975 989 155 462 652 272 345 378 123 -10000 698 774 219 584 368 56 236 504 405 -10000 481 794 528 144 727 680 255 599 34 -10000 266 598 680 814 605 184 89 199 393 -10000 217 327 469 800 26 618 883 43 772 -10000 186 102 5 662 931 455 888 556 205 -10000 792 817 708 420 763 68 850 805 942 -10000 996 855 698 435 779 567 445 970 897 -10000 525 911 853 618 631 88 358 267 635 -10000 861 743 767 277 770 588 292 228 60 -10000 949 226 683 157 621 212 768 161 562 -10000 199 658 187 46 402 30 368 107 746 -10000 182 229 202 959 20 596 420 484 272 -10000 301 619 321 775 414 525 358 163 709 -10000 554 988 867 50 385 679 894 325 557 -10000 625 152 679 797 104 39 465 421 914 -10000 261 817 387 234 289 652 54 373 145 -10000 6 449 617 189 713 129 299 751 279 -10000 317 219 265 676 828 907 883 518 651 -10000 553 659 62 441 26 520 863 937 827 -10000 463 753 578 898 36 160 148 921 355 -10000 643 226 549 851 843 744 196 686 365 -10000 289 681 237 680 33 530 679 753 70 -10000 621 150 727 406 853 303 569 368 251 -10000 533 947 510 76 481 80 581 880 668 -10000 583 239 420 741 533 914 157 804 316 -10000 412 896 614 888 216 263 702 264 299 -10000 76 411 748 821 990 916 122 413 681 -10000 990 288 938 369 864 558 364 410 591 -10000 423 679 406 127 30 412 146 454 509 -10000 712 525 727 210 779 874 251 622 882 -10000 630 400 153 681 104 981 530 800 251 -10000 116 199 306 748 661 953 1 807 596 -10000 170 759 452 499 521 851 721 222 48 -10000 257 211 273 260 706 262 200 428 348 -10000 453 607 380 936 404 515 565 540 396 -10000 650 220 714 692 494 450 897 25 152 -10000 886 209 457 14 123 139 819 785 164 -10000 718 697 444 384 964 85 668 79 836 -10000 680 444 496 300 299 599 211 936 197 -10000 277 41 89 598 779 525 670 990 838 -10000 758 763 367 467 127 197 693 924 490 -10000 661 5 676 139 18 32 289 901 448 -10000 744 419 544 681 880 940 610 647 689 -10000 43 836 874 181 185 201 2 73 258 -10000 847 198 938 621 875 991 585 411 869 -10000 67 139 595 692 265 24 227 554 357 -10000 4 795 652 423 298 809 390 37 236 -10000 976 867 84 82 963 92 363 677 188 -10000 974 573 713 372 25 917 689 434 616 -10000 898 218 728 179 743 760 259 202 980 -10000 663 409 24 766 133 494 503 369 967 -10000 376 922 123 297 46 859 739 144 998 -10000 41 463 127 114 637 775 331 772 116 -10000 41 302 93 900 520 871 55 354 965 -10000 416 533 941 977 279 123 201 175 34 -10000 548 594 942 600 723 896 177 129 987 -10000 122 676 683 25 6 205 131 320 44 -10000 223 250 491 800 919 976 915 294 329 -10000 189 267 322 693 957 384 69 795 81 -10000 523 125 281 312 791 679 167 640 463 -10000 807 546 555 391 257 166 211 538 254 -10000 672 359 838 170 166 865 859 958 333 -10000 439 287 309 325 800 686 962 729 79 -10000 984 266 180 232 325 410 829 980 345 -10000 797 224 561 850 281 473 552 406 242 -10000 699 180 317 545 339 297 707 796 262 -10000 462 650 96 976 206 696 228 275 225 -10000 91 243 792 982 728 869 418 442 815 -10000 214 3 822 603 450 90 471 283 473 -10000 88 807 773 901 760 216 367 680 810 -10000 515 903 395 179 621 79 613 463 885 -10000 225 339 13 963 996 396 859 139 808 -10000 772 113 616 548 446 321 867 62 348 -10000 253 125 433 754 517 194 869 273 437 -10000 533 920 919 879 701 374 55 883 612 -10000 6 748 98 141 420 183 203 583 174 -10000 586 4 213 136 311 605 582 843 942 -10000 821 133 334 390 965 83 850 202 785 -10000 65 278 350 574 80 546 476 269 433 -10000 65 40 410 344 53 355 839 470 269 -10000 68 721 93 393 475 903 678 495 165 -10000 127 458 552 777 986 800 858 148 849 -10000 882 983 96 255 282 822 227 530 372 -10000 884 909 920 617 675 144 500 462 618 -10000 866 1000 46 973 71 596 995 841 392 -10000 312 179 582 440 139 170 486 693 588 -10000 245 107 284 228 58 894 765 524 311 -10000 899 588 300 99 595 722 982 619 323 -10000 87 124 421 516 234 378 931 104 127 -10000 78 547 459 956 885 366 180 438 892 -10000 97 28 188 907 641 568 606 428 236 -10000 853 559 240 272 749 89 206 135 761 -10000 134 9 661 905 301 970 653 50 422 -10000 54 903 24 22 781 16 262 882 241 -10000 838 786 399 383 279 547 339 165 843 -10000 856 168 257 98 768 869 417 521 873 -10000 814 462 962 885 306 37 524 323 290 -10000 443 904 74 292 262 387 74 973 946 -10000 465 439 996 871 68 487 851 206 429 -10000 1 907 827 538 721 390 62 55 130 -10000 744 534 243 207 212 799 748 612 389 -10000 30 571 753 259 586 976 272 563 832 -10000 627 700 742 851 445 145 530 575 461 -10000 247 607 393 958 73 989 565 165 25 -10000 118 220 837 903 672 517 516 46 156 -10000 962 232 277 357 731 124 475 994 677 -10000 647 5 147 20 592 157 384 59 352 -10000 820 681 289 151 6 812 856 528 991 -10000 379 220 652 926 314 993 851 81 855 -10000 158 528 432 569 587 194 755 742 787 -10000 222 897 99 542 131 451 582 34 295 -10000 78 585 802 709 953 932 649 645 157 -10000 415 452 371 698 606 398 257 469 809 -10000 221 99 39 959 459 897 626 204 4 -10000 578 359 784 734 488 460 384 488 860 -10000 22 182 358 684 492 111 935 142 475 -10000 574 152 98 92 716 275 667 340 337 -10000 806 934 649 478 665 521 253 994 557 -10000 502 611 682 898 159 328 717 324 542 -10000 731 309 622 708 848 494 140 64 426 -10000 581 517 226 792 811 257 835 135 425 -10000 100 700 799 670 306 58 736 297 712 -10000 148 189 450 110 346 868 989 516 560 -10000 685 882 495 139 978 637 272 990 31 -10000 534 449 424 159 640 94 931 192 446 -10000 162 982 522 458 303 174 343 753 130 -10000 127 696 946 105 110 102 409 224 600 -10000 858 110 862 303 337 397 202 591 525 -10000 232 228 153 317 408 193 515 467 961 -10000 592 739 424 570 956 670 519 3 722 -10000 408 532 851 332 893 423 668 360 20 -10000 304 327 788 766 931 615 529 331 555 -10000 820 624 162 143 247 600 397 415 706 -10000 445 259 217 595 412 342 243 221 405 -10000 916 460 728 318 8 88 688 210 274 -10000 828 493 222 54 269 576 132 981 817 -10000 478 974 198 688 596 497 879 813 352 -10000 557 198 757 532 119 23 232 621 470 -10000 10 58 912 642 53 648 501 648 902 -10000 696 505 84 750 691 201 709 508 832 -10000 861 112 221 57 9 3 428 596 1000 -10000 651 346 81 878 701 780 20 418 155 -10000 354 27 70 84 286 640 31 955 769 -10000 407 592 852 782 896 158 497 248 467 -10000 983 171 694 958 879 320 954 427 272 -10000 239 387 337 60 221 385 667 373 38 -10000 966 364 676 180 540 902 477 848 19 -10000 294 437 676 409 843 628 390 609 983 -10000 470 632 230 367 294 416 674 873 12 -10000 0 412 466 797 573 860 724 16 262 -10000 44 936 593 876 396 987 50 783 581 -10000 416 293 788 164 625 373 336 266 198 -10000 170 702 225 277 414 823 659 237 953 -10000 328 468 326 722 530 521 282 699 670 -10000 845 18 366 417 531 600 9 106 932 -10000 119 851 571 29 110 323 311 760 668 -10000 908 780 461 802 667 898 278 80 676 -10000 453 887 410 13 880 99 137 84 370 -10000 145 734 697 446 396 975 453 485 255 -10000 650 762 163 649 847 910 155 123 494 -10000 670 505 933 15 315 364 629 105 247 -10000 783 269 90 982 745 367 721 159 140 -10000 773 21 829 678 426 264 761 538 858 -10000 459 706 870 153 660 369 814 341 460 -10000 633 12 723 191 857 365 632 944 681 -10000 769 987 916 959 363 831 224 302 879 -10000 197 343 700 50 393 45 657 392 517 -10000 154 420 579 809 65 826 821 653 662 -10000 686 108 715 286 855 199 967 453 528 -10000 275 670 575 635 607 318 490 489 274 -10000 704 925 47 123 502 740 85 273 26 -10000 693 865 206 249 64 241 977 729 978 -10000 891 554 115 446 678 572 506 80 923 -10000 333 527 630 430 410 178 641 322 147 -10000 566 655 518 804 225 2 994 567 25 -10000 599 308 927 943 964 837 932 482 277 -10000 275 367 364 618 528 980 67 524 56 -10000 706 792 127 954 485 826 238 122 77 -10000 794 668 588 800 143 794 784 678 978 -10000 736 141 574 310 678 97 679 511 399 -10000 12 755 234 845 376 777 806 195 563 -10000 601 688 289 954 637 278 180 296 940 -10000 886 438 251 899 47 202 223 190 579 -10000 100 921 834 292 987 294 25 250 698 -10000 339 372 319 242 949 590 683 460 809 -10000 885 766 322 426 128 448 437 864 491 -10000 844 630 660 475 118 856 926 21 766 -10000 172 759 148 523 6 996 114 158 217 -10000 2 381 472 704 931 271 155 606 235 -10000 920 63 304 380 882 327 526 235 485 -10000 193 700 246 656 775 702 217 372 868 -10000 667 256 177 163 955 165 712 278 817 -10000 137 429 799 383 840 819 124 41 228 -10000 427 472 23 285 420 307 515 866 525 -10000 505 155 632 929 952 235 675 76 334 -10000 80 779 661 796 747 944 616 241 992 -10000 600 833 294 286 187 740 510 151 417 -10000 283 332 752 104 719 801 75 298 375 -10000 753 283 850 742 455 928 782 369 847 -10000 331 727 457 382 28 941 354 166 196 -10000 422 586 245 164 930 336 708 214 431 -10000 507 138 900 558 963 209 372 848 82 -10000 652 986 546 691 128 721 662 25 99 -10000 404 320 603 808 254 737 337 480 243 -10000 103 121 993 470 445 858 431 313 706 -10000 466 93 890 805 974 813 384 80 245 -10000 427 156 994 147 474 655 863 874 11 -10000 666 516 309 726 82 303 275 774 893 -10000 572 134 530 660 14 603 125 211 578 -10000 300 939 867 974 999 243 443 836 22 -10000 896 405 109 261 778 939 498 893 14 -10000 539 919 289 989 652 78 148 963 829 -10000 124 612 367 347 66 961 78 291 49 -10000 466 227 290 351 23 333 680 212 670 -10000 574 701 807 858 308 225 228 993 461 -10000 775 417 641 450 457 37 891 197 828 -10000 965 686 635 802 783 849 31 628 389 -10000 428 972 842 252 67 928 211 1000 55 -10000 338 602 590 397 257 571 910 690 942 -10000 324 363 62 665 370 36 699 123 382 -10000 721 478 383 131 754 262 176 124 93 -10000 710 874 594 404 765 548 545 28 535 -10000 108 310 962 69 659 597 293 155 270 -10000 188 954 383 268 164 388 152 680 995 -10000 562 912 167 979 329 51 415 233 898 -10000 853 240 257 84 998 402 272 12 735 -10000 86 336 188 712 526 716 181 467 618 -10000 247 127 976 181 113 474 241 103 521 -10000 912 443 782 899 922 905 625 980 863 -10000 735 721 404 393 985 76 121 476 553 -10000 637 130 214 170 967 252 323 855 766 -10000 307 526 625 20 331 969 302 899 591 -10000 903 141 804 705 767 846 424 188 964 -10000 178 250 124 38 110 814 848 721 662 -10000 625 778 934 725 278 485 600 220 267 -10000 888 587 377 118 161 267 75 277 599 -10000 359 688 976 424 211 795 395 608 205 -10000 394 914 208 496 114 21 554 784 706 -10000 972 826 752 408 713 487 117 412 208 -10000 846 772 747 892 643 49 76 325 392 -10000 377 652 494 910 883 572 118 644 337 -10000 237 608 237 301 975 127 539 290 310 -10000 20 246 746 79 768 293 588 561 876 -10000 50 618 904 200 25 594 992 542 149 -10000 955 139 111 613 554 35 973 227 617 -10000 920 723 725 237 125 497 815 370 689 -10000 432 80 183 179 767 389 833 861 927 -10000 966 163 245 151 406 228 388 443 646 -10000 530 956 73 535 821 114 675 720 483 -10000 152 690 546 515 229 344 842 327 88 -10000 676 429 570 832 561 146 528 934 564 -10000 520 957 684 726 370 603 165 57 19 -10000 500 831 275 957 995 763 110 598 755 -10000 436 763 895 467 901 988 385 203 354 -10000 192 55 746 867 997 818 117 950 212 -10000 29 368 796 301 134 337 913 798 64 -10000 645 780 228 515 596 951 69 174 333 -10000 471 622 361 447 267 99 828 716 93 -10000 463 121 820 119 51 931 516 46 722 -10000 574 488 163 405 908 632 79 774 504 -10000 914 738 865 964 516 195 344 382 740 -10000 715 112 86 960 59 327 842 18 606 -10000 201 128 295 340 93 931 316 717 622 -10000 806 776 386 815 230 112 770 453 481 -10000 117 355 559 64 157 440 663 622 873 -10000 680 497 417 278 200 642 731 978 696 -10000 858 302 201 761 523 391 114 638 832 -10000 356 464 477 649 913 948 179 410 479 -10000 292 520 413 377 793 543 435 814 813 -10000 688 772 88 82 91 227 609 368 321 -10000 459 731 654 33 467 925 81 875 872 -10000 841 167 832 665 881 102 38 493 80 -10000 970 634 23 968 903 42 883 893 370 -10000 196 735 696 272 852 193 319 870 222 -10000 382 326 777 543 283 731 247 597 222 -10000 462 863 273 618 524 583 556 53 465 -10000 116 118 724 845 253 605 433 987 636 -10000 130 21 765 14 490 636 642 459 77 -10000 699 469 150 64 928 944 339 240 281 -10000 664 695 838 755 358 647 200 859 365 -10000 603 29 71 867 431 677 47 250 415 -10000 335 990 871 994 961 476 720 674 470 -10000 359 380 549 892 488 899 263 491 202 -10000 621 987 538 822 330 697 460 208 522 -10000 242 283 384 826 46 510 882 382 498 -10000 246 712 977 105 435 26 773 583 693 -10000 592 962 657 763 510 367 972 24 908 -10000 160 169 204 64 678 927 273 256 218 -10000 623 325 397 551 678 10 882 132 529 -10000 920 129 750 977 865 1 552 866 460 -10000 807 914 764 708 966 640 69 306 885 -10000 830 752 658 956 122 863 55 634 622 -10000 487 695 377 261 653 173 261 920 377 -10000 350 241 858 164 449 377 942 573 812 -10000 501 437 129 29 608 99 331 359 918 -10000 85 589 819 701 518 730 946 278 657 -10000 592 963 525 626 428 367 507 607 60 -10000 247 906 481 324 466 811 991 642 952 -10000 811 786 495 179 208 953 885 213 940 -10000 558 357 315 402 719 357 863 394 163 -10000 763 801 118 863 780 727 52 244 145 -10000 72 846 568 678 699 78 472 615 729 -10000 614 165 645 936 107 548 995 728 173 -10000 198 640 931 115 877 573 329 860 36 -10000 854 950 802 350 690 396 99 493 248 -10000 82 480 234 377 152 311 351 351 505 -10000 659 315 327 547 649 828 444 69 109 -10000 811 812 480 688 337 68 654 456 34 -10000 378 795 687 710 424 117 631 636 632 -10000 803 125 666 240 129 532 444 84 71 -10000 387 604 322 249 450 222 586 803 605 -10000 706 392 144 464 373 919 784 399 424 -10000 977 911 220 757 828 51 810 579 45 -10000 480 785 406 2 453 637 82 331 926 -10000 45 569 250 535 342 919 62 875 891 -10000 572 365 615 152 109 856 755 288 437 -10000 4 286 100 230 768 15 950 368 137 -10000 753 857 384 10 49 891 899 836 695 -10000 990 829 598 938 528 403 602 424 725 -10000 15 491 314 896 453 535 360 215 803 -10000 578 685 554 180 768 810 39 911 944 -10000 991 501 993 431 651 556 590 888 539 -10000 373 961 413 259 170 378 768 893 429 -10000 629 655 118 928 906 838 940 840 401 -10000 358 208 69 107 789 103 744 927 807 -10000 852 67 622 452 433 276 210 251 364 -10000 197 681 909 623 747 50 403 30 0 -10000 560 304 607 460 141 23 935 597 825 -10000 6 544 561 856 370 29 814 390 965 -10000 652 277 865 68 367 521 131 964 422 -10000 28 229 496 516 215 838 125 417 273 -10000 396 756 840 917 397 611 565 209 157 -10000 405 797 750 20 298 816 284 678 524 -10000 428 539 459 932 124 688 292 460 340 -10000 696 507 896 562 779 783 490 354 750 -10000 621 591 326 778 557 488 342 472 875 -10000 999 623 286 658 634 860 915 516 317 -10000 885 88 690 332 315 816 428 118 59 -10000 135 38 677 380 34 457 992 893 198 -10000 598 469 70 11 190 609 633 173 271 -10000 734 950 257 792 791 796 201 158 285 -10000 105 262 600 7 972 432 278 936 752 -10000 665 687 468 5 768 475 876 994 823 -10000 82 481 356 948 976 514 130 936 35 -10000 909 757 957 630 379 909 86 530 699 -10000 936 144 278 321 744 986 631 746 25 -10000 928 264 623 255 201 142 337 132 889 -10000 544 540 440 143 722 81 305 545 157 -10000 69 684 40 817 481 16 548 673 332 -10000 484 488 578 28 580 270 489 856 730 -10000 532 373 317 416 773 619 910 489 568 -10000 565 383 605 907 964 457 764 609 9 -10000 366 770 424 581 833 152 27 467 810 -10000 941 559 504 414 881 55 2 672 809 -10000 644 355 935 711 723 525 1 297 904 -10000 431 88 359 810 179 312 657 463 833 -10000 718 256 466 592 606 237 695 964 357 -10000 36 325 57 493 136 468 663 81 231 -10000 345 19 980 208 521 921 412 63 373 -10000 488 34 829 28 202 41 616 548 394 -10000 887 215 991 827 620 675 285 754 487 -10000 439 949 891 558 828 509 432 967 565 -10000 972 860 731 842 270 560 206 184 980 -10000 238 375 153 815 158 288 119 681 50 -10000 389 691 501 694 939 124 322 809 566 -10000 170 410 419 267 162 704 683 995 483 -10000 429 49 41 515 161 519 737 601 702 -10000 346 648 766 722 312 649 245 222 54 -10000 528 904 89 407 350 744 700 807 148 -10000 508 30 54 628 863 577 808 329 703 -10000 800 476 641 938 74 886 238 826 234 -10000 861 613 436 726 344 608 686 164 744 -10000 261 519 537 448 923 779 315 311 431 -10000 362 53 203 874 28 428 737 237 44 -10000 616 455 512 689 230 35 976 794 705 -10000 320 652 509 719 845 678 77 494 257 -10000 502 881 872 375 990 693 157 773 545 -10000 515 983 768 955 334 836 292 209 805 -10000 663 580 700 320 59 661 415 467 611 -10000 172 494 384 65 336 912 283 381 850 -10000 494 236 905 457 425 715 517 497 206 -10000 362 432 483 231 708 391 44 311 393 -10000 831 776 27 68 883 172 712 263 115 -10000 934 360 401 435 177 381 610 597 876 -10000 379 407 888 466 375 998 724 605 657 -10000 252 41 163 994 415 257 625 24 283 -10000 255 965 411 83 906 686 387 547 321 -10000 470 789 349 697 782 648 287 350 62 -10000 602 42 246 30 561 530 863 365 441 -10000 115 975 68 112 529 2 469 485 607 -10000 606 77 534 790 167 1 774 87 383 -10000 283 47 788 187 338 296 404 354 71 -10000 913 867 673 5 278 15 469 254 375 -10000 380 411 107 685 307 356 707 520 373 -10000 565 368 500 692 564 859 962 986 360 -10000 678 85 514 945 129 504 585 789 658 -10000 730 130 650 22 517 432 513 105 282 -10000 799 172 331 954 71 930 412 154 879 -10000 383 551 253 933 161 873 129 470 666 -10000 696 832 461 863 378 82 432 467 810 -10000 101 816 49 198 919 966 911 126 397 -10000 322 932 785 600 543 620 593 296 646 -10000 556 453 499 818 319 606 998 92 498 -10000 791 938 504 813 143 624 470 853 246 -10000 645 284 854 191 544 599 918 6 750 -10000 813 727 577 932 538 767 877 750 650 -10000 718 420 914 881 271 153 569 339 796 -10000 410 821 794 827 505 881 617 255 993 -10000 14 821 402 488 718 74 147 131 218 -10000 877 58 310 682 261 36 768 168 834 -10000 754 475 120 533 375 100 398 236 937 -10000 938 294 282 654 657 658 635 735 597 -10000 871 478 619 107 923 538 400 577 419 -10000 535 980 489 775 889 944 291 716 984 -10000 103 682 787 920 580 66 219 16 962 -10000 91 711 873 283 288 602 489 494 903 -10000 544 198 670 775 433 78 542 282 718 -10000 492 461 385 153 890 764 137 145 822 -10000 999 572 9 385 466 550 935 133 230 -10000 515 337 903 77 15 600 756 192 462 -10000 892 926 935 513 336 853 460 1 316 -10000 215 440 714 981 45 13 954 490 769 -10000 725 324 609 216 458 49 368 435 843 -10000 204 837 943 182 341 526 869 774 647 -10000 610 924 932 775 672 990 758 984 221 -10000 20 311 218 496 730 108 925 648 614 -10000 198 601 330 757 442 867 141 446 562 -10000 773 221 24 619 902 838 175 48 259 -10000 907 227 700 540 934 53 48 191 600 -10000 419 384 853 104 575 323 474 721 545 -10000 282 925 476 417 78 734 146 809 814 -10000 598 460 540 890 836 590 380 98 600 -10000 533 538 779 858 264 836 919 630 635 -10000 471 572 873 429 259 124 732 177 706 -10000 773 640 66 606 403 265 928 452 806 -10000 735 912 285 28 158 370 488 888 657 -10000 272 491 619 69 915 85 870 72 457 -10000 400 284 357 48 822 230 981 698 494 -10000 674 9 287 317 240 162 423 301 246 -10000 188 988 627 94 707 748 205 174 990 -10000 549 890 449 858 87 569 336 966 889 -10000 834 596 877 127 26 521 294 605 457 -10000 238 63 608 542 71 862 543 643 280 -10000 475 233 815 489 162 858 151 628 256 -10000 256 169 264 950 212 998 347 494 785 -10000 305 647 211 40 184 844 110 118 716 -10000 962 963 188 459 503 769 249 864 475 -10000 473 950 34 408 264 498 527 389 127 -10000 562 971 651 220 509 44 121 302 141 -10000 833 556 48 581 785 22 65 150 438 -10000 200 354 503 637 616 32 951 12 644 -10000 561 470 989 356 338 530 142 216 487 -10000 623 419 591 665 388 851 235 898 85 -10000 928 301 517 232 346 551 596 208 911 -10000 673 384 706 421 559 737 230 355 480 -10000 665 360 907 485 778 553 424 100 756 -10000 659 276 316 291 282 1000 8 879 82 -10000 131 831 81 884 865 37 590 910 971 -10000 487 940 522 953 476 633 580 656 267 -10000 736 653 633 376 912 404 950 750 980 -10000 935 319 1000 5 4 768 275 606 911 -10000 221 449 486 369 932 998 327 630 894 -10000 696 929 881 726 438 218 802 1000 401 -10000 64 935 214 408 611 508 173 854 39 -10000 792 475 115 366 157 581 560 388 207 -10000 395 887 155 451 69 806 947 666 93 -10000 44 171 933 901 496 356 532 819 367 -10000 885 158 707 665 114 405 87 383 389 -10000 137 611 470 285 68 771 116 421 543 -10000 674 573 25 7 808 375 105 771 348 -10000 32 735 21 580 261 622 531 125 911 -10000 646 68 509 881 284 59 835 813 771 -10000 53 245 830 599 467 466 229 99 571 -10000 44 354 212 451 357 138 263 966 626 -10000 619 614 421 770 607 261 22 735 211 -10000 646 68 507 997 557 203 159 999 220 -10000 934 535 76 940 617 140 592 294 582 -10000 821 344 420 565 50 782 538 652 650 -10000 552 954 600 92 755 973 12 74 179 -10000 739 126 676 993 919 984 695 978 51 -10000 670 635 556 981 260 9 805 623 851 -10000 531 148 949 260 736 326 89 239 301 -10000 271 785 368 776 793 203 135 366 420 -10000 997 388 421 402 52 193 753 733 509 -10000 987 882 740 957 399 85 91 233 697 -10000 689 673 537 538 866 749 411 978 0 -10000 195 727 171 563 242 820 931 561 417 -10000 924 421 138 651 821 806 950 402 569 -10000 895 731 150 557 365 603 924 341 551 -10000 258 306 710 204 16 499 672 19 520 -10000 511 230 292 970 702 671 647 931 933 -10000 5 405 752 529 751 473 121 718 479 -10000 293 208 672 23 630 580 75 282 70 -10000 931 926 579 481 555 911 204 663 872 -10000 729 857 102 151 611 526 264 509 219 -10000 333 502 922 798 94 18 289 935 898 -10000 1 496 982 169 142 583 135 317 376 -10000 238 346 625 537 877 844 566 920 245 -10000 359 27 913 907 232 145 779 571 689 -10000 587 527 470 549 892 132 771 608 82 -10000 8 890 509 196 956 103 829 500 533 -10000 958 595 528 676 198 293 153 574 67 -10000 807 23 111 715 994 246 350 102 630 -10000 619 754 166 389 917 441 342 506 775 -10000 941 891 755 982 451 281 416 893 435 -10000 703 247 598 587 755 512 221 542 685 -10000 863 931 974 555 976 700 403 715 454 -10000 705 783 39 757 700 852 760 249 346 -10000 960 955 136 950 375 239 594 559 315 -10000 694 588 350 349 168 984 765 55 620 -10000 557 145 925 1000 903 836 946 73 133 -10000 13 685 502 994 600 818 47 658 402 -10000 259 18 265 149 880 242 231 47 685 -10000 689 286 584 569 914 432 735 218 425 -10000 228 731 378 584 899 597 415 841 262 -10000 436 208 169 930 997 261 286 659 364 -10000 709 827 751 323 826 202 396 33 253 -10000 400 134 988 32 574 967 569 910 232 -10000 263 667 578 336 364 280 194 611 692 -10000 704 287 251 151 36 106 860 592 722 -10000 998 797 293 800 402 202 741 308 374 -10000 172 539 652 731 574 765 294 847 636 -10000 195 545 632 33 310 339 867 360 240 -10000 414 658 329 926 165 469 750 623 502 -10000 307 542 65 282 316 269 105 69 852 -10000 117 837 634 89 394 556 945 65 271 -10000 570 86 312 451 432 773 929 720 285 -10000 416 254 564 283 522 77 812 78 789 -10000 512 315 215 939 370 998 171 727 106 -10000 370 576 738 332 48 573 312 251 133 -10000 311 724 977 984 162 506 171 3 361 -10000 724 331 502 592 215 420 886 986 770 -10000 189 418 373 386 610 377 642 912 107 -10000 801 888 36 837 851 922 562 487 423 -10000 855 387 326 303 871 214 183 749 258 -10000 789 269 790 288 509 673 720 745 524 -10000 158 674 661 430 718 995 712 479 115 -10000 86 654 159 385 566 491 560 471 514 -10000 853 592 524 320 255 804 167 941 268 -10000 513 753 938 505 224 495 279 938 26 -10000 927 653 990 626 119 270 968 24 954 -10000 763 669 772 310 64 139 517 152 686 -10000 123 564 911 515 740 51 330 130 241 -10000 577 675 302 904 812 915 246 125 991 -10000 877 723 194 285 24 547 815 534 567 -10000 634 553 750 801 263 633 992 978 979 -10000 172 595 9 618 371 974 180 308 28 -10000 339 441 47 117 92 179 358 996 43 -10000 290 613 148 545 350 692 743 168 322 -10000 188 491 928 386 286 28 394 342 884 -10000 2 984 892 519 6 565 902 909 116 -10000 955 452 394 923 598 503 33 809 695 -10000 183 971 68 21 720 45 162 872 454 -10000 419 866 921 439 842 881 426 105 395 -10000 310 349 997 525 337 151 299 260 337 -10000 90 436 468 188 437 972 358 290 709 -10000 146 813 684 76 273 150 938 591 801 -10000 817 121 308 308 482 201 161 619 39 -10000 324 912 455 227 272 539 583 789 700 -10000 551 438 889 935 975 867 218 487 101 -10000 757 802 119 119 75 897 349 223 660 -10000 696 356 486 708 869 244 133 199 814 -10000 579 240 559 575 230 705 58 495 820 -10000 952 39 814 621 966 982 625 165 710 -10000 138 513 164 832 601 279 346 794 792 -10000 837 763 807 667 157 352 233 735 341 -10000 570 563 900 81 933 621 178 665 566 -10000 992 305 415 782 431 380 424 555 457 -10000 810 598 520 524 171 741 706 909 782 -10000 699 178 177 780 983 389 206 354 529 -10000 246 402 486 404 750 664 572 615 378 -10000 706 652 882 512 990 981 819 156 118 -10000 582 390 97 460 88 506 482 892 621 -10000 330 723 920 759 39 165 295 301 372 -10000 863 390 771 199 524 397 603 980 872 -10000 864 921 782 680 832 653 36 159 544 -10000 914 575 843 101 888 502 433 195 956 -10000 87 235 325 714 646 686 75 943 666 -10000 740 315 35 970 422 558 357 725 422 -10000 630 203 715 60 178 309 739 279 383 -10000 838 754 302 938 429 270 499 663 387 -10000 955 632 571 734 592 604 366 77 458 -10000 313 992 685 425 406 275 87 322 729 -10000 780 874 490 55 71 198 266 585 814 -10000 132 762 645 379 729 535 45 278 538 -10000 79 778 374 292 589 428 572 975 481 -10000 781 405 448 980 354 776 469 721 525 -10000 247 300 426 856 312 95 5 700 224 -10000 826 978 805 785 7 2 538 696 619 -10000 599 803 795 716 458 340 623 259 659 -10000 561 400 392 618 276 250 932 408 99 -10000 440 145 798 286 378 723 212 207 521 -10000 85 980 151 383 338 436 815 807 382 -10000 895 622 397 309 705 502 132 76 878 -10000 66 402 320 421 296 234 873 960 35 -10000 152 966 332 237 558 756 956 571 697 -10000 469 575 830 426 33 484 648 368 957 -10000 615 448 320 640 666 141 605 387 522 -10000 430 443 291 250 923 955 948 677 168 -10000 218 778 924 538 827 343 137 117 477 -10000 843 130 698 68 180 881 904 315 449 -10000 889 890 87 240 41 675 862 328 610 -10000 546 320 118 229 608 216 409 95 353 -10000 73 237 707 513 390 0 705 463 14 -10000 137 10 315 789 295 994 61 277 977 -10000 163 421 254 922 620 61 516 706 48 -10000 993 960 253 387 358 256 665 581 238 -10000 224 91 420 815 854 637 389 694 254 -10000 297 486 316 156 126 221 571 680 464 -10000 377 607 34 221 6 193 977 3 656 -10000 102 914 623 576 179 39 336 582 301 -10000 77 696 605 247 867 716 663 892 374 -10000 471 298 427 591 745 428 258 387 15 -10000 826 362 286 436 616 898 810 453 995 -10000 321 160 924 904 264 238 12 946 341 -10000 367 665 998 176 940 240 747 750 559 -10000 990 286 417 565 446 919 783 930 909 -10000 79 612 716 957 430 453 701 859 661 -10000 687 869 442 778 16 106 55 57 951 -10000 943 585 306 931 72 801 906 677 328 -10000 134 839 312 11 419 831 789 317 543 -10000 499 439 441 807 45 240 633 77 696 -10000 314 846 378 225 505 797 143 115 275 -10000 941 313 729 98 433 447 342 131 746 -10000 932 408 614 175 83 688 559 393 464 -10000 491 844 392 317 460 216 257 40 452 -10000 833 880 4 656 685 742 343 466 754 -10000 673 959 449 268 492 75 70 161 919 -10000 950 540 471 217 96 679 647 463 747 -10000 149 946 523 623 78 71 198 669 582 -10000 829 74 115 927 190 930 19 766 145 -10000 305 377 351 761 136 497 316 768 261 -10000 980 965 166 953 959 859 585 368 597 -10000 469 392 170 81 935 662 72 995 482 -10000 99 79 835 134 62 552 626 966 918 -10000 632 421 784 88 524 712 729 260 262 -10000 721 965 414 413 288 244 165 382 835 -10000 946 519 320 490 106 744 680 34 239 -10000 124 453 571 258 500 96 643 49 710 -10000 403 11 542 265 536 936 740 269 778 -10000 38 283 495 854 243 354 416 791 241 -10000 295 25 447 772 826 293 911 276 963 -10000 826 18 855 839 164 23 43 216 679 -10000 296 655 67 392 996 761 210 989 543 -10000 297 69 202 130 754 501 78 986 310 -10000 703 571 287 628 18 198 275 581 926 -10000 998 805 180 888 127 55 21 957 992 -10000 201 784 911 686 459 832 890 836 566 -10000 816 124 864 426 663 599 922 453 933 -10000 810 860 804 324 134 847 937 627 928 -10000 263 431 350 455 896 812 273 360 296 -10000 389 470 56 881 464 131 117 201 145 -10000 778 734 484 135 324 724 36 995 655 -10000 87 434 59 159 503 705 650 390 943 -10000 844 316 965 497 103 604 923 222 864 -10000 135 343 584 596 756 376 311 306 771 -10000 955 802 655 477 81 498 799 673 322 -10000 855 647 999 448 883 412 230 94 438 -10000 401 117 963 949 566 720 903 929 255 -10000 705 642 711 625 183 880 317 50 169 -10000 574 189 416 718 895 848 669 991 533 -10000 919 412 587 18 252 389 832 960 221 -10000 624 659 141 311 860 796 626 377 422 -10000 934 329 579 809 504 2 953 997 93 -10000 859 258 362 291 255 35 875 272 240 -10000 408 374 862 773 8 509 921 180 25 -10000 409 19 203 542 953 297 14 893 331 -10000 171 341 638 664 476 497 837 796 254 -10000 544 96 940 360 80 376 718 633 164 -10000 444 378 268 0 716 903 513 491 314 -10000 95 206 472 218 743 611 438 274 190 -10000 60 40 627 214 692 463 679 439 306 -10000 64 568 414 61 586 324 763 486 210 -10000 408 313 668 588 119 898 868 651 755 -10000 81 652 898 695 505 199 560 810 103 -10000 55 352 226 745 487 580 687 642 881 -10000 507 736 843 26 138 670 863 709 529 -10000 713 373 323 980 925 711 16 108 600 -10000 87 13 802 917 768 864 375 759 492 end maximize 0 10000 10000 10000 10000 10000 10000 -10000 -10000 -10000 !adjacency cddlib-0.94j/examples/samplelp_big.ine0000644000175000017500000151001413270061057014736 00000000000000H-representation begin 10000 10 integer 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 -10000 651 693 84 697 637 340 368 824 663 -10000 725 742 387 219 751 430 202 745 356 -10000 377 674 979 167 815 988 412 676 475 -10000 710 275 949 284 629 1 422 974 510 -10000 692 945 725 488 271 430 724 225 726 -10000 465 258 450 343 87 168 161 103 919 -10000 86 79 656 493 832 514 791 506 29 -10000 63 630 874 918 877 272 992 119 480 -10000 598 926 42 378 288 66 927 919 99 -10000 256 354 106 979 641 160 395 225 837 -10000 202 388 900 471 160 751 300 731 818 -10000 342 502 825 563 639 261 194 984 990 -10000 266 406 364 216 448 675 145 694 866 -10000 362 983 732 378 134 902 946 877 205 -10000 926 125 949 888 234 630 275 707 67 -10000 634 81 192 768 652 822 311 961 895 -10000 983 597 743 314 696 585 367 396 826 -10000 511 545 539 97 111 996 477 35 372 -10000 474 103 152 753 159 120 929 161 563 -10000 549 793 307 456 444 184 149 792 894 -10000 839 488 917 192 168 788 959 245 25 -10000 750 165 338 182 392 381 962 117 713 -10000 738 827 943 507 914 814 951 663 815 -10000 493 339 225 351 450 788 992 167 792 -10000 174 773 247 247 180 517 445 599 596 -10000 303 26 967 39 535 4 7 335 217 -10000 772 173 189 291 668 191 610 677 544 -10000 848 642 40 125 865 100 259 534 648 -10000 501 622 398 624 118 416 30 17 236 -10000 218 602 697 892 322 314 361 573 985 -10000 958 856 608 492 563 478 311 614 740 -10000 582 913 938 949 715 338 39 726 998 -10000 521 805 708 221 624 316 24 127 322 -10000 491 189 412 774 418 200 193 633 315 -10000 144 679 383 447 989 939 441 631 482 -10000 940 241 153 215 149 457 254 207 125 -10000 80 873 207 904 684 600 940 431 825 -10000 75 100 353 637 432 377 940 758 164 -10000 627 721 915 710 8 786 96 17 576 -10000 247 104 607 432 540 164 597 282 317 -10000 553 787 881 942 152 318 44 509 518 -10000 181 772 942 993 916 900 713 694 812 -10000 625 26 638 261 385 196 676 717 572 -10000 11 911 296 761 658 631 757 817 400 -10000 964 989 879 491 490 751 490 97 405 -10000 28 461 343 452 480 504 411 242 892 -10000 768 746 347 352 724 487 185 767 287 -10000 924 228 958 554 352 460 765 742 430 -10000 737 986 499 993 721 29 821 416 813 -10000 483 458 249 781 584 321 779 209 570 -10000 222 166 975 53 765 256 859 469 164 -10000 82 696 181 166 375 145 415 496 261 -10000 540 309 526 918 439 489 846 417 775 -10000 699 145 327 873 467 866 711 393 603 -10000 445 668 729 224 654 970 279 789 680 -10000 28 659 365 306 186 520 427 176 191 -10000 919 58 859 436 105 35 560 716 14 -10000 641 238 340 524 205 255 272 14 472 -10000 817 22 904 782 573 847 649 100 280 -10000 925 277 930 495 736 960 276 726 657 -10000 336 54 357 979 941 765 593 630 286 -10000 65 113 104 915 222 158 580 520 188 -10000 42 617 904 414 588 857 416 94 988 -10000 716 49 849 67 607 99 934 184 217 -10000 458 32 500 552 108 980 255 998 935 -10000 860 936 115 268 231 281 948 209 766 -10000 293 330 940 570 857 421 574 481 364 -10000 959 949 372 757 306 757 752 312 137 -10000 769 303 737 260 187 695 946 723 433 -10000 980 564 605 363 776 893 558 616 603 -10000 945 23 632 820 54 677 795 616 625 -10000 629 692 585 33 674 703 304 489 949 -10000 52 903 723 746 692 232 917 933 211 -10000 367 566 364 318 607 818 424 234 605 -10000 915 305 354 829 469 447 925 188 799 -10000 387 596 946 888 751 614 539 295 299 -10000 969 902 10 739 289 923 808 28 151 -10000 537 152 546 442 182 301 258 265 762 -10000 671 288 343 199 694 391 457 947 250 -10000 415 734 423 435 696 111 53 227 784 -10000 800 992 720 76 40 419 608 182 683 -10000 619 627 278 526 453 960 772 992 86 -10000 836 623 0 21 371 4 676 964 658 -10000 258 677 64 968 62 219 587 308 299 -10000 224 823 258 449 575 526 908 585 405 -10000 593 660 663 341 36 79 50 242 293 -10000 80 761 270 460 82 133 874 559 41 -10000 169 539 257 827 222 743 873 929 523 -10000 403 167 259 377 76 160 749 448 902 -10000 290 5 276 509 342 909 193 443 552 -10000 928 326 757 405 598 765 143 833 150 -10000 980 57 636 651 219 232 88 486 918 -10000 497 765 499 464 558 377 2 973 249 -10000 515 282 55 576 464 532 575 180 363 -10000 364 958 202 876 867 738 626 474 998 -10000 568 905 231 136 80 320 525 113 263 -10000 544 823 341 402 593 289 248 928 649 -10000 933 338 757 771 671 811 610 138 31 -10000 460 185 660 628 321 350 46 944 444 -10000 71 824 884 313 938 572 685 825 382 -10000 793 750 63 112 309 360 490 435 964 -10000 78 228 800 657 708 3 806 551 738 -10000 940 612 1000 136 897 98 301 169 453 -10000 622 731 111 813 606 90 909 272 319 -10000 86 544 118 257 317 831 90 817 236 -10000 585 919 232 848 794 806 343 335 829 -10000 377 606 349 399 913 171 571 616 800 -10000 682 428 30 101 974 945 600 399 502 -10000 296 793 418 28 591 660 445 26 496 -10000 387 389 533 927 500 96 946 191 298 -10000 585 201 36 877 289 768 485 248 593 -10000 811 70 801 255 538 112 190 464 880 -10000 140 329 863 237 44 600 946 766 472 -10000 288 987 463 359 777 245 559 75 584 -10000 599 918 820 636 458 477 884 249 324 -10000 268 669 503 151 851 965 12 962 421 -10000 886 810 370 680 300 192 160 41 978 -10000 911 866 827 610 267 579 728 735 865 -10000 812 307 646 415 323 865 727 419 825 -10000 907 515 473 962 463 617 10 295 380 -10000 195 257 576 495 533 872 756 930 963 -10000 600 87 210 845 983 743 853 67 647 -10000 917 353 7 655 892 882 266 922 414 -10000 183 740 375 18 710 301 952 62 442 -10000 266 287 679 727 674 681 493 782 785 -10000 405 399 10 102 193 816 763 67 188 -10000 379 904 872 592 812 505 532 332 293 -10000 799 767 946 648 329 915 94 208 947 -10000 325 157 957 330 115 669 488 876 388 -10000 347 600 60 885 372 10 932 71 662 -10000 126 27 782 868 129 796 249 129 961 -10000 47 758 192 754 275 38 979 817 851 -10000 343 571 331 621 971 777 476 748 674 -10000 809 899 306 498 353 605 388 830 537 -10000 738 956 364 819 546 568 806 391 634 -10000 485 24 645 86 748 685 599 771 910 -10000 180 446 81 859 355 361 268 563 185 -10000 690 786 940 318 90 910 439 711 321 -10000 402 465 459 973 442 263 985 935 412 -10000 263 51 654 405 989 273 463 954 598 -10000 426 464 295 965 676 968 904 405 986 -10000 685 420 652 710 156 848 86 802 138 -10000 544 708 753 677 881 507 438 209 797 -10000 968 104 528 84 650 955 414 654 177 -10000 883 177 230 921 38 263 134 11 371 -10000 706 7 105 771 148 739 88 619 428 -10000 500 411 938 101 40 321 140 14 599 -10000 769 211 579 855 310 475 194 796 195 -10000 292 516 654 968 875 866 394 544 637 -10000 356 145 384 307 242 837 335 95 863 -10000 342 354 470 826 726 878 987 660 800 -10000 767 658 978 534 588 387 297 231 130 -10000 88 21 710 369 618 685 551 520 677 -10000 73 398 733 465 628 452 106 179 482 -10000 131 908 760 799 67 598 274 260 796 -10000 481 617 828 798 996 323 657 858 158 -10000 701 692 978 258 527 187 524 639 326 -10000 348 290 514 805 91 926 644 230 188 -10000 79 946 505 743 681 936 190 474 934 -10000 843 150 316 559 631 261 458 868 685 -10000 193 793 226 49 488 768 853 955 301 -10000 205 459 596 58 816 18 367 744 981 -10000 238 33 698 381 183 602 418 65 236 -10000 811 797 577 102 538 447 403 444 379 -10000 837 971 600 411 389 971 962 376 357 -10000 452 154 338 712 682 676 785 945 194 -10000 310 679 608 871 620 687 724 220 134 -10000 632 150 799 565 737 689 170 207 45 -10000 14 189 90 397 287 917 307 108 806 -10000 143 730 654 241 266 401 526 921 4 -10000 605 264 55 155 939 701 690 305 628 -10000 415 26 454 957 161 334 187 629 402 -10000 63 253 610 926 670 625 601 943 11 -10000 310 649 405 751 100 358 139 32 3 -10000 808 256 663 357 994 725 640 522 117 -10000 969 618 817 528 267 975 47 534 291 -10000 996 941 661 798 722 636 701 991 106 -10000 241 5 42 477 245 775 773 625 591 -10000 443 238 944 397 908 720 259 554 763 -10000 332 237 839 679 166 929 480 234 416 -10000 748 413 366 515 22 530 625 75 63 -10000 789 656 197 145 128 99 620 704 58 -10000 530 794 202 273 724 41 956 798 201 -10000 360 503 723 593 121 214 415 298 367 -10000 650 928 97 805 461 199 950 43 679 -10000 989 697 970 220 5 815 346 916 628 -10000 765 568 582 330 894 230 650 206 865 -10000 734 446 138 485 471 991 531 119 78 -10000 393 203 321 395 750 634 400 280 223 -10000 802 246 336 600 995 171 254 492 113 -10000 993 419 160 353 267 413 573 479 823 -10000 670 105 823 362 489 965 826 96 289 -10000 695 401 876 118 749 9 446 122 1 -10000 454 428 778 515 327 127 287 45 156 -10000 277 677 575 415 230 219 324 243 510 -10000 821 212 232 919 958 314 193 398 339 -10000 774 927 394 573 176 432 850 810 271 -10000 64 420 574 969 819 40 320 543 988 -10000 712 942 387 70 129 211 245 990 147 -10000 321 292 31 875 675 150 121 721 898 -10000 424 509 850 565 59 54 290 545 690 -10000 491 16 78 354 936 326 573 679 26 -10000 65 159 284 948 748 688 747 282 904 -10000 505 688 153 449 464 397 677 560 885 -10000 998 272 175 516 854 256 658 643 811 -10000 608 944 450 473 55 276 718 665 912 -10000 410 450 712 520 618 1 640 653 36 -10000 671 858 795 275 471 974 949 997 991 -10000 984 488 767 4 400 719 946 238 559 -10000 419 380 266 969 41 533 560 251 819 -10000 797 69 963 37 455 940 899 937 942 -10000 925 286 674 70 609 419 62 546 962 -10000 20 747 680 680 313 563 953 703 473 -10000 532 399 212 682 8 769 794 165 378 -10000 78 363 76 494 977 380 91 433 490 -10000 904 741 364 962 123 33 511 141 148 -10000 673 669 20 381 205 311 231 169 519 -10000 539 517 201 354 927 525 499 568 119 -10000 474 448 888 207 674 179 960 963 345 -10000 577 520 368 590 615 460 365 560 59 -10000 90 892 791 939 581 913 510 597 600 -10000 759 403 402 489 894 159 165 211 107 -10000 39 505 741 603 829 405 426 772 949 -10000 95 75 480 14 943 784 704 364 797 -10000 221 48 785 941 710 663 837 873 948 -10000 576 865 485 12 387 404 217 92 584 -10000 189 134 496 752 863 182 513 619 414 -10000 1 360 747 226 62 550 119 906 186 -10000 190 643 774 732 479 187 198 454 829 -10000 618 966 298 93 43 58 855 427 801 -10000 604 678 584 422 1 814 476 948 330 -10000 967 718 957 487 509 582 247 534 721 -10000 780 366 528 829 153 177 74 429 204 -10000 814 828 71 549 868 266 394 855 380 -10000 709 222 827 265 441 583 680 717 922 -10000 126 596 700 40 643 887 610 727 170 -10000 243 168 340 114 663 21 802 665 775 -10000 839 708 980 836 280 24 971 945 274 -10000 301 47 70 613 970 382 762 675 881 -10000 777 916 674 551 497 979 511 398 199 -10000 125 844 5 832 153 739 85 135 74 -10000 609 447 233 891 524 729 553 191 703 -10000 465 39 655 692 782 163 562 386 416 -10000 809 291 321 702 744 815 218 845 936 -10000 724 608 161 45 161 258 703 409 856 -10000 755 603 220 9 49 91 985 479 832 -10000 155 574 242 379 298 763 697 82 210 -10000 388 287 783 999 428 625 887 942 687 -10000 105 403 535 523 600 620 211 412 141 -10000 693 999 554 26 428 361 576 273 527 -10000 71 197 936 543 176 71 996 196 497 -10000 801 596 352 228 131 114 796 427 184 -10000 4 982 932 606 343 380 468 325 115 -10000 367 432 482 699 315 580 413 902 230 -10000 438 920 614 517 468 915 341 622 596 -10000 709 110 768 699 424 943 993 295 399 -10000 700 407 369 384 719 532 128 473 753 -10000 137 662 132 845 631 832 838 84 51 -10000 456 189 318 257 828 561 65 64 878 -10000 813 512 935 275 775 361 416 658 602 -10000 658 168 573 358 670 417 911 489 668 -10000 859 215 499 376 862 244 332 935 912 -10000 732 47 545 84 628 941 916 498 185 -10000 827 540 32 267 31 722 427 405 66 -10000 607 806 139 261 825 533 52 853 322 -10000 37 500 336 873 677 267 649 472 523 -10000 305 609 829 108 674 900 859 854 138 -10000 957 85 196 43 289 72 891 335 539 -10000 280 124 918 15 378 855 534 322 450 -10000 728 500 341 953 879 251 821 653 38 -10000 515 962 374 238 729 828 174 54 751 -10000 524 38 201 115 426 791 903 631 687 -10000 926 877 370 415 216 697 111 217 844 -10000 335 296 626 805 977 232 700 222 680 -10000 817 819 455 184 593 658 908 662 932 -10000 260 101 482 639 761 829 521 89 597 -10000 6 313 603 589 446 684 46 261 737 -10000 471 579 858 376 24 850 404 941 726 -10000 154 163 624 975 348 594 920 656 132 -10000 650 833 14 908 95 924 689 34 40 -10000 670 133 613 190 549 951 479 441 406 -10000 644 985 618 552 392 327 194 943 576 -10000 285 930 830 986 395 307 85 181 44 -10000 731 276 80 290 189 801 614 814 0 -10000 263 543 515 818 275 619 734 356 894 -10000 239 88 811 540 560 659 498 612 6 -10000 800 773 373 656 443 790 755 144 443 -10000 325 34 701 682 592 510 818 359 443 -10000 832 924 128 853 278 886 890 727 876 -10000 621 177 289 770 229 477 674 828 263 -10000 714 399 744 404 27 580 908 226 533 -10000 488 404 145 709 933 348 544 191 422 -10000 832 636 161 77 825 767 44 249 201 -10000 378 129 771 642 172 887 613 868 514 -10000 66 675 772 371 865 884 980 509 751 -10000 315 97 563 67 880 82 385 938 189 -10000 586 98 853 329 936 214 81 443 410 -10000 863 525 731 217 132 220 461 400 758 -10000 89 701 972 83 708 997 117 163 236 -10000 279 336 901 306 840 69 888 985 115 -10000 123 407 876 598 435 916 582 83 919 -10000 465 724 347 92 729 69 417 726 997 -10000 311 951 103 534 40 383 892 174 283 -10000 925 318 660 503 184 437 827 432 758 -10000 353 992 318 736 49 129 479 555 974 -10000 968 934 901 356 457 378 723 728 31 -10000 756 542 333 875 368 296 439 678 459 -10000 852 30 83 554 385 400 628 394 669 -10000 482 263 642 894 582 443 619 552 487 -10000 230 174 916 494 410 290 800 239 761 -10000 934 714 991 552 560 743 372 360 872 -10000 680 603 941 47 960 90 290 291 493 -10000 4 327 310 427 40 664 850 771 638 -10000 670 615 829 710 475 892 365 403 456 -10000 237 223 448 648 408 203 641 895 557 -10000 848 699 459 582 803 831 456 277 520 -10000 78 110 86 982 390 676 922 426 594 -10000 523 43 849 930 154 86 837 165 806 -10000 962 781 767 664 547 343 949 919 704 -10000 224 827 449 146 330 400 460 180 120 -10000 163 199 168 905 426 838 224 592 930 -10000 974 614 370 10 127 323 406 212 78 -10000 63 166 10 439 209 309 430 596 619 -10000 487 237 503 777 148 647 738 507 328 -10000 974 785 754 289 6 798 503 605 687 -10000 613 442 792 251 171 881 712 183 886 -10000 43 720 992 751 794 399 548 694 839 -10000 691 503 6 753 465 712 381 580 951 -10000 552 980 372 415 742 398 864 602 751 -10000 906 549 268 940 158 242 800 43 232 -10000 141 725 782 190 889 387 206 581 672 -10000 462 63 606 832 886 457 505 190 870 -10000 943 199 98 85 805 829 757 953 36 -10000 776 557 35 59 315 818 683 254 95 -10000 414 618 584 412 966 319 463 191 960 -10000 526 692 416 784 782 28 141 3 491 -10000 222 57 843 620 197 418 250 994 584 -10000 721 759 740 416 178 346 260 175 814 -10000 961 570 724 587 122 655 434 813 434 -10000 930 547 517 203 497 862 351 27 100 -10000 609 394 380 627 829 294 901 729 251 -10000 666 81 30 301 289 815 454 290 863 -10000 506 892 266 157 283 233 893 796 818 -10000 314 288 597 241 80 60 457 357 722 -10000 522 368 599 884 359 895 603 380 6 -10000 655 423 848 815 559 58 325 947 583 -10000 656 192 895 488 209 851 609 539 759 -10000 477 466 478 303 140 742 113 220 290 -10000 888 444 417 518 856 62 110 116 340 -10000 521 123 140 869 89 88 930 921 152 -10000 225 124 317 101 347 423 979 369 437 -10000 221 692 957 740 226 372 45 919 468 -10000 777 371 369 253 284 347 701 562 63 -10000 297 329 254 15 186 127 870 664 821 -10000 522 739 130 764 966 283 559 510 148 -10000 114 438 286 193 260 238 77 832 466 -10000 739 438 29 1000 982 465 344 581 918 -10000 154 423 776 339 758 515 108 374 911 -10000 944 116 706 537 652 159 36 992 487 -10000 677 715 596 795 425 122 139 555 295 -10000 185 29 176 676 725 558 637 886 401 -10000 557 63 497 622 524 844 169 581 249 -10000 767 992 870 655 407 430 269 577 127 -10000 408 137 880 87 864 660 111 933 927 -10000 62 458 173 928 232 63 95 398 576 -10000 230 93 218 122 826 919 457 555 127 -10000 393 722 987 10 339 371 522 488 726 -10000 721 561 753 873 215 282 550 392 501 -10000 812 98 711 668 120 99 881 294 782 -10000 965 87 290 940 198 542 415 258 308 -10000 335 37 287 681 645 607 777 361 137 -10000 686 965 639 569 512 462 729 794 305 -10000 0 487 765 682 220 841 527 394 400 -10000 327 838 684 820 209 360 734 783 112 -10000 420 279 911 682 952 625 784 98 276 -10000 925 805 865 538 983 614 181 103 630 -10000 170 724 535 985 493 933 554 474 837 -10000 877 478 730 336 991 987 156 19 837 -10000 663 486 118 1000 567 185 472 853 600 -10000 99 335 973 189 216 226 222 581 704 -10000 593 78 743 454 65 897 915 163 792 -10000 691 929 146 584 892 45 503 81 106 -10000 428 139 773 994 637 32 436 766 857 -10000 906 299 774 574 164 340 164 198 678 -10000 909 421 766 147 581 838 423 214 200 -10000 229 216 46 388 351 492 435 72 659 -10000 500 519 341 315 353 262 685 460 980 -10000 759 207 690 137 881 949 178 166 207 -10000 699 955 894 989 742 640 471 357 461 -10000 749 497 162 886 747 995 437 87 867 -10000 202 334 261 579 831 611 945 735 818 -10000 913 536 861 129 862 52 229 311 394 -10000 702 364 970 804 521 561 413 767 954 -10000 52 95 430 621 534 141 849 417 266 -10000 355 418 452 858 680 639 56 86 750 -10000 866 893 515 457 675 638 921 727 256 -10000 963 676 985 348 689 935 480 734 393 -10000 554 201 934 395 54 20 973 338 39 -10000 973 175 566 241 842 810 618 531 63 -10000 56 863 727 459 805 309 911 490 557 -10000 626 674 606 396 53 174 742 302 67 -10000 533 700 854 488 110 765 755 444 261 -10000 248 925 148 290 641 419 745 702 695 -10000 467 132 531 788 930 605 573 271 852 -10000 115 478 588 726 326 150 669 996 149 -10000 538 755 822 678 182 18 922 322 746 -10000 999 924 538 552 915 942 503 940 947 -10000 276 843 89 451 726 376 991 866 656 -10000 362 397 400 309 36 984 983 31 298 -10000 148 74 756 899 271 609 405 914 943 -10000 296 528 152 450 94 608 487 38 424 -10000 350 909 313 892 890 131 574 381 308 -10000 942 774 454 972 878 1000 103 768 72 -10000 25 285 101 386 171 493 748 6 502 -10000 872 6 346 520 984 329 138 223 21 -10000 783 473 225 987 422 373 943 489 406 -10000 570 105 238 610 438 959 960 733 489 -10000 872 633 936 196 102 865 938 554 988 -10000 324 64 345 495 655 471 43 402 816 -10000 725 662 302 323 157 68 120 738 7 -10000 890 538 335 191 815 658 632 339 801 -10000 368 624 94 716 108 298 248 125 257 -10000 410 688 540 500 877 355 688 863 559 -10000 431 925 33 538 412 324 375 762 883 -10000 91 183 611 336 231 500 430 111 465 -10000 473 446 616 519 958 336 652 421 586 -10000 832 5 520 334 517 372 402 580 531 -10000 357 509 770 408 446 125 992 863 293 -10000 658 810 500 106 610 912 567 809 880 -10000 627 284 994 146 880 927 378 921 624 -10000 102 427 183 552 999 370 384 703 919 -10000 545 999 931 458 857 136 236 34 583 -10000 634 808 295 405 457 179 980 398 167 -10000 486 221 267 397 973 110 763 426 645 -10000 604 747 587 465 590 274 842 58 697 -10000 465 674 430 771 856 468 922 264 844 -10000 257 148 797 342 561 517 962 445 799 -10000 157 680 235 588 446 36 765 288 153 -10000 480 26 227 969 296 52 663 765 444 -10000 431 938 843 649 454 437 806 134 322 -10000 736 546 631 282 358 27 13 877 25 -10000 509 591 742 972 128 465 773 75 781 -10000 58 277 946 643 941 435 756 764 491 -10000 400 324 335 765 174 769 805 869 115 -10000 836 64 787 26 305 799 982 356 842 -10000 673 484 85 192 836 812 390 519 399 -10000 83 371 476 15 871 626 296 321 455 -10000 132 573 791 780 193 695 971 415 535 -10000 378 716 202 199 584 133 724 385 853 -10000 171 782 26 734 766 848 57 999 595 -10000 476 468 1000 931 928 289 716 899 515 -10000 91 2 318 310 703 734 829 237 238 -10000 812 857 569 388 812 700 349 326 814 -10000 68 228 321 500 277 631 486 826 741 -10000 73 647 889 459 181 529 837 708 523 -10000 491 994 263 266 869 676 837 355 241 -10000 189 913 734 585 182 242 390 392 218 -10000 54 762 67 363 28 164 238 927 356 -10000 276 600 910 155 335 834 366 683 928 -10000 11 702 747 253 769 392 848 165 698 -10000 628 352 533 426 586 929 238 246 963 -10000 484 901 746 490 95 905 287 703 137 -10000 126 390 784 235 180 633 60 851 463 -10000 424 906 421 940 762 565 75 537 729 -10000 650 369 81 521 876 806 585 117 272 -10000 658 742 523 157 998 378 316 362 515 -10000 771 794 418 649 817 129 416 571 269 -10000 717 748 37 345 170 836 587 732 850 -10000 504 744 493 889 184 318 886 571 874 -10000 509 996 251 107 703 506 475 906 261 -10000 878 325 283 48 756 362 792 555 539 -10000 535 160 470 335 918 803 845 936 377 -10000 704 864 128 173 672 199 307 59 879 -10000 772 942 278 870 373 488 186 487 76 -10000 607 848 602 226 28 758 606 922 215 -10000 194 184 409 79 239 366 396 827 53 -10000 713 20 512 801 206 186 938 510 914 -10000 245 351 404 3 495 918 621 978 322 -10000 675 104 375 731 866 461 36 174 907 -10000 389 733 795 911 446 64 374 446 411 -10000 344 79 538 9 140 631 665 975 440 -10000 921 20 889 378 822 889 10 832 876 -10000 211 287 387 333 73 942 628 215 90 -10000 163 966 16 122 355 926 73 511 45 -10000 572 424 655 204 880 792 61 724 984 -10000 441 890 747 63 914 972 701 300 821 -10000 402 526 499 770 291 424 426 900 57 -10000 887 391 854 95 798 310 28 4 796 -10000 747 513 888 87 856 571 841 856 580 -10000 568 915 643 355 897 517 732 183 570 -10000 304 273 612 857 325 1 783 485 622 -10000 661 341 394 221 79 553 238 305 905 -10000 888 951 432 66 433 145 150 515 343 -10000 696 764 693 75 270 448 849 311 372 -10000 304 823 228 358 842 23 590 977 953 -10000 396 676 481 128 756 622 131 425 228 -10000 643 763 803 725 79 971 775 221 418 -10000 799 577 77 795 243 593 899 255 463 -10000 963 891 231 582 491 787 281 773 2 -10000 724 978 280 112 909 886 607 97 974 -10000 540 45 314 187 230 538 767 285 435 -10000 452 859 661 19 500 674 490 244 150 -10000 359 712 94 302 727 49 812 446 466 -10000 269 356 853 869 951 563 719 760 33 -10000 524 508 19 788 346 479 918 714 182 -10000 905 886 491 372 423 217 347 595 710 -10000 134 508 1000 623 507 512 449 179 166 -10000 904 937 370 571 408 926 985 122 444 -10000 475 867 866 941 975 829 276 585 257 -10000 200 868 757 356 366 811 476 586 641 -10000 793 232 101 310 71 147 951 362 900 -10000 213 312 97 562 684 86 434 206 226 -10000 705 798 971 909 145 255 506 769 865 -10000 66 552 246 113 596 280 787 324 308 -10000 702 615 675 640 530 188 170 224 90 -10000 710 442 211 629 727 89 399 941 801 -10000 981 289 737 110 391 734 982 712 878 -10000 613 32 49 696 142 835 837 196 155 -10000 212 414 718 591 979 487 336 771 665 -10000 496 921 883 271 372 585 139 778 26 -10000 218 29 86 846 507 43 484 213 523 -10000 869 861 355 542 486 511 792 215 304 -10000 686 872 153 128 523 770 712 612 70 -10000 744 71 434 244 279 878 687 107 884 -10000 917 407 320 251 742 877 185 309 258 -10000 988 122 873 636 818 515 986 527 966 -10000 50 328 462 594 734 122 212 928 869 -10000 8 866 167 94 229 108 882 210 541 -10000 737 167 381 152 994 294 159 865 486 -10000 743 507 613 800 303 5 77 263 616 -10000 238 398 842 398 628 894 405 733 22 -10000 523 903 169 209 951 21 794 630 784 -10000 753 680 52 667 959 244 395 35 628 -10000 0 962 410 501 540 632 712 529 366 -10000 318 543 656 847 249 519 871 109 996 -10000 780 286 26 763 613 653 265 323 730 -10000 299 792 896 14 595 72 886 199 106 -10000 411 647 280 484 399 586 182 381 406 -10000 989 372 242 171 990 789 923 811 378 -10000 163 493 589 510 921 604 671 158 525 -10000 870 673 238 628 778 308 767 853 997 -10000 531 479 449 632 750 717 837 703 189 -10000 119 555 868 624 436 843 785 690 803 -10000 730 135 333 381 565 139 586 546 17 -10000 542 317 690 920 101 275 506 952 585 -10000 401 114 979 317 569 780 912 521 907 -10000 894 318 255 943 199 564 269 882 218 -10000 655 859 872 234 966 587 957 62 960 -10000 764 275 255 41 112 242 167 625 289 -10000 175 617 133 913 553 890 754 697 558 -10000 785 6 46 236 99 700 292 880 693 -10000 423 540 654 956 158 703 274 969 569 -10000 975 42 809 397 308 62 868 92 414 -10000 418 782 443 816 876 657 232 582 933 -10000 966 86 835 887 810 807 678 224 956 -10000 163 143 195 861 805 100 943 862 760 -10000 730 369 236 430 948 902 690 407 409 -10000 239 1000 97 821 997 528 156 596 19 -10000 935 665 966 9 692 355 251 396 848 -10000 654 257 72 372 799 361 410 320 591 -10000 281 297 345 94 78 694 956 118 512 -10000 860 467 276 198 235 570 646 389 565 -10000 812 761 219 767 16 633 982 55 610 -10000 306 456 632 928 712 802 185 824 694 -10000 136 47 274 840 93 350 787 424 132 -10000 323 151 671 25 370 317 578 139 680 -10000 613 401 46 883 66 259 962 300 52 -10000 748 796 873 686 739 543 476 426 989 -10000 668 873 813 278 167 579 956 340 285 -10000 640 294 152 294 719 443 703 912 45 -10000 982 399 899 985 244 214 128 102 801 -10000 144 301 901 322 720 784 91 182 689 -10000 489 664 556 509 629 362 23 359 791 -10000 385 166 871 677 482 16 739 151 718 -10000 802 789 112 697 372 550 130 356 210 -10000 528 252 672 480 593 137 110 709 286 -10000 402 620 111 672 356 805 78 100 214 -10000 872 530 881 283 686 990 65 693 220 -10000 268 180 366 178 829 138 315 59 642 -10000 768 106 812 117 64 173 290 878 203 -10000 112 431 664 468 35 498 522 333 786 -10000 875 67 677 694 961 961 467 759 687 -10000 555 392 903 174 45 199 865 320 644 -10000 236 362 316 704 639 712 2 335 904 -10000 851 978 759 53 515 185 694 585 846 -10000 762 324 229 914 60 381 332 307 532 -10000 914 764 492 822 221 626 360 877 424 -10000 287 201 400 73 938 181 839 774 503 -10000 807 329 303 136 21 845 856 813 723 -10000 176 954 715 53 530 516 665 609 481 -10000 991 746 755 207 706 612 185 229 681 -10000 499 97 944 31 164 872 885 266 838 -10000 400 21 617 377 188 861 464 208 687 -10000 364 618 369 481 943 537 862 791 56 -10000 51 339 799 512 362 271 288 810 200 -10000 730 487 59 404 72 630 594 257 653 -10000 149 775 152 63 204 304 732 899 164 -10000 124 430 8 770 693 131 991 991 327 -10000 256 643 881 146 528 365 542 380 407 -10000 700 265 737 532 78 549 808 785 558 -10000 352 134 433 539 587 514 97 806 579 -10000 714 432 7 808 193 102 836 859 43 -10000 461 12 763 20 265 189 704 328 158 -10000 482 344 986 207 355 622 728 287 102 -10000 700 910 209 75 767 502 125 686 454 -10000 65 756 637 182 244 936 373 981 60 -10000 832 734 48 709 828 117 114 857 801 -10000 113 106 438 196 45 840 133 855 69 -10000 677 462 425 808 722 803 482 399 211 -10000 580 537 141 79 808 357 774 575 883 -10000 772 68 19 58 10 136 544 714 64 -10000 663 922 691 993 100 520 861 613 368 -10000 443 580 403 635 688 456 794 552 160 -10000 302 654 965 865 25 407 766 184 45 -10000 804 195 407 409 53 206 88 961 175 -10000 39 35 793 297 761 124 48 791 356 -10000 908 415 796 42 990 195 200 247 255 -10000 981 980 262 37 429 575 596 260 786 -10000 145 976 497 469 949 276 664 730 468 -10000 18 806 997 350 424 545 124 443 548 -10000 162 244 179 820 709 866 720 995 901 -10000 369 78 227 293 57 211 279 883 452 -10000 168 329 930 325 301 318 99 119 314 -10000 627 478 683 988 943 977 8 786 205 -10000 62 745 344 291 474 641 211 515 737 -10000 936 204 729 364 793 241 828 471 682 -10000 862 578 240 684 144 301 209 910 74 -10000 366 309 999 240 67 374 367 44 384 -10000 405 262 944 231 706 19 866 61 714 -10000 573 645 285 517 746 321 6 152 389 -10000 106 160 928 219 448 15 224 104 604 -10000 246 921 190 279 776 70 943 199 341 -10000 300 354 122 912 222 548 126 110 312 -10000 291 129 972 113 860 32 973 669 590 -10000 310 862 713 392 130 30 60 155 330 -10000 967 689 369 972 841 811 216 340 849 -10000 475 635 434 664 514 155 687 569 956 -10000 339 538 828 685 873 855 466 704 587 -10000 356 106 734 65 596 548 638 80 478 -10000 75 748 492 642 807 470 245 298 559 -10000 603 516 737 957 546 383 821 425 880 -10000 473 648 866 1000 880 175 717 438 753 -10000 886 75 763 210 802 938 36 26 344 -10000 109 195 943 419 447 763 212 960 826 -10000 566 771 617 703 681 368 195 771 361 -10000 585 110 985 405 802 53 665 621 602 -10000 276 266 287 409 515 929 534 204 170 -10000 401 363 232 672 316 679 982 784 407 -10000 290 90 243 986 297 269 399 862 855 -10000 310 775 555 234 286 665 993 155 151 -10000 741 568 996 590 27 891 268 409 544 -10000 105 291 87 384 546 771 323 75 865 -10000 276 607 58 704 981 589 784 957 179 -10000 162 552 292 654 302 953 303 818 260 -10000 192 709 196 275 849 54 91 223 610 -10000 895 336 37 620 834 167 640 80 463 -10000 82 646 520 663 170 726 188 884 543 -10000 789 6 347 648 379 863 111 278 568 -10000 921 838 288 416 998 60 22 424 358 -10000 872 701 841 573 267 748 7 144 837 -10000 362 517 440 701 167 254 49 360 306 -10000 993 178 447 825 541 669 909 159 411 -10000 557 691 111 147 105 925 847 144 794 -10000 604 452 579 131 891 423 27 386 86 -10000 615 916 853 595 978 125 632 924 965 -10000 876 610 325 907 910 237 660 634 410 -10000 806 370 162 438 834 138 526 96 731 -10000 614 938 732 815 35 197 658 124 475 -10000 872 219 1 766 419 834 167 900 109 -10000 199 649 678 566 358 619 208 680 512 -10000 677 87 71 256 554 309 137 142 921 -10000 229 310 468 845 154 788 572 819 411 -10000 882 538 236 451 712 124 973 982 988 -10000 343 220 242 421 72 201 730 17 845 -10000 556 449 298 35 795 147 719 644 184 -10000 722 974 607 731 872 192 806 764 31 -10000 898 827 365 607 852 499 785 395 110 -10000 624 397 641 140 330 569 644 871 860 -10000 634 229 735 178 667 587 236 229 596 -10000 425 613 558 609 562 197 526 537 692 -10000 679 965 270 801 610 881 838 675 391 -10000 832 821 656 396 711 161 646 862 241 -10000 625 232 669 339 29 899 698 4 334 -10000 451 528 931 333 49 664 184 961 268 -10000 163 64 218 858 272 484 84 167 260 -10000 126 468 793 94 833 543 195 350 627 -10000 942 262 965 195 183 246 246 233 133 -10000 4 383 600 153 764 90 482 888 225 -10000 429 439 602 783 357 342 231 385 451 -10000 603 340 371 48 760 426 196 525 926 -10000 823 253 293 68 472 971 922 267 642 -10000 128 46 823 694 397 690 863 671 43 -10000 634 559 899 985 623 612 538 397 622 -10000 242 497 285 95 626 421 754 81 164 -10000 776 746 582 512 314 652 712 946 521 -10000 764 776 474 137 948 697 54 145 626 -10000 244 596 370 84 912 297 429 760 551 -10000 816 323 504 967 380 495 289 200 74 -10000 831 497 751 581 143 139 202 580 930 -10000 905 919 599 853 573 474 69 507 994 -10000 792 578 147 718 495 274 491 414 194 -10000 484 69 648 982 227 990 636 732 515 -10000 631 632 810 616 185 404 204 312 723 -10000 545 844 536 917 592 16 704 731 198 -10000 750 820 959 540 186 521 732 407 148 -10000 828 838 376 638 21 728 183 894 17 -10000 264 902 864 471 46 455 982 57 443 -10000 269 218 427 177 677 635 566 407 667 -10000 319 797 172 818 502 100 155 224 46 -10000 856 939 302 741 355 158 408 271 167 -10000 312 173 96 495 210 699 766 820 645 -10000 680 588 919 354 290 418 632 499 381 -10000 289 392 581 109 874 206 909 88 147 -10000 781 144 578 570 317 872 215 784 894 -10000 187 505 663 788 300 743 12 141 986 -10000 423 541 319 200 836 113 231 614 38 -10000 303 419 853 195 865 866 123 941 761 -10000 677 695 386 38 443 560 569 261 570 -10000 831 283 941 998 676 474 352 997 56 -10000 194 246 427 348 814 928 703 99 952 -10000 917 994 893 787 650 181 331 245 652 -10000 593 986 102 366 147 492 340 59 572 -10000 246 805 690 465 202 750 184 508 51 -10000 793 434 336 49 337 533 125 893 644 -10000 679 395 492 821 22 851 192 620 877 -10000 336 984 436 887 393 980 134 834 885 -10000 466 753 883 740 424 531 587 179 556 -10000 562 582 221 430 6 898 480 193 779 -10000 911 779 266 960 238 818 488 598 551 -10000 234 493 789 227 82 500 407 660 618 -10000 352 356 511 159 673 124 36 428 31 -10000 474 854 651 666 2 798 862 891 952 -10000 983 90 262 321 290 679 117 3 405 -10000 425 936 973 694 781 812 320 909 811 -10000 520 301 471 395 57 371 275 324 253 -10000 457 482 20 505 468 606 457 814 577 -10000 289 498 164 627 472 151 977 124 511 -10000 28 167 837 408 207 822 603 492 285 -10000 957 371 161 919 530 466 60 604 824 -10000 366 595 753 92 10 381 573 426 568 -10000 486 504 408 580 159 127 675 664 582 -10000 872 4 563 31 156 110 747 625 648 -10000 902 794 564 744 382 175 848 153 975 -10000 269 937 928 379 448 854 643 583 420 -10000 802 24 344 139 570 29 469 730 490 -10000 238 237 870 648 565 306 515 100 721 -10000 734 768 349 161 721 162 46 290 800 -10000 925 200 511 143 722 234 213 325 300 -10000 711 318 930 476 193 513 628 435 1 -10000 3 946 575 445 321 187 883 177 811 -10000 119 530 915 820 471 163 804 515 325 -10000 166 327 111 48 219 325 696 72 876 -10000 204 23 850 656 128 399 14 154 562 -10000 128 878 378 317 981 395 956 885 408 -10000 95 7 758 275 668 820 695 751 868 -10000 56 868 928 622 813 216 763 614 361 -10000 110 426 96 412 400 884 648 321 370 -10000 133 485 691 982 390 281 107 796 963 -10000 796 914 854 341 869 812 155 982 824 -10000 990 406 11 58 902 425 987 711 687 -10000 943 932 978 955 636 738 243 953 980 -10000 790 498 305 539 434 721 786 149 921 -10000 944 216 702 596 571 29 130 689 535 -10000 112 881 413 990 648 551 361 904 742 -10000 36 672 272 913 818 475 280 404 20 -10000 551 228 422 168 545 466 917 724 769 -10000 872 431 494 238 964 833 632 829 726 -10000 936 895 782 102 596 89 732 72 739 -10000 356 174 889 580 607 510 501 91 689 -10000 202 412 348 335 956 466 669 393 126 -10000 805 570 48 315 612 179 727 465 494 -10000 91 375 398 726 485 567 61 822 416 -10000 970 998 287 54 435 761 246 894 355 -10000 108 19 411 302 239 940 675 579 650 -10000 528 179 174 322 574 844 362 324 778 -10000 71 772 43 930 518 552 509 237 670 -10000 51 216 884 202 645 217 912 310 702 -10000 440 436 854 987 378 892 514 836 871 -10000 344 176 183 841 327 671 860 386 614 -10000 394 150 919 165 609 296 964 610 23 -10000 175 564 953 614 539 741 409 655 600 -10000 832 469 16 428 952 693 750 499 677 -10000 842 916 522 574 630 895 79 16 731 -10000 778 563 90 14 61 775 629 389 457 -10000 416 398 466 216 27 758 582 338 372 -10000 424 487 190 392 782 315 991 468 871 -10000 739 532 312 13 574 828 731 374 836 -10000 647 196 679 167 13 72 968 413 454 -10000 77 588 885 426 706 469 385 258 318 -10000 958 3 376 247 629 418 956 192 14 -10000 849 966 38 433 617 518 875 643 404 -10000 883 319 261 226 693 285 721 653 479 -10000 753 57 95 720 8 502 665 493 6 -10000 676 633 644 836 246 471 281 961 88 -10000 882 191 427 539 451 946 121 565 235 -10000 526 602 876 94 368 200 49 878 912 -10000 701 11 568 674 936 174 439 197 855 -10000 164 83 922 477 511 178 997 536 223 -10000 297 512 91 706 161 327 330 560 509 -10000 796 286 454 666 634 917 344 286 721 -10000 32 676 11 803 403 485 183 802 450 -10000 832 620 480 797 747 108 216 22 245 -10000 64 746 918 62 194 200 526 597 848 -10000 750 295 642 101 939 173 492 821 357 -10000 806 791 799 176 166 717 618 248 88 -10000 157 253 441 68 884 5 362 936 987 -10000 782 335 739 615 22 305 344 200 402 -10000 881 51 880 96 66 406 264 65 75 -10000 719 238 439 836 270 553 784 457 530 -10000 157 542 78 859 216 829 26 239 646 -10000 253 112 847 671 0 937 977 900 420 -10000 354 642 490 424 243 724 541 448 643 -10000 402 494 580 678 27 328 194 378 257 -10000 732 979 904 256 903 880 629 162 270 -10000 257 198 624 398 297 713 193 122 600 -10000 111 355 576 471 576 613 896 406 620 -10000 521 522 199 68 808 723 250 487 428 -10000 469 439 686 927 299 968 548 503 861 -10000 80 132 323 349 400 957 796 983 617 -10000 65 353 136 668 45 731 778 785 26 -10000 503 352 804 756 283 901 39 33 401 -10000 668 386 593 86 347 637 736 403 50 -10000 102 730 587 216 864 519 357 990 913 -10000 923 857 471 912 214 878 985 581 368 -10000 909 4 366 299 415 781 568 424 266 -10000 170 967 931 587 556 910 285 540 931 -10000 359 550 255 101 81 189 111 104 702 -10000 124 775 254 25 177 128 182 441 163 -10000 878 715 385 251 347 824 208 119 877 -10000 32 482 861 776 515 329 596 859 925 -10000 634 570 321 132 754 477 652 788 817 -10000 627 636 517 378 395 311 194 79 24 -10000 865 604 258 163 208 881 127 213 789 -10000 864 994 647 777 216 971 926 270 501 -10000 908 301 316 97 405 599 539 181 743 -10000 420 246 989 88 674 26 99 424 763 -10000 185 242 538 726 655 796 693 288 730 -10000 765 130 331 310 524 823 133 342 316 -10000 789 350 985 90 119 6 364 495 660 -10000 956 269 895 196 576 83 168 445 117 -10000 329 516 954 41 702 594 788 572 186 -10000 245 892 247 931 313 234 21 335 194 -10000 231 803 866 723 86 473 76 75 365 -10000 863 9 328 613 597 477 850 665 819 -10000 561 911 625 892 249 280 485 609 520 -10000 429 32 894 734 898 706 824 639 538 -10000 90 982 475 895 534 579 4 60 724 -10000 334 641 5 488 153 641 664 15 514 -10000 23 884 352 38 704 56 630 827 301 -10000 168 824 166 101 436 842 886 147 195 -10000 799 860 535 797 781 163 238 955 957 -10000 659 187 1 570 98 524 315 617 957 -10000 536 274 265 449 82 246 91 94 144 -10000 278 325 978 437 938 29 350 33 377 -10000 951 324 423 427 197 839 751 312 429 -10000 946 399 677 8 526 828 305 831 102 -10000 894 776 762 343 69 399 232 34 619 -10000 467 723 446 798 555 350 725 870 243 -10000 724 787 290 622 766 471 47 820 969 -10000 614 692 539 744 244 873 932 306 44 -10000 314 852 495 136 911 5 357 371 591 -10000 148 870 545 827 238 454 906 50 707 -10000 183 786 86 698 999 821 33 937 398 -10000 244 458 676 506 538 342 789 612 377 -10000 935 95 199 65 525 656 592 439 783 -10000 400 891 418 653 535 881 322 562 217 -10000 590 484 947 512 766 219 1 865 502 -10000 717 965 717 401 148 417 654 549 88 -10000 835 175 804 18 428 714 839 38 382 -10000 903 921 986 853 821 680 468 291 452 -10000 830 229 103 372 411 930 147 457 899 -10000 19 693 702 630 994 787 636 670 812 -10000 563 630 977 667 731 52 781 902 799 -10000 165 667 528 785 128 309 623 302 819 -10000 203 558 231 532 156 19 64 765 441 -10000 513 433 381 199 726 600 949 240 986 -10000 286 461 436 14 330 376 628 506 470 -10000 423 344 870 129 195 975 102 174 272 -10000 601 23 937 821 175 228 837 142 48 -10000 839 822 591 290 410 576 947 955 683 -10000 202 888 72 107 796 224 938 428 337 -10000 201 957 469 252 560 343 106 404 85 -10000 488 849 298 335 576 250 181 895 135 -10000 619 322 892 165 898 701 618 404 348 -10000 99 826 907 18 137 419 867 43 538 -10000 958 668 11 11 567 843 236 463 695 -10000 561 951 316 337 122 727 48 747 879 -10000 943 172 450 185 152 296 294 893 204 -10000 275 839 338 586 340 337 92 529 699 -10000 534 661 626 557 280 261 611 706 526 -10000 168 480 791 523 963 107 412 449 605 -10000 785 801 946 294 583 54 243 721 257 -10000 603 266 133 666 329 767 810 379 586 -10000 660 918 364 95 827 624 652 625 940 -10000 473 805 135 808 689 671 66 276 86 -10000 618 732 410 542 566 614 27 818 590 -10000 98 442 870 758 391 925 991 127 426 -10000 78 204 518 409 648 441 777 168 563 -10000 593 697 356 553 94 512 685 829 364 -10000 99 341 331 909 665 791 80 506 706 -10000 945 639 191 454 97 271 959 989 994 -10000 627 48 463 366 208 472 381 740 743 -10000 30 442 442 309 289 211 574 109 311 -10000 641 125 450 333 421 564 856 498 949 -10000 946 315 522 404 374 176 846 538 579 -10000 773 824 314 778 276 480 180 235 286 -10000 940 605 780 169 556 18 620 522 104 -10000 53 628 371 877 912 52 361 1000 113 -10000 748 948 827 651 551 931 505 693 654 -10000 510 162 108 557 590 644 769 550 730 -10000 823 928 954 469 211 241 239 596 55 -10000 172 835 460 567 46 529 983 735 276 -10000 872 93 663 411 699 298 164 136 107 -10000 783 928 586 250 955 652 158 121 658 -10000 827 770 357 479 801 865 974 562 589 -10000 983 607 818 591 323 284 498 415 460 -10000 342 252 520 822 708 868 536 328 798 -10000 720 416 641 57 628 168 296 226 239 -10000 327 656 881 302 608 207 708 274 341 -10000 750 176 136 956 773 528 789 793 422 -10000 156 887 377 297 131 110 809 887 676 -10000 565 4 751 179 543 957 871 340 194 -10000 660 744 790 763 285 189 462 815 716 -10000 963 704 464 948 52 902 599 87 659 -10000 491 719 691 331 771 309 25 34 56 -10000 179 762 934 654 652 684 25 941 838 -10000 114 188 681 261 392 876 497 231 321 -10000 182 662 44 824 447 505 346 547 390 -10000 438 400 840 263 619 956 892 701 487 -10000 0 602 516 733 726 409 124 134 242 -10000 243 497 247 312 222 11 134 410 342 -10000 492 112 110 325 681 509 459 832 761 -10000 241 146 690 38 500 494 801 854 977 -10000 219 474 287 986 347 488 42 180 692 -10000 982 923 192 215 991 763 369 701 555 -10000 614 215 62 87 806 618 623 843 163 -10000 157 843 759 791 733 58 840 418 274 -10000 529 544 464 492 526 948 818 313 280 -10000 985 325 502 480 476 900 267 508 728 -10000 316 774 627 112 591 950 456 613 17 -10000 270 327 765 489 657 723 463 328 153 -10000 189 510 183 285 960 517 591 11 393 -10000 15 762 387 597 858 43 536 733 381 -10000 37 772 825 614 989 527 785 784 909 -10000 691 835 271 240 493 815 456 22 267 -10000 282 52 664 431 988 102 454 922 814 -10000 719 67 372 588 244 499 428 490 288 -10000 251 355 16 448 100 213 994 764 396 -10000 878 335 52 442 518 505 44 241 914 -10000 734 417 347 978 668 253 277 83 472 -10000 727 642 576 904 778 459 31 30 742 -10000 358 17 617 678 292 994 90 21 349 -10000 485 77 315 902 812 8 506 622 565 -10000 838 203 256 825 70 285 205 600 128 -10000 391 537 927 835 502 963 299 655 180 -10000 938 849 620 129 667 416 945 964 332 -10000 190 434 403 779 319 680 619 764 281 -10000 545 693 333 348 169 14 62 511 80 -10000 945 892 471 464 211 748 607 71 936 -10000 908 918 749 463 375 620 406 734 589 -10000 190 642 454 140 556 863 89 498 579 -10000 113 286 827 608 94 77 355 421 424 -10000 642 668 167 36 968 788 431 720 294 -10000 664 860 249 520 189 327 715 908 935 -10000 225 56 204 862 628 253 578 504 279 -10000 426 932 207 691 982 933 86 260 577 -10000 118 521 10 869 907 411 103 635 132 -10000 507 385 998 519 630 997 126 462 627 -10000 724 948 10 448 443 947 465 944 477 -10000 289 164 991 975 802 138 504 560 258 -10000 489 565 234 225 333 796 376 348 77 -10000 430 896 871 600 665 871 828 215 597 -10000 23 783 444 824 309 67 694 106 825 -10000 877 636 371 428 718 552 563 340 519 -10000 904 129 492 497 104 525 896 400 817 -10000 672 880 122 120 317 371 521 303 969 -10000 474 671 820 111 103 775 494 932 78 -10000 534 421 4 285 872 565 632 343 680 -10000 533 793 468 796 922 801 203 438 669 -10000 152 35 880 564 800 201 607 719 34 -10000 164 10 296 547 828 780 873 540 101 -10000 704 53 767 19 79 880 772 259 248 -10000 844 646 946 878 982 577 167 997 851 -10000 985 696 618 556 390 318 727 295 353 -10000 364 414 53 359 905 547 464 94 536 -10000 546 791 423 427 54 561 852 86 53 -10000 710 283 615 6 297 899 561 482 413 -10000 726 838 784 730 905 755 71 132 825 -10000 519 792 41 500 762 771 669 768 765 -10000 679 847 798 870 751 532 954 4 883 -10000 956 786 719 596 785 445 833 912 679 -10000 609 323 848 798 8 27 262 848 604 -10000 56 924 664 793 14 605 462 322 160 -10000 519 996 19 793 544 513 375 73 122 -10000 425 386 509 508 542 65 811 785 924 -10000 229 629 336 517 338 607 928 270 63 -10000 623 192 724 549 628 504 38 274 4 -10000 529 691 56 998 462 785 373 782 592 -10000 412 481 469 964 274 448 121 780 81 -10000 734 974 559 338 150 212 781 650 284 -10000 635 210 517 604 296 863 269 51 935 -10000 515 176 752 427 563 253 53 225 523 -10000 998 325 658 560 318 65 161 442 145 -10000 918 173 50 497 260 931 154 477 47 -10000 22 962 523 724 253 434 544 115 750 -10000 762 253 245 635 814 552 763 162 590 -10000 56 479 129 617 167 802 22 290 999 -10000 87 250 565 311 268 398 585 340 451 -10000 500 316 837 935 300 405 805 625 196 -10000 598 349 135 839 45 755 414 389 848 -10000 483 390 925 462 312 572 803 10 11 -10000 497 962 644 540 456 116 686 84 479 -10000 506 59 508 339 671 915 346 827 351 -10000 799 482 0 586 720 604 837 133 649 -10000 846 870 830 806 343 49 728 999 903 -10000 239 127 950 258 281 282 309 414 647 -10000 51 364 719 404 159 15 808 438 223 -10000 348 526 377 146 151 562 892 246 850 -10000 118 632 733 772 58 934 39 34 984 -10000 117 428 100 174 470 991 306 771 458 -10000 308 707 151 522 182 319 790 783 786 -10000 109 204 788 445 542 236 115 5 614 -10000 294 206 482 682 835 351 75 331 74 -10000 876 548 511 940 470 642 886 513 246 -10000 964 227 814 88 723 606 423 751 535 -10000 545 242 819 510 400 389 484 672 196 -10000 74 435 129 593 693 224 44 787 398 -10000 267 1 185 566 49 103 713 611 138 -10000 315 293 153 881 802 808 85 34 410 -10000 965 176 274 195 533 249 537 392 705 -10000 298 653 915 969 104 630 994 849 214 -10000 243 403 205 552 469 623 846 474 687 -10000 797 56 221 951 929 435 645 834 549 -10000 752 226 451 897 734 409 125 643 532 -10000 971 523 919 555 467 603 993 796 459 -10000 527 322 269 807 278 18 650 533 959 -10000 747 976 124 413 460 447 205 359 475 -10000 260 230 82 329 971 475 494 569 172 -10000 889 33 935 559 36 764 85 941 27 -10000 832 130 280 256 232 99 144 787 745 -10000 273 640 935 226 318 707 689 948 192 -10000 689 927 668 582 31 161 749 527 63 -10000 318 840 557 101 121 460 885 586 61 -10000 322 292 701 823 950 672 42 439 298 -10000 981 418 480 867 998 48 636 239 188 -10000 32 705 375 234 291 208 755 931 290 -10000 746 50 462 734 141 281 861 637 358 -10000 649 312 719 298 645 821 365 404 359 -10000 650 311 212 306 790 930 507 703 797 -10000 367 13 709 607 934 983 181 61 242 -10000 274 697 74 398 780 468 682 134 616 -10000 438 913 941 43 222 900 440 662 160 -10000 686 249 504 646 749 527 751 390 158 -10000 759 592 538 385 224 43 358 802 108 -10000 262 334 354 902 1000 243 772 445 181 -10000 523 106 63 917 108 842 402 580 863 -10000 923 1000 474 121 493 515 612 968 161 -10000 603 74 794 208 143 773 588 332 279 -10000 536 682 731 764 12 870 678 682 111 -10000 773 714 146 0 852 798 150 776 996 -10000 338 492 172 482 677 500 86 810 599 -10000 634 348 694 490 164 615 438 584 109 -10000 367 661 849 888 14 629 135 90 879 -10000 68 12 550 871 914 812 355 848 399 -10000 819 66 363 955 822 686 449 847 758 -10000 390 806 637 966 774 116 844 372 278 -10000 953 159 388 436 280 386 704 189 320 -10000 161 522 475 687 155 940 63 744 455 -10000 521 162 597 961 985 266 715 997 82 -10000 943 351 766 780 447 434 215 806 439 -10000 970 241 698 80 928 837 408 663 921 -10000 297 612 480 180 826 121 593 690 845 -10000 72 666 571 968 237 216 983 280 102 -10000 796 469 439 541 268 500 739 760 919 -10000 872 347 955 693 138 267 262 78 480 -10000 820 341 597 704 696 807 715 587 286 -10000 582 487 159 332 151 404 687 690 293 -10000 574 569 682 57 31 249 893 411 182 -10000 783 80 612 553 571 141 559 47 762 -10000 204 857 426 725 696 404 506 446 322 -10000 107 413 971 180 164 269 687 22 581 -10000 952 632 544 278 367 601 803 979 111 -10000 60 56 208 379 229 128 900 520 880 -10000 478 429 520 72 485 555 419 53 634 -10000 244 954 645 208 855 751 166 326 542 -10000 775 300 819 297 944 334 789 597 116 -10000 387 195 703 971 692 124 513 833 213 -10000 521 668 675 150 737 922 402 292 25 -10000 861 532 680 760 673 756 371 240 963 -10000 330 695 359 801 409 266 987 635 611 -10000 291 910 551 577 248 0 101 962 922 -10000 134 967 343 380 357 516 165 146 316 -10000 883 528 305 133 865 381 635 780 519 -10000 974 941 374 481 171 777 401 314 774 -10000 435 284 308 499 706 201 737 528 887 -10000 158 224 51 921 896 446 569 219 973 -10000 607 976 576 999 231 243 74 873 773 -10000 46 251 632 991 917 492 177 127 529 -10000 94 771 212 894 865 619 355 868 185 -10000 879 488 80 450 173 964 919 554 197 -10000 515 324 754 661 178 826 574 31 118 -10000 153 103 953 100 37 77 540 344 647 -10000 714 706 435 474 831 601 540 995 779 -10000 341 942 912 153 749 336 98 251 139 -10000 402 644 739 604 363 315 57 849 427 -10000 824 66 441 897 969 951 332 626 540 -10000 893 202 623 751 378 641 594 247 12 -10000 26 267 724 10 575 544 515 487 321 -10000 78 583 28 403 82 740 980 626 191 -10000 437 457 557 613 643 509 533 419 632 -10000 279 316 584 690 911 344 590 592 574 -10000 432 761 107 361 113 968 569 876 975 -10000 837 292 275 606 187 860 627 66 436 -10000 605 295 163 785 24 111 302 289 182 -10000 754 825 548 983 401 696 20 704 880 -10000 253 199 138 222 427 804 415 968 736 -10000 350 580 655 701 978 263 496 792 60 -10000 150 465 865 802 71 954 908 440 782 -10000 280 280 431 68 860 533 426 609 229 -10000 304 56 670 669 13 260 11 810 701 -10000 169 271 1 717 74 597 30 372 778 -10000 829 771 84 736 368 7 205 625 825 -10000 286 676 292 815 612 913 622 653 842 -10000 967 877 54 419 23 549 838 259 937 -10000 985 224 612 460 202 167 789 660 583 -10000 575 914 219 374 834 23 906 75 511 -10000 402 528 485 807 725 329 213 100 967 -10000 927 687 633 483 52 729 902 502 662 -10000 842 54 719 930 19 129 68 158 31 -10000 111 745 985 173 312 737 941 87 968 -10000 250 48 382 844 30 660 471 992 737 -10000 582 710 343 325 78 825 274 324 930 -10000 744 108 944 202 96 285 820 242 975 -10000 463 581 145 941 930 208 927 120 898 -10000 310 805 627 187 271 482 805 938 238 -10000 356 902 167 400 928 700 674 899 934 -10000 231 908 586 116 395 540 369 33 583 -10000 452 34 821 985 190 228 632 748 829 -10000 905 230 151 635 10 73 693 6 940 -10000 134 384 318 654 622 752 791 563 507 -10000 83 797 654 353 825 349 530 340 253 -10000 481 216 482 994 983 544 733 405 339 -10000 93 650 457 726 975 759 947 25 720 -10000 633 250 644 256 112 982 856 874 529 -10000 95 487 873 7 537 681 833 39 997 -10000 295 763 2 286 562 292 762 440 25 -10000 928 651 352 11 683 416 146 424 114 -10000 554 361 11 538 443 958 684 32 859 -10000 286 973 460 460 511 421 974 904 373 -10000 343 67 136 816 444 663 60 154 855 -10000 469 925 978 530 916 782 412 353 753 -10000 533 632 218 584 442 462 821 447 461 -10000 395 199 164 551 736 843 623 321 840 -10000 45 886 694 927 656 599 615 573 780 -10000 2 383 812 33 231 295 249 247 730 -10000 729 335 475 987 844 723 783 115 848 -10000 525 249 617 242 682 39 761 320 739 -10000 875 692 598 459 967 560 276 825 980 -10000 84 481 35 279 153 769 755 140 931 -10000 632 203 133 494 176 398 232 454 328 -10000 358 38 496 59 752 592 443 796 126 -10000 821 242 708 632 885 277 793 347 51 -10000 571 529 424 286 194 22 421 496 812 -10000 639 212 56 244 462 483 654 189 2 -10000 997 7 980 189 710 269 644 633 197 -10000 597 342 692 724 227 94 679 535 829 -10000 554 522 218 132 930 370 371 339 781 -10000 890 48 995 991 443 394 248 143 997 -10000 374 16 34 641 639 892 289 370 761 -10000 896 463 570 295 837 823 205 974 531 -10000 967 411 665 479 670 212 598 425 387 -10000 800 851 772 461 407 214 735 774 102 -10000 746 374 518 159 328 300 128 590 934 -10000 720 468 713 66 443 827 84 904 230 -10000 619 819 846 326 732 409 777 19 589 -10000 23 706 762 233 62 71 894 776 43 -10000 677 0 354 35 808 248 203 230 122 -10000 526 258 342 407 171 147 37 723 986 -10000 549 959 34 424 759 70 224 503 69 -10000 706 207 129 290 321 864 707 270 550 -10000 800 582 451 287 313 426 368 863 294 -10000 966 243 869 340 362 617 509 98 860 -10000 565 309 174 916 808 28 598 490 533 -10000 952 218 645 233 681 906 956 984 963 -10000 930 763 48 356 159 762 407 891 297 -10000 463 707 447 131 753 798 741 905 490 -10000 76 589 502 15 8 373 600 701 289 -10000 35 698 193 106 275 18 390 942 886 -10000 540 497 1000 796 450 643 990 405 399 -10000 154 855 724 561 159 365 373 745 373 -10000 763 148 532 611 538 192 86 587 126 -10000 688 732 166 354 834 276 285 679 607 -10000 837 198 386 306 290 724 436 31 424 -10000 255 616 350 187 403 314 858 395 393 -10000 291 594 329 137 547 375 420 161 21 -10000 333 556 478 746 761 673 807 129 160 -10000 288 979 830 381 454 247 393 672 869 -10000 435 100 785 28 880 229 255 214 542 -10000 634 926 70 447 331 71 944 892 352 -10000 644 474 295 149 841 65 454 723 252 -10000 109 995 613 158 174 907 654 239 997 -10000 834 668 836 545 966 449 846 306 309 -10000 983 570 514 643 216 860 742 727 636 -10000 905 290 321 724 966 419 314 543 831 -10000 679 787 568 24 937 196 100 978 984 -10000 632 130 421 615 572 223 335 985 696 -10000 23 24 519 143 687 855 693 19 797 -10000 905 663 962 651 488 327 985 763 421 -10000 529 300 156 734 678 852 244 534 448 -10000 956 541 308 927 890 145 211 965 323 -10000 120 397 854 23 707 285 46 989 243 -10000 189 805 708 214 766 905 120 619 512 -10000 102 943 554 209 87 706 675 405 102 -10000 546 974 141 912 662 577 599 476 786 -10000 405 460 150 250 639 967 194 670 93 -10000 911 485 429 419 543 505 697 734 87 -10000 9 563 379 310 693 158 487 38 454 -10000 648 127 378 954 985 897 573 200 815 -10000 609 386 911 7 0 907 64 886 68 -10000 275 927 404 338 621 191 275 429 41 -10000 911 636 975 520 499 849 307 475 202 -10000 470 827 656 660 227 644 521 793 660 -10000 182 309 321 580 961 666 779 153 366 -10000 663 75 810 380 197 411 10 625 979 -10000 803 579 403 291 891 773 750 958 207 -10000 961 131 615 577 792 274 104 946 140 -10000 491 399 934 87 434 612 147 613 203 -10000 342 75 711 142 566 354 256 660 373 -10000 479 824 688 311 300 534 259 363 535 -10000 393 414 391 39 610 571 579 940 675 -10000 965 619 128 734 156 95 691 442 434 -10000 166 115 507 256 582 896 149 839 470 -10000 942 91 243 805 236 657 764 867 171 -10000 481 739 920 224 480 287 501 904 839 -10000 321 377 753 641 975 973 473 361 431 -10000 796 862 668 198 868 150 102 520 641 -10000 341 280 906 687 600 796 236 641 238 -10000 922 515 863 506 71 516 77 182 662 -10000 701 314 782 843 118 119 843 6 423 -10000 112 192 970 713 759 64 585 861 100 -10000 374 79 871 372 361 6 235 239 143 -10000 87 525 491 159 909 290 520 76 73 -10000 680 9 914 458 521 461 560 774 431 -10000 640 446 427 891 636 928 716 481 602 -10000 322 124 159 27 1 772 282 112 302 -10000 6 394 880 221 715 388 521 265 228 -10000 291 868 738 23 667 373 328 937 493 -10000 845 947 276 98 687 19 480 167 492 -10000 336 427 36 817 148 611 431 568 388 -10000 773 505 747 151 141 653 637 195 77 -10000 617 332 740 411 800 740 879 448 390 -10000 443 377 386 706 338 913 518 114 842 -10000 673 179 602 731 285 302 843 865 561 -10000 794 258 608 962 450 375 509 771 653 -10000 624 278 214 500 277 862 867 708 378 -10000 351 502 57 663 524 5 442 825 78 -10000 937 451 96 552 34 761 932 511 223 -10000 398 351 980 693 510 48 728 248 286 -10000 95 326 228 672 427 401 127 321 659 -10000 950 951 703 282 314 952 752 70 456 -10000 203 881 522 429 303 218 589 175 588 -10000 971 997 394 645 677 542 108 957 329 -10000 806 670 873 440 931 248 937 993 282 -10000 469 64 842 226 522 841 418 228 955 -10000 530 951 764 561 595 608 145 943 321 -10000 207 301 349 979 128 362 894 769 782 -10000 506 658 732 452 424 734 986 862 744 -10000 665 569 48 867 839 586 376 819 256 -10000 656 636 168 659 42 11 552 492 688 -10000 448 159 900 833 489 642 368 257 519 -10000 128 580 22 696 841 763 529 807 83 -10000 638 139 667 778 89 63 67 560 914 -10000 851 496 243 756 607 2 611 551 533 -10000 890 279 326 575 575 50 665 886 807 -10000 39 135 92 841 970 534 867 216 822 -10000 228 579 432 54 255 244 129 104 903 -10000 671 352 193 78 449 361 805 30 172 -10000 495 796 854 496 667 121 1 50 176 -10000 751 558 65 641 685 632 591 560 946 -10000 33 582 976 454 616 363 586 909 58 -10000 837 957 55 434 874 924 653 437 93 -10000 404 733 968 638 239 359 613 160 137 -10000 511 520 227 163 153 323 123 189 803 -10000 618 631 263 459 110 8 43 999 277 -10000 17 486 25 899 181 875 809 134 423 -10000 872 193 949 65 643 383 733 326 701 -10000 213 525 629 530 880 226 611 654 284 -10000 631 505 368 138 606 798 149 107 387 -10000 764 240 99 90 668 316 374 93 374 -10000 113 541 528 582 172 373 626 637 288 -10000 875 602 740 652 562 566 730 221 916 -10000 523 587 867 478 597 44 817 877 689 -10000 941 952 836 649 124 996 264 112 574 -10000 273 96 761 339 184 171 838 737 452 -10000 882 372 629 168 334 420 230 390 759 -10000 480 568 737 439 432 82 738 93 785 -10000 308 512 787 563 175 832 790 383 947 -10000 537 826 736 369 433 234 352 750 885 -10000 286 392 195 591 580 100 867 678 700 -10000 859 571 545 175 759 820 328 17 626 -10000 462 790 458 989 834 602 838 669 548 -10000 535 375 97 843 527 312 109 434 193 -10000 700 869 546 749 823 499 209 711 167 -10000 698 265 399 669 159 259 198 196 299 -10000 371 553 246 774 939 355 722 448 787 -10000 866 718 785 488 771 430 883 994 558 -10000 547 889 494 439 666 976 604 519 520 -10000 590 496 474 667 483 392 843 511 271 -10000 896 696 356 544 598 366 702 431 908 -10000 314 4 679 737 509 2 922 119 845 -10000 85 21 656 592 260 901 419 345 510 -10000 602 286 542 753 989 605 450 427 133 -10000 903 288 697 566 752 365 101 759 28 -10000 24 788 920 862 68 463 26 140 8 -10000 308 817 695 356 654 191 34 136 9 -10000 724 734 385 241 705 770 932 308 184 -10000 671 760 996 268 644 902 573 929 511 -10000 605 902 892 487 85 27 982 952 617 -10000 922 674 376 674 385 51 356 550 122 -10000 606 42 665 207 390 610 547 5 230 -10000 965 837 271 444 963 151 244 952 407 -10000 497 573 428 136 548 830 994 981 449 -10000 754 227 769 182 29 846 860 93 275 -10000 275 784 460 268 851 438 820 749 196 -10000 396 684 287 349 199 645 632 953 265 -10000 491 737 684 701 10 882 845 526 526 -10000 762 794 568 366 202 346 586 17 119 -10000 211 27 94 810 548 958 812 171 575 -10000 936 109 460 792 57 174 223 188 154 -10000 840 247 917 732 833 548 909 159 739 -10000 185 715 804 417 612 565 0 724 199 -10000 259 801 13 106 353 720 997 611 163 -10000 683 833 412 188 698 861 729 83 809 -10000 41 390 628 248 733 154 429 783 766 -10000 964 72 431 583 569 507 567 855 290 -10000 903 415 47 435 493 122 660 641 470 -10000 884 718 626 541 415 44 312 135 920 -10000 674 600 302 368 462 207 565 847 898 -10000 395 848 377 437 68 722 874 39 405 -10000 515 264 7 463 643 63 802 329 410 -10000 589 690 955 380 151 143 898 670 96 -10000 612 311 54 170 768 31 937 56 603 -10000 442 284 257 902 186 492 404 181 710 -10000 210 658 145 177 618 659 43 347 599 -10000 390 23 996 80 59 49 500 181 116 -10000 891 944 327 45 264 567 248 96 860 -10000 419 5 380 927 358 724 383 90 869 -10000 911 958 876 993 424 642 798 44 554 -10000 824 979 346 310 975 564 729 498 153 -10000 120 188 496 206 903 823 580 294 59 -10000 804 194 493 400 114 784 983 109 705 -10000 845 227 96 877 979 490 204 658 88 -10000 64 356 316 615 174 824 625 177 915 -10000 165 93 383 403 871 464 800 684 226 -10000 813 48 532 24 866 373 506 563 885 -10000 645 947 276 275 667 21 665 131 949 -10000 359 570 690 444 118 791 193 390 828 -10000 39 166 511 844 950 631 123 415 117 -10000 170 538 635 946 906 988 482 31 846 -10000 210 380 352 27 260 958 188 664 94 -10000 226 302 777 383 857 708 747 274 755 -10000 640 36 884 867 540 864 892 846 90 -10000 953 987 682 64 154 84 355 378 58 -10000 523 107 846 416 502 1000 503 487 437 -10000 777 391 442 306 895 856 86 183 996 -10000 982 516 127 988 499 880 849 147 782 -10000 552 238 673 935 358 191 679 219 532 -10000 469 279 338 590 841 588 289 229 174 -10000 491 374 283 327 250 896 352 902 411 -10000 127 459 159 149 221 76 949 117 551 -10000 551 817 155 102 481 173 623 981 201 -10000 710 176 93 643 284 415 798 962 557 -10000 188 94 999 769 968 585 852 328 243 -10000 691 542 286 798 434 124 308 149 976 -10000 122 527 82 130 721 254 292 183 294 -10000 293 592 420 375 162 594 802 829 421 -10000 71 990 522 381 680 936 107 508 506 -10000 485 177 140 328 998 738 423 764 705 -10000 861 644 366 586 859 526 715 78 703 -10000 412 38 394 46 416 987 722 124 913 -10000 512 36 137 650 10 197 334 487 72 -10000 9 633 976 48 64 748 698 156 842 -10000 831 401 171 332 995 715 596 581 69 -10000 141 17 276 857 8 331 846 287 597 -10000 744 689 713 450 785 426 373 708 644 -10000 509 594 251 584 981 167 859 616 613 -10000 977 137 640 714 952 888 574 410 45 -10000 845 255 573 347 792 910 411 695 380 -10000 535 567 702 383 698 903 986 894 33 -10000 108 789 745 417 880 222 752 30 18 -10000 677 673 0 44 279 389 933 434 574 -10000 870 718 722 388 185 729 881 618 958 -10000 840 114 504 628 963 898 887 331 474 -10000 998 438 474 490 303 826 23 121 221 -10000 421 652 800 893 377 151 434 555 868 -10000 222 805 969 86 931 908 576 140 861 -10000 357 866 185 235 458 500 165 952 479 -10000 834 290 697 773 683 806 496 979 12 -10000 394 258 970 695 695 421 228 631 818 -10000 698 464 462 802 346 126 698 452 625 -10000 761 990 345 557 813 579 967 642 896 -10000 885 745 792 992 705 816 735 872 708 -10000 898 64 87 548 672 266 644 80 859 -10000 274 370 877 12 731 830 157 275 724 -10000 215 444 104 46 750 428 798 142 317 -10000 699 988 764 155 344 972 382 292 332 -10000 654 85 880 613 276 190 365 311 787 -10000 821 67 226 458 125 324 315 496 172 -10000 803 788 621 26 270 447 27 697 120 -10000 64 382 393 933 904 649 922 32 403 -10000 734 444 129 962 903 287 420 902 441 -10000 688 177 64 272 984 559 629 859 251 -10000 617 292 203 67 434 983 292 766 907 -10000 18 970 389 994 696 7 350 185 312 -10000 128 73 758 9 107 291 696 988 28 -10000 684 597 663 774 582 801 731 342 927 -10000 838 260 165 642 120 206 191 635 807 -10000 73 721 45 416 421 366 449 801 376 -10000 15 340 309 250 323 212 52 951 285 -10000 933 44 453 177 507 372 892 955 151 -10000 713 477 827 700 838 295 200 86 429 -10000 113 782 42 154 595 304 724 463 867 -10000 696 182 300 956 694 131 487 763 95 -10000 46 287 641 200 23 763 747 616 934 -10000 209 415 635 662 991 816 944 585 193 -10000 747 303 299 783 335 685 943 835 568 -10000 30 71 902 726 295 413 205 13 753 -10000 323 742 83 564 519 157 337 840 383 -10000 573 573 434 643 648 242 517 765 94 -10000 993 24 663 852 987 644 273 501 3 -10000 813 179 316 600 858 220 673 690 227 -10000 425 970 765 274 379 673 723 645 570 -10000 176 257 713 810 6 539 816 645 924 -10000 139 371 480 209 795 429 851 782 93 -10000 92 395 897 422 945 472 884 161 411 -10000 844 758 418 152 151 464 982 363 458 -10000 798 499 353 14 356 565 195 694 132 -10000 248 474 102 935 489 799 349 844 197 -10000 648 450 552 529 491 458 59 609 556 -10000 918 599 579 764 475 919 710 819 509 -10000 976 555 553 730 23 233 138 861 799 -10000 421 606 655 617 153 57 269 18 278 -10000 365 344 753 455 82 923 806 897 716 -10000 662 110 856 74 274 30 599 784 716 -10000 484 879 604 188 11 255 661 359 378 -10000 429 849 951 867 767 891 16 183 284 -10000 978 216 134 365 309 185 698 888 620 -10000 957 853 560 719 336 792 584 426 713 -10000 26 651 843 347 592 877 317 205 531 -10000 320 346 4 101 652 952 75 107 890 -10000 164 348 841 240 862 706 156 584 215 -10000 812 875 865 543 559 834 546 200 387 -10000 908 638 723 153 664 748 184 508 406 -10000 244 549 287 705 974 990 808 649 454 -10000 797 444 14 746 985 330 779 19 46 -10000 133 180 11 450 701 86 490 14 947 -10000 685 609 627 156 711 308 134 416 639 -10000 948 186 196 390 694 776 61 298 31 -10000 614 70 338 924 78 672 172 668 995 -10000 708 161 427 140 993 617 825 699 728 -10000 347 914 445 422 879 686 396 606 522 -10000 937 947 817 627 648 641 928 404 526 -10000 666 203 482 541 351 458 625 222 686 -10000 22 712 818 366 845 698 356 369 913 -10000 305 955 513 891 200 827 644 115 820 -10000 169 717 350 892 838 75 307 604 969 -10000 328 387 532 528 67 727 134 271 118 -10000 279 96 863 107 250 320 597 473 152 -10000 838 484 600 700 490 352 659 28 968 -10000 797 292 382 362 395 987 626 627 631 -10000 632 337 157 594 778 60 276 36 196 -10000 864 856 577 94 405 982 266 421 313 -10000 517 893 353 49 597 718 234 648 774 -10000 502 361 30 675 692 876 456 612 189 -10000 165 747 93 313 455 812 882 555 766 -10000 794 419 582 632 591 847 247 972 678 -10000 375 535 864 793 425 196 343 828 816 -10000 988 4 28 28 712 292 21 488 416 -10000 123 919 648 248 992 463 172 375 346 -10000 838 969 45 318 683 352 284 607 436 -10000 526 596 68 258 216 375 453 821 28 -10000 795 736 761 377 978 970 707 941 540 -10000 193 698 761 374 913 882 946 316 363 -10000 540 80 530 828 229 564 898 257 367 -10000 980 852 203 658 457 575 820 91 511 -10000 226 29 756 492 810 236 307 59 37 -10000 394 61 469 708 832 876 357 742 218 -10000 678 334 581 446 608 501 969 15 456 -10000 700 565 473 247 668 447 450 360 621 -10000 434 248 157 493 973 278 638 50 48 -10000 921 939 544 0 361 265 994 587 28 -10000 723 293 391 953 231 380 541 987 153 -10000 829 514 701 931 29 899 974 923 287 -10000 680 58 795 346 369 579 361 293 125 -10000 347 758 701 945 144 539 923 209 654 -10000 946 691 657 591 422 136 745 580 20 -10000 941 155 337 379 608 196 802 32 373 -10000 168 386 993 734 25 68 722 320 678 -10000 572 845 407 824 34 431 653 303 14 -10000 216 369 271 148 506 936 104 317 354 -10000 392 88 306 904 9 682 958 728 17 -10000 27 578 528 439 363 70 22 691 157 -10000 217 547 909 988 84 155 452 18 386 -10000 474 662 616 97 884 582 420 463 932 -10000 128 938 592 389 493 860 884 862 885 -10000 409 386 709 865 380 241 698 238 150 -10000 842 209 234 318 613 179 574 213 914 -10000 7 840 903 349 701 679 964 578 593 -10000 946 775 352 506 512 832 397 816 251 -10000 976 16 837 924 501 501 225 211 521 -10000 847 495 800 973 391 797 464 318 174 -10000 741 212 423 663 950 304 937 798 732 -10000 16 56 392 913 94 724 456 418 46 -10000 888 762 553 135 787 692 467 169 701 -10000 27 771 751 878 47 789 254 237 340 -10000 20 532 778 499 955 988 5 796 526 -10000 873 75 617 973 343 246 763 996 826 -10000 320 866 21 165 982 848 991 250 409 -10000 367 793 144 289 451 503 546 241 557 -10000 692 460 942 484 671 653 886 46 76 -10000 604 617 941 225 12 698 36 798 556 -10000 266 424 329 808 539 908 465 714 901 -10000 474 191 799 245 3 305 172 685 445 -10000 250 70 522 602 651 315 834 507 764 -10000 941 465 458 371 515 484 885 627 70 -10000 81 207 698 412 7 14 321 858 573 -10000 334 664 122 11 361 642 869 96 676 -10000 566 823 473 617 326 459 881 148 797 -10000 650 947 932 700 288 699 343 911 599 -10000 104 448 843 825 395 877 105 377 482 -10000 16 727 781 112 924 902 922 925 49 -10000 445 23 789 701 313 2 521 834 75 -10000 744 918 708 272 237 601 706 528 561 -10000 398 312 310 702 920 121 646 549 456 -10000 932 796 244 735 824 746 869 515 29 -10000 719 687 485 265 724 944 452 879 556 -10000 356 672 304 617 59 82 500 770 364 -10000 470 503 795 409 473 757 675 168 330 -10000 805 825 342 26 303 786 654 673 398 -10000 763 263 942 405 287 663 363 294 523 -10000 76 266 594 108 884 652 726 193 323 -10000 139 690 434 532 259 722 262 691 948 -10000 964 105 937 6 590 943 834 740 988 -10000 615 77 842 689 548 386 420 828 771 -10000 333 387 828 312 553 551 409 89 868 -10000 525 761 394 42 384 164 706 127 139 -10000 747 723 266 751 302 250 142 282 674 -10000 1 254 330 560 946 374 393 641 214 -10000 447 182 86 321 603 76 896 224 897 -10000 871 687 361 458 593 782 471 2 516 -10000 130 241 676 92 142 173 204 55 925 -10000 413 185 150 253 971 414 409 309 887 -10000 211 705 713 226 599 132 575 955 635 -10000 659 494 704 444 296 844 110 827 24 -10000 333 118 608 863 640 439 367 30 60 -10000 947 652 211 916 441 826 205 839 127 -10000 522 703 199 101 905 510 300 857 707 -10000 155 395 543 382 646 420 710 703 104 -10000 711 39 981 168 661 481 921 555 522 -10000 720 798 302 338 546 601 911 410 680 -10000 226 402 888 122 455 779 309 109 667 -10000 481 817 562 479 758 814 695 757 726 -10000 319 457 376 662 729 849 888 28 567 -10000 982 281 95 345 460 988 257 425 554 -10000 950 661 505 678 102 692 983 630 412 -10000 521 631 964 532 746 675 306 870 742 -10000 386 884 687 706 634 990 272 570 495 -10000 342 135 509 555 965 826 488 828 533 -10000 973 852 60 136 799 345 342 175 51 -10000 96 450 167 757 832 179 222 447 433 -10000 691 460 810 220 428 856 977 961 542 -10000 293 426 358 514 808 89 526 37 924 -10000 804 523 959 535 377 993 387 986 825 -10000 761 604 34 59 957 934 302 729 819 -10000 64 374 631 664 444 883 626 269 133 -10000 183 832 915 177 806 801 840 539 879 -10000 156 549 854 304 693 569 479 81 859 -10000 478 844 833 61 539 969 857 755 158 -10000 967 936 679 600 177 625 444 612 976 -10000 696 427 135 859 19 839 810 773 176 -10000 337 749 961 773 982 845 565 246 425 -10000 448 516 348 19 903 532 588 943 150 -10000 253 165 544 565 812 932 346 877 887 -10000 544 602 800 359 743 741 933 851 501 -10000 110 472 557 231 578 287 902 211 584 -10000 601 774 428 809 993 421 57 11 631 -10000 712 926 871 522 440 159 701 538 465 -10000 694 351 386 805 327 780 313 476 658 -10000 806 8 491 14 923 961 856 214 257 -10000 761 469 431 349 451 662 965 518 110 -10000 645 396 735 616 167 616 691 721 808 -10000 708 532 716 733 677 32 827 546 502 -10000 928 299 642 762 477 797 754 763 592 -10000 957 871 205 166 841 729 572 525 980 -10000 363 304 142 966 218 279 653 973 207 -10000 926 280 407 817 341 964 640 649 182 -10000 602 924 314 767 237 621 402 150 540 -10000 234 515 258 776 988 421 420 857 384 -10000 108 527 985 926 237 580 945 834 997 -10000 695 987 548 769 38 142 118 244 745 -10000 143 769 896 506 58 452 824 727 560 -10000 235 740 241 821 91 492 20 345 938 -10000 672 899 494 456 425 78 3 568 894 -10000 749 219 276 235 875 94 687 118 476 -10000 699 594 661 947 985 34 284 62 633 -10000 896 874 697 105 718 651 670 973 173 -10000 895 80 539 103 35 373 101 239 734 -10000 705 278 410 374 444 906 384 761 155 -10000 11 277 484 891 150 25 58 486 302 -10000 602 37 191 168 866 150 269 695 596 -10000 76 636 134 425 89 426 219 161 773 -10000 161 75 296 398 77 270 779 16 72 -10000 93 958 52 932 760 175 963 375 28 -10000 87 912 259 273 324 676 574 161 259 -10000 460 478 74 309 759 48 140 171 925 -10000 942 266 637 801 68 815 624 563 689 -10000 496 168 776 376 184 163 698 413 904 -10000 998 353 494 392 841 200 874 807 537 -10000 669 212 92 47 419 113 212 967 94 -10000 148 17 57 96 880 271 660 998 614 -10000 631 318 506 158 829 213 31 457 867 -10000 531 121 308 871 816 522 678 218 827 -10000 149 781 690 471 540 70 708 885 923 -10000 56 25 369 4 17 689 776 892 392 -10000 857 331 476 507 258 197 27 230 163 -10000 344 905 434 511 836 555 283 354 969 -10000 806 72 803 291 5 904 164 650 314 -10000 984 313 404 696 125 87 460 908 127 -10000 448 85 526 340 881 661 424 290 759 -10000 150 100 429 124 636 586 488 869 908 -10000 710 216 40 574 582 675 942 40 593 -10000 521 64 927 935 985 963 469 979 848 -10000 641 250 380 439 341 672 203 537 968 -10000 369 420 586 740 733 762 285 288 548 -10000 313 698 478 206 506 369 280 451 466 -10000 363 69 355 593 326 659 997 764 707 -10000 417 993 380 588 543 804 475 139 541 -10000 516 388 945 876 513 543 225 224 134 -10000 115 539 853 329 911 86 295 208 517 -10000 283 375 632 60 481 904 158 25 617 -10000 579 843 268 919 407 633 695 550 255 -10000 668 524 709 636 443 601 377 197 374 -10000 692 825 314 142 539 703 993 711 677 -10000 992 760 70 646 556 474 359 352 337 -10000 660 766 711 867 754 919 435 460 718 -10000 49 587 978 869 426 707 578 905 635 -10000 10 628 748 773 199 259 601 12 55 -10000 379 270 254 183 493 282 877 803 755 -10000 337 818 207 642 498 297 419 321 10 -10000 838 858 48 840 589 206 662 215 644 -10000 728 184 553 799 56 794 24 540 920 -10000 883 274 152 82 133 478 283 517 99 -10000 921 723 811 355 347 872 463 187 906 -10000 15 890 36 39 978 247 216 874 24 -10000 773 776 544 935 593 714 894 873 482 -10000 757 504 524 512 163 40 750 628 873 -10000 271 346 446 163 477 341 875 336 396 -10000 302 988 303 673 399 832 220 691 263 -10000 459 721 306 132 549 348 524 728 147 -10000 255 137 922 408 446 361 354 449 472 -10000 390 681 66 425 45 168 973 786 728 -10000 727 678 937 114 217 550 236 729 682 -10000 718 978 222 676 461 897 235 150 498 -10000 481 419 815 474 926 200 821 655 33 -10000 11 207 239 494 995 428 204 254 959 -10000 755 694 926 46 391 281 6 166 743 -10000 477 570 619 337 108 488 888 482 808 -10000 596 177 409 456 465 609 1000 665 917 -10000 220 387 641 930 664 791 553 15 497 -10000 368 953 837 660 777 124 603 822 50 -10000 162 910 609 119 461 779 778 270 295 -10000 487 926 38 863 328 152 41 472 53 -10000 384 290 530 771 99 329 90 55 0 -10000 912 569 708 821 886 437 840 286 331 -10000 893 38 745 442 252 278 133 886 215 -10000 554 124 251 295 737 720 765 605 631 -10000 897 666 58 802 554 318 174 434 730 -10000 679 791 851 539 312 583 213 644 534 -10000 629 528 199 248 814 835 897 557 1000 -10000 333 241 399 887 788 635 168 152 87 -10000 67 980 464 855 444 70 127 781 405 -10000 717 67 83 22 140 619 680 14 698 -10000 638 131 67 600 367 467 486 17 686 -10000 863 280 62 519 659 804 686 994 993 -10000 443 158 888 653 47 694 321 233 209 -10000 538 85 181 723 258 620 553 18 940 -10000 528 738 983 743 295 951 86 285 566 -10000 645 38 836 459 103 22 586 90 692 -10000 965 967 524 0 728 673 956 440 460 -10000 24 343 474 586 103 182 930 827 208 -10000 361 673 376 447 152 394 59 99 121 -10000 66 355 640 534 543 322 113 676 383 -10000 175 470 326 823 590 345 817 528 571 -10000 647 764 15 127 723 539 546 176 231 -10000 744 301 814 101 442 474 572 898 80 -10000 700 494 847 725 210 615 609 362 339 -10000 957 467 353 74 521 680 466 992 611 -10000 184 919 520 189 237 808 19 95 917 -10000 109 453 309 631 825 279 61 307 932 -10000 61 970 717 229 58 235 776 668 942 -10000 73 982 193 597 184 21 195 96 914 -10000 43 146 277 283 169 64 282 877 44 -10000 626 126 309 168 924 432 894 603 726 -10000 420 888 553 181 933 545 448 13 481 -10000 107 200 438 914 18 827 483 559 905 -10000 414 735 46 925 653 169 161 831 770 -10000 294 969 36 860 110 511 166 466 1000 -10000 752 730 406 194 676 742 364 445 698 -10000 128 996 444 496 596 224 527 146 456 -10000 236 236 0 934 241 107 629 315 749 -10000 885 937 600 803 127 820 732 497 774 -10000 196 891 283 826 188 900 583 659 992 -10000 727 988 3 615 793 19 278 863 814 -10000 934 298 436 967 863 773 721 278 671 -10000 613 879 225 120 831 316 410 623 54 -10000 661 659 334 78 181 497 525 541 87 -10000 883 406 684 945 654 974 932 817 148 -10000 958 556 915 704 586 506 364 723 963 -10000 654 559 394 787 461 960 899 639 409 -10000 402 474 185 824 743 105 896 150 753 -10000 194 40 456 62 379 243 395 366 680 -10000 789 40 692 100 915 75 493 899 64 -10000 324 888 962 658 274 978 873 813 115 -10000 588 104 775 499 740 973 374 836 944 -10000 706 678 541 560 527 929 261 634 257 -10000 678 959 436 9 989 934 453 344 616 -10000 315 523 182 185 318 29 853 552 244 -10000 457 29 192 179 652 740 424 796 957 -10000 403 321 757 48 268 231 21 707 228 -10000 605 988 93 772 907 324 385 966 548 -10000 1 750 716 334 712 503 883 728 696 -10000 529 337 783 91 99 674 631 154 463 -10000 929 444 181 370 787 677 686 872 739 -10000 979 84 635 416 435 187 969 727 155 -10000 632 659 681 254 690 803 594 300 692 -10000 961 755 14 643 86 129 948 408 690 -10000 274 689 6 730 110 63 885 152 560 -10000 411 978 809 375 669 224 931 545 457 -10000 596 151 406 466 459 295 461 77 557 -10000 643 601 328 966 655 810 752 698 889 -10000 835 176 681 864 160 571 375 911 133 -10000 66 792 155 476 937 238 57 9 917 -10000 502 457 585 729 130 175 275 990 169 -10000 206 155 344 690 85 187 288 214 927 -10000 749 91 509 749 469 145 243 412 427 -10000 83 950 718 472 659 919 42 784 309 -10000 331 787 151 875 772 989 765 115 80 -10000 624 950 359 827 891 581 994 118 262 -10000 627 402 301 588 426 88 394 385 558 -10000 288 684 182 540 663 378 623 902 19 -10000 783 977 393 493 59 455 788 915 162 -10000 865 572 299 810 70 534 516 453 113 -10000 373 261 143 1000 955 497 473 784 225 -10000 789 684 928 460 405 205 457 818 867 -10000 386 789 786 794 838 189 220 690 544 -10000 765 297 316 884 205 159 618 641 10 -10000 109 684 482 748 405 501 695 614 601 -10000 122 398 123 142 696 579 148 281 670 -10000 43 514 541 488 347 101 895 228 358 -10000 878 469 867 795 909 24 82 44 923 -10000 743 526 20 820 48 661 510 203 269 -10000 809 258 215 552 880 588 939 202 651 -10000 790 17 922 539 672 384 587 771 494 -10000 923 16 576 66 426 215 955 661 7 -10000 751 669 665 184 237 92 392 747 75 -10000 74 346 433 193 925 853 141 484 506 -10000 771 822 845 381 997 563 223 230 851 -10000 903 104 346 338 737 728 955 569 315 -10000 875 336 785 66 857 752 843 773 404 -10000 984 789 472 374 703 183 342 989 76 -10000 794 278 845 797 870 919 232 500 499 -10000 821 227 275 457 110 348 916 653 948 -10000 721 236 117 664 373 828 65 886 153 -10000 430 551 127 816 347 779 338 663 139 -10000 741 157 945 164 348 947 851 727 132 -10000 375 437 174 84 405 525 297 175 436 -10000 102 315 57 547 553 675 168 190 281 -10000 155 27 766 255 968 701 57 534 204 -10000 697 610 196 842 360 596 434 99 735 -10000 563 85 684 436 202 304 58 459 311 -10000 360 237 377 476 88 642 725 922 809 -10000 389 936 776 944 656 793 386 935 501 -10000 463 192 439 753 905 306 437 868 680 -10000 23 487 368 466 992 159 439 179 987 -10000 449 96 403 236 203 104 4 207 421 -10000 993 342 617 515 231 350 213 101 495 -10000 49 25 107 587 992 966 895 469 977 -10000 458 381 99 423 644 885 100 29 977 -10000 908 403 695 103 928 38 422 204 261 -10000 819 754 467 372 991 236 668 501 453 -10000 456 920 328 344 942 312 909 506 636 -10000 622 172 349 63 794 383 865 113 48 -10000 832 63 560 947 900 773 965 439 347 -10000 52 243 300 133 792 511 360 696 775 -10000 265 349 474 182 142 302 946 928 804 -10000 702 899 220 94 270 376 672 879 185 -10000 802 944 168 200 909 759 527 211 181 -10000 148 46 421 976 382 885 125 176 755 -10000 859 84 218 708 855 779 662 797 705 -10000 815 430 6 894 986 78 348 945 218 -10000 124 878 406 616 894 139 750 822 649 -10000 677 505 740 969 369 92 675 495 85 -10000 587 886 188 232 998 275 159 359 353 -10000 343 324 350 362 634 7 450 135 535 -10000 886 287 877 430 825 309 790 695 62 -10000 362 692 264 686 196 997 84 366 364 -10000 635 331 695 331 842 714 7 246 144 -10000 941 363 831 389 228 404 849 434 360 -10000 292 528 332 836 970 609 44 352 948 -10000 364 622 572 807 621 990 404 67 102 -10000 769 399 414 226 611 476 696 263 143 -10000 896 225 80 353 306 380 603 903 112 -10000 160 848 323 586 520 82 714 493 45 -10000 894 384 21 853 338 842 556 46 643 -10000 88 253 766 612 966 227 304 169 422 -10000 715 290 118 926 495 536 502 665 811 -10000 215 549 446 42 649 200 269 306 437 -10000 213 239 350 199 585 824 999 661 365 -10000 972 712 30 376 349 397 533 353 828 -10000 923 959 185 698 534 376 684 714 389 -10000 538 525 260 738 262 504 212 367 362 -10000 379 161 82 390 244 60 893 362 490 -10000 855 611 757 314 740 510 21 500 136 -10000 434 344 655 943 346 885 516 782 61 -10000 442 380 875 833 324 836 644 908 921 -10000 819 681 227 584 814 922 485 562 863 -10000 64 302 385 976 716 172 814 845 18 -10000 791 720 65 819 160 757 553 654 213 -10000 427 853 61 663 567 702 219 290 159 -10000 411 765 122 207 468 953 90 916 405 -10000 486 71 994 858 882 122 325 558 912 -10000 110 690 609 400 160 694 543 138 654 -10000 704 894 730 845 12 629 463 927 422 -10000 953 618 470 50 437 533 743 314 787 -10000 591 355 428 999 104 724 457 435 421 -10000 423 762 811 148 972 832 33 506 85 -10000 725 977 307 612 641 175 204 187 943 -10000 743 999 68 736 433 385 374 746 383 -10000 134 46 626 57 65 593 69 860 842 -10000 915 335 906 138 100 161 575 728 933 -10000 287 444 481 596 799 174 398 659 81 -10000 79 358 974 462 748 810 495 6 285 -10000 761 289 155 698 3 431 363 211 897 -10000 433 373 715 870 308 367 975 873 770 -10000 331 705 467 501 516 13 377 392 329 -10000 351 496 711 670 186 462 570 307 216 -10000 827 361 523 342 366 778 311 646 314 -10000 930 207 50 928 176 825 316 471 108 -10000 239 467 709 462 350 145 702 905 598 -10000 490 825 944 673 193 475 514 323 357 -10000 655 426 123 274 369 801 237 700 977 -10000 710 167 719 824 890 946 934 632 260 -10000 593 345 414 368 803 564 680 768 563 -10000 261 221 740 733 913 503 859 378 150 -10000 386 924 885 352 154 388 825 790 73 -10000 975 273 263 925 999 753 317 674 463 -10000 430 768 380 656 670 654 342 186 603 -10000 364 83 411 817 581 41 684 381 154 -10000 979 279 893 546 759 64 653 704 997 -10000 959 61 545 799 399 183 833 368 82 -10000 508 374 559 352 585 102 301 854 958 -10000 990 616 286 559 307 571 51 349 806 -10000 398 943 136 990 779 40 93 227 664 -10000 739 687 302 103 673 312 108 528 483 -10000 448 119 770 135 850 468 65 108 245 -10000 666 464 56 977 521 551 515 470 638 -10000 886 843 400 786 536 87 805 353 850 -10000 118 565 760 819 95 90 260 900 569 -10000 27 487 222 433 102 670 882 987 650 -10000 297 649 197 79 471 903 892 583 453 -10000 964 907 754 255 390 164 205 104 15 -10000 535 600 146 783 793 598 405 949 923 -10000 211 933 426 273 656 372 220 646 254 -10000 826 707 582 402 871 31 278 890 189 -10000 41 570 855 390 863 108 475 703 430 -10000 903 998 359 432 708 979 295 638 542 -10000 641 54 220 579 575 813 505 66 805 -10000 776 654 480 262 974 746 640 632 457 -10000 691 944 635 299 456 291 987 898 126 -10000 194 619 891 295 24 961 409 863 628 -10000 624 854 163 836 521 384 653 362 383 -10000 946 632 297 560 868 928 997 690 816 -10000 137 282 490 930 665 577 645 712 838 -10000 74 920 761 691 260 440 21 496 828 -10000 820 863 928 415 717 801 904 988 988 -10000 458 450 674 782 677 28 447 908 268 -10000 42 38 615 399 133 414 64 490 816 -10000 678 474 189 347 790 747 394 950 290 -10000 878 53 647 510 749 806 938 459 853 -10000 171 499 421 971 574 699 482 579 974 -10000 334 528 8 295 554 823 318 461 441 -10000 510 660 318 749 754 637 972 558 629 -10000 80 402 340 274 419 296 211 617 989 -10000 785 870 436 856 489 719 798 279 389 -10000 947 632 219 107 92 134 1 673 309 -10000 733 379 9 475 160 756 459 407 341 -10000 37 516 385 335 887 59 33 685 246 -10000 278 535 977 329 390 728 496 832 632 -10000 86 420 95 129 483 415 107 203 631 -10000 22 223 836 221 371 899 809 296 801 -10000 809 85 280 653 645 643 478 251 957 -10000 596 356 534 295 879 662 715 433 56 -10000 311 670 869 372 31 473 119 673 302 -10000 504 249 455 166 541 50 662 763 635 -10000 724 398 315 539 621 429 37 3 502 -10000 663 913 925 653 738 990 166 339 716 -10000 825 447 792 353 48 0 845 962 715 -10000 115 102 560 332 611 773 603 2 843 -10000 83 988 911 22 492 774 423 428 533 -10000 336 14 430 103 557 249 894 710 756 -10000 229 202 871 755 359 17 633 751 403 -10000 500 370 520 387 564 414 392 91 272 -10000 317 867 866 207 220 277 867 813 808 -10000 238 110 227 640 645 340 528 898 692 -10000 231 620 8 765 695 662 167 747 671 -10000 187 353 456 34 970 552 584 554 103 -10000 120 993 346 596 708 571 498 453 295 -10000 117 138 655 383 63 88 3 464 594 -10000 971 601 5 409 89 591 22 871 577 -10000 204 306 913 632 843 781 27 233 735 -10000 331 148 19 954 909 95 534 303 974 -10000 497 130 982 959 118 115 870 355 179 -10000 923 761 661 160 849 898 271 989 520 -10000 834 716 199 228 217 563 514 224 844 -10000 335 915 930 829 61 464 162 379 200 -10000 924 260 941 768 209 601 344 734 194 -10000 496 609 589 990 905 231 620 679 350 -10000 41 570 880 761 34 763 474 534 709 -10000 688 128 900 136 379 961 140 57 327 -10000 645 477 314 155 969 800 965 113 536 -10000 583 934 731 791 672 220 354 992 912 -10000 503 142 70 669 461 526 893 521 370 -10000 548 955 985 185 549 28 876 295 719 -10000 674 59 736 878 69 311 838 768 140 -10000 973 940 606 10 980 480 981 722 493 -10000 369 220 579 359 736 10 203 443 148 -10000 639 329 832 839 619 346 150 958 706 -10000 425 136 303 395 562 244 107 894 992 -10000 169 210 472 721 505 64 440 747 186 -10000 799 466 709 707 517 844 90 545 931 -10000 427 130 950 189 146 655 922 615 659 -10000 356 270 578 370 949 755 543 766 348 -10000 145 494 154 755 735 290 17 496 605 -10000 993 532 284 407 545 120 793 112 99 -10000 732 819 407 537 662 650 313 306 41 -10000 872 484 324 918 717 26 655 548 640 -10000 284 482 473 118 763 837 442 698 510 -10000 684 380 485 125 186 128 412 208 15 -10000 552 495 751 402 634 457 923 55 610 -10000 852 112 608 919 63 528 99 406 962 -10000 162 482 960 633 661 76 445 356 106 -10000 989 594 448 807 506 924 653 304 143 -10000 182 189 759 700 342 792 700 212 424 -10000 443 335 42 849 4 119 372 516 405 -10000 1000 606 171 233 545 824 57 242 937 -10000 925 656 157 571 938 943 921 594 563 -10000 308 115 387 331 659 942 903 236 5 -10000 998 748 394 430 677 887 861 134 34 -10000 398 879 747 330 762 933 674 733 444 -10000 78 527 526 742 623 536 258 822 221 -10000 699 227 863 696 499 264 243 783 545 -10000 537 472 547 347 25 658 425 184 33 -10000 991 74 917 615 293 171 760 808 684 -10000 153 812 793 9 731 397 261 244 783 -10000 260 361 994 409 250 987 731 968 328 -10000 101 91 615 405 302 964 338 523 807 -10000 827 784 446 308 760 230 803 944 224 -10000 833 915 801 276 303 505 733 346 77 -10000 235 130 52 153 420 350 395 579 211 -10000 482 623 865 274 782 130 514 866 918 -10000 289 375 485 853 783 102 74 282 125 -10000 454 783 352 157 842 679 415 69 219 -10000 285 884 284 282 953 369 16 229 243 -10000 385 268 334 846 386 819 335 250 5 -10000 297 91 946 881 16 359 133 650 967 -10000 734 330 755 23 111 860 913 106 322 -10000 506 558 915 249 214 792 808 977 409 -10000 504 512 714 172 120 836 769 468 611 -10000 489 518 452 103 947 37 261 613 925 -10000 735 448 754 389 925 171 452 707 886 -10000 397 214 377 790 198 816 792 841 591 -10000 809 973 613 234 823 728 80 247 741 -10000 455 708 535 715 570 564 614 526 237 -10000 0 6 275 984 593 780 551 167 708 -10000 358 468 900 617 707 8 539 835 127 -10000 337 6 948 935 248 933 360 261 891 -10000 427 85 778 70 390 671 67 404 239 -10000 171 371 6 336 527 292 426 358 468 -10000 571 363 237 872 203 600 645 988 42 -10000 62 447 475 513 87 710 672 819 568 -10000 708 530 420 598 746 685 43 929 784 -10000 102 744 407 354 27 743 0 719 49 -10000 977 548 908 706 883 528 44 333 182 -10000 190 166 378 261 556 38 156 68 892 -10000 389 379 870 983 73 472 384 587 785 -10000 31 947 415 246 843 91 438 291 628 -10000 425 488 120 929 720 141 926 201 712 -10000 914 391 900 992 681 267 520 480 2 -10000 288 806 405 487 362 995 755 185 978 -10000 752 269 487 988 324 645 108 54 191 -10000 708 361 661 309 569 132 453 713 900 -10000 48 533 601 471 920 828 24 103 621 -10000 243 231 956 263 516 142 787 327 968 -10000 118 831 572 511 155 62 389 535 277 -10000 116 564 397 39 790 675 498 719 741 -10000 437 10 25 397 262 914 863 7 273 -10000 7 661 859 869 554 558 438 122 949 -10000 489 455 277 750 13 948 899 790 379 -10000 362 87 289 614 91 528 630 874 390 -10000 949 418 987 719 667 701 726 569 950 -10000 813 532 359 678 931 355 882 314 329 -10000 976 850 872 716 734 218 185 762 642 -10000 403 911 997 631 259 539 494 80 52 -10000 291 545 595 21 713 914 518 346 456 -10000 460 78 325 215 765 211 275 495 409 -10000 365 58 719 190 762 728 848 292 775 -10000 179 121 12 799 195 705 620 593 232 -10000 591 812 957 594 640 693 669 707 269 -10000 771 447 873 764 286 664 918 811 441 -10000 879 598 406 238 133 522 491 53 705 -10000 469 171 850 456 842 394 447 348 33 -10000 781 557 397 151 721 120 948 589 608 -10000 396 568 420 416 713 470 454 825 26 -10000 527 488 446 379 195 967 806 138 138 -10000 511 671 894 13 941 154 401 265 606 -10000 996 51 46 790 258 523 973 15 103 -10000 704 539 891 119 513 791 61 800 826 -10000 350 727 195 847 162 414 482 952 30 -10000 57 983 23 813 703 963 807 846 571 -10000 681 672 712 286 774 335 532 885 520 -10000 236 454 273 375 693 508 851 139 8 -10000 209 686 230 27 344 457 33 234 414 -10000 645 355 114 907 216 849 160 430 807 -10000 494 802 659 702 724 51 51 920 2 -10000 555 294 854 932 875 296 390 105 994 -10000 984 614 224 679 493 863 741 55 208 -10000 224 262 545 283 72 866 692 686 903 -10000 991 725 443 117 744 596 563 798 923 -10000 515 94 973 920 471 136 234 120 95 -10000 630 132 42 635 395 784 743 653 483 -10000 939 565 658 365 352 529 905 441 1000 -10000 864 962 268 26 774 471 989 368 917 -10000 138 412 453 955 793 416 786 540 984 -10000 887 342 745 531 247 962 248 311 296 -10000 472 118 154 882 830 364 334 130 273 -10000 757 811 324 507 880 776 67 907 858 -10000 705 620 698 469 38 21 711 533 455 -10000 52 729 949 849 826 682 443 613 536 -10000 954 441 442 804 465 995 356 135 352 -10000 842 644 484 811 505 693 979 433 90 -10000 893 784 313 941 361 873 999 263 400 -10000 125 227 790 837 750 148 660 681 955 -10000 884 208 749 484 256 886 903 188 307 -10000 518 573 219 15 11 252 12 92 503 -10000 899 772 474 634 54 425 786 825 365 -10000 611 253 482 62 919 875 243 839 659 -10000 828 21 835 311 380 81 86 981 98 -10000 569 464 875 670 127 157 533 49 817 -10000 705 781 816 406 28 21 161 71 334 -10000 167 177 927 194 662 254 607 741 651 -10000 327 957 206 666 170 74 566 214 452 -10000 438 802 399 713 685 125 297 828 997 -10000 85 952 376 885 51 41 950 963 489 -10000 62 411 468 466 134 743 366 468 896 -10000 241 672 25 772 907 261 198 576 504 -10000 343 209 30 76 97 672 543 162 499 -10000 974 544 995 372 183 521 853 66 639 -10000 396 291 81 178 735 793 592 209 581 -10000 377 224 210 752 370 9 78 578 874 -10000 59 32 914 254 914 267 958 155 499 -10000 523 820 592 460 737 428 360 554 868 -10000 993 743 467 502 6 374 282 341 692 -10000 338 684 922 153 210 620 602 729 407 -10000 753 366 840 29 252 770 723 86 857 -10000 123 653 147 272 837 311 230 803 922 -10000 794 218 53 105 324 868 432 758 396 -10000 661 288 932 724 458 493 772 262 758 -10000 198 906 35 1 314 540 991 597 89 -10000 801 203 556 346 959 462 977 755 434 -10000 187 222 980 606 824 401 844 289 28 -10000 1 183 139 965 18 146 387 575 255 -10000 882 861 409 653 634 690 815 175 678 -10000 739 653 802 312 136 522 546 98 820 -10000 216 686 817 775 143 772 703 157 744 -10000 851 368 304 581 904 410 379 843 896 -10000 246 74 846 931 930 465 36 822 376 -10000 496 456 83 565 698 461 764 106 457 -10000 768 998 438 876 144 670 37 423 937 -10000 607 490 590 756 612 331 577 797 407 -10000 611 896 721 103 552 523 652 39 954 -10000 627 415 16 688 120 142 899 873 612 -10000 767 478 176 757 397 417 181 949 233 -10000 869 748 327 176 558 637 240 776 437 -10000 756 184 845 540 983 131 274 626 844 -10000 95 437 504 153 654 330 65 347 365 -10000 704 918 412 528 931 529 119 493 870 -10000 85 25 232 576 410 526 713 221 647 -10000 275 381 553 1 408 23 912 144 702 -10000 332 806 968 254 612 1000 988 744 184 -10000 858 176 690 921 606 101 981 801 499 -10000 879 922 960 958 97 19 984 307 334 -10000 193 471 848 520 629 555 174 150 774 -10000 509 348 105 71 856 993 738 630 500 -10000 258 131 742 710 682 499 128 726 909 -10000 128 912 517 713 725 781 847 561 938 -10000 274 391 136 578 139 136 701 241 340 -10000 270 523 701 744 831 977 7 841 403 -10000 487 235 943 484 979 319 373 969 644 -10000 252 574 254 494 157 973 40 522 475 -10000 73 120 189 112 233 587 943 931 521 -10000 966 474 958 872 318 226 44 49 250 -10000 49 518 291 335 188 800 950 255 444 -10000 941 20 449 911 203 274 55 250 936 -10000 277 665 837 33 42 596 548 204 200 -10000 410 457 886 506 49 992 641 498 868 -10000 921 174 992 993 307 909 235 794 373 -10000 251 319 40 217 85 768 470 872 127 -10000 21 486 955 877 290 583 654 734 576 -10000 314 90 595 678 34 405 268 73 495 -10000 566 834 773 374 284 400 67 960 452 -10000 684 883 173 39 272 532 956 735 434 -10000 738 683 288 828 527 666 608 9 42 -10000 240 359 949 726 205 47 953 758 806 -10000 826 34 47 537 340 792 419 781 128 -10000 852 158 509 639 456 584 641 534 763 -10000 359 378 325 572 390 621 767 680 8 -10000 610 133 673 93 490 955 677 831 118 -10000 991 71 500 283 123 617 842 821 486 -10000 682 285 37 74 652 24 695 592 116 -10000 195 97 838 968 940 286 105 714 47 -10000 70 59 588 402 485 379 834 587 446 -10000 95 47 751 42 677 812 409 98 221 -10000 497 600 275 258 133 344 507 11 500 -10000 716 733 262 853 282 861 425 698 292 -10000 867 727 508 109 106 544 896 258 763 -10000 883 59 212 462 481 403 809 833 191 -10000 102 251 35 623 419 837 228 607 70 -10000 241 641 439 606 317 814 779 434 402 -10000 236 446 527 637 769 503 64 476 152 -10000 983 686 473 628 69 163 863 727 277 -10000 303 116 823 994 476 4 600 801 239 -10000 685 972 330 460 247 142 805 266 57 -10000 120 613 806 916 685 162 661 532 582 -10000 764 821 208 613 268 256 887 361 129 -10000 782 709 251 975 522 337 0 894 161 -10000 201 104 646 401 521 239 323 255 362 -10000 233 444 958 233 2 196 519 418 938 -10000 162 119 593 514 699 850 647 126 679 -10000 431 575 327 18 329 365 543 920 725 -10000 816 387 450 679 373 966 415 321 606 -10000 944 299 581 977 921 859 715 665 136 -10000 109 410 99 720 356 268 128 742 150 -10000 119 399 63 700 533 706 79 112 927 -10000 650 627 435 44 131 858 906 519 5 -10000 470 614 984 55 93 715 228 578 908 -10000 938 646 178 693 237 493 69 527 771 -10000 291 526 791 432 681 75 185 958 130 -10000 438 96 414 387 547 397 543 926 664 -10000 269 799 983 152 776 340 178 725 385 -10000 625 655 634 647 639 33 236 188 288 -10000 690 475 208 939 402 603 361 378 329 -10000 783 293 412 620 369 866 227 874 818 -10000 21 130 826 866 973 772 514 820 634 -10000 611 289 501 145 983 172 535 907 471 -10000 226 350 104 237 583 897 355 984 361 -10000 796 665 949 965 731 431 838 177 826 -10000 454 538 569 846 994 952 756 265 581 -10000 237 62 450 427 238 247 625 152 443 -10000 518 551 223 689 42 458 943 381 821 -10000 312 804 874 273 752 341 348 802 303 -10000 905 71 885 445 419 517 193 447 739 -10000 380 327 480 892 921 402 227 590 308 -10000 406 69 253 249 737 16 64 525 329 -10000 180 369 919 962 883 897 994 808 378 -10000 102 956 849 813 542 893 727 472 23 -10000 300 419 591 622 567 375 245 231 586 -10000 452 230 962 95 12 449 946 534 546 -10000 911 382 561 669 85 532 511 909 332 -10000 1000 16 875 121 433 206 261 731 888 -10000 711 412 435 208 311 731 863 227 32 -10000 962 494 69 765 937 312 191 547 636 -10000 375 583 701 7 613 437 264 231 434 -10000 510 552 7 930 438 959 603 523 884 -10000 657 840 567 468 81 322 409 838 893 -10000 368 465 655 739 650 791 341 951 477 -10000 273 755 865 801 980 454 824 282 681 -10000 396 716 267 677 892 348 715 578 755 -10000 470 718 982 918 680 481 656 703 440 -10000 667 272 986 160 823 426 995 360 86 -10000 408 898 388 480 176 108 907 835 686 -10000 107 36 139 933 501 67 48 257 266 -10000 845 915 561 308 558 890 471 488 426 -10000 543 845 428 304 896 953 12 806 95 -10000 562 129 578 520 981 251 535 782 68 -10000 935 689 115 779 89 825 377 201 254 -10000 441 990 22 747 403 897 551 494 197 -10000 144 489 239 562 325 435 318 290 443 -10000 137 960 853 794 367 48 934 123 229 -10000 975 138 522 16 796 239 466 322 344 -10000 158 831 801 809 704 967 724 20 722 -10000 478 123 52 490 118 780 889 553 668 -10000 681 174 30 514 15 342 336 255 78 -10000 242 823 187 817 705 109 341 957 887 -10000 386 452 954 927 391 883 878 961 975 -10000 308 884 937 372 178 210 513 586 940 -10000 863 830 189 618 821 75 319 533 7 -10000 904 373 990 433 457 956 59 985 253 -10000 784 518 383 319 52 916 842 645 541 -10000 343 31 460 606 797 879 840 594 238 -10000 197 856 842 595 145 922 947 900 434 -10000 35 422 29 572 243 866 103 392 421 -10000 180 789 177 99 912 533 343 252 890 -10000 188 280 566 391 745 15 783 779 654 -10000 601 343 611 998 670 667 61 957 564 -10000 604 473 757 851 824 997 38 277 84 -10000 622 80 789 400 788 74 324 851 624 -10000 181 351 426 313 104 499 598 567 142 -10000 999 868 435 989 150 727 867 168 371 -10000 944 356 481 196 410 306 627 919 959 -10000 16 430 715 679 104 490 237 598 261 -10000 303 115 61 893 317 725 486 591 713 -10000 840 185 130 429 537 177 626 963 247 -10000 3 295 243 572 191 872 301 49 398 -10000 352 943 874 182 426 903 249 76 824 -10000 591 728 464 462 903 991 795 255 832 -10000 593 541 172 313 451 468 131 441 81 -10000 23 870 117 811 625 721 236 956 898 -10000 87 843 171 758 354 543 805 975 123 -10000 555 727 937 435 84 563 31 224 426 -10000 219 83 766 362 48 269 841 987 655 -10000 596 420 827 823 327 657 329 184 358 -10000 637 590 145 966 21 341 97 618 621 -10000 240 817 269 451 706 782 572 947 627 -10000 625 131 35 488 765 976 444 312 608 -10000 442 659 694 484 465 907 300 672 546 -10000 100 818 800 87 495 297 831 86 979 -10000 912 93 799 79 814 633 250 720 659 -10000 189 334 913 656 207 59 198 26 315 -10000 361 511 906 492 533 664 560 959 175 -10000 184 787 135 888 919 411 266 226 496 -10000 1 714 782 445 603 740 716 722 161 -10000 8 728 212 783 97 10 691 499 217 -10000 752 373 970 832 180 315 126 584 15 -10000 30 140 253 747 183 702 323 583 622 -10000 993 912 412 678 365 275 911 795 346 -10000 310 712 549 319 669 479 131 764 654 -10000 351 222 175 899 779 109 211 951 932 -10000 573 936 533 142 577 883 443 539 515 -10000 704 793 391 806 533 769 933 983 515 -10000 442 302 850 655 949 722 3 892 844 -10000 883 71 771 614 65 102 334 845 46 -10000 325 117 481 980 102 790 337 37 895 -10000 60 787 522 853 135 977 161 583 246 -10000 77 828 989 38 733 943 695 471 295 -10000 753 798 310 983 217 23 796 329 953 -10000 4 986 319 649 14 183 429 536 250 -10000 267 684 309 238 348 337 770 572 729 -10000 710 308 807 490 374 386 274 700 293 -10000 967 653 576 166 594 417 59 151 1000 -10000 587 627 29 625 716 515 108 307 198 -10000 917 70 989 905 120 38 666 233 526 -10000 436 109 14 608 167 876 771 301 958 -10000 712 120 407 691 938 538 493 213 703 -10000 509 721 210 721 251 997 583 280 818 -10000 598 634 465 842 328 980 582 231 868 -10000 648 589 479 820 882 245 218 574 307 -10000 852 694 127 476 313 309 327 486 60 -10000 849 717 318 335 401 493 878 370 868 -10000 654 78 540 172 501 176 355 818 992 -10000 153 328 13 76 724 384 822 266 516 -10000 777 240 881 789 718 175 975 199 849 -10000 627 49 482 594 443 311 645 826 488 -10000 128 104 187 326 553 992 213 30 774 -10000 136 46 242 991 41 937 889 132 5 -10000 165 808 707 993 837 709 566 953 755 -10000 495 203 703 174 894 909 883 65 375 -10000 410 282 597 941 325 117 943 620 816 -10000 714 649 729 107 890 924 954 836 517 -10000 32 424 145 77 540 899 537 101 392 -10000 614 53 103 95 706 330 180 506 201 -10000 616 680 409 63 727 312 512 515 342 -10000 304 240 967 692 453 20 48 631 782 -10000 138 243 508 846 358 95 51 827 320 -10000 228 340 228 668 420 805 705 692 775 -10000 263 4 25 800 22 651 367 876 78 -10000 692 919 775 577 642 517 882 225 241 -10000 544 993 130 612 414 258 546 98 185 -10000 885 135 109 623 869 68 714 914 10 -10000 612 737 421 614 2 600 393 517 823 -10000 973 56 8 767 498 340 447 180 295 -10000 358 554 151 134 166 716 40 393 841 -10000 822 36 143 20 523 681 500 225 145 -10000 533 230 32 483 157 465 166 920 42 -10000 576 194 700 624 271 424 161 447 218 -10000 490 441 413 512 60 752 260 164 613 -10000 766 759 496 123 918 713 792 879 596 -10000 118 733 386 777 425 663 734 612 24 -10000 408 306 487 669 22 930 431 487 676 -10000 974 196 437 215 17 253 905 447 380 -10000 111 597 725 405 123 162 274 369 654 -10000 747 444 777 297 253 197 442 926 597 -10000 212 793 882 416 897 430 535 766 289 -10000 297 897 973 419 424 183 585 977 106 -10000 391 666 593 931 820 840 568 377 18 -10000 341 495 21 117 685 748 55 478 69 -10000 838 324 346 131 613 922 220 380 658 -10000 377 438 479 992 579 497 503 680 807 -10000 33 559 269 632 345 289 637 772 831 -10000 322 60 335 960 927 723 472 124 10 -10000 939 269 519 32 147 444 233 129 812 -10000 83 858 323 165 189 501 205 443 349 -10000 313 547 959 886 347 84 105 820 163 -10000 443 128 804 398 322 377 729 566 216 -10000 511 638 108 146 969 669 971 791 953 -10000 100 718 839 272 14 799 458 800 927 -10000 855 433 369 747 339 495 864 386 872 -10000 701 881 75 648 950 682 295 402 65 -10000 408 636 146 158 368 859 800 387 723 -10000 792 793 29 753 462 156 721 204 578 -10000 159 329 372 174 760 430 962 411 493 -10000 368 446 793 34 410 89 346 626 995 -10000 906 566 79 634 345 891 527 421 834 -10000 877 243 659 920 667 264 838 440 857 -10000 758 850 595 701 346 754 792 68 223 -10000 172 833 480 909 765 911 394 421 191 -10000 343 340 839 587 62 697 605 339 673 -10000 324 429 78 22 665 393 779 709 859 -10000 934 775 729 997 390 806 942 749 13 -10000 595 116 314 836 139 37 998 377 267 -10000 409 507 340 970 760 342 939 343 820 -10000 465 971 36 350 191 901 599 67 539 -10000 905 370 700 187 521 462 883 176 575 -10000 628 570 900 636 309 278 971 5 909 -10000 979 554 823 56 336 423 600 884 850 -10000 605 971 394 182 600 846 828 334 388 -10000 602 460 483 235 707 756 161 350 124 -10000 651 642 855 913 501 277 501 558 436 -10000 905 299 93 964 673 794 902 287 498 -10000 23 512 679 921 380 524 173 412 875 -10000 260 253 993 453 376 825 976 858 825 -10000 765 760 997 670 316 427 557 643 33 -10000 576 843 824 920 31 781 760 137 41 -10000 475 528 591 476 893 208 942 224 460 -10000 775 64 712 294 67 348 943 83 36 -10000 556 719 124 37 110 366 130 692 194 -10000 143 677 204 911 574 939 894 550 349 -10000 74 496 444 739 916 571 769 234 548 -10000 417 576 542 374 296 595 873 100 310 -10000 78 372 330 466 352 229 292 11 289 -10000 797 73 677 742 170 80 908 893 532 -10000 756 647 488 853 887 143 334 339 457 -10000 221 969 319 838 233 534 876 766 693 -10000 195 526 191 481 722 342 155 899 590 -10000 188 462 166 117 354 62 617 735 190 -10000 116 165 998 191 265 555 574 826 18 -10000 277 70 931 958 911 673 21 260 536 -10000 448 969 659 694 357 979 985 960 653 -10000 597 394 842 971 88 941 468 47 92 -10000 692 977 172 804 255 951 971 983 675 -10000 3 304 99 79 884 675 954 691 593 -10000 285 943 996 443 911 393 808 422 611 -10000 309 641 164 882 59 22 132 970 929 -10000 829 595 184 994 984 116 583 395 797 -10000 328 174 78 488 918 84 959 659 23 -10000 890 991 144 835 301 466 174 413 276 -10000 981 212 917 844 259 53 672 514 567 -10000 466 488 203 484 348 475 604 923 527 -10000 229 101 942 620 227 283 15 369 998 -10000 985 527 412 890 349 694 654 538 558 -10000 975 794 208 781 166 465 923 124 385 -10000 586 122 473 336 607 240 658 641 507 -10000 945 868 616 507 599 961 204 705 658 -10000 929 429 796 542 176 721 410 736 142 -10000 372 413 702 749 357 377 858 817 865 -10000 953 214 605 549 112 467 6 158 537 -10000 567 28 822 567 659 169 261 746 682 -10000 99 877 4 293 418 527 419 365 869 -10000 437 694 887 31 574 185 167 313 119 -10000 450 495 470 626 97 616 663 756 641 -10000 283 174 469 553 192 374 636 660 60 -10000 876 662 603 859 511 608 240 17 987 -10000 893 99 643 751 462 521 819 452 616 -10000 470 468 141 133 368 800 555 660 233 -10000 618 991 388 683 751 252 624 179 999 -10000 598 846 300 89 482 740 431 942 180 -10000 726 835 261 708 47 35 355 970 802 -10000 756 991 673 774 286 235 598 309 71 -10000 417 858 542 928 406 771 1 69 962 -10000 509 264 981 887 504 117 728 673 262 -10000 351 739 35 952 51 557 33 106 22 -10000 677 130 1000 902 801 138 364 967 522 -10000 812 37 24 815 77 326 665 111 773 -10000 292 214 402 559 262 865 134 35 225 -10000 922 241 860 339 494 904 249 277 418 -10000 793 874 604 103 7 372 113 633 878 -10000 708 922 231 507 172 567 293 290 166 -10000 899 156 592 75 468 963 203 39 824 -10000 140 284 398 159 657 237 632 945 275 -10000 253 630 994 814 927 920 40 166 272 -10000 88 414 984 732 420 181 256 594 985 -10000 43 597 574 142 41 957 392 912 203 -10000 149 546 260 651 264 383 499 7 23 -10000 10 136 945 330 542 490 192 703 336 -10000 10 138 179 889 161 678 22 850 547 -10000 540 892 722 511 964 320 780 738 440 -10000 609 631 987 345 94 593 77 350 785 -10000 797 231 247 317 705 569 54 113 308 -10000 794 87 902 485 759 751 476 29 44 -10000 134 802 994 12 346 572 142 142 987 -10000 783 490 394 401 357 991 225 950 876 -10000 843 406 288 850 751 912 355 144 197 -10000 737 718 789 441 154 948 832 735 557 -10000 107 397 552 204 862 597 486 889 859 -10000 576 427 237 144 812 603 682 72 76 -10000 194 14 160 113 742 861 87 859 233 -10000 742 797 791 625 477 231 600 389 715 -10000 545 429 196 531 461 819 80 445 111 -10000 197 690 201 741 864 144 845 128 569 -10000 8 234 655 26 900 107 413 805 677 -10000 369 835 976 903 248 987 79 610 294 -10000 969 811 82 690 930 550 950 163 390 -10000 84 531 211 3 189 173 48 586 234 -10000 757 92 329 207 115 516 262 106 325 -10000 349 891 314 632 186 850 758 811 766 -10000 564 89 900 918 253 813 102 732 745 -10000 905 67 933 192 720 835 681 403 478 -10000 789 766 244 864 31 604 983 829 351 -10000 214 750 994 670 299 221 904 247 86 -10000 938 221 478 4 513 505 291 311 520 -10000 606 370 37 159 675 665 206 760 725 -10000 423 41 132 887 128 182 38 645 838 -10000 769 758 469 754 408 674 855 649 277 -10000 374 143 65 539 616 179 820 256 986 -10000 376 759 974 487 602 841 931 136 201 -10000 779 647 951 530 552 33 858 399 291 -10000 227 957 116 396 676 803 736 293 483 -10000 790 506 370 47 670 25 569 519 184 -10000 32 921 117 379 368 943 363 695 79 -10000 133 358 555 940 61 651 36 183 896 -10000 23 735 410 294 469 450 466 73 605 -10000 496 300 415 578 531 129 693 115 450 -10000 106 402 740 376 919 90 417 483 766 -10000 642 385 354 100 912 352 525 335 364 -10000 455 231 914 41 83 895 364 770 770 -10000 563 690 991 417 685 821 221 629 833 -10000 572 996 498 36 13 665 420 154 861 -10000 653 199 180 324 378 597 100 473 939 -10000 760 634 655 43 874 272 662 597 921 -10000 470 145 253 251 584 580 714 635 264 -10000 127 427 288 87 15 950 963 679 929 -10000 934 186 688 774 740 128 988 381 890 -10000 790 160 313 329 7 343 758 531 793 -10000 595 234 757 771 203 725 130 569 872 -10000 191 463 5 303 824 501 415 401 273 -10000 325 290 395 147 168 798 742 73 474 -10000 452 554 385 354 890 871 689 815 630 -10000 513 571 460 479 97 62 682 871 339 -10000 762 33 593 375 619 439 974 639 834 -10000 545 695 519 161 49 593 447 495 632 -10000 483 261 45 247 157 585 200 623 641 -10000 754 636 574 113 914 986 898 119 179 -10000 680 296 760 606 685 872 896 938 59 -10000 658 284 213 883 521 421 34 783 592 -10000 85 647 342 953 850 210 866 694 913 -10000 749 994 767 483 575 631 195 756 363 -10000 447 790 298 428 660 595 123 627 313 -10000 527 902 193 647 610 95 890 757 4 -10000 900 58 396 815 981 626 734 953 612 -10000 714 476 39 86 442 553 836 414 168 -10000 234 862 618 986 458 95 885 653 633 -10000 243 910 339 420 419 4 297 236 337 -10000 360 548 651 156 737 160 336 410 999 -10000 174 262 819 146 454 221 237 531 6 -10000 489 612 91 539 647 66 176 473 92 -10000 153 814 39 914 461 606 77 489 133 -10000 31 585 792 512 106 330 602 125 514 -10000 948 878 267 256 106 439 102 707 610 -10000 761 137 547 386 946 129 182 634 451 -10000 415 471 992 284 803 434 918 815 295 -10000 445 284 192 473 176 92 132 850 921 -10000 413 399 548 231 621 250 858 511 365 -10000 576 52 669 83 561 786 192 314 162 -10000 435 672 122 995 667 481 825 643 681 -10000 561 839 101 499 28 399 384 566 490 -10000 692 936 260 713 740 555 596 111 77 -10000 460 692 209 944 883 167 190 932 220 -10000 931 926 657 613 83 162 176 313 584 -10000 802 563 738 650 92 169 450 304 959 -10000 397 197 830 978 854 904 998 586 23 -10000 151 899 657 357 538 876 209 812 746 -10000 564 620 997 180 830 895 990 990 289 -10000 304 213 913 284 70 660 510 665 222 -10000 249 625 425 739 63 70 637 200 461 -10000 200 43 335 965 142 238 116 992 29 -10000 414 313 294 827 898 639 310 540 749 -10000 318 60 153 821 939 324 951 973 392 -10000 23 58 93 533 576 425 623 678 640 -10000 309 842 578 6 764 248 377 369 528 -10000 356 303 911 618 773 55 369 267 405 -10000 106 25 523 633 378 283 632 138 305 -10000 193 470 325 98 963 393 793 984 650 -10000 341 569 857 144 489 876 347 562 723 -10000 562 45 327 227 479 76 407 986 135 -10000 682 20 82 627 354 549 275 869 86 -10000 385 423 147 410 61 95 549 481 939 -10000 166 766 533 937 847 965 853 944 313 -10000 76 919 180 360 435 186 692 160 342 -10000 524 804 836 856 434 524 759 627 379 -10000 741 72 886 946 407 76 702 436 427 -10000 558 101 422 617 712 645 582 292 104 -10000 896 743 610 525 696 572 88 421 94 -10000 274 995 150 364 466 803 250 39 484 -10000 117 59 764 917 807 831 503 680 915 -10000 377 966 25 219 403 213 792 883 16 -10000 191 361 703 584 696 122 583 659 176 -10000 29 338 422 549 882 248 151 364 25 -10000 408 851 75 183 108 489 827 619 533 -10000 285 600 459 863 68 574 347 92 1 -10000 205 355 419 340 210 14 333 807 735 -10000 234 989 789 723 784 371 879 925 119 -10000 700 901 290 373 355 161 329 928 277 -10000 887 196 405 453 979 458 935 142 869 -10000 813 965 781 188 986 671 557 896 47 -10000 694 899 966 742 207 293 624 776 688 -10000 171 568 112 372 511 32 278 135 489 -10000 89 748 999 307 109 681 59 661 159 -10000 684 690 588 589 826 994 302 341 367 -10000 282 513 847 696 643 465 855 335 753 -10000 590 475 545 712 812 521 981 516 584 -10000 64 963 763 361 704 248 598 479 169 -10000 593 409 114 225 252 829 842 577 125 -10000 462 213 156 565 636 756 510 77 18 -10000 574 692 216 18 998 572 188 562 41 -10000 254 312 738 371 121 953 850 224 543 -10000 370 9 711 675 859 158 91 680 948 -10000 473 801 628 487 578 509 78 982 814 -10000 809 744 641 216 835 845 795 903 613 -10000 529 665 542 771 978 366 570 454 421 -10000 717 701 77 976 715 452 893 200 292 -10000 526 67 684 921 884 210 584 564 871 -10000 958 302 123 935 332 893 676 976 986 -10000 844 291 626 688 571 324 387 65 613 -10000 664 463 516 875 893 817 937 294 663 -10000 20 857 812 251 288 740 28 213 845 -10000 623 150 668 669 912 548 176 141 639 -10000 591 482 124 831 600 877 864 6 773 -10000 106 79 89 831 926 545 75 963 276 -10000 387 973 441 771 292 68 26 39 432 -10000 977 451 769 766 343 440 458 313 538 -10000 145 344 236 82 238 968 562 573 7 -10000 388 161 70 220 983 533 515 380 852 -10000 741 56 38 932 178 256 586 237 15 -10000 298 910 898 90 41 196 802 29 115 -10000 626 66 273 442 978 35 541 148 153 -10000 174 378 440 679 976 167 251 881 476 -10000 132 765 349 665 272 868 869 513 430 -10000 112 690 872 660 579 919 55 280 232 -10000 495 390 830 480 41 199 70 78 438 -10000 614 59 843 194 789 488 221 766 971 -10000 257 674 282 690 776 857 549 716 186 -10000 375 535 227 959 940 32 372 848 809 -10000 350 665 577 405 806 888 85 156 787 -10000 28 312 42 335 176 485 769 177 404 -10000 426 584 39 170 437 179 603 771 123 -10000 117 810 928 317 610 890 926 19 982 -10000 410 826 630 336 99 841 788 597 61 -10000 103 342 146 922 879 387 230 32 657 -10000 922 311 746 673 581 398 935 888 661 -10000 971 579 623 567 720 336 677 888 622 -10000 193 26 512 88 583 7 297 28 874 -10000 464 697 257 140 336 607 49 854 821 -10000 715 91 58 710 46 349 911 142 578 -10000 387 679 174 757 853 131 907 639 212 -10000 653 885 506 403 246 816 592 735 233 -10000 444 855 345 936 73 368 631 972 101 -10000 160 117 543 514 724 85 325 263 152 -10000 673 231 253 243 861 403 869 812 419 -10000 51 382 338 479 745 336 666 534 487 -10000 549 116 717 249 752 706 651 694 487 -10000 981 901 621 921 831 263 893 170 349 -10000 546 983 513 437 394 476 661 22 999 -10000 745 617 487 541 785 440 808 288 164 -10000 492 391 916 990 750 122 870 634 705 -10000 848 767 213 480 336 450 790 197 395 -10000 986 847 624 709 436 453 75 942 17 -10000 873 352 232 329 417 541 265 431 945 -10000 306 975 388 920 413 475 19 147 990 -10000 565 414 124 324 434 850 655 970 306 -10000 820 60 784 784 816 240 809 597 195 -10000 100 416 444 865 620 710 721 603 461 -10000 887 603 271 823 664 971 194 619 999 -10000 678 367 475 450 996 568 779 965 349 -10000 390 375 20 296 462 228 56 166 463 -10000 268 997 900 206 240 924 55 207 13 -10000 299 570 707 730 757 869 696 95 254 -10000 232 803 212 473 549 225 61 445 766 -10000 479 27 519 930 876 753 62 691 192 -10000 400 69 437 484 83 900 951 172 91 -10000 42 597 516 281 466 364 549 602 540 -10000 822 200 430 966 930 419 949 810 644 -10000 861 890 953 1000 889 353 433 993 403 -10000 860 962 611 472 813 780 849 226 974 -10000 934 598 401 80 490 319 377 901 229 -10000 684 55 908 691 979 675 488 962 316 -10000 735 540 6 171 714 643 50 585 809 -10000 556 666 565 341 687 923 274 856 138 -10000 806 366 578 155 454 342 876 455 737 -10000 467 869 627 67 699 176 844 927 331 -10000 307 636 668 1 734 623 726 691 601 -10000 509 601 814 119 205 617 301 468 441 -10000 423 678 245 199 964 788 122 76 18 -10000 692 436 818 671 532 391 407 561 500 -10000 420 536 875 90 986 581 380 659 214 -10000 252 265 2 951 565 929 141 308 863 -10000 65 246 724 539 946 962 700 84 529 -10000 856 345 504 346 91 423 411 676 161 -10000 710 560 215 343 598 602 585 107 308 -10000 595 193 337 894 263 824 809 127 813 -10000 401 332 574 23 447 220 654 744 157 -10000 853 604 436 455 707 622 1000 703 709 -10000 505 595 84 80 925 425 81 751 657 -10000 983 807 612 307 681 212 356 128 217 -10000 959 656 622 499 935 754 503 99 594 -10000 895 643 214 469 496 203 515 325 814 -10000 562 597 960 974 417 222 757 430 160 -10000 456 160 836 749 953 649 188 522 399 -10000 196 585 345 346 121 430 704 442 534 -10000 340 832 108 342 965 649 740 482 317 -10000 540 13 134 636 167 271 502 827 2 -10000 351 468 838 485 198 263 663 598 672 -10000 313 314 476 222 703 226 928 101 480 -10000 51 581 449 611 416 620 1000 196 863 -10000 4 101 954 826 597 453 766 309 859 -10000 764 497 542 278 281 419 884 71 559 -10000 205 941 655 796 212 793 245 347 665 -10000 181 985 24 867 962 838 530 537 365 -10000 790 998 814 92 577 51 990 127 11 -10000 588 813 460 616 616 603 428 590 895 -10000 163 601 540 446 334 319 840 592 670 -10000 107 357 120 982 294 123 752 715 841 -10000 960 304 524 8 456 899 429 385 65 -10000 107 299 853 623 885 208 718 657 762 -10000 407 53 109 505 576 57 458 489 377 -10000 868 47 423 778 276 856 382 170 453 -10000 367 428 336 774 687 132 787 670 91 -10000 682 982 419 249 662 835 465 858 338 -10000 431 464 109 986 920 765 463 22 94 -10000 601 553 947 734 814 420 978 699 682 -10000 884 362 263 263 741 158 300 577 848 -10000 987 123 559 760 779 197 98 839 483 -10000 426 255 721 19 691 494 101 873 704 -10000 941 317 345 328 950 341 313 806 185 -10000 606 983 545 661 73 675 23 704 431 -10000 134 78 878 499 906 313 548 633 922 -10000 822 399 798 93 859 686 203 703 196 -10000 652 945 515 394 555 141 884 648 236 -10000 282 27 925 13 617 974 112 442 669 -10000 325 514 574 410 113 821 319 836 958 -10000 356 605 660 586 792 704 338 244 947 -10000 364 717 77 182 141 121 789 37 233 -10000 26 972 524 752 942 161 302 381 444 -10000 474 601 736 164 724 291 785 366 235 -10000 196 428 599 749 445 956 91 89 825 -10000 405 792 726 80 678 203 812 961 643 -10000 773 414 485 273 326 348 222 465 45 -10000 367 434 854 89 67 817 836 433 552 -10000 895 106 9 893 74 696 488 593 119 -10000 730 58 667 776 432 882 405 539 850 -10000 257 699 874 279 878 136 761 425 212 -10000 319 419 74 877 983 279 822 183 294 -10000 86 627 21 255 620 34 847 384 918 -10000 164 675 616 791 55 954 443 365 224 -10000 289 880 970 316 798 76 505 895 539 -10000 597 722 602 15 841 516 328 103 660 -10000 95 68 279 836 759 7 852 536 463 -10000 9 429 674 223 789 215 856 422 2 -10000 0 59 845 1000 532 424 516 348 620 -10000 202 923 909 149 242 95 216 316 672 -10000 828 246 461 149 105 91 152 584 326 -10000 455 545 112 1 718 912 791 757 860 -10000 455 792 204 894 543 722 346 174 580 -10000 325 902 714 397 239 130 836 392 836 -10000 264 12 778 640 913 923 154 892 198 -10000 309 931 306 679 486 700 303 145 438 -10000 715 138 20 242 966 36 869 812 868 -10000 704 141 702 667 440 12 642 10 944 -10000 623 859 857 631 849 770 267 8 329 -10000 610 322 547 27 366 987 785 867 809 -10000 97 578 331 665 409 596 156 851 292 -10000 203 951 910 794 358 41 819 419 167 -10000 570 32 198 386 205 760 60 994 660 -10000 383 349 553 172 382 88 753 803 195 -10000 439 260 522 57 881 604 676 915 155 -10000 896 273 190 192 785 808 951 434 821 -10000 437 408 231 19 84 308 921 970 386 -10000 451 255 99 620 817 527 335 551 155 -10000 0 944 561 654 713 977 505 171 556 -10000 525 109 559 572 786 709 54 716 100 -10000 701 251 682 371 422 232 165 263 430 -10000 768 302 247 40 982 457 327 102 740 -10000 617 827 70 956 516 903 175 101 958 -10000 785 663 685 547 200 981 68 727 975 -10000 299 738 348 876 301 759 446 369 891 -10000 805 68 170 565 63 158 85 770 322 -10000 110 612 617 680 684 538 254 445 212 -10000 121 339 53 97 667 29 80 585 262 -10000 166 703 189 15 837 285 271 977 92 -10000 154 669 962 454 950 493 20 966 26 -10000 469 366 192 506 161 834 739 761 635 -10000 828 781 36 589 699 803 607 599 790 -10000 578 330 464 838 853 966 225 750 304 -10000 564 702 347 663 483 523 688 185 443 -10000 837 161 940 504 289 498 2 569 55 -10000 495 442 11 811 908 627 567 699 596 -10000 883 408 468 533 416 216 760 3 55 -10000 975 117 70 87 485 235 690 505 14 -10000 579 132 973 936 149 402 767 346 710 -10000 994 822 9 812 966 226 829 239 808 -10000 44 215 11 291 853 473 751 441 51 -10000 203 600 635 16 588 808 34 451 568 -10000 399 75 369 641 987 358 147 388 179 -10000 192 828 722 658 858 449 522 7 733 -10000 474 425 353 148 955 823 726 336 67 -10000 702 465 194 717 835 221 402 695 730 -10000 194 703 498 798 441 244 61 142 239 -10000 207 374 725 704 41 482 20 604 241 -10000 6 879 184 348 548 576 140 610 202 -10000 293 620 493 10 780 794 914 190 726 -10000 368 270 350 505 548 741 161 365 828 -10000 8 14 516 999 205 677 354 98 197 -10000 930 447 282 147 446 70 802 829 899 -10000 508 276 714 199 46 608 45 207 851 -10000 193 648 992 190 308 129 270 315 329 -10000 245 638 174 896 838 439 627 847 37 -10000 371 311 691 755 904 537 652 549 225 -10000 421 630 66 219 244 74 72 976 58 -10000 702 525 995 80 194 129 203 417 431 -10000 431 777 44 895 421 464 77 175 851 -10000 214 472 500 94 289 73 220 34 165 -10000 184 461 523 762 174 938 153 534 319 -10000 386 129 636 806 228 345 90 891 507 -10000 107 403 665 590 579 513 74 776 82 -10000 230 918 817 251 285 256 985 656 644 -10000 919 630 842 76 14 34 971 165 335 -10000 667 319 286 519 968 467 84 585 599 -10000 774 814 959 89 750 846 64 896 644 -10000 474 711 50 502 660 382 19 256 845 -10000 727 635 783 980 341 259 490 752 617 -10000 410 189 947 458 948 128 642 353 998 -10000 461 791 881 160 318 955 525 523 884 -10000 233 114 10 99 283 489 936 580 577 -10000 92 447 949 854 343 519 223 716 706 -10000 424 121 454 190 6 374 880 83 563 -10000 549 348 44 606 557 956 109 181 823 -10000 550 876 291 810 787 963 105 454 27 -10000 89 646 816 304 802 656 352 24 828 -10000 793 348 667 133 615 954 982 864 644 -10000 846 709 88 369 238 519 629 904 465 -10000 340 1000 185 513 537 586 321 414 395 -10000 810 999 365 498 359 51 497 17 454 -10000 91 820 867 829 468 198 894 138 72 -10000 53 176 428 726 631 767 13 295 300 -10000 661 540 27 221 563 724 767 224 362 -10000 8 315 169 875 218 294 393 369 81 -10000 156 345 521 588 535 441 928 70 874 -10000 45 212 891 727 308 994 491 634 120 -10000 717 641 995 805 107 330 943 461 93 -10000 251 987 51 133 679 503 572 184 512 -10000 568 178 24 654 254 232 343 346 457 -10000 50 815 877 278 626 1000 577 652 791 -10000 227 356 336 516 441 949 357 779 498 -10000 65 965 369 593 343 262 828 86 759 -10000 520 285 968 256 373 336 361 495 762 -10000 985 482 49 781 275 8 211 381 476 -10000 488 55 514 436 62 678 578 593 735 -10000 355 639 322 446 301 71 786 723 904 -10000 668 888 455 208 172 764 181 582 1000 -10000 665 931 455 238 338 720 184 655 705 -10000 386 34 939 505 257 821 571 853 290 -10000 201 395 814 245 843 309 495 669 793 -10000 646 689 23 921 599 488 573 724 164 -10000 409 494 550 714 489 113 231 220 386 -10000 801 737 757 616 469 976 568 230 274 -10000 21 378 813 806 981 189 787 821 879 -10000 874 543 466 646 281 603 231 359 282 -10000 756 870 828 396 317 8 797 366 451 -10000 744 632 405 772 914 714 125 994 553 -10000 470 938 76 29 741 373 993 18 635 -10000 651 710 398 1000 549 67 875 174 91 -10000 712 166 114 323 35 207 636 755 686 -10000 719 395 426 208 598 249 498 941 693 -10000 104 39 19 554 502 813 810 255 666 -10000 470 482 970 162 955 752 249 738 728 -10000 50 706 463 646 451 250 847 866 21 -10000 129 912 909 509 583 241 585 611 432 -10000 172 599 562 605 243 941 429 568 628 -10000 831 876 627 217 942 998 804 836 983 -10000 446 99 646 309 561 447 739 715 635 -10000 906 175 430 163 438 183 332 417 441 -10000 617 159 337 532 913 471 978 133 297 -10000 678 906 855 71 944 383 510 303 255 -10000 659 388 387 894 720 661 682 708 745 -10000 800 490 978 330 152 784 495 814 681 -10000 370 112 117 930 491 25 10 117 449 -10000 865 615 134 60 630 791 567 867 79 -10000 699 865 672 183 645 536 74 485 671 -10000 209 636 635 664 618 790 308 387 192 -10000 245 645 670 750 558 414 125 348 742 -10000 478 405 573 997 582 749 799 74 963 -10000 827 552 317 36 639 789 318 42 659 -10000 121 648 81 345 667 468 516 150 652 -10000 569 226 308 0 384 387 651 433 935 -10000 879 856 439 660 116 147 865 194 179 -10000 986 913 478 8 4 83 984 845 995 -10000 965 108 618 485 442 936 620 972 47 -10000 651 62 707 746 3 733 386 9 659 -10000 675 251 130 637 539 158 306 554 260 -10000 69 285 796 632 393 591 884 833 477 -10000 537 406 933 972 463 837 486 446 502 -10000 613 922 410 762 645 128 248 368 523 -10000 579 146 216 867 926 767 954 874 530 -10000 933 552 242 236 558 752 676 495 872 -10000 268 845 253 903 503 393 551 593 908 -10000 436 856 224 114 310 816 421 352 222 -10000 720 683 983 818 954 339 621 946 696 -10000 926 630 14 806 971 483 513 143 890 -10000 796 718 71 391 613 136 626 543 326 -10000 748 843 614 703 403 507 748 629 79 -10000 696 732 122 302 499 423 781 925 893 -10000 792 238 478 66 319 67 984 490 218 -10000 352 447 323 433 886 367 370 955 59 -10000 136 776 671 485 717 780 767 24 874 -10000 846 957 788 779 878 583 385 133 778 -10000 471 968 878 922 606 318 340 811 769 -10000 610 234 549 361 748 846 983 518 840 -10000 755 444 469 528 188 631 895 515 959 -10000 498 364 929 957 258 396 188 72 295 -10000 574 553 168 736 390 187 256 312 283 -10000 717 396 794 981 301 616 633 329 96 -10000 44 28 230 882 154 688 827 377 908 -10000 200 875 541 153 100 867 216 41 968 -10000 763 211 445 108 224 676 703 40 231 -10000 27 665 512 981 192 105 802 352 964 -10000 465 350 327 135 444 340 439 518 209 -10000 165 450 274 548 668 689 286 346 237 -10000 493 182 900 426 165 710 353 64 924 -10000 646 410 878 577 841 527 457 228 575 -10000 105 634 646 941 380 218 76 132 703 -10000 219 383 637 496 592 309 673 400 956 -10000 973 953 518 381 646 79 276 626 224 -10000 876 136 886 811 647 556 113 148 268 -10000 132 334 166 835 972 283 580 610 948 -10000 994 481 491 670 892 387 586 677 443 -10000 409 755 305 934 776 822 609 617 526 -10000 889 353 168 910 418 619 896 549 77 -10000 218 95 283 580 421 883 55 221 378 -10000 521 693 765 332 256 983 866 628 414 -10000 760 750 941 97 959 46 827 378 827 -10000 895 30 197 403 153 77 104 181 966 -10000 948 226 654 326 134 37 337 842 561 -10000 457 871 356 602 333 187 205 496 305 -10000 653 962 199 338 532 658 64 896 973 -10000 245 595 774 61 666 307 690 75 585 -10000 441 928 335 217 637 766 333 595 856 -10000 731 355 662 757 446 58 114 598 990 -10000 857 178 495 698 652 997 965 344 454 -10000 252 33 20 278 397 627 943 186 565 -10000 101 583 661 60 470 637 137 83 81 -10000 414 624 297 457 292 136 170 95 89 -10000 469 84 330 841 749 209 504 623 394 -10000 249 538 69 968 236 25 545 245 372 -10000 124 325 575 510 305 673 882 371 614 -10000 402 764 486 103 96 788 559 307 339 -10000 131 48 655 614 441 540 420 95 993 -10000 607 44 870 214 912 979 220 506 485 -10000 60 905 396 766 36 861 496 100 390 -10000 98 6 765 851 647 159 762 916 927 -10000 79 284 585 813 498 754 376 464 853 -10000 372 978 213 607 77 443 742 270 451 -10000 355 142 800 573 614 560 138 123 202 -10000 363 921 401 782 97 860 745 927 362 -10000 31 384 719 247 711 457 965 326 242 -10000 551 845 502 917 903 251 88 592 329 -10000 488 66 469 808 23 974 222 745 971 -10000 85 763 747 189 58 109 55 764 17 -10000 268 580 52 85 433 241 379 77 617 -10000 86 390 899 388 115 373 722 903 324 -10000 710 872 655 577 937 752 282 311 304 -10000 399 557 20 708 499 310 376 257 404 -10000 98 92 254 568 339 367 66 594 671 -10000 506 696 122 926 240 268 700 151 878 -10000 830 775 404 168 648 182 792 412 42 -10000 594 785 141 30 344 915 579 864 147 -10000 445 208 157 858 232 176 905 403 535 -10000 380 532 488 961 769 894 841 317 809 -10000 459 171 387 799 444 921 535 737 632 -10000 76 661 399 832 955 811 379 542 152 -10000 340 801 922 93 761 876 503 776 928 -10000 405 558 207 906 735 465 724 817 983 -10000 757 998 394 593 907 66 932 91 696 -10000 691 401 32 920 992 79 374 383 678 -10000 17 771 794 55 733 694 720 261 859 -10000 820 418 457 361 82 733 812 116 790 -10000 631 916 359 839 690 995 747 595 609 -10000 186 766 309 807 474 337 106 922 247 -10000 746 597 537 177 791 695 636 499 978 -10000 517 901 878 4 819 559 719 124 631 -10000 300 492 815 782 20 486 613 964 644 -10000 425 285 682 750 912 451 60 794 752 -10000 357 664 459 550 994 370 553 331 997 -10000 445 301 909 755 791 461 840 522 44 -10000 835 412 803 910 53 517 388 142 504 -10000 188 310 994 588 248 388 471 556 868 -10000 419 318 968 989 68 171 474 49 164 -10000 580 159 794 691 442 838 647 423 769 -10000 914 855 287 85 949 800 565 1000 47 -10000 891 195 353 741 644 579 730 540 427 -10000 101 607 7 136 881 680 537 679 338 -10000 762 199 946 652 141 328 445 212 376 -10000 324 833 262 887 804 626 516 845 326 -10000 34 546 538 482 163 344 9 390 484 -10000 713 459 814 419 572 646 46 660 344 -10000 936 405 838 494 755 67 627 543 54 -10000 297 358 122 697 451 676 480 630 649 -10000 431 121 136 347 348 765 629 496 120 -10000 668 1 855 584 59 426 272 258 698 -10000 946 16 566 268 410 552 146 992 367 -10000 893 289 419 454 684 581 75 807 197 -10000 613 207 147 604 102 66 325 346 612 -10000 601 770 614 754 681 981 58 108 90 -10000 973 323 8 603 931 472 830 394 373 -10000 913 692 906 798 223 168 935 343 215 -10000 322 716 391 237 80 829 745 157 50 -10000 459 840 350 783 580 578 651 678 138 -10000 977 309 345 362 964 607 116 388 584 -10000 245 335 845 846 833 743 414 300 105 -10000 191 348 137 307 912 185 674 709 707 -10000 264 616 217 268 310 609 813 78 66 -10000 951 192 795 464 372 783 89 946 280 -10000 355 560 799 919 100 838 736 665 673 -10000 738 821 881 272 475 921 487 717 682 -10000 474 993 912 794 178 320 300 870 725 -10000 702 407 641 45 703 655 723 944 879 -10000 514 112 205 133 131 3 416 814 490 -10000 932 153 759 783 82 699 265 246 156 -10000 392 958 369 208 44 134 795 376 850 -10000 373 102 999 690 393 695 179 514 64 -10000 869 590 435 847 49 278 604 65 860 -10000 290 757 835 414 569 357 512 805 239 -10000 655 951 920 447 553 342 407 449 968 -10000 40 321 346 860 888 240 255 191 355 -10000 630 91 945 755 505 863 326 270 925 -10000 262 85 712 657 195 22 158 809 175 -10000 839 186 12 388 271 619 116 290 375 -10000 883 695 870 179 733 298 255 672 953 -10000 98 311 292 605 64 788 926 10 350 -10000 448 683 154 85 936 672 857 87 461 -10000 427 590 329 321 427 365 161 242 718 -10000 46 962 23 897 270 863 466 326 742 -10000 599 528 488 563 437 548 122 697 631 -10000 83 554 900 900 195 517 324 236 249 -10000 544 556 564 550 315 491 889 500 69 -10000 323 619 620 885 1000 986 228 297 172 -10000 916 825 277 121 300 346 339 798 279 -10000 767 885 856 77 819 452 453 246 733 -10000 427 603 636 961 302 263 890 717 779 -10000 42 568 38 397 539 52 226 41 525 -10000 804 655 687 425 794 924 721 442 542 -10000 830 895 872 255 3 777 541 648 507 -10000 500 19 977 511 191 286 807 745 675 -10000 565 343 34 241 495 50 589 482 848 -10000 861 711 719 137 64 143 36 607 715 -10000 403 993 132 529 886 460 120 576 841 -10000 423 406 248 306 353 139 118 438 562 -10000 444 166 3 659 762 111 828 269 12 -10000 518 758 952 201 887 398 348 607 507 -10000 294 277 267 770 722 60 696 491 306 -10000 743 970 112 665 429 484 142 351 2 -10000 567 302 128 386 968 47 302 130 610 -10000 968 699 572 806 93 700 38 479 243 -10000 320 651 251 835 361 89 460 273 557 -10000 520 190 622 843 730 517 779 810 389 -10000 203 690 602 635 901 401 568 398 990 -10000 421 606 935 963 607 665 127 191 735 -10000 453 756 711 389 767 748 680 69 916 -10000 867 766 18 367 516 868 710 354 686 -10000 963 256 209 827 365 9 109 628 564 -10000 446 194 481 50 305 633 878 844 581 -10000 350 807 544 695 232 796 299 416 561 -10000 913 997 393 648 213 487 340 291 387 -10000 562 506 651 674 494 251 814 633 879 -10000 971 980 186 40 630 849 69 454 857 -10000 147 105 113 700 313 8 212 903 410 -10000 539 94 609 127 31 813 96 644 766 -10000 671 961 941 730 421 117 733 440 351 -10000 958 710 365 856 172 468 112 188 921 -10000 948 689 683 23 931 243 134 252 405 -10000 471 908 132 301 137 997 493 138 551 -10000 566 396 616 47 933 558 444 212 848 -10000 607 410 457 245 97 937 969 892 441 -10000 359 182 949 75 428 162 833 253 663 -10000 802 877 560 65 781 886 319 635 993 -10000 553 312 165 449 336 679 700 782 212 -10000 988 392 720 483 617 95 771 37 472 -10000 704 406 363 547 466 807 575 107 578 -10000 972 886 549 553 354 208 43 240 878 -10000 509 534 745 620 761 905 365 769 350 -10000 817 327 211 606 132 305 775 146 747 -10000 513 283 244 417 514 277 176 248 621 -10000 728 247 612 271 858 132 197 936 101 -10000 333 781 111 336 913 966 716 144 573 -10000 289 382 131 141 454 200 484 932 189 -10000 862 236 127 783 12 957 477 816 638 -10000 133 751 864 613 917 409 357 98 881 -10000 686 84 750 136 572 948 263 546 401 -10000 576 179 71 446 282 390 108 676 928 -10000 442 602 859 752 443 387 657 955 297 -10000 723 534 845 403 921 128 486 566 114 -10000 255 316 693 197 378 715 869 36 726 -10000 398 652 482 36 74 791 550 955 1 -10000 927 605 118 89 519 70 458 796 967 -10000 540 470 704 678 212 369 112 186 653 -10000 907 182 774 822 142 608 358 449 259 -10000 555 891 952 266 343 975 84 661 24 -10000 619 350 91 140 691 232 290 571 666 -10000 730 856 741 357 733 435 630 7 616 -10000 765 638 476 963 210 896 382 582 965 -10000 75 816 942 757 100 247 137 474 398 -10000 323 684 355 743 295 961 269 242 593 -10000 224 446 95 52 478 870 744 167 310 -10000 250 531 382 359 804 218 608 882 12 -10000 872 982 191 510 113 97 304 985 551 -10000 883 595 960 347 89 787 519 885 34 -10000 983 101 939 866 270 30 968 731 435 -10000 572 523 982 426 509 378 369 357 479 -10000 681 206 172 536 307 160 110 359 492 -10000 77 751 964 127 455 162 620 893 17 -10000 112 877 358 296 553 372 337 254 887 -10000 198 381 387 489 267 812 152 557 260 -10000 845 25 1000 304 837 794 131 592 556 -10000 670 308 260 128 652 928 966 941 559 -10000 830 148 127 786 191 217 485 174 851 -10000 618 786 269 632 821 364 36 202 347 -10000 138 66 153 949 208 70 20 269 224 -10000 260 26 142 574 980 985 311 767 585 -10000 86 902 859 583 12 688 622 117 636 -10000 769 510 982 368 829 171 376 193 628 -10000 198 460 278 987 97 932 64 327 448 -10000 910 585 14 211 86 414 256 711 377 -10000 488 983 730 698 254 292 569 485 964 -10000 376 876 311 446 653 773 438 58 740 -10000 548 935 863 30 809 376 621 13 46 -10000 192 725 536 958 541 346 370 75 69 -10000 499 724 144 60 302 195 246 483 307 -10000 650 129 873 478 50 48 113 86 520 -10000 54 353 996 155 122 572 871 984 368 -10000 157 693 291 512 98 105 84 312 362 -10000 557 465 416 575 858 383 902 284 211 -10000 438 166 506 633 847 742 609 256 674 -10000 771 456 172 497 429 933 762 459 816 -10000 197 31 439 438 17 827 183 199 977 -10000 236 756 387 927 491 820 699 183 518 -10000 263 865 416 223 276 522 330 876 945 -10000 589 905 80 888 676 186 410 902 775 -10000 348 600 341 495 356 320 725 366 566 -10000 391 763 238 762 6 880 763 789 883 -10000 815 625 51 905 782 155 8 256 217 -10000 802 601 602 412 78 721 1 129 477 -10000 45 942 479 297 866 264 179 668 128 -10000 994 360 827 1 95 392 965 374 578 -10000 659 734 679 601 74 836 90 213 957 -10000 953 832 486 789 193 778 389 568 126 -10000 621 954 660 462 483 816 167 597 424 -10000 996 566 383 812 65 341 996 338 419 -10000 212 410 530 210 439 933 965 796 100 -10000 284 953 381 406 349 827 573 874 339 -10000 397 380 511 298 254 664 175 687 36 -10000 816 448 666 113 523 177 588 514 933 -10000 578 436 644 489 372 519 167 744 172 -10000 857 871 13 830 535 647 875 594 777 -10000 71 440 192 460 953 5 871 740 438 -10000 398 758 997 298 131 405 308 445 0 -10000 405 471 591 334 535 6 497 248 443 -10000 954 687 416 416 790 969 685 536 686 -10000 317 349 300 284 269 247 227 879 797 -10000 515 316 372 529 277 543 355 343 297 -10000 516 260 273 245 899 153 248 773 762 -10000 16 304 756 87 48 132 977 695 657 -10000 887 693 396 641 461 939 586 972 70 -10000 164 12 627 962 929 527 860 942 989 -10000 750 526 465 565 345 994 452 603 915 -10000 80 480 830 523 419 547 107 412 742 -10000 28 287 107 848 977 981 667 571 81 -10000 521 148 573 552 569 939 260 101 720 -10000 999 444 332 376 9 874 759 795 33 -10000 905 560 160 582 535 829 433 979 480 -10000 859 200 375 479 442 588 730 367 808 -10000 150 775 359 998 872 437 632 791 370 -10000 939 732 98 914 148 721 946 372 461 -10000 295 178 999 1 170 624 235 441 975 -10000 736 48 371 858 866 314 403 634 34 -10000 537 162 189 741 973 804 187 959 547 -10000 573 82 523 135 440 515 616 162 498 -10000 194 260 996 397 861 16 674 854 495 -10000 448 46 704 131 510 901 350 950 294 -10000 637 167 258 798 270 261 254 853 130 -10000 62 211 215 473 670 586 426 261 226 -10000 651 157 855 228 334 69 221 281 370 -10000 999 811 603 581 674 20 127 220 715 -10000 603 589 809 339 418 547 44 471 655 -10000 13 797 929 432 749 592 982 756 692 -10000 655 750 581 447 852 739 263 699 930 -10000 227 748 251 345 213 945 738 669 847 -10000 844 41 193 787 321 739 137 5 909 -10000 267 794 833 397 906 155 260 767 137 -10000 828 779 710 661 73 993 420 121 735 -10000 626 745 379 758 830 863 376 54 159 -10000 158 651 890 423 15 906 588 322 725 -10000 74 643 766 571 212 658 467 510 621 -10000 143 145 444 287 47 302 725 151 886 -10000 776 684 483 818 549 268 631 930 136 -10000 922 814 210 162 3 201 917 673 229 -10000 604 542 704 738 185 143 725 465 968 -10000 196 821 460 436 415 29 903 447 280 -10000 430 232 927 794 277 645 736 269 898 -10000 247 852 515 951 259 783 556 301 687 -10000 624 471 900 89 818 833 196 155 204 -10000 500 173 2 261 525 805 675 396 951 -10000 672 554 117 33 96 570 349 712 704 -10000 919 897 117 733 212 481 586 183 468 -10000 446 422 71 185 377 391 592 372 470 -10000 642 76 578 730 216 872 138 852 377 -10000 360 606 185 836 849 359 525 217 85 -10000 271 574 526 360 20 297 351 140 783 -10000 87 763 668 117 777 162 630 54 408 -10000 921 981 7 551 962 43 886 764 163 -10000 698 498 117 695 390 606 928 337 163 -10000 81 536 548 967 131 270 942 608 224 -10000 340 282 253 357 951 394 502 400 893 -10000 7 882 317 594 156 935 581 183 308 -10000 565 677 943 202 540 855 70 618 568 -10000 504 129 346 550 442 1 697 565 80 -10000 582 752 182 46 40 908 389 943 69 -10000 852 210 439 84 840 565 800 90 387 -10000 283 934 515 249 124 98 870 209 886 -10000 60 480 333 210 438 29 716 881 455 -10000 352 380 563 325 801 352 717 549 660 -10000 228 926 227 77 942 408 421 285 92 -10000 598 404 276 673 813 888 8 536 84 -10000 464 596 354 786 311 241 248 582 227 -10000 430 571 676 367 672 142 248 145 269 -10000 673 123 188 825 510 954 664 245 753 -10000 329 225 235 869 597 476 901 102 751 -10000 734 649 468 739 366 967 711 636 990 -10000 59 194 967 666 382 839 85 983 578 -10000 775 17 455 373 678 403 269 523 1000 -10000 861 493 379 324 108 268 490 742 641 -10000 739 487 779 370 955 134 107 698 965 -10000 843 993 423 719 980 733 100 558 918 -10000 211 125 262 129 15 49 282 490 864 -10000 891 354 850 118 152 91 553 760 805 -10000 890 352 794 282 220 706 242 258 211 -10000 685 500 384 58 81 567 275 459 659 -10000 167 517 330 487 766 311 812 764 852 -10000 356 374 2 342 673 291 4 309 405 -10000 809 421 762 241 611 98 337 659 500 -10000 504 956 636 107 723 936 950 934 436 -10000 566 817 847 278 845 308 150 458 168 -10000 762 135 400 556 626 200 849 182 490 -10000 431 649 751 76 820 125 273 29 644 -10000 682 490 656 264 183 892 428 239 112 -10000 969 862 809 598 964 784 422 116 990 -10000 513 182 900 788 690 573 753 834 389 -10000 801 339 492 952 255 830 24 669 713 -10000 874 926 287 336 794 377 115 172 272 -10000 170 210 511 523 136 18 899 682 94 -10000 229 888 843 639 167 560 814 298 612 -10000 510 565 965 80 251 478 548 940 633 -10000 966 612 773 344 101 336 462 375 312 -10000 749 617 536 895 831 640 366 698 955 -10000 939 665 650 718 654 411 471 172 964 -10000 2 555 959 957 733 353 414 988 907 -10000 462 803 484 462 112 32 987 681 653 -10000 927 330 200 615 362 733 497 333 253 -10000 826 31 110 84 375 98 541 490 330 -10000 590 453 237 646 694 848 655 834 551 -10000 950 999 223 709 725 191 347 689 717 -10000 388 694 361 626 242 226 936 63 313 -10000 624 160 722 332 885 454 636 972 992 -10000 545 282 226 904 512 240 352 981 944 -10000 203 281 291 846 1000 133 464 138 408 -10000 720 952 511 855 221 724 938 441 813 -10000 773 759 8 158 359 823 85 335 54 -10000 341 901 133 425 242 890 302 462 861 -10000 848 925 295 336 410 875 407 371 907 -10000 352 638 471 79 142 635 582 115 481 -10000 626 888 58 404 41 157 766 336 963 -10000 607 304 667 230 199 588 181 337 378 -10000 970 687 866 440 691 838 476 69 105 -10000 100 128 373 381 13 34 749 871 11 -10000 567 250 348 583 255 178 146 514 197 -10000 943 89 662 421 280 810 239 698 939 -10000 498 928 971 131 425 839 595 270 124 -10000 303 679 763 729 678 372 289 772 95 -10000 343 996 999 808 425 976 387 809 55 -10000 930 643 615 524 983 236 352 49 210 -10000 634 478 590 79 90 137 40 539 803 -10000 560 863 946 8 844 457 820 922 222 -10000 591 726 558 206 669 577 272 27 928 -10000 47 633 100 825 685 821 222 897 900 -10000 187 335 298 835 844 240 485 561 241 -10000 757 568 739 44 332 958 469 494 911 -10000 437 639 313 497 634 438 646 277 343 -10000 809 86 741 359 3 199 389 701 400 -10000 895 251 516 77 595 909 470 964 873 -10000 833 703 227 347 995 441 82 688 466 -10000 79 972 721 601 809 136 924 8 375 -10000 395 697 510 755 580 334 697 424 660 -10000 714 244 599 0 919 849 168 33 510 -10000 383 318 260 331 989 903 714 27 170 -10000 798 480 437 175 866 580 273 335 475 -10000 299 549 113 108 634 192 883 755 931 -10000 719 313 809 206 847 749 54 258 756 -10000 171 32 785 641 822 382 788 275 546 -10000 111 80 185 733 240 899 297 798 313 -10000 467 456 107 166 780 727 312 777 761 -10000 592 119 218 286 286 405 625 931 628 -10000 832 41 300 707 205 690 550 619 122 -10000 607 907 744 513 122 540 268 809 262 -10000 659 740 166 709 157 301 74 224 322 -10000 166 137 570 295 939 26 956 267 475 -10000 649 430 912 817 436 982 807 471 420 -10000 124 289 771 179 90 428 460 64 434 -10000 789 525 470 68 684 390 365 38 122 -10000 806 843 590 50 268 460 929 139 251 -10000 316 379 148 391 137 681 953 996 462 -10000 782 630 299 197 583 88 31 497 741 -10000 482 620 309 712 904 200 850 890 76 -10000 834 653 592 280 787 480 890 601 699 -10000 744 506 356 12 909 83 907 723 96 -10000 48 338 210 489 39 552 483 334 961 -10000 754 175 599 645 198 329 243 931 248 -10000 252 241 821 22 218 113 0 887 129 -10000 846 649 784 756 192 95 789 654 85 -10000 418 974 615 770 569 748 880 9 615 -10000 143 904 132 953 763 893 632 968 119 -10000 297 675 562 351 574 506 93 686 255 -10000 93 333 552 937 333 105 433 976 696 -10000 750 760 905 89 978 817 504 348 612 -10000 829 315 52 91 392 141 249 100 288 -10000 185 757 754 591 133 994 52 550 548 -10000 571 895 699 781 332 300 261 529 294 -10000 376 924 782 56 776 630 418 816 391 -10000 241 515 922 387 558 237 446 400 936 -10000 557 361 745 692 335 758 555 673 576 -10000 247 594 274 847 31 876 444 483 586 -10000 474 167 817 957 545 990 933 281 596 -10000 926 87 151 595 250 996 354 649 482 -10000 420 43 722 712 168 94 30 566 392 -10000 777 866 724 795 278 168 352 832 168 -10000 511 966 675 5 619 105 436 844 893 -10000 112 328 340 523 631 309 743 143 11 -10000 241 953 807 388 950 195 670 416 759 -10000 491 701 942 77 616 373 915 264 205 -10000 671 854 774 904 479 444 513 482 123 -10000 536 539 280 622 666 469 331 632 364 -10000 706 638 371 578 150 445 200 338 41 -10000 396 544 470 144 645 536 27 169 80 -10000 19 444 326 737 155 402 279 459 322 -10000 204 385 563 566 834 927 842 146 970 -10000 599 991 20 97 965 542 233 381 463 -10000 671 253 511 781 433 255 109 844 507 -10000 437 150 123 799 296 42 458 620 923 -10000 245 529 163 278 716 359 270 136 136 -10000 931 867 176 598 952 159 378 597 123 -10000 73 504 83 651 693 13 229 693 139 -10000 432 161 678 760 359 965 674 993 325 -10000 351 565 552 160 43 81 756 879 392 -10000 84 677 638 886 801 95 335 695 282 -10000 566 778 541 453 769 527 97 779 331 -10000 961 265 965 996 807 831 654 44 231 -10000 105 779 928 146 414 139 260 640 492 -10000 113 206 432 614 313 583 968 688 266 -10000 369 582 68 731 463 513 771 837 944 -10000 127 737 548 333 184 982 861 170 646 -10000 4 492 287 678 987 467 254 141 575 -10000 111 472 23 729 434 255 733 53 258 -10000 784 326 706 295 220 139 124 400 681 -10000 654 22 804 99 106 230 652 836 692 -10000 530 18 546 25 775 9 284 60 750 -10000 680 811 219 571 360 724 261 409 924 -10000 513 332 422 614 911 537 160 847 476 -10000 85 444 242 683 389 436 38 332 48 -10000 890 896 423 364 301 457 377 143 971 -10000 806 313 479 589 601 812 365 631 325 -10000 442 765 478 811 521 659 889 339 94 -10000 288 461 237 469 924 495 874 570 104 -10000 667 108 972 840 707 875 663 904 678 -10000 525 871 707 186 283 89 265 203 198 -10000 848 219 697 632 348 538 904 830 787 -10000 92 952 759 51 599 633 498 720 903 -10000 378 208 971 531 362 394 498 622 703 -10000 830 735 687 154 170 925 106 128 62 -10000 64 372 404 94 54 866 843 197 780 -10000 127 743 466 363 230 451 435 131 561 -10000 532 185 652 236 697 492 737 2 176 -10000 457 593 666 787 234 46 142 853 525 -10000 653 384 276 888 270 136 469 591 817 -10000 423 850 541 536 130 248 65 75 246 -10000 2 784 121 632 795 569 910 751 630 -10000 516 15 844 128 420 412 900 683 900 -10000 643 819 477 121 537 42 398 144 677 -10000 371 512 668 610 376 24 519 859 269 -10000 905 22 902 255 323 663 833 426 863 -10000 21 418 985 429 8 109 107 981 636 -10000 589 3 606 163 106 719 590 755 222 -10000 665 391 373 208 506 929 927 382 229 -10000 448 17 1 2 777 819 435 358 549 -10000 240 157 104 518 958 730 581 846 108 -10000 772 145 580 35 913 263 440 898 424 -10000 909 804 273 586 364 291 890 595 616 -10000 939 699 727 618 80 618 875 77 134 -10000 874 690 350 357 320 229 419 889 482 -10000 140 269 540 209 736 559 230 912 438 -10000 613 948 682 882 136 579 690 10 699 -10000 829 423 566 459 314 816 13 47 569 -10000 77 936 645 542 996 879 323 491 78 -10000 782 672 0 819 35 372 939 701 279 -10000 523 332 887 124 462 695 336 286 610 -10000 438 817 959 635 132 829 350 744 232 -10000 54 634 144 742 104 392 204 226 890 -10000 750 677 643 794 169 894 196 668 262 -10000 572 201 812 922 906 581 281 459 120 -10000 440 514 901 277 995 117 834 654 935 -10000 32 736 318 610 486 765 389 866 70 -10000 183 356 804 890 565 582 295 232 705 -10000 645 541 943 184 97 25 116 961 468 -10000 921 791 768 256 375 154 993 934 206 -10000 983 266 506 970 102 598 353 589 171 -10000 332 934 84 850 826 43 412 173 778 -10000 561 841 327 703 163 223 246 882 234 -10000 132 809 188 100 430 623 16 294 160 -10000 936 604 886 372 112 727 956 807 208 -10000 181 703 417 321 409 143 264 274 502 -10000 105 59 698 449 992 780 781 946 297 -10000 751 517 967 599 713 582 534 927 527 -10000 969 372 465 861 854 840 440 568 402 -10000 267 318 12 215 833 11 221 552 8 -10000 828 442 669 730 620 229 96 828 357 -10000 586 403 701 609 321 3 510 656 474 -10000 647 845 912 486 184 586 557 30 826 -10000 47 51 313 581 788 563 228 621 493 -10000 341 824 126 686 842 998 306 919 848 -10000 965 352 975 306 359 134 672 372 981 -10000 349 485 457 648 662 702 451 517 792 -10000 675 589 448 542 303 10 43 429 602 -10000 150 856 74 784 409 736 159 79 968 -10000 232 46 313 809 41 611 533 905 21 -10000 668 930 898 808 462 935 290 802 77 -10000 635 556 834 439 747 272 571 128 416 -10000 767 985 912 893 907 312 779 124 479 -10000 642 331 501 456 423 469 299 578 732 -10000 240 485 696 717 206 268 634 744 819 -10000 407 963 587 964 637 513 676 530 653 -10000 804 16 164 973 913 272 997 702 388 -10000 291 882 567 630 10 766 638 44 478 -10000 417 237 416 468 458 354 807 532 764 -10000 131 163 13 257 221 988 882 862 989 -10000 980 435 31 419 760 859 49 44 391 -10000 111 837 369 230 901 547 161 108 529 -10000 361 578 998 682 437 553 154 276 364 -10000 324 713 456 314 796 540 427 420 147 -10000 551 472 385 329 894 359 253 260 681 -10000 1 353 636 215 518 737 535 826 705 -10000 984 200 864 684 403 84 827 449 916 -10000 264 522 954 277 621 166 328 906 421 -10000 823 932 512 804 352 943 966 66 971 -10000 394 197 960 203 641 922 848 144 76 -10000 168 894 915 578 709 647 469 293 536 -10000 596 530 215 488 367 259 12 342 96 -10000 849 361 72 100 941 797 5 180 329 -10000 587 877 867 280 477 649 297 33 431 -10000 499 45 214 524 309 693 654 434 716 -10000 983 270 96 600 751 128 791 441 171 -10000 209 621 800 133 908 329 336 631 92 -10000 957 738 415 250 958 337 377 391 549 -10000 609 775 870 627 844 77 149 652 422 -10000 907 739 672 657 937 584 236 957 670 -10000 600 393 656 345 530 334 61 656 824 -10000 248 747 745 640 629 533 972 538 7 -10000 414 702 605 411 32 602 548 142 155 -10000 972 777 838 784 849 964 376 937 697 -10000 566 329 728 332 605 461 996 662 945 -10000 225 545 633 216 214 708 810 987 345 -10000 564 827 599 668 956 478 254 557 534 -10000 589 968 724 701 363 222 887 488 640 -10000 979 756 722 985 612 578 547 318 964 -10000 368 116 28 569 535 854 926 751 372 -10000 490 89 17 197 788 139 930 841 25 -10000 477 907 802 824 506 59 862 534 731 -10000 657 541 127 760 783 818 246 475 232 -10000 30 660 469 205 197 406 212 932 602 -10000 744 64 977 995 274 735 296 850 941 -10000 377 56 184 975 152 205 728 156 205 -10000 492 165 528 639 292 280 588 144 823 -10000 645 976 741 90 162 178 459 746 281 -10000 3 98 103 356 663 756 62 76 742 -10000 58 833 834 750 873 603 138 240 513 -10000 337 378 723 119 73 585 684 66 861 -10000 979 534 873 559 10 552 31 618 257 -10000 680 963 387 95 518 798 853 606 163 -10000 922 107 916 428 900 866 776 84 54 -10000 877 394 376 678 347 389 825 817 51 -10000 465 440 755 884 327 156 318 787 275 -10000 500 187 317 368 611 74 639 347 859 -10000 342 873 966 296 481 275 274 694 136 -10000 306 508 575 579 776 111 950 401 139 -10000 728 389 639 74 67 921 227 736 184 -10000 310 53 621 562 479 828 771 186 97 -10000 852 321 201 825 495 507 290 897 189 -10000 399 940 507 438 47 886 165 250 81 -10000 489 970 166 954 67 117 210 997 742 -10000 618 743 670 842 345 729 843 247 752 -10000 917 158 647 190 1000 134 790 905 849 -10000 693 193 215 537 59 100 865 392 846 -10000 981 816 924 674 987 373 407 395 396 -10000 662 907 246 997 635 866 682 693 358 -10000 219 428 642 29 806 2 289 698 750 -10000 823 623 163 273 460 453 681 333 640 -10000 953 798 809 610 848 360 867 956 49 -10000 151 917 624 802 92 412 793 970 513 -10000 324 925 782 990 986 71 960 162 257 -10000 47 749 18 53 28 686 635 809 429 -10000 68 442 926 73 34 313 960 272 728 -10000 675 417 124 753 805 502 303 89 893 -10000 394 835 527 679 261 774 63 362 767 -10000 780 639 724 81 104 146 287 73 51 -10000 943 389 386 995 622 751 867 681 611 -10000 255 366 776 837 727 166 987 71 704 -10000 957 107 960 273 781 99 398 15 82 -10000 928 733 478 67 926 172 152 326 3 -10000 564 152 162 692 880 808 498 970 661 -10000 717 404 543 82 832 785 404 420 184 -10000 126 364 350 708 846 699 549 202 606 -10000 525 12 837 665 635 610 499 410 824 -10000 770 250 847 822 729 463 10 605 468 -10000 198 472 609 910 904 290 195 906 489 -10000 188 394 111 28 193 784 51 870 672 -10000 199 333 198 757 195 14 581 744 3 -10000 937 756 772 248 35 353 614 233 838 -10000 336 900 970 256 336 508 488 788 77 -10000 610 474 943 471 302 91 461 497 172 -10000 450 410 864 18 975 437 85 980 90 -10000 102 386 968 977 884 435 285 103 594 -10000 116 698 841 505 813 318 456 767 700 -10000 750 370 121 771 12 79 783 347 373 -10000 313 178 409 375 928 344 490 583 796 -10000 545 36 788 432 756 687 462 74 434 -10000 635 818 805 20 992 191 617 953 530 -10000 67 926 846 199 958 680 118 541 283 -10000 217 977 13 238 449 769 301 927 985 -10000 791 660 657 352 73 800 476 616 859 -10000 527 498 963 59 693 1000 276 703 729 -10000 551 950 102 71 833 0 435 815 48 -10000 987 174 99 993 753 330 537 828 503 -10000 151 139 132 882 26 4 62 845 54 -10000 925 863 277 27 445 58 855 621 677 -10000 433 72 897 49 404 896 958 553 421 -10000 203 624 166 190 611 892 853 671 914 -10000 620 152 229 41 310 102 61 412 21 -10000 153 917 826 728 275 897 458 972 593 -10000 196 903 769 608 426 838 275 743 899 -10000 98 555 771 784 143 467 672 762 280 -10000 675 452 511 92 461 559 195 47 724 -10000 338 889 197 53 284 255 782 805 415 -10000 867 459 911 83 395 162 144 655 390 -10000 562 462 246 109 993 217 890 27 862 -10000 444 1000 469 32 384 971 967 713 865 -10000 917 947 84 885 156 364 90 90 377 -10000 357 215 260 310 567 279 198 995 145 -10000 682 409 952 246 690 173 581 328 855 -10000 396 752 94 396 53 949 464 175 163 -10000 654 427 329 668 99 590 868 39 86 -10000 888 109 195 486 908 184 230 160 547 -10000 500 184 807 268 860 261 901 735 594 -10000 391 442 73 710 68 21 387 598 88 -10000 211 128 330 581 383 528 444 435 749 -10000 286 617 896 553 236 868 100 734 927 -10000 509 731 570 870 92 461 130 418 873 -10000 330 875 485 249 622 787 810 379 783 -10000 500 427 667 451 237 680 295 673 372 -10000 748 196 304 854 276 855 835 554 76 -10000 508 950 332 886 106 551 776 123 481 -10000 474 353 96 692 873 532 543 534 994 -10000 588 148 845 975 206 813 486 218 20 -10000 952 10 377 160 304 49 632 785 430 -10000 845 708 539 424 437 153 881 779 272 -10000 670 934 257 832 943 371 645 828 194 -10000 108 402 116 354 5 72 165 915 285 -10000 707 640 241 625 708 305 779 18 674 -10000 87 839 824 415 628 676 321 405 491 -10000 557 669 463 500 105 36 812 185 615 -10000 577 198 424 477 143 682 801 398 355 -10000 99 0 473 598 664 464 854 540 195 -10000 819 869 58 249 497 625 769 63 36 -10000 371 439 375 787 193 831 536 164 728 -10000 377 551 940 678 45 702 489 674 756 -10000 24 706 143 847 964 505 600 556 130 -10000 672 834 242 214 835 124 942 962 846 -10000 728 225 413 228 841 616 243 871 927 -10000 894 503 823 184 183 546 627 37 448 -10000 149 181 603 500 817 852 778 249 460 -10000 11 894 891 853 628 258 694 669 17 -10000 455 446 42 988 158 175 789 628 422 -10000 766 595 649 910 156 319 702 609 694 -10000 785 675 485 605 635 788 234 825 325 -10000 451 177 572 524 716 334 225 562 632 -10000 813 118 254 690 458 257 552 613 595 -10000 740 680 887 94 850 361 779 522 422 -10000 806 187 139 959 484 723 23 379 772 -10000 207 523 733 960 211 565 199 475 761 -10000 283 533 359 348 601 966 821 961 611 -10000 358 137 70 535 500 401 178 35 433 -10000 720 131 832 933 755 663 983 738 811 -10000 266 972 954 615 43 290 698 484 6 -10000 439 612 496 228 990 691 82 47 41 -10000 389 27 998 706 334 989 922 920 581 -10000 94 530 374 502 502 957 500 831 192 -10000 767 84 661 350 718 93 678 754 949 -10000 550 161 694 661 707 149 366 626 986 -10000 616 572 788 113 903 57 605 906 245 -10000 654 181 664 718 73 272 431 274 805 -10000 292 395 199 289 55 123 885 971 330 -10000 479 807 745 174 492 130 111 782 338 -10000 631 124 206 687 392 102 564 579 472 -10000 594 267 510 694 646 160 921 228 122 -10000 212 543 644 910 912 337 434 767 153 -10000 487 894 437 956 289 803 158 859 729 -10000 273 61 585 89 440 81 494 96 713 -10000 947 573 130 134 121 59 728 865 85 -10000 242 754 927 337 731 780 826 970 611 -10000 945 930 625 967 801 491 433 613 199 -10000 452 498 748 235 644 479 953 37 472 -10000 401 53 175 111 622 817 556 970 674 -10000 291 480 988 846 604 404 890 745 972 -10000 927 753 897 27 542 37 825 954 649 -10000 400 207 342 320 191 477 628 699 314 -10000 627 773 182 789 653 129 955 512 745 -10000 741 459 550 897 91 929 519 42 638 -10000 50 241 745 298 43 368 351 507 638 -10000 694 843 32 225 89 976 206 452 469 -10000 433 286 868 15 724 404 678 62 184 -10000 419 311 778 358 96 305 265 247 538 -10000 887 750 50 558 483 600 330 173 623 -10000 155 887 27 54 992 890 121 997 416 -10000 217 777 397 770 160 466 22 9 322 -10000 838 175 247 432 407 322 125 653 354 -10000 277 706 450 787 775 326 264 959 887 -10000 592 69 232 877 313 509 308 365 377 -10000 393 466 87 878 63 925 454 866 351 -10000 123 575 324 308 696 553 476 1000 279 -10000 182 624 920 261 779 230 350 418 40 -10000 372 63 282 531 327 372 698 374 478 -10000 797 948 422 176 247 221 283 300 248 -10000 142 250 642 262 19 704 890 145 823 -10000 957 660 577 23 348 568 729 137 293 -10000 504 143 343 495 857 274 381 826 890 -10000 382 175 782 740 537 883 560 235 604 -10000 629 673 985 746 467 831 194 252 667 -10000 392 751 153 244 807 881 475 443 699 -10000 550 245 413 338 638 196 991 987 186 -10000 134 64 728 238 213 765 876 4 979 -10000 267 3 246 681 405 96 487 344 528 -10000 954 960 896 30 502 843 593 9 454 -10000 831 514 319 929 972 413 60 607 684 -10000 794 367 859 503 888 264 215 336 690 -10000 469 326 298 269 606 281 984 761 732 -10000 469 50 783 605 861 694 654 909 414 -10000 679 152 287 322 592 690 57 47 827 -10000 585 541 122 773 666 521 27 470 818 -10000 581 874 357 103 309 91 396 913 581 -10000 872 101 5 381 351 44 440 174 277 -10000 530 333 897 999 586 64 318 495 413 -10000 829 893 560 836 459 135 344 98 737 -10000 381 387 740 934 786 415 122 693 508 -10000 397 37 903 411 594 363 18 979 297 -10000 63 77 776 566 149 906 896 738 489 -10000 700 404 505 234 486 19 189 680 602 -10000 413 920 118 737 880 518 271 190 472 -10000 425 750 637 728 973 572 413 224 497 -10000 632 744 967 336 535 130 216 959 602 -10000 106 312 595 223 90 621 683 958 6 -10000 130 605 853 300 388 399 668 918 166 -10000 183 348 328 990 82 350 566 919 197 -10000 838 103 126 297 315 220 814 946 201 -10000 884 273 309 313 201 112 239 231 665 -10000 117 587 584 248 491 732 528 243 205 -10000 24 406 307 781 778 617 277 343 117 -10000 301 168 470 123 527 397 802 366 780 -10000 631 972 726 496 799 503 630 763 409 -10000 502 747 73 584 88 797 350 746 458 -10000 301 481 897 524 959 864 744 75 694 -10000 576 82 239 248 964 384 947 413 302 -10000 315 339 708 605 810 334 236 935 449 -10000 515 138 994 293 117 142 787 533 122 -10000 78 317 552 287 957 72 5 285 546 -10000 352 598 151 310 516 62 718 36 854 -10000 854 813 689 188 603 510 212 685 256 -10000 267 435 795 774 919 715 565 696 778 -10000 586 634 601 34 687 768 823 785 753 -10000 950 925 278 254 42 358 318 477 646 -10000 604 892 676 447 152 500 864 792 91 -10000 99 872 384 946 608 334 245 63 656 -10000 579 835 581 320 372 822 390 593 347 -10000 931 332 311 594 907 95 861 766 623 -10000 737 211 541 757 38 366 148 957 776 -10000 175 197 880 780 782 854 959 925 129 -10000 297 754 866 46 414 12 411 111 28 -10000 719 267 327 852 876 984 737 596 45 -10000 782 59 744 731 189 304 563 666 176 -10000 409 408 556 535 608 523 193 431 773 -10000 474 323 961 496 243 788 8 337 686 -10000 99 365 11 398 856 835 371 568 603 -10000 648 336 891 320 220 939 291 90 865 -10000 87 64 486 483 896 415 110 135 47 -10000 563 135 778 428 387 90 518 377 378 -10000 557 693 311 638 57 961 167 90 26 -10000 818 28 893 667 682 680 978 428 489 -10000 542 52 64 626 525 987 837 113 179 -10000 563 449 438 95 659 80 906 25 603 -10000 592 267 67 400 929 587 149 512 398 -10000 423 57 554 187 977 978 453 858 152 -10000 181 479 368 715 856 772 428 628 873 -10000 894 329 743 130 183 467 758 759 686 -10000 255 398 653 489 587 447 175 981 651 -10000 991 20 927 526 636 326 467 769 530 -10000 289 320 425 377 282 902 360 138 384 -10000 488 540 385 830 402 117 728 820 937 -10000 875 642 323 652 91 606 918 772 216 -10000 882 616 547 836 673 334 229 196 586 -10000 14 274 533 93 530 375 139 374 815 -10000 245 882 858 476 987 108 723 719 235 -10000 405 793 884 539 621 418 512 35 341 -10000 545 272 988 928 507 68 480 725 959 -10000 508 988 867 760 310 84 371 541 451 -10000 630 422 932 962 252 461 928 967 217 -10000 352 795 405 417 154 762 806 844 693 -10000 127 221 981 581 275 320 991 261 493 -10000 658 414 923 74 742 425 258 901 15 -10000 153 792 974 687 269 150 188 152 295 -10000 532 859 229 158 227 193 726 372 253 -10000 232 634 618 438 263 146 759 278 346 -10000 326 1000 775 226 894 208 175 555 204 -10000 861 851 790 452 21 798 756 635 492 -10000 120 403 714 841 47 68 653 597 883 -10000 276 341 743 104 555 235 158 332 25 -10000 210 379 167 930 855 158 196 745 515 -10000 938 322 972 934 998 187 175 437 421 -10000 991 368 363 934 971 726 748 53 791 -10000 967 858 966 169 590 193 92 25 691 -10000 276 759 897 1000 783 783 7 69 672 -10000 988 37 317 81 476 607 537 275 6 -10000 410 734 771 237 122 424 283 801 226 -10000 306 370 13 884 842 488 268 722 603 -10000 100 739 171 274 384 757 729 434 172 -10000 384 456 755 244 694 561 84 341 731 -10000 647 172 159 885 523 32 25 67 48 -10000 197 267 466 138 572 764 761 466 170 -10000 358 104 23 290 88 752 998 918 839 -10000 577 940 341 906 851 760 352 218 171 -10000 792 2 139 309 977 448 808 484 232 -10000 714 157 469 339 86 672 723 206 427 -10000 433 227 795 498 344 707 296 846 942 -10000 951 708 453 864 332 339 901 312 587 -10000 703 871 517 825 631 341 896 616 327 -10000 663 976 118 795 518 383 668 982 276 -10000 554 291 195 37 655 544 233 307 471 -10000 708 1000 983 997 363 808 863 654 102 -10000 477 282 10 958 968 531 209 844 611 -10000 506 437 203 265 137 376 687 482 235 -10000 601 103 368 912 549 398 209 114 625 -10000 138 509 486 781 950 534 876 527 111 -10000 520 790 565 578 177 760 408 93 816 -10000 976 554 787 761 165 527 547 744 638 -10000 891 207 144 817 574 219 895 968 870 -10000 176 292 338 731 968 271 444 229 348 -10000 976 482 646 358 657 123 787 604 789 -10000 405 976 765 667 41 404 389 596 815 -10000 489 820 446 106 56 341 473 612 936 -10000 388 400 77 398 993 842 662 348 629 -10000 373 821 583 410 865 946 150 996 796 -10000 614 11 786 49 52 768 262 3 395 -10000 955 43 739 748 700 590 697 890 384 -10000 488 194 447 7 417 619 320 28 811 -10000 706 326 60 392 563 644 527 234 591 -10000 983 311 387 119 940 681 398 783 685 -10000 609 931 631 934 444 979 469 545 12 -10000 833 487 699 201 238 170 207 135 110 -10000 274 230 348 795 561 633 0 278 85 -10000 437 83 873 43 343 586 84 450 784 -10000 716 963 45 235 641 987 24 163 857 -10000 133 744 592 227 540 866 626 170 641 -10000 271 262 679 554 986 768 310 619 136 -10000 31 973 646 367 439 994 65 896 302 -10000 471 762 16 102 110 70 851 244 554 -10000 360 181 823 667 380 619 438 392 998 -10000 35 427 127 224 531 373 952 576 483 -10000 509 759 904 93 580 517 373 810 127 -10000 830 7 987 425 274 760 65 718 995 -10000 580 548 123 652 851 242 612 168 372 -10000 452 130 256 931 68 96 353 345 662 -10000 772 838 69 993 819 829 828 934 885 -10000 861 247 322 469 480 196 296 524 571 -10000 819 108 437 241 471 146 463 125 646 -10000 474 82 501 357 402 443 555 561 591 -10000 471 711 374 878 889 201 472 63 42 -10000 293 700 880 706 641 427 945 849 26 -10000 167 382 665 2 516 723 88 768 603 -10000 100 762 774 419 75 136 653 302 133 -10000 293 352 105 944 162 112 172 640 403 -10000 139 121 336 706 137 592 953 209 902 -10000 460 15 799 559 987 170 637 134 769 -10000 475 277 497 67 847 62 364 852 879 -10000 127 825 766 930 661 983 391 187 572 -10000 437 709 404 165 867 32 787 268 553 -10000 480 168 175 988 967 455 178 66 272 -10000 203 958 953 848 311 827 430 660 903 -10000 309 818 732 655 351 738 81 242 858 -10000 140 924 49 448 580 438 950 186 274 -10000 383 512 257 182 339 475 694 990 571 -10000 196 242 34 43 716 515 68 992 197 -10000 747 247 228 378 830 816 321 370 939 -10000 440 140 974 570 819 674 612 323 583 -10000 552 955 393 42 172 908 451 591 962 -10000 16 778 556 432 778 279 954 848 699 -10000 671 132 113 433 29 234 23 290 650 -10000 231 190 790 486 972 601 82 930 441 -10000 287 907 628 891 322 261 572 870 883 -10000 60 266 748 386 625 295 627 428 914 -10000 648 224 23 785 171 937 768 612 679 -10000 82 516 941 104 97 624 17 664 216 -10000 239 203 970 619 396 991 56 869 551 -10000 579 139 975 826 95 616 674 773 834 -10000 430 318 213 720 287 747 849 395 407 -10000 519 983 665 531 418 469 397 242 2 -10000 677 948 777 827 934 745 857 373 293 -10000 340 675 430 588 875 87 402 111 282 -10000 643 150 349 503 510 531 995 154 396 -10000 570 681 970 209 551 167 383 843 87 -10000 115 390 984 402 947 822 859 433 760 -10000 776 176 670 27 850 709 977 250 955 -10000 354 429 688 406 484 253 303 67 736 -10000 842 174 6 575 579 933 563 93 541 -10000 925 40 684 928 749 684 224 355 214 -10000 221 739 406 512 727 506 914 402 31 -10000 720 167 544 348 852 953 848 247 346 -10000 358 402 551 941 409 580 624 984 880 -10000 844 983 4 290 312 538 260 635 493 -10000 91 386 237 51 893 88 626 770 488 -10000 369 982 640 24 2 305 641 457 736 -10000 44 742 885 179 562 362 6 48 684 -10000 786 156 887 213 745 500 957 216 84 -10000 937 343 498 991 157 552 42 502 355 -10000 628 453 389 434 447 11 438 960 739 -10000 835 109 64 187 727 417 705 1000 78 -10000 311 729 226 754 295 442 575 550 524 -10000 576 441 540 525 477 542 350 616 154 -10000 623 172 443 586 763 865 589 881 373 -10000 662 742 861 764 57 969 116 726 928 -10000 80 953 614 624 886 425 313 572 813 -10000 280 657 17 423 991 353 23 911 808 -10000 631 510 313 914 997 334 107 636 323 -10000 214 422 674 722 447 874 633 572 415 -10000 143 947 291 744 836 743 852 268 318 -10000 695 716 294 358 461 92 72 86 721 -10000 761 167 805 249 46 664 721 181 375 -10000 432 601 741 275 711 640 926 227 843 -10000 660 920 229 140 353 241 356 541 842 -10000 910 970 209 517 962 143 340 236 748 -10000 260 454 216 196 403 962 39 327 380 -10000 292 819 9 798 987 621 423 200 381 -10000 457 431 353 910 74 82 79 492 787 -10000 437 195 991 962 61 668 638 161 755 -10000 847 9 661 610 799 184 280 327 674 -10000 431 94 471 406 327 611 626 46 375 -10000 17 741 746 932 203 499 774 34 352 -10000 1 742 527 744 922 409 549 272 711 -10000 830 374 223 618 526 257 846 8 998 -10000 888 926 683 678 608 547 90 730 291 -10000 614 576 282 720 558 516 179 515 801 -10000 856 215 550 225 607 319 664 721 829 -10000 329 49 168 298 594 875 935 9 398 -10000 755 254 129 883 5 442 11 357 742 -10000 184 891 269 94 48 115 634 664 16 -10000 935 203 554 770 901 320 271 498 304 -10000 808 479 437 348 385 577 318 868 443 -10000 358 425 110 445 554 975 474 950 488 -10000 115 449 728 299 611 251 900 582 254 -10000 272 990 936 569 743 580 958 905 964 -10000 414 473 290 959 8 820 599 693 840 -10000 175 348 511 205 511 999 613 302 874 -10000 553 233 371 872 882 424 589 791 442 -10000 42 22 970 984 622 18 88 536 270 -10000 93 528 143 441 224 247 183 284 608 -10000 973 415 887 459 181 20 752 333 715 -10000 595 223 633 718 160 415 259 35 579 -10000 792 660 738 398 423 684 676 711 1 -10000 198 900 168 919 64 720 570 762 135 -10000 372 859 501 796 170 668 831 973 240 -10000 179 72 674 941 210 464 487 364 996 -10000 509 524 922 236 946 455 986 582 0 -10000 628 48 254 982 335 474 997 499 140 -10000 115 7 298 716 94 433 813 256 940 -10000 93 775 297 731 870 484 230 747 878 -10000 55 133 618 225 257 925 672 284 191 -10000 494 51 948 336 434 799 899 642 472 -10000 588 772 899 356 864 720 379 315 842 -10000 439 679 533 773 500 817 719 732 556 -10000 121 978 160 989 932 130 414 242 599 -10000 980 315 681 897 811 11 444 451 341 -10000 40 927 458 136 589 713 152 285 179 -10000 361 972 821 235 653 883 394 333 607 -10000 995 203 371 197 360 254 558 896 871 -10000 582 113 910 701 432 783 356 947 459 -10000 621 175 551 229 991 524 420 183 174 -10000 329 960 552 542 618 656 829 335 29 -10000 23 648 482 741 735 693 568 584 15 -10000 788 329 919 722 369 70 929 518 465 -10000 314 559 58 236 95 950 555 466 873 -10000 443 272 379 701 667 892 553 757 853 -10000 654 625 131 765 699 262 78 540 671 -10000 345 570 226 290 291 570 45 217 953 -10000 29 548 487 545 772 671 316 173 604 -10000 363 127 406 413 347 417 100 282 722 -10000 850 703 243 871 287 537 614 352 871 -10000 135 416 39 722 869 988 12 805 235 -10000 950 410 195 963 694 802 608 684 465 -10000 742 705 145 768 516 7 935 64 12 -10000 16 998 53 280 775 703 385 225 580 -10000 403 184 474 840 535 448 296 451 880 -10000 195 428 290 270 144 667 836 746 118 -10000 253 228 525 831 140 325 620 113 614 -10000 930 431 424 683 884 783 348 20 279 -10000 134 134 277 418 609 204 481 981 48 -10000 611 225 431 434 176 475 145 190 91 -10000 461 846 875 465 457 541 326 225 310 -10000 376 150 899 287 138 306 29 332 457 -10000 245 48 387 211 111 764 37 460 992 -10000 838 322 994 498 134 126 215 301 533 -10000 496 120 368 498 873 373 719 781 593 -10000 661 673 142 317 483 564 259 628 843 -10000 608 706 90 187 607 795 857 710 657 -10000 296 588 380 540 252 82 382 654 400 -10000 811 728 348 570 320 215 518 490 549 -10000 613 263 717 880 452 855 787 451 95 -10000 675 110 611 993 527 521 764 470 378 -10000 767 64 833 355 752 680 914 682 863 -10000 745 214 36 46 356 682 799 388 489 -10000 262 657 407 418 675 627 591 519 925 -10000 915 162 225 382 970 205 152 560 683 -10000 781 757 701 228 540 410 118 997 377 -10000 999 200 126 897 165 455 56 990 936 -10000 424 84 432 539 4 303 551 122 737 -10000 943 844 978 404 981 50 75 790 460 -10000 17 344 380 743 363 120 887 8 598 -10000 324 930 929 873 164 27 775 719 687 -10000 740 741 872 352 290 690 547 562 333 -10000 463 86 682 407 98 783 696 910 753 -10000 893 96 300 33 462 419 971 205 99 -10000 196 837 373 895 965 126 449 23 834 -10000 671 219 454 875 774 378 327 745 515 -10000 500 536 737 350 426 608 25 338 955 -10000 984 65 989 102 135 906 890 350 626 -10000 603 435 42 879 624 582 590 143 20 -10000 808 248 419 258 368 351 735 508 216 -10000 775 448 945 840 372 133 263 999 560 -10000 815 676 397 578 760 773 98 718 559 -10000 842 223 299 628 426 613 537 730 278 -10000 60 180 334 151 322 414 365 173 209 -10000 514 578 212 326 158 282 111 695 868 -10000 551 636 234 608 621 614 301 942 506 -10000 889 938 800 1000 90 750 898 431 456 -10000 855 138 845 575 457 998 919 829 744 -10000 928 35 329 338 351 412 452 145 69 -10000 980 486 417 648 414 745 126 304 35 -10000 152 248 296 373 819 7 9 302 729 -10000 590 844 377 720 789 165 745 79 449 -10000 0 752 865 17 495 736 480 317 389 -10000 852 946 742 241 750 375 18 304 843 -10000 801 209 250 634 11 528 957 826 367 -10000 555 55 609 781 200 925 844 837 622 -10000 70 292 284 240 221 540 957 727 581 -10000 752 800 294 624 302 960 109 143 372 -10000 641 461 761 289 654 569 538 660 203 -10000 751 880 917 783 474 262 678 168 396 -10000 197 520 354 659 601 732 991 281 575 -10000 397 204 317 533 654 708 449 322 871 -10000 785 328 445 100 299 104 3 166 217 -10000 525 786 494 231 399 413 680 523 227 -10000 867 987 906 852 928 945 870 847 553 -10000 704 770 127 389 570 300 454 253 968 -10000 797 290 86 325 962 81 148 426 722 -10000 592 41 688 206 523 642 403 539 330 -10000 769 624 746 943 241 113 38 118 552 -10000 974 62 11 541 181 498 716 744 376 -10000 866 586 260 688 987 217 768 105 384 -10000 935 378 144 209 456 540 846 536 50 -10000 938 571 70 496 237 397 888 244 46 -10000 608 408 411 928 766 126 575 18 290 -10000 982 22 630 890 282 834 497 217 440 -10000 163 693 962 977 820 385 940 902 641 -10000 559 824 262 617 367 92 690 104 581 -10000 563 138 325 68 960 740 720 328 663 -10000 853 86 841 324 458 683 605 707 603 -10000 783 291 723 833 199 15 762 851 139 -10000 306 19 881 662 635 753 134 202 549 -10000 260 494 382 684 665 705 577 240 322 -10000 492 401 83 759 562 527 172 480 784 -10000 30 167 678 10 670 767 220 628 723 -10000 416 665 728 226 727 299 744 380 642 -10000 309 688 271 333 529 372 35 515 305 -10000 331 105 805 795 106 374 250 496 410 -10000 580 824 593 343 16 233 294 677 924 -10000 912 497 106 433 695 788 534 668 37 -10000 686 314 321 161 952 46 699 354 383 -10000 694 366 919 436 525 254 209 993 272 -10000 27 438 580 923 386 163 536 969 419 -10000 946 289 773 258 832 549 628 27 45 -10000 962 822 199 566 548 878 283 93 902 -10000 868 618 856 340 324 962 643 988 729 -10000 863 642 143 156 918 798 960 438 968 -10000 672 409 391 16 215 320 325 709 493 -10000 821 119 758 140 495 957 518 99 193 -10000 155 511 210 60 188 479 604 321 892 -10000 81 264 658 455 280 32 49 342 394 -10000 334 963 206 884 949 33 461 881 18 -10000 176 556 239 299 94 93 573 730 137 -10000 524 38 748 707 18 989 989 44 409 -10000 947 68 612 318 430 574 297 131 485 -10000 928 549 934 411 733 286 505 564 654 -10000 336 555 533 418 412 562 13 117 388 -10000 162 823 80 695 305 253 66 490 919 -10000 656 2 973 386 868 511 788 385 409 -10000 794 363 460 865 304 707 807 983 457 -10000 554 410 435 417 251 907 328 708 131 -10000 159 439 730 364 745 63 965 477 336 -10000 751 823 458 626 281 596 3 93 21 -10000 27 147 622 6 585 241 272 241 220 -10000 153 569 314 407 440 742 80 931 652 -10000 329 280 832 996 809 958 84 340 816 -10000 123 373 409 819 1 84 918 789 243 -10000 314 251 483 463 148 477 568 15 60 -10000 179 5 879 302 240 827 181 766 977 -10000 396 147 847 555 770 626 473 21 900 -10000 932 477 258 465 913 45 136 883 420 -10000 320 161 619 943 425 197 232 497 466 -10000 506 701 729 663 903 584 212 231 400 -10000 326 453 391 430 636 829 508 57 533 -10000 422 271 120 159 245 876 499 659 731 -10000 869 67 114 871 268 973 980 209 84 -10000 588 354 463 886 414 681 514 527 15 -10000 612 177 286 752 586 377 775 248 721 -10000 636 888 769 240 304 470 178 355 123 -10000 669 802 354 637 285 602 699 53 275 -10000 765 680 427 624 321 125 86 480 746 -10000 110 170 825 327 481 319 852 842 22 -10000 667 604 422 336 148 863 858 805 301 -10000 166 531 908 356 742 592 884 940 546 -10000 209 838 397 936 222 425 875 957 904 -10000 144 996 610 158 736 498 933 541 955 -10000 635 412 369 141 347 213 99 405 998 -10000 514 654 348 454 781 317 660 29 63 -10000 881 165 907 210 310 951 627 885 801 -10000 440 429 19 94 930 5 570 886 753 -10000 974 889 404 539 858 238 790 27 16 -10000 787 690 574 315 452 173 412 707 286 -10000 359 877 268 966 823 362 519 172 123 -10000 354 952 790 166 184 938 946 456 113 -10000 148 889 577 645 48 633 323 563 537 -10000 149 515 36 375 102 528 770 87 363 -10000 138 513 336 732 401 170 138 379 881 -10000 770 63 889 197 973 877 430 974 462 -10000 664 374 897 127 393 389 386 719 802 -10000 552 448 497 488 150 141 120 115 724 -10000 205 768 557 594 428 430 66 902 47 -10000 520 186 749 405 834 773 192 941 892 -10000 288 305 801 971 594 318 338 594 237 -10000 643 373 213 215 983 482 864 483 816 -10000 361 896 929 867 34 640 440 222 639 -10000 242 724 195 829 379 3 646 79 221 -10000 328 807 533 229 20 113 334 530 411 -10000 803 855 34 9 209 938 192 472 440 -10000 760 114 390 452 156 872 802 912 72 -10000 140 921 327 650 276 45 946 240 299 -10000 812 637 784 441 172 521 903 477 729 -10000 183 76 785 603 687 637 472 283 137 -10000 354 902 526 712 526 8 929 596 439 -10000 584 23 545 126 831 518 392 727 329 -10000 960 861 193 29 75 981 264 971 420 -10000 80 534 865 317 589 929 432 765 171 -10000 83 354 365 473 67 452 880 847 443 -10000 519 815 726 491 619 193 125 711 654 -10000 636 276 809 151 800 683 559 74 982 -10000 621 241 974 339 529 400 122 797 111 -10000 277 753 282 549 297 938 473 655 941 -10000 787 731 351 843 506 760 487 206 65 -10000 397 356 758 439 717 549 361 697 811 -10000 952 762 288 750 758 4 540 571 394 -10000 39 428 303 561 155 819 840 969 76 -10000 208 115 879 933 927 267 672 203 928 -10000 901 561 380 806 382 104 936 349 988 -10000 194 231 382 235 624 347 305 30 102 -10000 540 974 106 36 603 770 478 54 781 -10000 3 845 447 323 312 87 287 626 134 -10000 841 238 311 384 441 416 569 110 34 -10000 832 657 362 526 969 939 795 417 937 -10000 737 379 73 880 172 99 217 994 554 -10000 72 777 277 371 737 840 201 566 358 -10000 864 133 119 839 850 544 713 344 966 -10000 71 136 746 853 92 200 466 49 810 -10000 865 370 248 976 452 508 708 930 89 -10000 611 335 51 34 612 406 751 438 418 -10000 914 556 587 714 526 436 34 408 385 -10000 48 567 795 724 250 915 568 377 325 -10000 735 641 36 690 453 501 891 142 707 -10000 111 607 795 814 51 435 237 481 964 -10000 583 849 447 562 981 196 996 161 734 -10000 696 681 208 721 744 117 591 646 782 -10000 801 319 671 670 813 343 969 564 933 -10000 724 432 451 685 764 766 952 109 181 -10000 797 60 720 560 474 699 551 800 274 -10000 976 260 938 259 994 887 387 671 86 -10000 726 87 178 851 978 979 692 739 59 -10000 285 389 510 308 613 367 247 754 56 -10000 741 754 478 214 535 672 376 941 986 -10000 708 583 624 626 280 742 818 938 479 -10000 407 676 494 595 365 704 455 989 756 -10000 258 533 754 991 88 721 833 99 205 -10000 52 494 380 865 766 199 382 106 985 -10000 237 382 681 104 13 248 450 643 261 -10000 740 180 554 586 505 214 302 188 202 -10000 958 958 700 400 896 718 493 52 927 -10000 778 686 394 489 318 214 210 387 210 -10000 911 392 71 971 741 278 783 586 98 -10000 528 443 128 616 707 545 291 580 208 -10000 65 492 164 797 932 929 269 769 470 -10000 68 259 598 501 445 55 706 811 42 -10000 391 124 516 957 684 360 449 122 468 -10000 898 328 421 915 779 145 315 196 687 -10000 578 79 114 944 692 697 67 746 45 -10000 407 322 29 274 695 370 609 202 40 -10000 643 300 989 682 945 375 542 846 397 -10000 475 60 790 657 34 256 806 110 277 -10000 446 360 667 295 727 748 34 739 359 -10000 191 947 206 349 731 177 367 274 733 -10000 132 585 50 527 690 148 944 880 178 -10000 926 246 374 869 899 13 441 508 88 -10000 719 150 970 558 794 860 196 191 510 -10000 297 637 482 251 342 658 333 611 863 -10000 532 598 996 500 625 891 847 544 65 -10000 161 2 252 680 730 331 356 895 660 -10000 213 842 778 3 271 288 411 729 794 -10000 480 74 905 107 292 866 774 717 613 -10000 47 605 70 830 924 606 494 437 638 -10000 838 794 97 91 455 273 880 746 831 -10000 235 386 532 988 889 86 133 476 486 -10000 586 402 389 422 455 786 477 650 332 -10000 699 34 578 648 182 252 516 608 622 -10000 306 448 912 903 661 275 631 530 659 -10000 827 725 822 983 27 868 86 57 986 -10000 530 998 153 510 312 171 888 195 195 -10000 57 509 365 160 476 798 557 216 523 -10000 831 23 880 197 353 261 144 78 939 -10000 302 970 802 461 861 561 533 253 32 -10000 705 645 300 540 47 631 672 838 197 -10000 892 487 52 358 890 126 571 43 786 -10000 117 879 60 158 768 275 544 495 936 -10000 216 409 233 267 18 132 215 338 571 -10000 607 505 928 926 931 423 430 202 152 -10000 933 323 861 4 532 52 787 278 242 -10000 347 710 57 60 637 104 196 962 863 -10000 96 339 717 839 447 369 584 793 855 -10000 442 316 501 947 609 599 840 463 123 -10000 168 798 798 304 955 946 749 986 301 -10000 806 367 500 494 196 178 440 748 573 -10000 917 265 452 704 271 656 935 671 125 -10000 400 490 470 26 759 897 15 264 760 -10000 736 754 373 397 123 490 311 851 832 -10000 280 779 459 413 171 79 578 213 232 -10000 240 620 597 352 540 478 905 198 748 -10000 457 961 838 622 716 461 398 874 995 -10000 482 204 291 437 344 959 566 225 381 -10000 409 176 816 769 290 19 325 705 971 -10000 129 233 986 619 499 776 807 98 155 -10000 537 548 806 387 633 484 214 682 960 -10000 195 857 123 831 573 930 414 378 17 -10000 656 145 467 754 157 760 857 135 751 -10000 626 389 826 513 81 334 845 77 802 -10000 653 314 780 402 307 714 252 384 880 -10000 53 868 340 965 848 448 452 189 912 -10000 165 118 750 323 486 142 213 840 288 -10000 548 421 924 489 758 24 263 347 374 -10000 956 265 114 153 367 602 448 987 946 -10000 981 255 490 854 628 320 49 359 350 -10000 147 383 294 87 26 207 378 421 187 -10000 549 107 197 472 746 843 761 830 774 -10000 762 594 554 29 987 248 1000 946 95 -10000 505 541 428 782 662 471 574 609 134 -10000 97 463 716 959 447 585 499 733 128 -10000 491 464 311 468 57 728 358 425 765 -10000 490 579 626 260 268 409 291 61 155 -10000 3 119 143 430 284 888 976 777 719 -10000 900 703 976 453 672 48 161 134 892 -10000 462 717 457 857 215 36 8 555 913 -10000 27 786 659 680 607 878 754 505 269 -10000 65 478 255 857 2 935 279 738 781 -10000 315 917 481 154 817 652 711 909 121 -10000 727 433 734 437 257 532 353 459 953 -10000 863 924 373 792 960 999 747 669 165 -10000 4 144 799 919 230 494 127 316 414 -10000 902 861 573 593 485 834 581 237 618 -10000 179 239 958 821 792 914 528 794 473 -10000 720 243 928 942 405 387 828 462 544 -10000 562 173 466 41 761 168 540 402 276 -10000 220 220 132 47 352 991 335 505 679 -10000 155 743 309 913 819 144 19 887 171 -10000 579 662 636 579 754 402 309 739 373 -10000 925 220 111 219 910 998 893 273 572 -10000 572 208 548 241 968 87 882 401 278 -10000 559 375 341 953 362 177 526 674 17 -10000 888 738 352 556 994 371 628 790 712 -10000 5 819 570 981 114 310 396 218 184 -10000 711 820 378 792 678 641 641 943 56 -10000 704 582 583 335 249 241 843 842 255 -10000 610 993 74 799 477 402 98 38 583 -10000 110 269 669 275 726 18 32 675 378 -10000 60 840 657 413 626 145 932 773 386 -10000 708 243 54 15 701 835 991 961 763 -10000 874 605 527 493 946 735 98 872 206 -10000 654 424 456 709 804 46 160 882 579 -10000 173 463 753 85 180 634 813 833 559 -10000 460 751 901 739 617 447 537 275 773 -10000 978 239 483 643 293 129 613 461 378 -10000 306 295 266 458 486 822 719 355 822 -10000 834 331 323 693 344 133 427 405 881 -10000 735 147 101 23 745 414 134 35 501 -10000 377 556 783 143 859 699 474 242 449 -10000 455 655 598 941 814 591 791 216 249 -10000 617 800 60 841 0 661 253 576 984 -10000 355 330 303 969 613 623 37 864 922 -10000 127 449 995 607 457 972 554 314 565 -10000 620 983 518 69 845 321 765 76 448 -10000 738 30 152 833 589 327 265 785 260 -10000 885 768 177 433 586 15 529 424 495 -10000 278 444 320 394 178 372 33 114 771 -10000 562 572 45 429 889 212 715 12 453 -10000 568 49 128 543 619 291 310 102 63 -10000 58 661 519 731 376 394 705 607 521 -10000 443 752 834 708 758 242 650 848 67 -10000 515 675 824 869 747 343 210 127 493 -10000 132 965 375 112 543 370 368 501 336 -10000 362 928 803 910 676 599 548 155 302 -10000 772 695 654 130 952 518 685 358 616 -10000 705 88 10 184 285 284 273 386 431 -10000 824 291 321 398 228 642 126 18 221 -10000 731 942 859 501 627 652 840 808 216 -10000 929 268 70 605 414 399 409 755 610 -10000 15 664 360 361 562 631 75 231 778 -10000 405 128 601 557 788 943 817 916 747 -10000 85 333 457 448 960 893 191 741 457 -10000 120 524 55 1 341 914 338 551 57 -10000 86 161 239 142 287 503 544 67 780 -10000 134 371 675 72 868 46 987 37 774 -10000 158 447 349 813 110 319 985 360 923 -10000 794 399 134 676 686 474 564 248 231 -10000 388 97 977 778 909 346 875 525 10 -10000 964 845 22 606 508 50 294 690 640 -10000 439 101 332 520 248 992 529 392 986 -10000 860 297 688 161 689 19 659 744 789 -10000 755 487 837 383 268 628 476 690 966 -10000 169 643 960 291 627 583 929 817 995 -10000 506 29 106 165 350 20 890 419 959 -10000 898 804 258 137 530 911 895 801 729 -10000 418 959 567 363 717 597 990 848 992 -10000 201 291 98 402 6 314 220 835 639 -10000 169 810 847 814 424 97 73 381 610 -10000 790 677 119 247 339 197 653 653 709 -10000 808 2 710 871 897 938 572 769 459 -10000 509 43 814 747 949 433 710 7 939 -10000 832 504 850 455 853 131 124 618 419 -10000 431 689 922 644 593 853 673 123 101 -10000 91 425 275 355 433 726 803 720 818 -10000 109 551 829 80 696 186 575 238 73 -10000 137 404 89 452 884 46 746 638 670 -10000 251 814 387 217 774 999 969 116 676 -10000 75 794 702 671 127 661 163 539 488 -10000 159 356 949 458 284 481 418 783 886 -10000 220 79 655 502 861 616 734 738 141 -10000 502 97 294 195 34 885 105 3 374 -10000 109 87 177 893 83 670 593 322 494 -10000 552 210 676 676 303 382 891 406 707 -10000 692 559 883 662 982 598 868 349 159 -10000 117 733 440 400 364 524 863 73 260 -10000 15 933 726 240 478 575 784 456 862 -10000 686 525 140 369 15 292 748 577 474 -10000 466 647 850 649 106 76 540 616 6 -10000 198 507 441 426 662 869 849 735 41 -10000 952 928 867 304 407 488 837 23 519 -10000 639 577 912 173 314 717 599 369 586 -10000 254 824 296 372 474 174 295 628 28 -10000 689 454 654 784 577 332 812 614 879 -10000 466 598 899 95 91 914 302 963 33 -10000 276 847 506 328 420 712 372 614 144 -10000 348 688 315 120 326 662 657 886 764 -10000 341 880 314 655 373 304 71 335 892 -10000 390 608 517 849 681 411 484 120 328 -10000 550 110 538 416 797 465 952 211 78 -10000 692 53 782 813 343 628 934 802 627 -10000 447 901 584 304 656 108 788 506 308 -10000 89 293 294 411 108 346 57 919 687 -10000 636 808 495 305 44 153 768 957 964 -10000 623 873 71 622 394 666 624 123 235 -10000 70 809 338 412 362 236 279 145 999 -10000 624 450 946 862 472 59 641 365 47 -10000 669 259 634 704 464 340 225 571 103 -10000 141 7 306 874 931 742 490 321 980 -10000 808 116 99 63 827 883 250 866 750 -10000 196 445 768 929 634 957 992 749 36 -10000 980 373 785 752 147 649 38 725 998 -10000 919 491 340 628 385 958 540 279 999 -10000 146 259 473 729 730 305 67 188 378 -10000 341 343 579 115 82 493 774 706 698 -10000 646 130 896 462 499 331 236 26 168 -10000 143 567 34 394 691 377 298 810 708 -10000 945 77 207 760 741 389 422 755 652 -10000 499 763 18 696 38 222 93 563 414 -10000 307 36 653 890 524 996 908 694 587 -10000 799 909 369 361 709 57 126 133 591 -10000 225 166 348 567 521 894 636 148 290 -10000 544 413 684 798 443 48 82 743 807 -10000 293 778 603 221 998 443 22 288 910 -10000 85 785 295 380 635 452 381 901 686 -10000 614 77 806 144 538 284 281 231 154 -10000 936 146 866 905 163 542 152 994 21 -10000 396 728 802 690 330 115 374 725 339 -10000 896 307 876 391 624 949 932 798 263 -10000 852 33 706 896 265 557 232 828 133 -10000 62 692 23 39 797 389 395 230 135 -10000 577 181 62 454 173 986 48 965 749 -10000 265 794 573 674 535 611 656 287 342 -10000 908 539 437 833 432 577 75 496 913 -10000 423 976 169 631 764 976 343 865 303 -10000 315 341 563 710 765 34 324 221 262 -10000 44 593 109 232 372 604 84 482 804 -10000 973 912 606 502 633 241 906 338 818 -10000 547 264 540 35 141 103 160 843 910 -10000 583 536 671 386 350 100 959 612 885 -10000 857 95 332 242 988 513 616 11 555 -10000 387 231 183 451 393 85 766 252 160 -10000 372 469 487 362 953 462 528 171 222 -10000 630 856 199 214 345 171 736 560 660 -10000 107 375 128 394 170 346 738 234 601 -10000 142 378 728 209 427 953 20 868 279 -10000 434 699 178 191 506 303 723 605 334 -10000 748 469 739 763 476 192 711 23 879 -10000 521 229 151 847 857 431 297 682 715 -10000 527 249 38 926 972 177 541 65 534 -10000 130 522 375 977 24 489 842 678 943 -10000 633 243 490 703 209 626 884 928 504 -10000 346 565 791 909 486 375 202 849 158 -10000 134 755 336 475 479 284 940 110 924 -10000 558 956 330 102 562 674 696 730 178 -10000 586 781 935 660 328 456 401 518 647 -10000 922 300 857 570 479 850 890 213 239 -10000 158 922 113 603 742 678 190 200 587 -10000 355 136 904 102 209 691 684 516 343 -10000 452 687 484 889 701 707 260 752 879 -10000 317 735 579 380 791 818 461 225 228 -10000 907 157 273 751 20 538 680 795 760 -10000 736 365 658 294 208 311 24 48 6 -10000 230 662 108 941 195 785 326 228 975 -10000 238 99 656 557 346 515 942 665 946 -10000 364 551 938 16 126 849 618 671 472 -10000 599 568 861 336 496 137 375 855 391 -10000 520 559 253 297 122 433 923 848 494 -10000 244 956 734 823 242 636 542 517 184 -10000 665 404 473 319 198 871 524 972 463 -10000 521 847 848 679 635 391 642 157 215 -10000 708 673 355 996 11 271 498 9 721 -10000 230 561 892 161 1000 272 494 599 255 -10000 471 180 496 937 220 677 596 458 456 -10000 372 447 54 841 386 313 698 879 727 -10000 301 853 407 316 489 229 103 468 130 -10000 533 537 78 90 31 296 342 250 607 -10000 235 614 476 105 828 273 154 445 961 -10000 647 958 434 986 456 839 9 158 955 -10000 693 652 910 270 561 594 707 489 430 -10000 370 812 866 66 784 496 524 370 328 -10000 945 785 770 659 783 783 589 250 434 -10000 277 235 208 466 718 25 242 316 727 -10000 213 948 846 723 972 498 487 902 772 -10000 524 245 81 405 232 988 762 543 656 -10000 650 256 731 824 216 1 619 539 423 -10000 160 492 553 979 535 236 154 877 22 -10000 641 145 519 696 541 757 416 284 989 -10000 668 460 592 813 219 237 78 414 435 -10000 381 37 11 984 823 160 888 590 612 -10000 762 346 785 135 800 144 89 489 567 -10000 593 660 965 973 482 625 511 142 979 -10000 317 353 61 335 839 671 838 393 514 -10000 590 989 560 266 298 962 562 837 470 -10000 246 389 456 436 356 493 900 220 1000 -10000 232 555 887 836 696 759 755 672 616 -10000 734 194 311 86 969 654 718 846 472 -10000 474 360 189 433 352 705 362 233 20 -10000 943 292 358 36 164 59 254 291 808 -10000 307 221 957 249 666 551 22 36 473 -10000 525 787 179 775 66 297 187 587 592 -10000 759 86 533 43 316 592 500 160 303 -10000 981 402 574 439 611 372 831 398 1 -10000 125 116 567 245 641 121 412 877 690 -10000 674 71 935 389 828 467 960 819 94 -10000 386 902 740 612 520 191 286 820 340 -10000 811 425 58 78 702 801 581 26 76 -10000 720 187 397 683 416 158 509 474 202 -10000 477 556 714 232 558 787 142 820 210 -10000 706 591 529 731 168 249 575 98 389 -10000 393 768 650 660 570 612 48 589 814 -10000 161 950 267 141 545 868 81 980 880 -10000 772 496 416 636 861 153 102 363 160 -10000 122 65 702 805 365 874 400 780 964 -10000 843 773 156 942 865 256 44 768 892 -10000 683 106 378 328 627 391 64 775 91 -10000 212 973 124 119 826 698 192 152 876 -10000 31 48 12 990 258 400 998 55 735 -10000 124 734 945 651 217 382 161 230 644 -10000 808 586 504 930 406 572 523 277 661 -10000 313 890 338 754 604 330 50 125 865 -10000 806 870 160 956 951 224 186 624 820 -10000 657 470 746 295 279 80 336 407 487 -10000 742 118 881 144 398 783 142 499 629 -10000 64 629 114 659 315 445 118 681 582 -10000 69 419 406 714 532 697 491 470 570 -10000 966 609 609 514 384 24 632 617 17 -10000 531 18 214 874 805 507 78 500 307 -10000 791 147 665 422 439 496 686 657 492 -10000 430 306 451 576 568 81 100 231 818 -10000 935 286 187 538 92 744 998 422 946 -10000 579 863 599 522 408 816 238 595 478 -10000 34 377 216 935 610 969 747 896 15 -10000 401 985 463 9 780 408 806 484 862 -10000 205 600 818 118 883 270 388 570 150 -10000 382 849 651 74 896 74 805 862 95 -10000 515 520 805 839 417 390 2 251 241 -10000 543 107 152 414 420 699 918 829 671 -10000 767 294 694 945 583 441 412 997 882 -10000 76 909 765 94 118 139 856 448 753 -10000 686 857 784 800 565 713 534 590 379 -10000 680 779 614 935 150 327 472 612 758 -10000 622 242 594 770 950 981 28 345 392 -10000 679 407 135 759 374 642 227 968 510 -10000 652 309 816 221 82 139 692 375 49 -10000 831 247 361 434 445 654 725 279 650 -10000 575 469 632 406 56 761 81 238 717 -10000 211 903 591 814 766 620 188 861 80 -10000 446 305 887 165 680 154 178 768 74 -10000 313 425 507 646 285 441 244 888 340 -10000 617 999 252 189 70 913 265 993 812 -10000 520 972 192 187 849 593 93 32 855 -10000 453 369 87 264 536 928 754 576 655 -10000 181 779 995 33 831 827 745 61 26 -10000 77 977 798 28 909 212 307 158 672 -10000 738 618 24 762 18 248 564 269 45 -10000 883 635 64 599 613 232 205 694 287 -10000 358 115 355 449 71 768 615 986 139 -10000 39 405 843 41 352 531 58 884 118 -10000 920 365 683 324 665 235 648 692 528 -10000 842 253 998 498 259 736 82 700 731 -10000 199 122 756 403 77 69 780 177 278 -10000 901 152 719 40 830 347 706 960 662 -10000 82 553 261 988 898 739 339 343 13 -10000 75 863 79 684 935 566 411 802 360 -10000 965 279 547 87 156 167 187 57 888 -10000 701 574 975 54 108 535 59 452 318 -10000 560 316 558 506 278 780 935 768 86 -10000 856 264 452 959 939 799 529 12 710 -10000 268 736 746 435 132 424 416 441 151 -10000 855 481 239 463 487 835 342 325 359 -10000 97 840 499 486 52 508 892 415 265 -10000 751 399 812 618 22 673 616 673 927 -10000 438 492 542 650 10 799 571 163 724 -10000 56 29 570 787 232 147 54 340 706 -10000 926 295 373 589 530 629 1 319 378 -10000 401 362 923 405 528 655 416 656 608 -10000 304 92 739 82 213 101 397 529 104 -10000 377 194 583 398 730 964 102 17 17 -10000 433 293 762 558 514 344 515 318 750 -10000 796 957 561 812 744 470 798 325 735 -10000 755 454 4 169 132 860 754 347 185 -10000 340 307 378 128 640 164 169 901 450 -10000 127 16 732 760 639 666 964 621 296 -10000 76 834 987 990 73 125 601 388 707 -10000 722 209 174 887 562 460 376 817 132 -10000 525 489 177 317 723 479 970 237 535 -10000 504 630 653 718 377 315 482 55 218 -10000 631 838 12 868 589 279 536 121 91 -10000 695 350 867 434 40 424 236 829 723 -10000 149 694 348 377 785 793 171 892 515 -10000 656 133 348 302 25 543 898 762 984 -10000 926 200 54 474 466 842 299 802 68 -10000 665 77 743 27 959 295 192 119 281 -10000 941 648 97 660 700 562 15 842 349 -10000 100 827 179 912 457 57 249 398 48 -10000 415 915 229 869 186 89 907 819 305 -10000 906 616 462 993 239 873 927 150 595 -10000 747 374 834 359 792 9 125 669 697 -10000 205 120 633 98 827 661 215 863 276 -10000 643 507 601 352 27 986 529 993 49 -10000 353 499 448 922 404 437 863 529 950 -10000 534 877 819 193 26 808 225 704 500 -10000 974 339 815 328 591 445 139 245 998 -10000 108 608 166 357 55 562 93 96 511 -10000 416 820 40 35 831 801 752 466 480 -10000 265 242 36 647 830 851 386 22 235 -10000 737 39 304 14 649 76 797 507 386 -10000 946 682 750 925 812 817 935 539 984 -10000 3 66 671 440 706 110 96 154 164 -10000 617 283 422 230 166 825 321 931 73 -10000 899 80 775 165 462 498 546 461 336 -10000 987 175 495 553 431 913 354 606 113 -10000 771 429 521 233 480 546 314 972 752 -10000 532 287 69 538 6 319 41 156 328 -10000 63 900 735 783 321 172 124 268 176 -10000 708 444 27 110 429 723 540 720 457 -10000 105 522 134 339 540 772 429 649 954 -10000 727 857 657 608 292 904 206 222 335 -10000 499 90 248 680 424 361 377 305 673 -10000 13 930 285 403 636 678 703 879 850 -10000 402 790 245 334 98 1000 503 671 471 -10000 441 475 161 344 742 125 117 977 646 -10000 152 326 182 77 100 636 798 689 153 -10000 856 593 807 975 251 437 883 874 230 -10000 484 666 135 97 205 850 285 260 551 -10000 761 756 384 667 872 235 408 781 555 -10000 1000 134 744 857 325 664 428 651 707 -10000 737 288 901 871 356 765 734 925 65 -10000 526 556 492 214 596 682 79 807 352 -10000 778 825 100 680 591 834 712 70 323 -10000 19 88 756 565 43 677 215 950 433 -10000 669 296 821 397 855 17 528 617 203 -10000 434 645 581 275 518 653 493 739 769 -10000 729 217 472 850 39 651 212 979 140 -10000 741 611 81 556 500 286 728 583 362 -10000 40 62 442 462 944 49 446 282 636 -10000 895 457 301 786 157 935 430 459 374 -10000 42 839 607 441 69 913 367 305 926 -10000 483 530 478 883 522 387 470 87 972 -10000 676 760 536 291 12 826 371 584 479 -10000 163 241 839 423 494 349 418 245 131 -10000 197 987 97 60 112 78 106 958 9 -10000 552 602 908 324 736 551 699 758 231 -10000 899 985 501 277 310 666 306 546 312 -10000 550 728 156 905 544 306 630 763 986 -10000 895 30 919 333 96 23 895 497 751 -10000 678 25 349 928 46 649 412 975 841 -10000 97 135 357 653 351 125 674 955 497 -10000 927 852 154 751 864 874 717 782 771 -10000 184 393 402 502 342 44 985 227 796 -10000 336 90 67 541 884 370 194 311 780 -10000 509 758 984 608 301 675 763 345 23 -10000 28 707 880 111 369 53 718 648 619 -10000 596 665 163 682 367 619 889 629 33 -10000 357 721 932 384 258 494 783 678 52 -10000 290 190 690 159 962 371 605 743 96 -10000 159 466 883 416 586 979 470 648 37 -10000 151 543 414 416 49 750 830 24 982 -10000 372 320 571 88 825 915 490 838 648 -10000 498 345 864 536 971 973 309 704 320 -10000 353 745 4 158 19 598 618 367 373 -10000 454 595 874 199 629 541 99 901 389 -10000 930 512 342 154 896 942 38 677 861 -10000 190 835 836 387 675 568 516 156 411 -10000 302 576 692 433 841 761 698 562 157 -10000 208 84 943 301 138 190 848 221 271 -10000 590 323 514 640 152 212 489 679 307 -10000 293 878 7 293 812 579 689 258 650 -10000 1000 493 981 679 692 647 796 165 218 -10000 957 622 49 415 363 71 948 256 948 -10000 690 192 528 886 786 809 104 152 346 -10000 828 933 604 242 435 418 385 505 242 -10000 864 463 78 722 233 331 661 808 533 -10000 867 258 402 892 159 375 362 614 796 -10000 253 660 664 19 616 818 94 212 362 -10000 567 633 617 479 795 998 958 236 349 -10000 888 334 927 786 4 340 560 258 58 -10000 976 784 983 894 610 769 968 124 797 -10000 404 263 878 640 359 787 508 656 551 -10000 389 688 277 798 52 823 260 870 263 -10000 864 869 740 946 929 794 898 284 329 -10000 244 567 185 827 372 615 187 902 866 -10000 474 256 593 349 325 410 414 831 684 -10000 822 705 434 39 287 362 618 436 468 -10000 897 458 74 121 822 610 648 50 246 -10000 450 954 390 523 411 899 632 875 426 -10000 373 391 187 182 403 562 513 398 470 -10000 42 526 675 272 789 958 632 10 392 -10000 38 282 708 251 404 153 765 795 775 -10000 748 302 177 869 402 572 71 666 486 -10000 656 144 361 479 194 392 514 850 376 -10000 1 531 353 246 330 939 133 825 284 -10000 999 673 903 624 458 779 598 876 717 -10000 520 509 549 875 945 581 33 9 241 -10000 327 147 963 890 266 414 944 157 327 -10000 690 480 215 80 39 13 709 966 306 -10000 284 540 864 487 965 676 713 645 128 -10000 897 834 890 572 161 717 902 588 729 -10000 938 680 101 205 314 249 862 868 626 -10000 768 633 386 676 630 891 611 827 986 -10000 321 933 961 28 361 610 574 143 360 -10000 421 550 358 731 38 840 852 860 627 -10000 347 297 3 490 231 53 557 639 638 -10000 172 311 502 670 849 175 791 171 886 -10000 29 423 381 872 495 105 420 241 671 -10000 528 349 213 572 53 68 767 189 557 -10000 17 211 702 940 538 768 150 293 740 -10000 252 524 345 737 834 20 386 303 255 -10000 973 626 312 705 6 764 428 770 226 -10000 477 949 854 444 163 892 273 85 80 -10000 902 637 468 901 29 432 558 693 963 -10000 643 727 315 190 972 530 402 158 347 -10000 821 708 790 593 834 644 785 761 910 -10000 789 382 863 183 178 554 91 669 649 -10000 216 989 391 617 473 394 743 466 446 -10000 430 237 428 100 141 677 706 531 645 -10000 936 936 599 946 961 228 667 395 969 -10000 995 567 723 607 708 745 649 585 417 -10000 148 114 696 206 904 891 113 674 421 -10000 771 49 817 854 770 975 45 123 688 -10000 624 383 870 406 118 310 891 439 332 -10000 721 791 580 760 944 394 460 572 151 -10000 753 141 40 675 757 453 114 423 480 -10000 705 827 139 848 962 43 933 110 327 -10000 299 56 244 16 324 918 992 292 597 -10000 326 236 916 508 661 487 175 331 71 -10000 68 977 271 710 813 828 654 349 827 -10000 424 435 374 80 894 337 787 696 438 -10000 481 249 954 684 327 468 309 169 540 -10000 944 737 818 221 30 366 990 150 194 -10000 284 39 58 342 668 197 58 329 886 -10000 281 133 637 900 523 118 918 254 372 -10000 295 865 278 684 557 580 645 797 993 -10000 695 426 611 944 817 265 959 493 754 -10000 671 890 228 769 495 59 840 949 58 -10000 255 613 243 931 177 834 557 917 247 -10000 121 348 583 944 625 495 685 862 1 -10000 549 594 14 414 767 499 915 199 573 -10000 944 439 215 689 783 25 678 4 601 -10000 299 836 33 855 150 383 586 838 48 -10000 910 206 949 193 611 467 784 525 971 -10000 637 462 970 745 147 884 670 963 61 -10000 675 706 423 846 983 967 243 931 647 -10000 73 723 82 702 631 427 357 669 185 -10000 166 39 500 207 284 762 727 590 638 -10000 474 307 516 709 260 194 270 798 333 -10000 21 914 945 702 587 80 590 665 902 -10000 38 738 912 38 566 330 619 545 409 -10000 778 496 377 320 64 933 852 592 175 -10000 756 195 507 66 317 473 467 715 684 -10000 95 894 429 416 974 925 173 174 75 -10000 979 985 777 457 716 807 82 754 328 -10000 263 883 782 529 652 540 175 403 124 -10000 706 992 922 670 843 754 96 836 835 -10000 720 71 690 477 370 680 751 449 464 -10000 601 368 147 722 856 132 898 610 974 -10000 247 386 623 516 876 792 855 41 382 -10000 307 982 298 747 126 709 580 335 917 -10000 926 136 219 638 37 522 118 746 437 -10000 876 748 882 455 718 987 585 392 130 -10000 219 332 664 806 831 672 723 472 405 -10000 583 840 696 273 584 810 501 64 814 -10000 356 225 445 366 360 463 828 88 189 -10000 44 268 974 480 461 622 88 414 242 -10000 893 294 745 268 135 849 424 684 773 -10000 191 899 802 835 25 551 373 760 654 -10000 961 240 61 879 58 539 881 328 45 -10000 848 639 686 297 190 594 808 681 940 -10000 684 239 365 163 194 859 670 759 898 -10000 523 172 373 266 45 711 484 624 659 -10000 427 610 482 336 786 60 714 815 27 -10000 969 662 804 101 3 579 15 776 140 -10000 578 524 316 770 653 876 570 836 618 -10000 777 416 542 640 798 81 170 112 974 -10000 2 494 200 456 989 236 400 440 950 -10000 360 230 416 668 779 539 919 23 369 -10000 805 689 770 768 450 259 227 376 485 -10000 873 656 382 695 343 785 381 92 403 -10000 813 122 891 187 701 763 662 720 731 -10000 506 363 366 256 799 950 724 167 532 -10000 662 412 869 827 638 973 195 157 482 -10000 725 755 624 951 73 173 698 135 510 -10000 472 577 443 927 672 334 198 724 448 -10000 324 90 991 623 44 542 134 658 574 -10000 459 49 703 423 844 779 30 425 721 -10000 493 972 418 24 113 653 307 705 238 -10000 149 469 855 603 428 119 657 354 297 -10000 457 446 147 715 539 967 755 837 593 -10000 990 998 406 457 906 785 159 703 977 -10000 433 724 247 83 845 160 218 336 278 -10000 755 228 842 232 288 230 60 615 152 -10000 611 621 152 808 838 874 474 635 242 -10000 600 120 542 719 222 47 34 354 963 -10000 965 724 958 287 124 803 51 712 959 -10000 654 286 786 57 383 847 382 15 485 -10000 184 152 455 397 569 225 138 263 945 -10000 549 691 397 941 178 553 792 518 203 -10000 169 390 699 30 457 54 975 418 808 -10000 122 775 517 822 868 430 692 560 811 -10000 495 726 223 746 192 883 202 798 420 -10000 177 633 874 531 549 400 745 939 125 -10000 508 800 82 441 791 354 379 288 94 -10000 948 907 5 105 518 187 450 37 566 -10000 295 871 74 281 497 185 598 208 168 -10000 392 492 50 656 813 570 717 549 579 -10000 134 748 318 890 195 286 323 427 276 -10000 699 561 793 558 282 313 710 447 752 -10000 27 100 308 269 318 45 344 761 335 -10000 414 636 104 169 966 474 564 188 506 -10000 951 277 162 588 688 38 236 822 737 -10000 739 551 951 50 74 509 58 388 769 -10000 156 806 428 1 161 627 303 3 940 -10000 911 350 998 821 650 992 155 382 969 -10000 47 936 800 463 36 471 869 182 573 -10000 71 167 710 627 522 945 778 372 328 -10000 621 281 48 285 567 184 748 127 150 -10000 559 998 46 356 927 117 784 17 846 -10000 789 714 59 404 615 629 884 582 910 -10000 479 94 306 163 98 283 983 29 794 -10000 957 887 684 208 312 391 4 149 710 -10000 518 71 497 400 982 54 962 391 749 -10000 138 287 16 475 93 220 216 494 503 -10000 638 699 18 206 67 602 429 760 741 -10000 803 412 375 897 734 446 289 850 788 -10000 259 933 981 896 404 820 790 152 535 -10000 632 125 953 978 109 707 721 629 84 -10000 594 45 760 351 884 684 470 135 876 -10000 292 365 986 476 436 598 857 604 292 -10000 545 989 117 14 613 294 783 167 632 -10000 352 549 606 932 678 669 177 71 541 -10000 837 383 73 135 714 755 511 891 482 -10000 278 675 23 239 572 591 865 827 682 -10000 837 220 790 963 570 478 434 801 57 -10000 717 656 400 787 129 473 969 172 695 -10000 139 977 444 446 415 185 924 141 608 -10000 159 866 277 973 199 5 482 762 234 -10000 922 869 12 990 616 976 167 47 871 -10000 102 168 581 719 266 835 141 644 584 -10000 733 621 658 752 634 353 318 642 780 -10000 445 268 596 842 307 352 46 193 985 -10000 589 706 93 10 0 208 240 941 362 -10000 590 104 403 370 639 204 183 99 438 -10000 413 671 142 875 122 923 796 272 386 -10000 158 603 579 677 582 919 104 743 332 -10000 72 893 223 264 915 930 415 402 560 -10000 95 964 535 582 421 146 591 727 156 -10000 842 513 595 942 273 736 727 253 731 -10000 217 936 767 914 320 893 314 299 247 -10000 375 376 71 131 740 873 847 228 759 -10000 693 285 61 234 361 303 462 24 241 -10000 921 792 280 495 775 599 962 521 923 -10000 557 671 908 48 702 787 63 371 384 -10000 980 634 954 680 587 914 853 66 913 -10000 83 722 847 414 66 803 855 52 473 -10000 121 530 785 809 723 751 948 138 816 -10000 708 634 345 325 41 997 711 617 245 -10000 369 100 837 893 123 678 69 358 671 -10000 425 936 495 523 842 968 434 507 253 -10000 367 552 582 27 854 846 304 318 929 -10000 805 712 553 387 568 254 949 393 634 -10000 316 347 252 649 760 900 968 726 251 -10000 379 178 291 164 861 752 551 478 644 -10000 248 181 125 131 233 141 660 412 581 -10000 123 513 99 754 324 145 144 792 873 -10000 742 228 950 839 293 916 107 661 460 -10000 898 766 739 306 653 27 466 101 49 -10000 863 932 301 582 67 369 946 821 700 -10000 977 205 140 980 524 378 591 527 976 -10000 581 567 457 683 743 673 471 798 594 -10000 228 305 697 197 711 218 173 274 976 -10000 609 853 408 173 969 738 907 560 534 -10000 518 514 891 566 649 258 664 169 444 -10000 7 569 242 186 880 109 605 702 799 -10000 828 987 877 107 457 305 415 885 75 -10000 294 37 187 17 724 71 664 820 108 -10000 216 66 74 840 763 917 339 991 326 -10000 851 86 470 513 711 430 51 889 26 -10000 14 529 246 201 216 825 392 414 938 -10000 505 236 761 521 449 223 325 36 826 -10000 236 658 45 823 496 981 761 775 590 -10000 946 609 191 707 516 755 857 260 494 -10000 531 979 414 405 521 594 834 435 90 -10000 912 11 858 780 625 959 744 410 498 -10000 871 244 363 617 389 379 122 241 450 -10000 366 866 369 166 599 210 960 773 527 -10000 703 161 682 548 732 667 879 862 225 -10000 597 168 401 753 757 255 875 554 526 -10000 428 715 942 161 241 282 264 362 9 -10000 495 252 813 492 973 227 800 308 73 -10000 888 891 864 328 469 566 271 883 230 -10000 9 319 622 402 440 978 943 589 127 -10000 623 772 752 265 244 864 894 504 783 -10000 143 81 303 157 236 971 71 752 719 -10000 283 236 58 820 262 816 510 241 442 -10000 728 369 842 37 598 302 757 371 926 -10000 421 732 690 562 528 56 165 252 605 -10000 198 658 344 4 600 71 289 299 15 -10000 263 1000 737 467 107 442 931 746 974 -10000 442 109 235 272 601 208 934 544 924 -10000 937 603 476 571 730 726 73 440 804 -10000 559 35 245 564 28 397 952 873 385 -10000 834 870 949 860 145 464 432 55 756 -10000 916 971 882 184 366 313 621 963 741 -10000 235 463 29 778 401 169 919 1 305 -10000 574 670 140 676 463 980 471 386 96 -10000 475 237 439 162 487 900 279 601 753 -10000 996 122 413 992 293 249 989 323 926 -10000 499 43 86 583 561 248 135 436 622 -10000 103 133 507 148 853 433 57 287 603 -10000 486 858 434 990 637 286 884 425 200 -10000 9 185 263 99 799 697 388 927 938 -10000 26 207 10 482 131 607 98 381 749 -10000 773 965 665 576 94 80 916 471 1 -10000 474 241 333 342 418 122 945 752 159 -10000 44 598 274 664 662 28 563 433 179 -10000 45 278 511 760 830 549 217 583 968 -10000 825 412 111 885 501 257 874 470 115 -10000 967 275 692 679 593 727 569 856 571 -10000 992 596 903 597 517 920 314 965 795 -10000 601 477 198 699 349 596 320 666 559 -10000 499 410 146 250 699 848 61 494 911 -10000 169 882 563 572 294 948 848 447 77 -10000 402 706 404 255 635 641 669 437 39 -10000 183 279 641 90 590 250 326 203 707 -10000 152 971 307 8 744 954 284 268 847 -10000 13 526 366 524 985 909 934 429 416 -10000 801 753 856 856 373 795 123 169 37 -10000 407 978 117 711 798 131 897 232 717 -10000 906 736 500 531 526 149 39 651 561 -10000 252 692 807 653 775 987 576 240 437 -10000 357 312 59 741 296 327 699 935 826 -10000 765 617 322 861 921 6 233 282 46 -10000 651 878 12 855 844 729 468 739 726 -10000 537 179 393 466 961 683 776 570 3 -10000 538 534 381 540 442 461 833 4 281 -10000 812 896 4 658 777 575 139 848 314 -10000 347 369 913 994 385 156 497 62 381 -10000 950 325 172 291 299 81 588 207 729 -10000 666 171 922 845 710 214 250 540 53 -10000 330 917 871 464 679 625 705 995 145 -10000 844 80 949 216 690 582 581 889 750 -10000 656 330 825 460 743 156 903 95 312 -10000 148 53 384 947 155 982 195 212 236 -10000 91 117 633 826 728 85 564 720 449 -10000 204 557 906 316 88 250 971 754 315 -10000 467 676 809 626 292 116 967 687 376 -10000 686 1 921 329 124 391 188 481 400 -10000 74 218 586 859 395 832 539 64 771 -10000 347 454 83 705 551 593 341 583 427 -10000 690 268 892 144 999 51 742 194 547 -10000 316 569 169 54 506 12 835 173 771 -10000 328 969 756 5 465 385 23 263 598 -10000 327 512 540 950 204 764 400 252 886 -10000 194 335 872 969 465 474 243 737 941 -10000 891 535 298 522 585 791 470 578 458 -10000 458 885 53 688 575 83 797 293 600 -10000 934 639 456 206 519 521 712 834 363 -10000 293 315 137 368 665 924 546 645 892 -10000 147 222 407 433 421 712 307 434 664 -10000 853 742 931 402 212 881 462 601 130 -10000 479 773 408 644 262 508 883 186 708 -10000 387 713 897 331 401 85 461 255 565 -10000 623 878 432 747 589 886 278 842 798 -10000 341 651 801 808 975 714 148 299 115 -10000 45 471 549 2 714 784 34 88 562 -10000 660 255 623 551 392 592 908 484 23 -10000 374 257 364 912 586 718 688 447 501 -10000 927 747 963 542 214 190 358 91 62 -10000 160 492 219 118 816 752 186 335 934 -10000 62 254 933 786 619 719 689 508 727 -10000 538 966 350 470 769 189 775 763 482 -10000 950 533 599 886 44 984 485 736 978 -10000 620 510 564 989 656 126 925 209 11 -10000 205 172 299 972 368 906 441 296 867 -10000 179 308 179 487 268 438 872 789 46 -10000 399 147 968 13 632 194 239 237 881 -10000 52 35 172 111 266 581 504 466 4 -10000 681 39 366 682 86 888 846 798 62 -10000 118 66 723 732 335 784 925 981 510 -10000 415 45 668 760 231 298 123 580 920 -10000 80 17 33 962 471 840 644 71 676 -10000 462 119 761 56 71 555 297 502 35 -10000 808 379 617 684 381 338 850 138 67 -10000 247 392 958 685 605 562 435 735 605 -10000 80 651 851 837 236 45 897 384 857 -10000 732 452 294 77 904 901 693 753 811 -10000 46 856 829 673 282 298 320 882 951 -10000 813 322 429 418 634 568 940 802 120 -10000 613 246 96 219 263 739 854 542 80 -10000 71 788 211 598 405 218 297 647 349 -10000 603 513 820 772 998 301 391 567 87 -10000 303 51 833 683 76 40 211 763 684 -10000 689 686 214 343 535 661 498 531 293 -10000 416 778 109 505 578 8 109 926 637 -10000 409 227 857 514 760 818 864 889 76 -10000 81 573 640 526 686 806 813 963 648 -10000 848 800 871 991 629 452 820 459 375 -10000 440 725 75 875 521 302 686 380 895 -10000 309 319 133 745 413 84 868 135 972 -10000 175 177 896 611 927 886 904 510 677 -10000 453 18 805 946 770 103 507 583 499 -10000 851 183 492 92 16 525 775 81 5 -10000 451 131 110 535 969 623 352 58 737 -10000 300 204 908 95 980 416 378 194 354 -10000 755 469 968 511 100 781 236 850 158 -10000 661 384 513 728 573 779 646 673 541 -10000 515 953 311 991 351 511 387 945 538 -10000 763 902 366 360 726 318 671 916 459 -10000 665 824 879 229 241 783 773 120 484 -10000 751 315 686 90 350 664 373 868 456 -10000 399 553 762 53 843 718 541 132 633 -10000 370 586 372 845 19 794 542 107 939 -10000 16 283 174 525 590 536 528 980 540 -10000 408 653 314 62 160 306 51 248 693 -10000 548 854 435 889 335 165 308 663 453 -10000 460 796 63 185 559 574 700 196 284 -10000 776 694 161 313 387 918 167 917 527 -10000 396 659 800 923 829 899 657 412 524 -10000 215 872 55 643 874 809 897 373 310 -10000 219 862 601 726 427 683 925 841 391 -10000 781 107 110 51 904 589 125 261 656 -10000 762 521 821 685 843 305 221 38 734 -10000 228 896 572 719 584 275 542 815 55 -10000 840 17 301 445 159 883 268 897 990 -10000 770 166 290 235 535 276 100 465 309 -10000 242 376 12 332 432 871 580 922 778 -10000 350 389 301 802 935 283 802 234 363 -10000 866 787 652 594 623 395 995 518 746 -10000 627 241 458 886 805 159 528 162 802 -10000 580 680 272 281 273 150 814 305 231 -10000 241 434 837 20 3 478 518 140 38 -10000 857 432 951 891 972 996 498 797 58 -10000 58 83 19 73 727 13 963 410 739 -10000 506 736 397 193 837 58 503 732 669 -10000 18 69 149 933 104 809 999 100 188 -10000 932 778 898 496 722 169 441 130 356 -10000 487 159 238 365 457 724 128 326 806 -10000 323 572 728 397 191 937 199 96 619 -10000 103 835 145 882 773 871 867 885 345 -10000 531 449 884 645 356 545 250 201 374 -10000 234 190 283 473 853 863 879 455 323 -10000 848 260 293 277 97 757 185 764 259 -10000 811 686 273 631 660 621 271 363 428 -10000 397 440 779 960 596 389 140 541 888 -10000 612 897 254 420 320 304 585 958 614 -10000 188 228 31 345 78 219 595 57 401 -10000 83 594 349 537 716 608 934 14 231 -10000 914 692 488 39 653 404 188 538 495 -10000 824 43 639 316 404 450 222 961 755 -10000 957 847 512 373 472 914 680 25 452 -10000 588 561 813 212 661 884 793 542 485 -10000 424 928 628 972 699 252 76 367 761 -10000 253 311 154 171 141 208 407 705 973 -10000 623 318 805 565 770 923 578 578 907 -10000 478 796 58 967 817 882 152 269 780 -10000 388 667 420 736 385 763 602 407 886 -10000 492 370 782 320 298 868 59 924 593 -10000 924 223 399 506 865 561 777 68 958 -10000 306 165 960 524 394 907 975 883 585 -10000 729 851 184 506 509 130 307 747 46 -10000 417 89 256 981 231 486 638 426 943 -10000 627 367 341 221 349 318 459 461 803 -10000 365 471 777 565 282 209 320 998 583 -10000 185 982 119 562 252 700 89 800 644 -10000 726 47 608 397 11 129 211 886 398 -10000 375 70 349 535 340 723 376 37 285 -10000 8 716 640 20 365 434 814 265 982 -10000 858 326 205 335 974 335 957 78 910 -10000 830 628 681 597 385 670 58 549 343 -10000 28 426 289 493 283 624 868 903 468 -10000 47 958 654 120 747 652 590 588 328 -10000 207 323 491 182 24 569 214 696 732 -10000 418 940 109 801 333 531 149 673 937 -10000 917 477 869 132 497 13 764 579 329 -10000 720 845 648 265 335 4 265 874 329 -10000 489 124 122 486 642 930 800 549 911 -10000 239 419 486 827 920 683 251 740 576 -10000 928 360 928 171 484 53 363 89 817 -10000 806 46 930 32 335 935 294 377 551 -10000 400 128 110 76 57 429 426 495 871 -10000 241 638 676 938 499 868 368 233 243 -10000 27 61 90 834 672 617 913 510 50 -10000 581 127 160 697 171 168 376 794 197 -10000 18 790 104 600 800 326 565 564 42 -10000 931 172 420 583 904 198 424 121 998 -10000 378 828 86 329 753 583 401 178 503 -10000 103 413 448 362 487 213 770 177 698 -10000 339 491 47 447 523 953 26 473 675 -10000 781 59 680 514 706 174 900 687 756 -10000 363 499 217 494 312 885 378 36 301 -10000 602 513 800 750 884 157 38 302 443 -10000 241 168 740 531 984 434 900 585 342 -10000 478 102 436 723 434 167 854 562 124 -10000 283 188 494 229 365 452 15 585 223 -10000 650 835 101 669 19 815 801 87 641 -10000 221 451 549 270 827 404 471 141 715 -10000 669 355 230 205 794 944 66 233 758 -10000 650 501 585 409 562 76 742 493 959 -10000 725 542 148 1 856 483 814 536 177 -10000 247 316 312 15 282 160 672 108 24 -10000 641 767 64 97 699 488 710 725 76 -10000 148 792 78 64 373 1 333 582 992 -10000 605 789 583 441 22 906 372 259 812 -10000 760 664 934 752 458 859 264 917 31 -10000 409 650 306 15 832 414 997 441 203 -10000 128 413 938 772 563 126 364 561 749 -10000 409 254 812 293 882 606 447 90 376 -10000 103 930 554 961 303 176 556 645 758 -10000 355 806 618 460 491 985 809 286 330 -10000 215 27 792 33 190 32 327 278 512 -10000 261 193 211 624 231 259 184 328 335 -10000 867 999 345 829 27 322 93 28 961 -10000 129 189 820 424 800 550 615 536 851 -10000 688 575 349 483 40 454 900 176 0 -10000 385 930 933 186 707 844 240 618 395 -10000 439 563 18 972 164 38 715 78 585 -10000 939 851 635 64 201 696 56 534 924 -10000 286 853 815 223 274 644 641 288 313 -10000 559 554 64 908 541 137 787 321 712 -10000 619 136 506 316 878 498 511 809 124 -10000 716 700 511 817 794 329 991 761 635 -10000 929 919 189 990 366 111 288 961 88 -10000 717 615 635 393 684 660 185 807 174 -10000 128 918 976 92 79 335 695 123 199 -10000 224 193 633 715 93 474 344 417 138 -10000 96 80 859 375 21 43 341 569 262 -10000 910 704 733 468 450 366 260 946 403 -10000 489 621 231 196 598 908 210 670 327 -10000 256 367 11 393 398 723 877 903 253 -10000 367 186 186 262 382 833 793 367 257 -10000 936 794 467 924 145 714 479 360 611 -10000 114 440 855 785 350 737 799 445 7 -10000 624 623 313 984 57 583 850 454 705 -10000 138 430 131 935 831 4 433 160 938 -10000 569 21 524 113 433 386 493 187 966 -10000 1 4 873 358 158 728 327 775 379 -10000 865 816 287 75 962 603 367 653 538 -10000 809 671 490 85 464 943 849 422 375 -10000 626 675 155 897 157 317 586 595 312 -10000 543 992 928 384 571 665 600 878 263 -10000 952 928 863 500 292 57 313 641 245 -10000 557 435 19 269 546 225 923 474 143 -10000 532 791 765 644 216 231 863 361 352 -10000 105 970 762 435 114 150 25 183 88 -10000 124 946 463 868 518 722 269 515 590 -10000 242 433 257 726 416 406 721 251 829 -10000 36 481 189 997 414 245 443 730 872 -10000 277 827 274 531 763 58 696 22 201 -10000 248 971 610 620 271 683 720 191 408 -10000 451 661 222 409 972 999 331 130 353 -10000 906 418 767 140 150 437 370 948 569 -10000 928 785 344 855 528 981 560 283 537 -10000 222 673 957 144 753 381 857 545 222 -10000 904 972 644 150 153 285 566 821 134 -10000 976 738 814 523 611 574 452 555 170 -10000 580 192 775 840 746 566 842 989 791 -10000 535 430 708 404 735 141 123 374 931 -10000 769 135 957 884 935 429 759 770 534 -10000 423 793 199 634 344 19 225 953 286 -10000 668 426 313 366 624 616 410 78 453 -10000 702 909 231 249 685 650 455 427 856 -10000 28 440 9 76 216 860 496 83 595 -10000 635 562 543 990 268 349 445 650 272 -10000 628 545 934 355 415 1 465 158 249 -10000 947 779 196 766 895 443 471 563 844 -10000 370 877 639 462 180 413 779 819 519 -10000 507 814 223 252 728 454 77 577 114 -10000 281 104 53 90 162 335 414 717 274 -10000 287 15 621 93 181 724 744 666 510 -10000 748 698 742 499 905 154 473 410 601 -10000 582 641 295 722 866 185 296 743 487 -10000 956 291 704 293 662 395 658 380 487 -10000 175 120 969 972 116 214 737 454 225 -10000 232 872 710 991 364 927 740 921 903 -10000 164 511 625 31 328 584 362 744 286 -10000 373 244 775 809 573 206 903 540 804 -10000 708 309 463 205 91 143 31 42 319 -10000 460 217 939 50 411 299 682 426 836 -10000 726 140 145 217 285 244 888 309 885 -10000 660 696 931 329 29 901 833 734 860 -10000 295 311 72 408 195 225 914 807 644 -10000 441 55 839 442 256 695 41 844 413 -10000 979 812 569 753 261 980 603 458 862 -10000 882 82 265 800 88 446 452 301 441 -10000 70 205 472 878 309 844 558 665 355 -10000 966 373 303 289 885 56 735 442 409 -10000 238 64 149 744 255 524 721 170 668 -10000 11 861 104 196 86 465 954 581 683 -10000 515 797 916 703 729 750 360 900 673 -10000 848 600 916 825 495 100 507 79 117 -10000 695 971 113 922 937 156 997 24 791 -10000 973 27 787 270 808 709 18 525 148 -10000 64 269 14 979 288 372 460 256 0 -10000 671 421 827 608 254 251 735 601 230 -10000 901 163 859 867 174 838 192 853 67 -10000 802 633 876 975 799 46 192 163 986 -10000 2 591 328 561 870 163 31 652 263 -10000 990 822 327 851 792 162 207 202 794 -10000 212 168 653 437 430 244 95 97 738 -10000 102 568 757 644 972 304 142 415 823 -10000 24 53 411 408 795 868 383 683 534 -10000 271 96 373 593 53 609 719 928 593 -10000 405 222 932 260 555 412 347 806 715 -10000 644 274 808 69 877 974 611 892 263 -10000 18 255 148 54 221 303 135 150 639 -10000 676 542 568 845 303 825 905 778 136 -10000 550 110 362 810 379 967 632 970 525 -10000 152 871 263 17 264 247 941 524 740 -10000 826 528 522 148 422 39 137 74 432 -10000 575 974 743 552 173 424 863 237 548 -10000 489 421 790 164 467 796 942 381 847 -10000 798 750 201 811 625 925 605 14 754 -10000 670 878 524 743 210 996 744 939 979 -10000 360 685 897 103 75 245 186 651 819 -10000 458 935 640 211 355 858 32 99 647 -10000 872 521 127 353 638 476 1 41 759 -10000 495 989 429 552 654 75 929 591 645 -10000 398 303 425 254 687 850 544 495 657 -10000 830 552 991 434 52 289 958 192 368 -10000 303 326 157 431 289 145 489 527 358 -10000 353 671 427 439 220 725 68 66 311 -10000 726 566 638 733 939 394 599 235 317 -10000 3 642 623 2 688 623 791 161 953 -10000 773 670 489 625 898 211 138 632 695 -10000 868 274 331 560 688 692 705 614 969 -10000 486 753 804 529 912 566 476 33 267 -10000 727 308 981 138 898 783 46 261 296 -10000 185 241 472 736 119 738 108 149 607 -10000 960 261 168 880 487 613 524 928 198 -10000 678 491 387 769 880 413 401 873 355 -10000 943 934 559 92 289 427 982 263 851 -10000 433 83 108 417 623 174 523 626 524 -10000 269 508 917 442 570 971 768 752 489 -10000 860 314 219 102 925 308 532 222 124 -10000 307 334 991 849 548 44 663 830 274 -10000 65 612 319 559 51 90 805 235 652 -10000 628 287 150 154 710 327 791 309 9 -10000 858 115 73 14 176 524 388 360 727 -10000 926 881 702 227 407 803 85 997 753 -10000 700 742 642 355 133 256 129 406 756 -10000 269 4 187 324 257 99 358 102 96 -10000 427 283 794 409 696 917 808 376 957 -10000 898 372 27 928 952 461 198 816 396 -10000 818 103 455 646 984 264 718 202 852 -10000 808 449 311 783 327 440 400 991 224 -10000 777 662 545 329 912 7 25 0 50 -10000 560 212 684 899 378 629 981 344 207 -10000 824 437 944 943 171 807 177 528 638 -10000 957 178 664 858 513 590 28 949 619 -10000 879 787 493 739 151 244 827 805 228 -10000 229 693 460 198 283 875 44 554 818 -10000 180 838 281 38 839 565 61 608 764 -10000 154 346 878 835 580 647 798 341 947 -10000 951 280 180 368 346 111 893 439 212 -10000 854 986 340 12 833 491 909 589 653 -10000 593 824 31 230 106 303 27 628 529 -10000 551 594 306 508 589 256 848 569 505 -10000 821 284 403 596 378 827 913 340 584 -10000 882 313 391 472 7 252 488 323 484 -10000 412 62 359 506 699 238 115 31 39 -10000 211 217 641 839 335 125 716 300 109 -10000 271 265 855 420 123 100 126 475 571 -10000 801 732 843 869 829 828 86 53 933 -10000 86 255 699 105 308 188 793 641 484 -10000 989 874 861 844 120 814 464 75 790 -10000 148 644 651 298 687 409 394 697 672 -10000 35 666 863 288 703 355 393 396 670 -10000 213 440 163 143 177 591 120 460 868 -10000 996 778 878 70 840 444 139 45 777 -10000 593 416 241 767 22 784 245 137 20 -10000 683 959 834 998 534 51 982 938 47 -10000 808 835 480 580 351 610 995 922 556 -10000 365 987 542 134 499 929 239 463 15 -10000 560 192 370 336 55 67 668 379 898 -10000 297 126 538 132 886 576 716 638 255 -10000 621 336 906 970 75 279 651 719 657 -10000 370 650 626 151 473 160 298 831 419 -10000 795 635 397 901 712 875 593 806 744 -10000 584 916 179 662 121 386 65 58 910 -10000 128 322 262 79 768 329 484 10 381 -10000 1000 847 477 711 387 746 382 828 889 -10000 691 384 74 520 715 355 332 351 558 -10000 452 444 216 415 73 59 18 414 789 -10000 213 728 288 907 303 527 129 760 692 -10000 798 891 128 27 333 942 181 416 286 -10000 534 525 826 956 644 279 91 428 417 -10000 905 25 413 933 141 917 186 378 928 -10000 803 114 251 112 492 700 789 135 242 -10000 948 53 219 182 471 868 82 726 271 -10000 867 329 791 100 69 592 392 635 975 -10000 669 269 728 761 609 540 152 951 1 -10000 341 253 328 68 84 414 961 880 54 -10000 926 971 825 329 609 951 600 286 541 -10000 761 370 611 163 738 314 756 500 34 -10000 735 101 631 119 107 426 464 983 999 -10000 411 843 344 798 374 886 33 597 893 -10000 65 729 192 416 595 333 955 702 5 -10000 308 152 503 606 354 985 942 599 8 -10000 182 132 474 606 103 320 81 241 871 -10000 855 49 110 359 471 236 594 389 900 -10000 959 372 698 518 714 967 773 939 774 -10000 161 804 861 594 274 137 137 43 519 -10000 368 636 864 679 488 827 734 441 22 -10000 423 733 502 915 553 982 216 961 619 -10000 905 186 753 516 585 907 552 338 47 -10000 433 973 667 202 626 393 988 938 362 -10000 879 423 846 249 261 631 397 27 62 -10000 24 563 302 142 25 484 38 592 828 -10000 412 640 195 7 39 984 628 863 375 -10000 983 717 912 754 888 204 458 825 379 -10000 746 780 140 503 221 687 609 24 727 -10000 21 513 96 501 351 470 891 203 136 -10000 84 840 395 492 693 56 669 544 982 -10000 512 740 272 291 278 762 274 960 926 -10000 978 989 453 689 13 468 71 777 828 -10000 747 936 216 530 406 990 306 383 709 -10000 698 908 434 310 160 499 78 829 50 -10000 23 857 631 184 532 8 363 714 391 -10000 590 11 835 899 539 591 305 374 348 -10000 617 632 831 452 958 891 370 2 271 -10000 116 323 886 717 659 173 687 463 12 -10000 661 356 48 179 175 956 417 186 7 -10000 166 112 712 672 891 714 520 591 374 -10000 677 816 15 290 669 357 856 228 507 -10000 806 258 715 397 277 422 324 176 263 -10000 983 496 692 822 402 60 746 664 113 -10000 467 355 515 185 339 47 465 720 218 -10000 911 69 254 499 322 580 792 786 475 -10000 467 878 635 427 607 930 877 453 861 -10000 284 823 456 916 95 191 966 641 301 -10000 495 804 906 603 227 212 878 566 0 -10000 673 266 395 207 543 562 416 381 963 -10000 128 251 204 367 590 743 437 103 59 -10000 378 102 637 143 280 34 500 238 259 -10000 373 359 291 985 81 397 601 620 517 -10000 338 794 968 498 219 128 320 639 649 -10000 524 852 522 561 417 258 842 374 896 -10000 351 980 963 722 484 184 537 588 877 -10000 58 85 10 213 916 652 300 9 230 -10000 239 363 168 299 804 858 741 624 177 -10000 905 43 831 355 883 201 805 955 440 -10000 754 866 702 980 767 199 726 661 282 -10000 726 385 116 960 159 624 158 489 335 -10000 584 811 995 409 691 740 521 595 516 -10000 446 539 99 46 931 190 794 878 199 -10000 626 724 34 901 969 579 712 610 146 -10000 130 593 138 88 229 260 860 110 636 -10000 351 484 568 487 406 756 50 795 988 -10000 424 846 966 750 897 435 503 891 256 -10000 502 367 498 350 937 16 101 724 58 -10000 569 968 62 201 105 431 101 958 570 -10000 715 692 226 585 251 281 184 542 517 -10000 271 848 585 471 322 976 855 385 9 -10000 705 679 413 434 802 786 335 418 96 -10000 58 934 671 789 958 687 917 227 592 -10000 898 978 903 264 1000 695 929 838 168 -10000 710 973 700 624 774 790 811 106 892 -10000 618 869 979 754 21 739 398 457 401 -10000 636 341 241 110 583 672 524 780 917 -10000 863 695 936 298 570 740 459 654 802 -10000 76 589 447 370 925 920 952 67 305 -10000 938 412 35 963 615 31 412 761 252 -10000 566 214 393 306 778 78 706 487 719 -10000 435 381 478 224 610 949 3 640 426 -10000 342 441 455 643 261 466 414 119 538 -10000 833 982 49 908 854 699 924 36 123 -10000 935 420 532 163 662 567 997 122 454 -10000 500 220 291 553 676 963 987 537 815 -10000 324 75 87 826 743 363 880 372 418 -10000 703 485 381 764 313 577 932 21 432 -10000 337 472 557 805 460 129 328 454 707 -10000 702 852 873 420 535 915 82 772 364 -10000 974 330 569 973 465 880 18 200 807 -10000 367 885 226 204 451 908 585 72 624 -10000 49 157 431 343 572 64 797 234 708 -10000 742 552 279 541 782 255 34 590 358 -10000 545 791 736 755 827 41 746 764 689 -10000 400 51 464 661 687 76 168 127 500 -10000 771 440 85 528 1 60 575 729 140 -10000 752 622 0 582 97 784 666 395 475 -10000 391 928 739 639 913 640 624 830 4 -10000 136 994 865 452 939 104 164 660 188 -10000 966 763 709 667 75 748 566 44 474 -10000 311 74 740 692 586 361 179 292 416 -10000 471 988 132 269 95 302 554 561 388 -10000 35 456 586 692 448 796 959 670 500 -10000 423 669 707 779 379 908 823 236 180 -10000 17 360 245 238 88 138 81 242 274 -10000 341 470 84 746 448 387 588 367 506 -10000 503 869 817 854 585 355 240 215 265 -10000 344 372 91 164 362 124 611 141 573 -10000 151 633 979 891 238 679 582 493 908 -10000 861 977 733 513 852 394 507 748 683 -10000 904 523 612 708 81 352 453 361 790 -10000 762 124 327 517 613 430 25 205 149 -10000 134 220 904 792 973 241 857 834 505 -10000 282 122 663 525 986 604 450 792 888 -10000 340 956 113 844 343 199 534 527 768 -10000 444 956 466 238 422 605 489 371 602 -10000 10 60 662 218 403 622 741 390 130 -10000 632 415 842 92 464 827 211 359 628 -10000 793 535 963 42 881 862 561 84 865 -10000 441 96 164 339 422 89 849 386 595 -10000 384 298 319 330 809 324 543 528 582 -10000 209 124 602 554 953 381 685 468 132 -10000 236 732 98 829 197 842 140 663 349 -10000 707 677 253 191 250 792 691 126 902 -10000 886 919 189 98 322 908 555 57 966 -10000 926 286 986 533 572 278 430 983 442 -10000 738 903 128 420 560 989 703 182 802 -10000 533 797 333 767 766 338 945 791 352 -10000 519 62 707 774 358 877 611 811 583 -10000 168 912 163 425 43 539 145 267 932 -10000 9 137 633 95 464 609 565 569 395 -10000 129 111 612 586 910 768 535 325 787 -10000 85 405 899 108 19 155 768 566 250 -10000 930 878 117 471 529 575 979 905 739 -10000 154 1 804 554 530 234 325 675 632 -10000 874 790 457 535 189 980 564 291 820 -10000 896 882 215 925 864 315 61 512 906 -10000 558 333 948 654 424 464 959 475 341 -10000 939 31 778 99 307 309 574 810 609 -10000 850 296 502 152 736 75 851 9 512 -10000 54 262 509 365 745 866 242 440 673 -10000 12 309 60 349 847 599 335 852 253 -10000 973 603 330 887 509 846 34 309 926 -10000 55 759 944 572 126 695 70 457 642 -10000 228 74 442 446 467 201 11 166 569 -10000 715 250 576 38 866 159 827 9 703 -10000 180 694 618 444 252 140 922 405 384 -10000 138 257 509 458 329 625 182 705 955 -10000 507 827 184 26 36 709 263 779 765 -10000 238 273 952 918 18 338 918 827 73 -10000 700 711 450 117 179 865 350 849 856 -10000 561 7 47 907 103 22 145 986 462 -10000 652 127 877 700 821 601 828 230 108 -10000 738 896 967 568 427 462 994 471 920 -10000 310 901 467 479 488 740 962 500 939 -10000 914 679 287 196 140 673 924 638 819 -10000 251 557 47 819 307 743 51 712 105 -10000 358 252 995 762 893 414 526 850 606 -10000 697 302 821 491 179 275 529 910 641 -10000 277 536 314 338 493 718 470 300 889 -10000 688 674 344 796 602 993 809 823 949 -10000 790 91 636 711 970 713 236 121 209 -10000 288 736 550 970 213 21 161 343 448 -10000 184 883 74 785 533 182 690 335 389 -10000 252 774 4 15 145 224 588 521 456 -10000 15 188 355 901 257 131 406 485 187 -10000 789 474 148 157 237 124 247 392 60 -10000 249 852 333 415 338 971 931 459 726 -10000 236 163 759 261 337 937 80 562 608 -10000 373 609 594 84 361 354 1000 30 167 -10000 141 428 207 695 248 917 236 886 871 -10000 255 116 374 964 918 660 523 53 594 -10000 75 187 427 36 901 995 987 787 513 -10000 880 391 534 837 213 5 2 582 431 -10000 470 254 561 79 66 49 948 388 517 -10000 814 497 704 272 486 74 991 133 630 -10000 19 79 709 188 775 674 39 306 452 -10000 12 76 97 53 159 290 290 888 662 -10000 168 330 268 666 859 591 903 760 9 -10000 719 772 160 536 576 896 335 927 971 -10000 91 877 738 116 747 981 79 128 732 -10000 780 898 810 774 618 813 615 421 458 -10000 419 749 503 322 357 877 760 470 861 -10000 733 28 266 132 961 645 586 277 792 -10000 477 919 449 664 470 724 726 300 447 -10000 149 959 164 328 435 724 360 458 516 -10000 312 969 946 937 270 424 773 187 718 -10000 660 434 11 205 724 801 662 325 897 -10000 610 959 402 904 816 32 719 422 771 -10000 768 690 134 286 980 808 248 455 172 -10000 180 430 489 31 601 361 15 289 523 -10000 638 925 377 692 238 359 498 35 761 -10000 829 550 415 988 778 935 408 987 364 -10000 205 535 566 944 907 897 220 13 403 -10000 365 190 208 680 803 989 657 29 271 -10000 99 791 864 554 335 838 176 145 937 -10000 491 496 204 749 331 212 52 160 935 -10000 943 54 816 227 450 774 340 907 14 -10000 750 187 476 103 676 715 763 936 580 -10000 783 326 663 932 860 174 558 342 198 -10000 828 433 357 961 56 630 266 772 843 -10000 335 499 102 619 73 307 84 860 910 -10000 412 904 987 308 242 958 839 314 573 -10000 819 991 454 403 967 548 443 407 143 -10000 873 477 239 374 743 534 206 980 308 -10000 965 491 722 398 29 860 682 987 95 -10000 877 615 830 331 458 275 519 155 647 -10000 319 254 463 335 705 616 19 661 773 -10000 656 216 93 245 422 730 286 457 214 -10000 632 556 285 595 970 690 122 696 979 -10000 894 605 854 692 666 465 67 906 836 -10000 422 791 526 30 510 531 361 614 883 -10000 401 794 737 401 479 420 179 19 891 -10000 47 0 654 527 390 630 313 324 259 -10000 649 850 626 216 26 724 24 20 942 -10000 838 518 965 797 366 757 383 131 151 -10000 606 477 715 893 262 588 252 766 256 -10000 260 783 542 303 58 684 355 142 114 -10000 811 119 302 447 646 633 143 173 858 -10000 471 988 130 530 637 733 989 280 37 -10000 817 460 957 400 462 132 145 903 109 -10000 925 135 551 487 869 663 276 114 288 -10000 937 311 856 425 797 516 757 527 37 -10000 785 455 25 51 663 196 911 0 205 -10000 286 249 267 82 609 971 22 774 86 -10000 449 846 970 416 845 51 647 171 375 -10000 478 128 665 916 623 692 600 830 14 -10000 689 705 663 29 932 806 366 601 691 -10000 707 352 490 179 480 680 419 332 432 -10000 460 146 624 275 742 149 129 858 346 -10000 765 300 869 529 35 409 374 264 68 -10000 313 149 858 823 13 969 307 769 143 -10000 374 2 957 270 724 797 521 366 465 -10000 457 741 87 303 149 657 290 944 338 -10000 277 839 151 834 659 57 218 741 774 -10000 333 231 404 360 96 565 891 120 640 -10000 950 736 155 2 463 107 138 310 93 -10000 925 723 37 62 289 943 630 578 351 -10000 518 597 817 293 162 370 850 13 172 -10000 939 720 993 872 21 211 617 931 885 -10000 440 621 902 618 19 214 943 287 690 -10000 565 560 42 843 244 516 69 168 402 -10000 862 962 79 479 22 141 852 312 209 -10000 640 761 105 655 634 180 829 951 530 -10000 538 245 441 639 404 94 88 878 255 -10000 368 210 496 650 857 14 629 492 561 -10000 74 440 97 514 645 697 224 656 554 -10000 602 680 893 215 467 74 976 573 334 -10000 630 692 268 211 787 792 887 429 730 -10000 971 993 672 497 153 253 633 392 682 -10000 600 931 841 792 252 569 798 681 303 -10000 718 300 503 398 671 252 761 440 989 -10000 333 553 569 891 15 314 836 22 734 -10000 63 971 926 590 441 958 825 918 636 -10000 178 506 249 449 203 164 741 222 1000 -10000 42 775 227 176 512 389 364 664 304 -10000 321 104 93 39 44 284 420 120 598 -10000 781 782 327 195 619 532 840 907 381 -10000 639 261 202 282 219 778 313 171 221 -10000 612 339 930 192 92 552 405 463 307 -10000 579 277 699 643 30 652 481 349 611 -10000 91 289 59 94 683 751 587 633 82 -10000 335 126 563 416 41 385 739 492 320 -10000 764 412 555 291 524 647 123 961 861 -10000 425 719 38 593 887 684 902 415 246 -10000 287 846 318 719 474 653 300 728 688 -10000 37 149 583 249 713 997 57 346 66 -10000 366 377 590 950 366 691 991 327 98 -10000 965 652 682 81 408 564 174 225 439 -10000 953 355 740 562 761 190 949 94 387 -10000 875 648 357 320 193 717 576 520 486 -10000 645 499 838 218 759 908 397 679 625 -10000 830 274 833 533 474 889 425 0 629 -10000 649 734 737 822 396 81 32 956 456 -10000 352 450 425 830 742 915 226 294 632 -10000 609 664 695 658 295 577 842 204 526 -10000 449 434 885 743 848 987 177 593 995 -10000 152 549 884 699 145 727 953 797 531 -10000 394 101 422 84 896 622 284 758 379 -10000 526 182 885 478 875 398 576 472 908 -10000 676 368 788 600 859 540 334 247 145 -10000 406 367 520 68 492 569 144 301 411 -10000 248 896 329 907 191 590 996 158 535 -10000 926 107 763 121 772 536 681 206 652 -10000 705 884 562 41 400 624 759 496 792 -10000 645 41 404 666 42 586 263 180 672 -10000 964 659 702 797 31 576 252 581 689 -10000 271 686 486 981 757 562 741 29 604 -10000 659 745 551 663 808 453 595 808 155 -10000 925 947 274 264 290 299 968 757 593 -10000 395 216 187 469 53 738 345 566 41 -10000 302 873 276 869 362 839 284 887 357 -10000 632 742 442 940 815 308 806 369 837 -10000 896 463 247 819 217 225 681 301 349 -10000 498 444 570 521 574 737 359 197 213 -10000 593 50 857 4 961 968 177 365 566 -10000 924 965 549 176 938 73 0 143 422 -10000 148 932 409 602 636 629 572 884 729 -10000 910 526 317 759 83 710 813 847 509 -10000 711 741 984 441 299 751 713 387 999 -10000 731 520 409 235 460 527 170 707 380 -10000 706 192 933 235 748 694 966 48 308 -10000 892 60 822 373 100 472 179 768 755 -10000 805 972 770 557 775 907 129 106 427 -10000 818 312 502 992 706 598 234 956 175 -10000 495 639 962 402 373 234 829 792 199 -10000 490 204 215 391 482 163 937 941 831 -10000 30 947 103 753 306 370 969 178 329 -10000 236 408 327 852 600 163 972 281 122 -10000 417 264 519 75 158 992 210 194 182 -10000 603 189 879 952 236 790 975 553 944 -10000 336 229 0 210 426 754 242 163 665 -10000 955 395 177 884 758 192 384 403 6 -10000 848 912 969 641 931 923 925 738 340 -10000 169 663 762 573 410 208 461 519 569 -10000 394 990 459 237 802 677 987 516 775 -10000 703 634 865 125 766 953 38 192 276 -10000 904 39 358 560 935 216 116 993 388 -10000 195 330 542 316 408 175 279 202 921 -10000 105 526 150 843 833 184 387 566 496 -10000 489 193 142 531 848 280 315 391 241 -10000 450 408 291 690 694 779 735 724 266 -10000 139 705 903 701 671 909 399 751 89 -10000 109 400 851 659 892 512 530 633 877 -10000 926 371 247 786 271 674 877 776 391 -10000 396 493 157 117 205 685 605 396 117 -10000 755 638 507 135 358 332 583 875 852 -10000 414 155 400 546 738 844 104 966 940 -10000 109 897 970 423 734 522 565 931 73 -10000 279 820 820 153 449 144 408 857 386 -10000 194 194 545 721 676 358 476 352 4 -10000 935 480 641 950 955 725 182 815 665 -10000 907 719 773 243 275 846 899 201 487 -10000 377 503 494 195 18 79 402 798 684 -10000 120 592 45 497 207 328 606 4 752 -10000 10 362 24 534 463 636 738 330 951 -10000 862 25 680 220 622 723 96 976 79 -10000 631 230 465 919 278 978 359 947 846 -10000 555 584 620 656 747 802 954 947 307 -10000 832 901 437 808 705 984 313 140 863 -10000 227 370 493 498 987 918 771 833 808 -10000 954 449 640 97 953 498 793 557 754 -10000 89 976 281 365 279 336 220 352 548 -10000 223 489 765 883 804 12 187 827 864 -10000 283 578 806 733 299 883 361 163 662 -10000 421 95 364 63 551 451 854 415 591 -10000 932 655 216 36 10 162 454 211 195 -10000 339 682 916 748 326 613 380 461 640 -10000 182 760 109 499 346 727 24 135 955 -10000 229 191 243 653 82 52 754 670 932 -10000 622 545 182 630 615 923 726 292 284 -10000 715 407 343 57 20 571 805 277 527 -10000 227 318 215 448 888 414 194 32 422 -10000 81 460 394 455 510 170 310 655 883 -10000 729 664 405 738 462 782 643 928 444 -10000 157 410 646 79 225 573 443 547 56 -10000 294 255 416 362 613 929 571 346 401 -10000 342 49 915 505 972 467 327 57 823 -10000 142 796 385 86 274 575 603 793 804 -10000 376 43 287 893 735 724 385 829 507 -10000 306 207 937 891 668 121 187 692 746 -10000 693 938 784 490 263 223 266 318 740 -10000 728 154 993 649 479 186 194 269 921 -10000 521 598 534 364 546 438 369 589 958 -10000 996 853 363 110 736 143 906 0 175 -10000 314 401 218 400 877 438 276 235 238 -10000 125 845 399 963 683 442 337 943 644 -10000 700 741 993 641 682 607 992 551 9 -10000 264 931 291 911 523 489 202 109 866 -10000 668 69 770 932 369 469 60 845 764 -10000 362 413 964 271 504 899 713 91 98 -10000 714 663 886 226 994 376 444 274 275 -10000 834 678 261 821 488 697 481 673 755 -10000 17 971 949 786 811 161 626 841 568 -10000 849 196 289 659 863 242 411 382 719 -10000 223 165 857 740 464 820 540 868 607 -10000 873 806 887 282 763 971 125 20 234 -10000 717 543 589 269 900 756 967 582 201 -10000 329 830 687 769 320 655 318 148 49 -10000 441 455 992 190 827 366 28 598 614 -10000 605 824 845 364 601 838 150 885 510 -10000 618 498 431 170 748 72 700 302 294 -10000 456 793 881 276 708 862 961 831 285 -10000 424 977 413 313 756 501 721 632 779 -10000 754 213 272 683 186 658 691 978 871 -10000 78 480 683 317 574 590 708 933 78 -10000 556 876 287 805 43 3 470 834 29 -10000 415 307 119 731 133 248 240 390 623 -10000 107 19 95 314 588 788 682 83 77 -10000 257 267 799 651 686 374 351 509 55 -10000 853 612 131 285 738 23 76 375 864 -10000 92 425 155 628 56 831 655 557 568 -10000 683 744 241 672 597 809 925 497 901 -10000 557 797 761 813 512 115 139 23 405 -10000 191 12 160 211 708 665 960 88 851 -10000 37 943 719 490 132 561 708 224 511 -10000 966 300 687 926 188 579 583 551 945 -10000 329 846 674 653 781 706 309 719 541 -10000 458 266 718 195 541 196 319 830 133 -10000 84 642 600 524 754 247 195 195 263 -10000 483 628 726 909 245 277 588 871 523 -10000 133 111 624 466 749 712 524 756 858 -10000 501 51 416 39 257 58 805 309 706 -10000 223 835 865 567 830 662 465 848 180 -10000 2 534 427 42 740 103 92 382 132 -10000 781 612 302 768 790 51 100 537 173 -10000 269 52 717 392 909 644 853 334 447 -10000 908 927 491 943 399 356 132 776 152 -10000 540 884 479 512 273 971 1 312 72 -10000 170 33 299 798 58 974 524 952 674 -10000 240 371 942 325 751 43 694 88 993 -10000 225 44 701 567 630 565 705 399 289 -10000 516 91 464 148 454 21 75 154 19 -10000 769 496 758 493 276 170 324 515 313 -10000 446 479 740 568 969 953 578 262 513 -10000 93 417 483 214 319 289 637 944 798 -10000 103 747 661 349 157 279 108 317 153 -10000 856 762 173 879 256 618 96 23 335 -10000 478 897 296 591 806 446 739 671 996 -10000 387 961 574 439 851 539 222 317 76 -10000 270 825 277 513 99 431 157 526 547 -10000 200 126 315 69 673 53 335 820 632 -10000 923 865 137 559 939 391 196 581 219 -10000 331 617 416 109 892 613 84 979 719 -10000 253 198 520 324 914 676 59 571 393 -10000 956 825 675 858 855 154 485 334 772 -10000 421 459 465 302 732 729 609 455 853 -10000 277 517 167 216 928 919 168 390 185 -10000 320 356 954 694 825 466 477 835 210 -10000 770 260 274 912 654 974 829 451 6 -10000 63 149 372 85 641 438 724 759 148 -10000 912 826 237 55 918 378 428 464 145 -10000 511 253 599 906 470 623 825 618 957 -10000 19 918 931 11 365 864 186 795 496 -10000 477 323 302 608 665 350 45 450 857 -10000 132 553 254 233 406 800 945 664 727 -10000 216 987 179 302 913 585 440 386 264 -10000 880 931 93 135 482 83 142 673 273 -10000 346 971 843 279 946 522 625 745 259 -10000 622 977 37 426 756 958 713 266 293 -10000 496 391 797 938 110 862 469 841 680 -10000 443 882 377 272 193 396 561 392 666 -10000 769 857 594 868 249 841 615 945 279 -10000 372 30 212 34 837 231 266 731 103 -10000 997 745 445 363 365 169 614 814 166 -10000 297 567 524 156 239 705 151 779 600 -10000 114 93 708 663 834 310 256 638 783 -10000 357 996 592 520 837 715 590 371 666 -10000 847 322 884 96 750 772 906 988 753 -10000 602 63 656 587 392 990 490 620 909 -10000 578 819 24 702 985 375 772 176 266 -10000 352 394 467 185 528 362 225 399 834 -10000 772 916 799 294 515 574 100 987 401 -10000 385 833 363 430 412 998 783 213 452 -10000 163 248 259 509 292 236 930 214 355 -10000 396 710 707 540 345 674 309 315 259 -10000 877 37 564 250 165 970 959 603 995 -10000 366 223 986 206 415 900 606 696 455 -10000 408 29 97 590 766 539 444 931 830 -10000 808 789 245 38 300 801 566 911 615 -10000 408 709 670 885 301 964 670 608 853 -10000 138 604 588 670 335 868 246 480 514 -10000 422 942 507 58 997 479 807 597 10 -10000 464 517 831 191 186 117 304 784 5 -10000 496 478 681 128 343 907 568 174 536 -10000 92 133 748 283 631 618 949 541 893 -10000 570 898 101 779 540 998 25 448 362 -10000 297 109 89 93 70 213 987 991 147 -10000 732 238 623 823 642 744 585 575 9 -10000 105 329 870 445 945 947 452 359 345 -10000 468 532 171 499 896 12 963 996 766 -10000 557 674 20 971 216 495 875 829 597 -10000 868 443 899 539 780 158 543 563 334 -10000 590 247 169 161 767 470 648 998 370 -10000 173 780 793 952 298 785 651 165 771 -10000 407 839 230 976 774 613 725 375 268 -10000 973 120 181 746 258 17 425 887 408 -10000 283 557 947 541 292 499 932 28 682 -10000 590 661 197 254 895 514 209 402 64 -10000 695 204 863 454 899 783 81 228 549 -10000 709 808 288 658 997 403 5 460 616 -10000 422 989 456 44 352 976 748 259 971 -10000 22 579 529 517 971 353 808 552 611 -10000 815 167 792 105 710 28 931 862 395 -10000 827 72 962 839 428 706 78 623 76 -10000 871 986 448 557 919 163 972 139 642 -10000 993 231 269 272 989 272 469 854 149 -10000 746 950 820 277 987 772 500 395 24 -10000 877 334 9 388 54 782 905 198 941 -10000 492 39 307 905 543 65 650 89 535 -10000 989 104 93 588 489 340 612 470 149 -10000 732 451 615 155 154 723 490 836 970 -10000 352 963 736 432 190 385 17 543 597 -10000 473 991 409 505 748 479 890 318 168 -10000 550 865 183 385 777 857 49 127 958 -10000 799 95 461 113 728 977 593 45 968 -10000 50 438 516 268 546 664 389 279 786 -10000 725 940 979 461 494 442 938 419 106 -10000 905 599 519 199 541 760 871 463 259 -10000 109 951 941 861 945 862 159 11 281 -10000 341 647 947 362 408 27 362 64 72 -10000 404 365 333 479 460 866 336 313 473 -10000 249 92 982 456 597 96 636 552 183 -10000 129 842 810 201 547 614 986 869 547 -10000 556 929 308 451 871 840 703 281 920 -10000 582 64 177 159 635 487 820 636 134 -10000 868 408 461 358 845 78 526 354 102 -10000 320 49 543 237 542 803 318 269 912 -10000 144 19 531 188 903 457 943 933 47 -10000 652 157 636 873 316 602 809 44 861 -10000 705 742 156 810 898 679 806 225 102 -10000 812 381 644 776 941 272 148 984 910 -10000 570 297 687 993 537 667 557 981 845 -10000 886 605 54 389 662 621 193 634 467 -10000 204 269 712 952 380 646 169 535 954 -10000 53 995 696 490 476 765 174 395 487 -10000 805 611 913 792 897 852 885 438 474 -10000 871 100 850 810 672 43 786 822 172 -10000 531 437 23 140 753 748 162 613 15 -10000 303 808 11 214 540 820 602 440 766 -10000 803 245 648 760 128 669 955 737 312 -10000 882 475 28 224 672 831 229 651 937 -10000 844 600 334 655 426 603 104 635 95 -10000 688 662 22 372 859 665 756 299 264 -10000 501 186 277 186 839 890 292 706 13 -10000 896 379 306 601 350 434 170 13 849 -10000 547 747 546 110 996 263 88 217 692 -10000 818 476 674 468 936 2 909 986 691 -10000 322 424 255 171 605 966 324 65 75 -10000 373 672 371 260 57 339 745 699 351 -10000 761 477 34 362 862 551 171 119 430 -10000 806 368 843 474 757 859 877 304 51 -10000 992 415 946 214 537 38 762 435 932 -10000 257 131 31 484 395 601 805 336 825 -10000 149 233 778 19 662 910 570 867 503 -10000 840 529 620 589 120 185 949 876 20 -10000 378 343 84 34 508 801 964 23 714 -10000 545 493 128 44 880 274 957 20 771 -10000 420 235 748 714 300 389 500 889 64 -10000 327 88 235 131 468 48 439 124 555 -10000 128 469 507 47 913 915 516 666 232 -10000 483 595 809 532 728 837 152 142 974 -10000 898 671 688 22 124 384 640 623 247 -10000 187 638 749 709 624 498 983 641 604 -10000 155 969 808 214 94 831 173 640 386 -10000 717 516 86 533 621 887 376 210 880 -10000 361 446 701 695 604 435 95 637 754 -10000 883 54 101 475 132 262 948 225 991 -10000 921 311 644 715 133 572 777 280 721 -10000 754 157 693 322 377 285 503 19 789 -10000 196 715 604 250 155 376 202 141 903 -10000 908 530 765 18 265 576 95 898 938 -10000 979 773 806 994 89 103 701 133 655 -10000 548 958 144 521 461 600 182 361 740 -10000 810 826 165 304 327 953 68 70 345 -10000 398 734 369 268 627 452 333 971 979 -10000 668 985 575 391 748 100 350 459 447 -10000 134 193 2 535 756 133 416 769 279 -10000 739 190 966 195 512 546 715 960 761 -10000 959 38 240 747 668 778 20 495 609 -10000 924 572 443 219 821 347 564 582 930 -10000 29 201 448 861 579 157 116 495 996 -10000 263 976 282 915 470 440 363 887 531 -10000 778 499 366 266 9 473 87 672 607 -10000 475 591 809 447 509 534 1000 732 291 -10000 301 185 667 862 32 377 474 765 103 -10000 783 381 529 213 929 743 845 715 561 -10000 414 249 130 378 83 855 512 875 811 -10000 855 886 131 734 352 330 805 902 220 -10000 379 157 524 130 357 743 784 400 317 -10000 935 529 266 419 302 610 988 753 673 -10000 418 536 95 886 343 62 254 568 326 -10000 315 270 968 906 57 281 579 265 575 -10000 82 871 456 54 27 562 868 412 632 -10000 71 318 740 50 321 54 80 194 934 -10000 837 312 836 12 3 239 621 359 23 -10000 345 916 773 282 928 698 313 64 32 -10000 175 480 723 924 135 508 930 371 154 -10000 815 201 708 662 878 57 909 285 626 -10000 652 752 847 732 378 367 86 733 251 -10000 854 108 993 563 887 892 858 772 718 -10000 734 982 257 144 824 691 317 957 772 -10000 800 378 557 513 922 25 556 863 224 -10000 172 588 336 583 196 644 997 751 911 -10000 573 454 584 111 485 952 891 77 740 -10000 349 999 734 376 415 552 812 356 560 -10000 187 388 468 585 336 479 186 958 492 -10000 501 205 91 959 828 64 347 364 437 -10000 511 736 64 897 955 867 273 178 158 -10000 1 392 137 801 113 203 348 632 720 -10000 296 953 658 685 650 16 255 602 557 -10000 123 7 396 286 628 659 853 0 762 -10000 383 863 850 258 29 880 835 32 27 -10000 841 173 648 287 852 209 334 387 944 -10000 72 144 813 659 179 341 417 389 754 -10000 262 635 927 176 360 509 825 453 561 -10000 739 377 951 974 269 187 756 916 630 -10000 327 620 787 549 119 574 425 400 167 -10000 228 737 49 597 319 422 75 859 348 -10000 353 671 556 730 47 493 198 426 866 -10000 803 361 127 600 147 633 241 253 788 -10000 901 837 711 957 149 720 872 488 276 -10000 670 783 475 791 643 789 177 14 718 -10000 809 437 518 502 113 402 847 692 437 -10000 941 450 306 119 952 603 481 135 914 -10000 149 211 414 821 251 982 944 479 363 -10000 594 18 34 897 770 650 651 145 131 -10000 549 516 718 911 50 811 875 762 405 -10000 865 6 620 310 450 226 590 345 421 -10000 605 100 289 163 886 65 403 273 773 -10000 493 162 480 232 592 695 157 682 649 -10000 104 265 234 706 519 151 272 143 150 -10000 128 783 570 898 369 300 75 141 592 -10000 870 553 358 410 26 908 506 702 247 -10000 68 205 965 756 241 790 416 736 859 -10000 175 537 518 956 903 91 786 757 210 -10000 600 291 619 51 708 686 116 174 803 -10000 989 335 411 526 122 91 885 927 787 -10000 193 978 969 630 823 188 915 632 594 -10000 409 389 471 22 365 17 77 149 810 -10000 534 354 26 327 651 812 608 226 182 -10000 845 780 744 356 346 735 294 115 585 -10000 855 326 232 159 578 903 120 166 247 -10000 59 453 532 268 984 538 865 12 893 -10000 933 122 90 670 603 718 327 395 965 -10000 489 459 493 720 753 33 144 490 564 -10000 623 808 570 242 648 323 459 96 135 -10000 961 913 23 227 311 235 728 70 682 -10000 885 131 941 933 679 375 866 31 342 -10000 972 993 784 328 558 106 203 269 720 -10000 410 727 618 194 672 238 652 144 391 -10000 73 688 576 889 540 436 136 865 598 -10000 814 39 667 387 244 688 753 500 539 -10000 390 536 571 766 493 116 255 843 615 -10000 349 264 297 229 960 438 865 587 525 -10000 489 753 291 137 260 851 73 362 325 -10000 776 119 691 271 364 461 346 455 861 -10000 299 618 984 366 280 454 285 814 159 -10000 58 642 901 719 216 905 410 766 275 -10000 339 587 744 853 891 372 781 698 140 -10000 594 645 161 257 921 910 462 418 964 -10000 646 135 886 390 16 294 120 299 681 -10000 408 40 610 11 363 613 855 874 437 -10000 280 1000 722 68 945 771 651 457 414 -10000 805 650 904 364 19 823 843 11 244 -10000 375 387 966 479 465 428 954 550 496 -10000 814 581 683 270 530 537 440 184 290 -10000 911 849 948 959 489 212 408 828 517 -10000 919 822 392 526 925 863 745 113 925 -10000 14 860 636 552 87 87 394 899 726 -10000 128 820 167 178 692 790 936 965 554 -10000 70 443 254 575 298 601 649 841 111 -10000 705 599 587 462 493 94 746 359 399 -10000 166 935 771 4 603 354 356 267 63 -10000 895 378 285 735 691 206 327 972 605 -10000 669 600 884 959 438 152 671 338 351 -10000 100 952 865 991 997 623 387 874 39 -10000 431 704 422 874 456 252 138 73 380 -10000 885 325 414 777 379 991 389 323 868 -10000 800 243 72 668 210 75 520 482 273 -10000 550 56 193 857 683 390 9 350 216 -10000 25 15 515 65 95 664 890 173 619 -10000 168 242 429 565 289 327 189 263 991 -10000 766 278 95 15 863 174 158 370 265 -10000 634 655 738 456 387 9 354 360 823 -10000 593 34 451 97 89 450 195 868 216 -10000 922 467 572 671 974 606 238 919 575 -10000 294 218 810 484 420 966 637 742 583 -10000 676 996 825 408 219 592 834 629 874 -10000 302 627 381 71 150 493 572 351 787 -10000 833 904 370 520 943 779 572 881 25 -10000 377 17 727 372 114 167 912 791 776 -10000 949 389 435 857 753 325 543 64 988 -10000 332 498 528 516 899 465 941 606 50 -10000 798 773 154 689 582 684 549 753 450 -10000 613 824 302 265 270 917 594 280 543 -10000 717 490 986 143 360 19 417 540 111 -10000 309 464 824 866 154 519 628 189 954 -10000 763 593 794 503 668 671 511 858 707 -10000 146 769 36 20 835 765 34 101 356 -10000 543 357 850 473 909 574 749 810 651 -10000 750 929 952 190 970 564 488 253 76 -10000 519 605 481 53 623 980 15 601 430 -10000 588 60 32 195 150 330 31 107 822 -10000 217 694 336 616 53 719 924 869 224 -10000 314 971 942 13 807 462 171 290 260 -10000 742 782 116 301 467 84 977 349 106 -10000 389 208 222 920 850 704 350 488 952 -10000 499 176 168 221 892 130 276 517 157 -10000 659 779 648 238 839 714 443 872 832 -10000 983 140 670 981 31 412 333 539 297 -10000 791 454 954 521 560 369 150 181 794 -10000 837 200 278 885 452 680 403 297 647 -10000 125 317 683 233 324 852 720 449 878 -10000 46 19 71 733 629 360 458 752 673 -10000 466 646 103 45 162 424 703 658 351 -10000 855 167 935 942 236 958 835 255 452 -10000 480 647 853 575 866 632 346 741 428 -10000 110 659 222 897 12 495 713 232 503 -10000 976 414 242 79 384 459 775 6 577 -10000 102 189 566 41 977 887 377 836 636 -10000 393 620 598 853 743 767 328 872 618 -10000 510 293 772 458 4 697 886 851 817 -10000 988 74 325 919 157 46 543 199 393 -10000 428 953 253 758 205 657 982 220 214 -10000 233 947 6 989 57 313 187 886 447 -10000 674 451 396 489 794 244 253 366 612 -10000 762 762 433 587 576 506 557 613 954 -10000 925 548 582 571 139 916 282 110 475 -10000 195 919 283 549 574 53 652 224 901 -10000 107 936 844 436 380 59 596 489 903 -10000 186 78 112 964 354 662 300 871 408 -10000 642 435 473 605 827 757 495 333 753 -10000 52 434 198 642 202 390 779 436 144 -10000 666 559 410 614 140 157 527 412 125 -10000 529 18 933 999 290 495 350 774 265 -10000 349 398 90 949 679 153 533 201 538 -10000 791 537 896 567 797 685 151 232 745 -10000 186 604 251 284 921 920 395 237 835 -10000 122 122 784 107 612 239 517 889 973 -10000 276 778 701 899 815 931 340 458 688 -10000 9 19 228 219 694 421 960 845 752 -10000 196 994 817 585 108 121 262 678 616 -10000 861 837 392 35 708 159 652 126 547 -10000 692 75 920 620 312 537 36 763 112 -10000 62 610 525 388 301 49 465 588 354 -10000 814 950 49 257 684 473 2 301 119 -10000 55 149 815 759 121 986 983 908 733 -10000 913 1 316 204 226 976 590 523 85 -10000 487 843 813 357 833 799 659 556 372 -10000 865 643 707 843 178 463 858 357 480 -10000 988 766 913 926 789 269 189 319 590 -10000 601 728 618 599 560 772 326 480 915 -10000 652 443 780 400 93 479 614 0 109 -10000 148 526 828 536 374 238 184 120 619 -10000 340 941 352 716 991 634 938 547 539 -10000 138 894 654 74 692 172 701 977 662 -10000 764 84 337 410 173 419 410 986 733 -10000 274 322 392 172 460 95 516 606 692 -10000 851 683 417 550 787 850 912 681 456 -10000 643 675 65 828 260 0 5 500 391 -10000 92 421 779 353 429 298 755 724 773 -10000 504 387 915 826 547 106 888 728 446 -10000 489 404 587 836 617 662 376 202 508 -10000 229 748 208 169 381 503 266 218 156 -10000 316 804 610 643 135 971 104 428 9 -10000 786 753 681 63 614 639 927 43 388 -10000 687 391 856 254 312 611 885 199 612 -10000 985 626 59 704 180 712 120 29 685 -10000 944 57 666 552 806 804 934 606 932 -10000 554 137 60 264 220 869 684 729 337 -10000 926 102 959 704 202 651 941 431 228 -10000 44 892 77 94 757 940 770 436 155 -10000 785 917 757 306 279 532 124 727 890 -10000 341 18 560 308 578 258 922 590 861 -10000 401 838 959 615 847 786 974 430 611 -10000 908 730 687 440 363 28 435 172 317 -10000 163 451 744 622 619 482 671 927 442 -10000 465 769 332 853 221 266 283 758 786 -10000 880 302 289 781 196 575 746 144 203 -10000 89 737 716 689 327 804 719 966 226 -10000 895 246 213 758 918 242 478 872 777 -10000 908 377 639 290 108 713 778 135 451 -10000 701 163 680 179 115 108 738 546 679 -10000 252 412 148 973 429 448 495 741 12 -10000 384 788 298 559 393 298 263 208 253 -10000 961 782 176 602 798 518 527 360 557 -10000 760 263 156 833 359 709 752 373 915 -10000 269 926 449 766 781 675 850 960 742 -10000 493 670 310 919 81 208 242 908 854 -10000 611 168 735 273 436 574 660 829 304 -10000 229 992 712 445 673 174 494 865 157 -10000 861 115 583 630 781 990 1000 92 832 -10000 905 797 590 328 819 746 679 292 851 -10000 835 952 553 964 203 370 43 688 751 -10000 978 146 407 530 347 678 207 389 26 -10000 164 452 537 259 810 369 119 225 872 -10000 399 859 646 465 893 484 387 55 907 -10000 489 341 174 70 258 514 897 366 741 -10000 9 956 238 697 585 348 450 518 186 -10000 711 136 750 422 976 863 77 419 616 -10000 585 801 511 843 673 64 310 459 9 -10000 325 139 69 977 70 624 169 691 626 -10000 81 683 673 665 14 986 926 852 68 -10000 642 499 378 274 554 848 601 584 239 -10000 131 186 911 214 698 740 529 168 769 -10000 697 885 689 572 944 356 282 209 533 -10000 649 749 998 437 944 982 219 741 980 -10000 431 56 995 639 311 137 970 106 430 -10000 529 934 887 872 334 529 108 647 309 -10000 79 58 424 7 234 256 535 193 43 -10000 510 463 361 201 379 993 896 238 711 -10000 441 488 883 65 664 576 927 921 533 -10000 829 327 711 245 512 99 374 711 454 -10000 188 355 167 485 905 292 662 396 277 -10000 641 723 558 223 620 915 813 469 126 -10000 292 269 551 829 508 342 162 22 768 -10000 289 881 609 90 368 428 26 430 887 -10000 695 776 230 969 557 806 508 395 601 -10000 416 154 861 874 234 276 487 301 137 -10000 236 297 987 565 576 122 41 570 401 -10000 455 306 561 116 843 261 233 189 601 -10000 922 546 481 862 493 481 233 307 528 -10000 331 867 310 408 779 171 605 390 558 -10000 793 650 746 87 914 62 903 665 543 -10000 0 25 532 298 448 734 153 618 260 -10000 756 478 150 677 610 564 256 638 766 -10000 491 932 55 714 114 849 655 879 108 -10000 771 240 95 742 815 447 647 889 205 -10000 314 26 230 154 133 335 155 609 606 -10000 993 85 236 148 753 98 894 25 932 -10000 910 715 982 977 632 151 16 89 158 -10000 412 463 752 657 876 610 331 352 676 -10000 753 571 535 16 631 248 228 304 83 -10000 826 212 578 382 640 723 953 216 629 -10000 647 624 317 863 907 445 551 732 927 -10000 371 736 218 200 507 190 405 641 154 -10000 41 629 974 123 898 822 610 213 448 -10000 388 106 528 714 173 865 780 696 670 -10000 615 16 770 596 191 396 267 481 731 -10000 364 723 412 284 256 621 785 681 465 -10000 796 305 966 539 420 796 323 14 659 -10000 891 865 914 817 871 43 528 454 729 -10000 292 145 400 26 507 264 109 524 668 -10000 940 525 30 850 897 962 383 500 819 -10000 189 710 497 514 162 972 72 12 752 -10000 430 845 906 208 824 404 925 362 594 -10000 488 334 406 905 474 400 962 335 990 -10000 802 100 684 750 256 345 142 814 793 -10000 673 723 83 530 209 918 47 446 311 -10000 254 998 938 484 708 526 115 205 876 -10000 634 952 504 217 742 425 871 800 218 -10000 229 31 459 121 336 318 44 434 432 -10000 290 61 951 70 912 3 397 833 611 -10000 909 547 914 853 557 534 630 708 358 -10000 816 713 360 730 255 377 461 948 694 -10000 499 904 81 917 97 935 818 601 116 -10000 594 623 575 242 487 684 301 686 592 -10000 840 209 253 877 802 246 183 382 214 -10000 262 851 479 280 333 707 664 273 505 -10000 908 960 675 710 944 674 906 278 858 -10000 920 509 823 602 291 703 331 915 32 -10000 287 521 748 346 2 172 910 893 864 -10000 335 207 903 137 512 381 328 428 543 -10000 56 365 501 949 918 112 893 966 435 -10000 950 947 997 877 519 982 790 880 723 -10000 536 184 802 836 943 787 360 863 668 -10000 214 150 818 944 582 457 741 117 462 -10000 1000 202 988 28 833 38 528 120 961 -10000 352 270 3 58 291 161 959 822 141 -10000 385 353 628 226 461 317 4 984 773 -10000 226 623 310 650 938 143 221 990 549 -10000 34 622 664 670 214 81 251 95 281 -10000 135 588 218 561 243 972 396 592 349 -10000 739 769 996 149 743 144 187 231 833 -10000 107 17 621 346 191 261 361 562 22 -10000 641 272 218 331 770 475 32 351 742 -10000 483 554 609 342 260 686 763 800 172 -10000 892 959 622 86 38 406 135 482 501 -10000 77 113 548 225 624 813 887 236 170 -10000 16 242 560 473 908 503 94 900 545 -10000 925 541 868 568 953 900 696 882 364 -10000 6 162 711 151 532 258 253 306 661 -10000 583 457 209 468 782 160 94 873 394 -10000 664 377 524 549 475 220 162 333 782 -10000 652 229 734 454 39 325 212 685 675 -10000 119 418 399 626 328 844 327 923 183 -10000 497 709 784 927 647 793 363 453 446 -10000 814 347 892 298 855 786 312 368 989 -10000 53 879 153 675 570 624 781 494 662 -10000 433 375 944 390 659 821 17 499 665 -10000 130 840 89 587 883 391 715 20 361 -10000 589 612 912 721 899 832 178 309 755 -10000 609 353 657 544 716 301 753 573 957 -10000 209 338 745 487 997 671 91 303 285 -10000 699 55 903 139 129 482 736 203 129 -10000 457 447 969 231 293 684 689 551 929 -10000 833 422 619 71 260 975 942 388 342 -10000 401 277 111 298 147 734 183 723 981 -10000 531 642 565 709 208 223 955 590 799 -10000 520 105 301 450 522 928 541 0 492 -10000 365 291 523 890 827 917 11 418 908 -10000 813 139 933 376 465 163 773 923 879 -10000 565 14 189 622 685 802 340 69 512 -10000 854 421 9 864 976 657 895 466 512 -10000 113 410 347 29 706 281 563 645 83 -10000 858 507 258 339 689 159 283 371 191 -10000 992 974 703 786 650 629 328 997 878 -10000 827 309 279 335 253 476 425 967 115 -10000 920 484 548 43 42 153 551 631 63 -10000 987 35 620 520 115 191 399 979 705 -10000 780 260 152 32 551 555 135 419 416 -10000 708 186 37 510 922 87 833 78 17 -10000 660 336 643 120 479 733 567 517 657 -10000 545 450 498 438 776 808 671 988 772 -10000 588 318 325 695 170 952 815 989 56 -10000 730 47 684 807 251 942 544 513 242 -10000 180 187 772 644 681 652 383 748 429 -10000 256 942 220 716 733 437 28 379 618 -10000 344 569 109 909 414 335 147 907 851 -10000 106 606 13 878 934 951 870 970 60 -10000 593 618 237 956 867 356 95 337 370 -10000 347 909 768 509 907 155 416 102 912 -10000 18 680 524 527 868 815 133 413 667 -10000 984 425 597 868 537 787 522 361 287 -10000 860 141 883 562 221 690 32 100 613 -10000 750 453 108 620 259 64 121 438 409 -10000 949 798 728 407 853 505 674 239 623 -10000 963 778 900 975 39 793 421 865 417 -10000 595 266 351 404 3 234 166 497 130 -10000 282 939 342 505 959 185 58 354 269 -10000 499 323 485 185 489 100 807 195 596 -10000 80 45 239 692 721 238 99 175 118 -10000 918 27 971 952 607 400 670 582 961 -10000 641 134 302 346 308 627 985 757 870 -10000 487 483 752 761 90 866 37 298 924 -10000 769 704 483 469 866 569 395 683 397 -10000 592 484 900 501 936 485 595 45 720 -10000 16 280 897 636 321 915 360 946 796 -10000 826 372 861 125 804 548 914 78 491 -10000 934 441 653 842 162 408 195 994 979 -10000 5 279 41 467 901 201 627 910 928 -10000 664 188 358 135 537 427 905 991 996 -10000 120 891 614 328 511 875 410 976 9 -10000 731 269 820 288 913 144 636 445 668 -10000 959 645 245 878 825 311 960 668 717 -10000 928 576 402 37 411 63 201 74 488 -10000 128 27 665 812 498 423 223 151 132 -10000 843 291 286 628 388 130 422 755 761 -10000 910 920 700 623 897 254 78 249 355 -10000 867 674 124 883 852 115 282 899 121 -10000 171 162 259 883 101 315 805 224 789 -10000 592 79 749 526 928 990 367 253 149 -10000 962 821 952 909 392 838 904 975 843 -10000 309 969 117 680 115 654 882 842 523 -10000 385 307 265 77 858 736 90 518 328 -10000 796 20 367 398 632 321 839 969 71 -10000 65 540 424 392 396 893 318 97 772 -10000 745 866 875 568 541 288 146 633 603 -10000 187 56 350 210 205 895 422 896 503 -10000 386 891 265 493 968 753 326 889 245 -10000 894 903 917 452 672 471 30 99 883 -10000 815 461 484 36 855 369 86 159 772 -10000 556 955 659 865 973 671 66 515 668 -10000 293 158 727 445 110 196 84 313 364 -10000 311 350 249 114 890 150 751 118 979 -10000 304 162 371 784 339 777 456 336 712 -10000 384 165 949 780 347 914 572 860 552 -10000 262 828 344 244 365 646 588 862 570 -10000 827 57 268 758 144 808 37 440 271 -10000 830 205 189 63 97 391 569 801 172 -10000 646 346 464 991 180 44 866 452 275 -10000 553 247 863 56 467 11 513 234 764 -10000 641 945 901 236 381 431 716 504 112 -10000 647 375 450 23 560 6 66 741 699 -10000 89 585 721 650 366 174 258 843 317 -10000 547 983 455 319 650 565 8 178 489 -10000 55 849 356 375 871 303 88 424 536 -10000 57 29 681 107 494 831 904 928 935 -10000 219 542 196 197 200 354 47 830 633 -10000 883 131 524 352 144 590 636 685 439 -10000 409 804 999 148 522 868 2 811 399 -10000 343 397 13 41 921 906 792 599 308 -10000 638 894 71 449 860 269 552 406 606 -10000 640 774 244 579 514 928 598 532 466 -10000 683 693 576 203 316 251 18 249 360 -10000 511 869 229 504 630 565 452 140 913 -10000 534 813 880 512 887 758 531 628 335 -10000 504 626 704 24 660 682 566 582 808 -10000 84 822 50 235 125 779 913 390 358 -10000 185 182 234 380 366 813 778 68 150 -10000 363 370 826 664 937 321 796 306 404 -10000 386 926 811 566 495 723 486 760 984 -10000 922 290 264 399 414 1 707 243 788 -10000 789 292 753 318 850 597 284 386 500 -10000 914 380 942 393 672 982 658 285 984 -10000 997 425 844 556 527 492 913 928 289 -10000 693 214 727 93 778 99 465 607 556 -10000 773 893 1000 491 371 217 778 595 978 -10000 493 663 124 928 803 59 357 21 701 -10000 901 305 317 793 109 800 534 202 890 -10000 299 533 310 46 79 939 662 320 286 -10000 757 483 641 181 10 725 454 938 312 -10000 643 945 728 161 772 609 87 678 869 -10000 431 152 968 579 912 420 393 26 510 -10000 642 259 853 510 566 670 698 818 430 -10000 194 399 354 120 977 287 144 368 295 -10000 212 769 868 690 372 11 382 422 622 -10000 702 973 266 340 748 85 229 993 939 -10000 411 794 431 994 963 222 13 721 571 -10000 302 216 437 651 306 999 682 992 391 -10000 30 664 113 146 939 750 789 337 795 -10000 885 126 364 713 314 278 108 704 915 -10000 784 133 613 513 928 72 634 660 352 -10000 853 358 635 191 20 919 725 301 567 -10000 177 942 158 744 543 269 690 58 874 -10000 775 469 182 527 286 254 510 654 447 -10000 816 834 616 664 273 864 98 301 48 -10000 299 458 495 809 401 221 940 958 339 -10000 233 823 850 498 214 949 936 190 213 -10000 122 553 863 995 13 961 296 736 422 -10000 620 343 686 518 307 62 964 960 452 -10000 598 403 914 570 724 573 543 80 109 -10000 889 361 746 657 260 920 74 521 877 -10000 466 416 507 508 433 707 757 79 47 -10000 336 543 427 203 844 226 762 441 951 -10000 220 34 829 240 493 406 753 127 1 -10000 9 50 485 953 755 234 40 87 357 -10000 112 672 205 406 652 351 394 67 418 -10000 745 181 306 378 219 476 249 472 61 -10000 862 840 512 425 753 327 75 693 13 -10000 205 422 159 227 269 953 962 587 519 -10000 857 184 662 182 269 168 688 511 370 -10000 956 158 728 459 333 483 13 22 778 -10000 31 850 840 323 208 206 786 273 361 -10000 543 371 641 573 34 577 947 90 684 -10000 850 736 491 925 156 303 625 792 340 -10000 909 848 399 292 311 829 298 99 609 -10000 410 528 684 207 424 162 863 405 730 -10000 860 642 533 915 10 479 19 961 671 -10000 276 731 802 243 285 287 803 447 629 -10000 951 171 532 649 672 427 259 719 814 -10000 255 936 619 826 594 372 905 937 363 -10000 887 421 74 37 768 699 794 523 700 -10000 109 680 1000 669 85 999 298 748 289 -10000 222 667 94 164 258 604 987 108 541 -10000 168 649 891 628 387 872 785 433 893 -10000 449 20 358 438 302 471 364 872 628 -10000 366 410 19 86 993 375 516 622 374 -10000 574 759 971 340 433 858 647 354 808 -10000 866 360 771 195 83 562 692 717 526 -10000 787 738 432 238 565 602 320 498 643 -10000 510 29 15 711 931 94 396 810 305 -10000 840 306 480 822 827 303 774 942 979 -10000 664 754 103 806 519 39 434 850 2 -10000 21 258 237 304 545 50 73 674 865 -10000 594 121 480 789 128 173 220 985 937 -10000 330 620 735 287 729 772 678 50 560 -10000 900 445 237 919 418 489 128 250 979 -10000 746 500 144 499 305 476 138 277 758 -10000 169 189 892 532 631 464 636 246 120 -10000 924 897 736 684 627 593 385 674 709 -10000 851 363 388 769 297 711 940 254 321 -10000 758 115 469 237 785 326 489 514 239 -10000 387 978 412 16 480 664 110 678 180 -10000 968 646 68 242 653 511 173 348 294 -10000 113 887 981 739 613 972 489 809 691 -10000 537 294 108 386 961 820 36 870 359 -10000 245 803 492 73 326 175 914 558 603 -10000 257 870 887 361 389 44 87 682 771 -10000 172 946 588 220 314 299 100 991 864 -10000 867 10 421 397 918 134 182 550 676 -10000 506 284 74 385 877 907 388 876 398 -10000 63 208 114 31 654 741 505 353 101 -10000 665 283 329 635 639 531 786 588 750 -10000 958 235 202 475 969 897 254 320 204 -10000 902 350 778 24 943 18 509 598 510 -10000 139 627 698 14 575 733 610 384 66 -10000 767 516 218 350 101 876 830 196 364 -10000 958 1000 593 978 372 947 637 691 369 -10000 939 448 438 57 155 780 564 904 684 -10000 326 138 145 676 120 190 632 477 144 -10000 557 43 519 801 938 610 211 67 112 -10000 653 875 109 90 508 95 475 618 459 -10000 371 677 799 421 113 795 148 719 383 -10000 137 448 667 502 272 835 801 627 17 -10000 839 615 530 291 431 147 908 712 268 -10000 555 994 892 566 4 849 382 124 919 -10000 273 646 630 32 153 746 423 767 66 -10000 561 635 530 990 63 729 402 655 411 -10000 152 817 969 934 174 2 202 848 669 -10000 870 108 0 905 491 289 721 817 1000 -10000 89 113 137 935 145 747 448 442 921 -10000 912 231 228 190 949 608 309 256 557 -10000 174 597 953 789 973 437 496 58 938 -10000 542 499 934 51 852 830 198 606 701 -10000 594 113 518 53 222 734 637 438 24 -10000 281 934 415 488 941 867 377 324 158 -10000 617 330 32 452 753 692 334 390 447 -10000 661 227 119 846 697 673 415 421 927 -10000 519 623 875 851 391 396 739 127 111 -10000 278 640 197 721 656 299 410 194 954 -10000 275 229 990 941 975 591 963 347 642 -10000 914 455 10 294 194 380 108 818 74 -10000 472 434 323 348 982 835 729 528 549 -10000 365 906 860 677 170 903 966 94 736 -10000 53 58 135 927 878 900 384 926 747 -10000 878 444 846 838 357 432 517 578 80 -10000 832 851 892 48 73 141 199 881 369 -10000 795 152 594 511 22 885 137 108 946 -10000 731 361 520 654 709 958 873 638 596 -10000 982 593 701 343 833 852 964 277 514 -10000 862 137 895 156 213 493 757 883 277 -10000 977 417 420 721 195 664 247 584 959 -10000 565 512 906 917 689 614 846 743 131 -10000 755 634 138 948 148 413 35 533 32 -10000 494 723 623 528 419 689 300 533 737 -10000 681 351 15 831 458 907 347 532 875 -10000 494 522 694 695 675 367 956 538 119 -10000 747 796 765 176 698 294 506 697 983 -10000 162 678 773 709 164 273 757 873 7 -10000 531 166 452 423 926 33 36 922 383 -10000 459 597 548 330 776 639 611 477 775 -10000 974 791 980 125 325 721 402 371 51 -10000 711 735 403 150 31 580 557 239 188 -10000 165 831 532 923 287 834 923 870 129 -10000 493 210 65 668 973 420 25 110 364 -10000 414 865 278 848 437 887 813 130 827 -10000 114 414 323 897 131 981 638 62 71 -10000 688 734 244 443 944 310 396 442 609 -10000 311 381 119 332 240 503 556 89 311 -10000 796 529 269 112 926 627 295 234 715 -10000 107 240 7 927 786 99 425 147 524 -10000 97 247 678 530 193 349 217 279 970 -10000 597 873 347 614 817 395 328 614 926 -10000 526 20 696 608 858 154 810 785 459 -10000 410 517 180 179 214 808 865 428 849 -10000 245 490 294 966 567 736 10 187 864 -10000 169 977 521 13 521 748 914 465 253 -10000 507 540 508 39 524 620 464 920 184 -10000 625 740 618 164 963 15 292 687 504 -10000 222 466 108 947 972 950 428 199 589 -10000 608 812 853 538 671 609 152 340 357 -10000 335 360 985 671 609 568 25 166 253 -10000 660 949 381 874 379 385 352 26 591 -10000 894 956 610 299 292 306 461 434 376 -10000 236 925 12 990 527 287 97 82 222 -10000 241 952 311 167 675 623 172 0 889 -10000 273 169 195 589 240 869 63 787 602 -10000 173 992 831 854 43 543 561 567 249 -10000 776 546 321 220 620 324 725 974 304 -10000 700 287 519 405 839 212 34 60 607 -10000 765 822 499 823 353 69 458 284 104 -10000 588 709 224 546 309 157 218 53 200 -10000 455 698 346 69 701 245 836 231 153 -10000 805 617 472 343 356 973 952 903 728 -10000 646 570 924 251 280 809 844 926 448 -10000 677 566 860 751 901 499 662 248 175 -10000 932 408 51 53 265 729 964 880 328 -10000 146 349 383 720 114 456 281 271 75 -10000 50 928 778 304 378 542 258 286 645 -10000 824 294 329 890 945 66 776 658 659 -10000 120 466 210 93 533 5 925 62 119 -10000 978 403 547 431 794 708 425 334 136 -10000 602 305 104 436 170 955 142 420 654 -10000 996 6 520 102 548 867 163 566 857 -10000 932 143 655 331 478 915 612 13 970 -10000 384 287 265 185 318 479 214 769 196 -10000 401 334 885 80 964 717 920 445 981 -10000 9 963 719 123 725 599 164 102 167 -10000 916 217 363 744 386 190 743 496 775 -10000 170 480 157 530 595 930 442 885 908 -10000 161 421 530 331 798 444 937 262 326 -10000 682 16 31 769 948 353 186 278 633 -10000 100 579 499 608 843 476 682 660 572 -10000 988 635 902 632 161 942 659 48 933 -10000 393 197 735 545 711 171 763 648 907 -10000 291 579 304 80 581 539 777 251 678 -10000 143 595 386 1 868 188 314 820 418 -10000 416 299 575 953 192 638 211 623 17 -10000 878 554 927 697 434 891 566 550 369 -10000 473 332 882 843 843 613 54 248 757 -10000 365 222 293 226 100 418 898 199 35 -10000 672 626 520 677 796 273 783 420 736 -10000 48 837 935 463 757 293 919 758 618 -10000 234 841 105 161 983 656 359 408 432 -10000 621 257 198 196 654 824 823 668 197 -10000 575 812 404 204 597 91 984 767 998 -10000 733 910 469 393 728 814 344 85 69 -10000 283 82 960 700 892 536 809 662 528 -10000 770 169 390 748 354 277 281 300 21 -10000 285 244 283 846 160 342 17 296 751 -10000 39 166 606 880 288 330 559 380 294 -10000 170 17 837 384 620 515 597 844 476 -10000 504 166 810 605 624 716 365 381 863 -10000 397 518 167 272 603 96 708 591 449 -10000 129 242 224 359 289 166 215 593 540 -10000 718 77 70 907 111 918 509 387 117 -10000 157 535 300 409 751 197 383 995 635 -10000 13 61 113 409 593 983 644 481 259 -10000 371 603 449 789 224 989 172 603 402 -10000 738 550 660 841 990 696 797 465 794 -10000 350 496 145 430 64 807 85 534 901 -10000 347 757 297 843 160 676 643 406 177 -10000 166 763 595 353 373 695 436 388 473 -10000 588 717 689 890 941 676 891 573 249 -10000 65 290 206 243 996 50 629 799 700 -10000 443 667 445 982 34 354 545 149 123 -10000 896 974 257 351 111 341 317 285 971 -10000 538 577 628 889 76 700 853 795 299 -10000 252 992 108 709 901 30 999 914 668 -10000 47 232 31 351 580 216 252 848 635 -10000 631 498 453 99 393 537 19 738 965 -10000 283 39 402 463 825 831 356 867 167 -10000 98 241 646 226 867 345 621 241 371 -10000 456 195 740 952 473 302 30 64 229 -10000 207 637 360 945 877 568 685 275 583 -10000 508 676 509 918 249 0 787 569 493 -10000 282 878 475 982 804 912 53 880 454 -10000 412 64 166 581 596 970 267 545 675 -10000 894 199 274 267 746 511 249 697 267 -10000 286 251 44 950 208 173 419 225 627 -10000 132 8 96 708 898 134 724 842 410 -10000 222 306 549 9 458 123 590 318 621 -10000 183 559 377 691 962 793 375 79 653 -10000 984 151 159 18 943 261 95 646 144 -10000 386 528 887 581 661 925 958 892 377 -10000 781 77 810 261 500 128 201 29 446 -10000 591 941 891 211 493 714 814 468 615 -10000 235 394 211 947 120 174 980 682 719 -10000 68 5 968 248 201 756 366 470 557 -10000 404 543 719 746 92 687 646 859 14 -10000 20 434 732 816 385 133 818 151 726 -10000 665 563 108 33 933 4 122 746 354 -10000 376 993 435 921 612 712 691 869 446 -10000 52 17 586 737 656 948 413 643 695 -10000 520 168 5 499 257 261 869 691 46 -10000 820 15 251 757 166 653 245 395 694 -10000 896 347 186 979 365 669 697 184 355 -10000 981 790 382 391 999 32 830 850 171 -10000 918 593 786 628 639 610 47 251 374 -10000 228 775 241 83 258 591 812 979 521 -10000 445 118 726 93 732 372 498 478 695 -10000 749 222 8 876 252 652 311 968 731 -10000 82 920 947 819 355 54 171 730 779 -10000 462 696 542 677 113 65 388 248 716 -10000 967 519 570 579 753 815 196 590 905 -10000 620 773 925 654 239 589 593 198 412 -10000 519 601 521 737 750 52 839 283 570 -10000 531 864 694 237 187 437 913 513 953 -10000 610 6 321 851 474 511 474 734 626 -10000 528 671 685 739 676 654 417 664 419 -10000 967 110 109 100 790 901 285 273 721 -10000 523 408 553 525 263 343 465 518 996 -10000 990 285 650 426 709 905 572 509 66 -10000 814 898 596 389 665 914 412 986 680 -10000 429 237 816 341 414 222 697 274 961 -10000 435 789 845 730 970 304 42 556 141 -10000 226 442 565 891 566 768 317 595 344 -10000 9 750 379 178 167 985 118 830 695 -10000 423 205 853 663 526 111 953 693 918 -10000 674 807 909 691 276 393 765 473 234 -10000 543 358 425 475 2 328 821 198 216 -10000 772 157 786 268 834 530 303 994 745 -10000 275 164 126 279 751 959 444 114 790 -10000 561 609 901 392 900 419 821 189 66 -10000 51 732 25 218 310 485 392 15 381 -10000 766 374 837 126 743 440 635 909 6 -10000 638 196 109 192 554 721 538 571 684 -10000 792 826 974 353 305 245 419 592 138 -10000 138 687 567 264 32 513 434 328 617 -10000 104 253 396 997 979 287 194 685 648 -10000 603 455 622 246 887 467 282 394 554 -10000 350 533 269 179 451 550 693 872 469 -10000 68 754 630 602 861 307 625 162 448 -10000 979 205 918 574 88 12 869 49 831 -10000 866 440 663 483 642 845 304 751 738 -10000 713 658 225 530 58 341 608 684 172 -10000 496 746 792 107 128 833 461 271 3 -10000 957 742 976 673 308 649 59 491 764 -10000 487 643 78 464 568 751 927 73 614 -10000 341 828 73 769 481 56 374 824 225 -10000 549 246 798 694 905 159 566 13 260 -10000 360 630 350 860 75 727 512 324 664 -10000 564 88 590 584 541 589 643 554 645 -10000 295 43 317 296 4 274 693 655 2 -10000 156 443 375 240 446 967 261 81 337 -10000 522 394 924 388 283 672 433 101 5 -10000 879 630 181 589 436 66 430 771 160 -10000 161 106 595 610 293 940 984 220 170 -10000 949 645 504 248 177 226 834 408 910 -10000 739 48 555 959 61 0 898 707 989 -10000 217 306 634 158 48 719 421 450 571 -10000 934 559 735 453 506 556 280 319 941 -10000 685 861 596 490 101 737 781 783 248 -10000 797 485 793 443 918 224 473 823 507 -10000 907 976 110 0 781 975 246 361 206 -10000 351 308 27 142 772 608 416 957 852 -10000 279 894 174 791 286 551 939 645 140 -10000 192 164 398 80 476 242 274 52 885 -10000 710 560 719 82 141 257 593 345 487 -10000 73 215 407 746 502 498 426 546 529 -10000 186 711 870 635 233 539 854 968 99 -10000 93 391 254 779 745 655 475 726 899 -10000 11 566 603 852 222 318 744 26 101 -10000 188 296 992 465 825 689 309 698 734 -10000 314 592 57 526 703 323 107 9 341 -10000 40 272 396 649 884 211 250 76 615 -10000 530 287 83 805 491 845 785 871 923 -10000 203 508 531 914 93 908 699 309 462 -10000 988 457 812 861 518 179 26 776 261 -10000 33 570 710 504 739 462 936 767 990 -10000 150 212 87 286 678 131 340 783 285 -10000 131 527 597 315 208 175 964 859 190 -10000 580 354 49 937 729 168 966 586 59 -10000 811 547 88 971 808 855 857 262 759 -10000 524 805 105 564 836 886 358 672 719 -10000 750 874 466 288 535 589 694 215 862 -10000 532 222 132 262 613 925 453 874 414 -10000 513 158 948 875 661 512 66 624 902 -10000 860 559 508 347 43 237 875 769 492 -10000 263 578 958 215 661 857 1000 821 780 -10000 322 408 828 523 798 436 122 332 445 -10000 230 22 862 72 865 667 61 150 585 -10000 410 978 603 368 495 980 234 6 924 -10000 521 501 36 392 511 800 406 624 721 -10000 753 316 319 610 910 410 196 982 133 -10000 4 642 134 963 671 708 548 57 894 -10000 770 514 387 407 18 608 503 606 123 -10000 115 578 15 975 585 775 969 292 928 -10000 808 193 294 21 751 560 544 201 694 -10000 431 881 83 513 827 359 904 698 495 -10000 461 818 181 593 814 829 957 414 403 -10000 79 168 807 537 508 992 435 414 657 -10000 206 356 222 470 358 929 814 995 262 -10000 762 453 259 183 532 207 663 818 805 -10000 668 15 30 315 549 343 70 997 453 -10000 731 425 843 836 394 345 629 907 751 -10000 529 101 710 312 138 204 67 359 943 -10000 703 359 546 148 136 387 246 806 299 -10000 399 773 535 31 295 146 896 314 879 -10000 327 603 454 254 878 789 118 415 975 -10000 658 414 46 42 982 790 110 820 45 -10000 334 260 28 36 745 544 811 695 879 -10000 942 843 209 828 271 508 626 12 619 -10000 869 385 297 144 673 885 628 130 262 -10000 28 313 137 159 115 75 774 544 571 -10000 627 802 290 182 731 620 530 59 518 -10000 459 395 581 422 355 397 312 986 848 -10000 569 699 522 371 112 135 214 314 322 -10000 312 757 556 139 868 157 202 665 644 -10000 869 256 238 943 300 393 190 666 136 -10000 474 763 746 755 26 182 246 694 589 -10000 67 70 325 328 284 280 326 3 983 -10000 271 87 886 429 575 378 263 213 406 -10000 830 185 669 836 33 700 48 566 897 -10000 593 179 354 117 526 634 562 855 98 -10000 646 567 5 822 218 35 177 946 232 -10000 470 373 518 926 64 480 101 398 888 -10000 695 828 289 364 194 693 695 635 962 -10000 326 271 195 701 304 440 338 718 844 -10000 779 109 856 114 911 898 2 357 215 -10000 159 811 23 378 831 866 577 355 857 -10000 878 480 861 183 230 570 870 3 610 -10000 462 373 690 683 139 858 87 714 915 -10000 999 62 33 555 778 842 150 889 158 -10000 281 24 527 685 23 18 17 456 29 -10000 459 773 249 882 110 100 284 722 402 -10000 942 429 742 973 925 877 985 307 510 -10000 882 54 173 270 949 631 155 31 181 -10000 595 596 514 633 893 819 853 325 356 -10000 269 247 314 585 642 72 492 530 183 -10000 332 124 428 566 912 997 694 151 377 -10000 252 835 383 753 225 854 479 518 15 -10000 117 772 997 631 43 444 324 203 950 -10000 426 971 678 695 695 494 500 790 446 -10000 209 293 189 868 385 349 866 590 185 -10000 746 361 123 440 333 430 779 377 320 -10000 65 190 206 478 459 883 317 445 187 -10000 711 619 191 522 858 760 837 762 220 -10000 207 460 787 695 936 123 541 389 711 -10000 900 545 233 189 840 226 226 221 908 -10000 396 716 816 364 23 960 170 79 218 -10000 826 670 831 150 239 739 599 876 394 -10000 979 754 929 344 711 194 535 817 0 -10000 675 987 555 195 291 280 735 951 637 -10000 946 264 111 836 121 498 491 123 164 -10000 728 205 191 648 250 280 381 443 252 -10000 202 336 566 386 576 125 729 642 134 -10000 124 226 989 901 639 90 855 998 668 -10000 476 144 341 683 358 375 65 410 611 -10000 464 158 271 960 124 427 997 337 303 -10000 431 894 858 929 181 827 101 721 515 -10000 111 749 694 943 404 561 888 396 933 -10000 82 461 775 864 117 809 251 622 218 -10000 631 455 924 315 968 499 364 593 85 -10000 57 94 902 776 222 683 289 25 588 -10000 626 501 723 21 682 939 50 817 825 -10000 959 653 841 349 930 610 13 244 170 -10000 929 910 146 9 405 406 640 283 882 -10000 357 587 38 314 943 789 124 426 89 -10000 700 164 728 593 193 574 237 522 80 -10000 859 234 481 554 846 880 656 486 841 -10000 198 873 493 6 589 96 849 316 173 -10000 653 964 89 966 42 487 772 607 654 -10000 372 250 623 145 105 126 619 909 665 -10000 893 291 388 830 383 458 815 953 341 -10000 412 704 630 129 493 518 283 721 171 -10000 767 478 999 411 831 349 606 426 19 -10000 110 569 179 780 803 593 744 421 159 -10000 636 278 627 92 238 127 77 382 766 -10000 500 68 563 481 737 786 165 641 680 -10000 0 516 648 383 568 981 926 861 142 -10000 43 593 813 994 665 400 786 671 677 -10000 289 614 927 584 739 19 412 968 484 -10000 85 536 605 521 600 198 551 366 62 -10000 165 580 626 254 577 30 957 873 50 -10000 412 264 349 909 894 81 771 308 446 -10000 269 675 164 767 585 467 957 909 866 -10000 341 286 108 134 972 363 808 807 684 -10000 139 27 142 690 615 504 905 170 845 -10000 237 794 177 943 9 566 783 338 995 -10000 804 278 712 663 47 608 193 1 319 -10000 922 524 940 286 943 313 310 721 356 -10000 546 253 232 292 490 39 607 174 440 -10000 38 187 902 685 947 52 458 880 0 -10000 170 944 496 636 47 433 316 291 594 -10000 86 763 240 668 164 306 43 5 694 -10000 198 75 9 521 941 417 20 976 906 -10000 841 242 665 384 436 17 840 200 983 -10000 560 643 446 998 2 39 434 716 609 -10000 210 578 479 167 186 280 256 192 660 -10000 975 805 67 676 971 795 903 46 402 -10000 399 270 166 163 608 286 998 292 419 -10000 822 330 228 57 723 946 825 956 119 -10000 103 326 720 616 82 992 571 838 569 -10000 911 208 0 323 926 555 877 60 790 -10000 855 432 252 704 332 166 150 723 157 -10000 665 127 102 998 215 922 264 558 814 -10000 240 999 941 384 508 596 976 2 760 -10000 653 156 382 237 25 286 929 348 692 -10000 775 968 343 657 540 309 625 0 278 -10000 911 24 234 118 777 121 310 603 8 -10000 206 375 641 706 71 435 511 52 866 -10000 57 854 244 23 398 659 812 604 893 -10000 838 869 699 428 0 970 174 623 153 -10000 271 120 368 601 517 942 589 263 323 -10000 885 146 977 613 420 505 770 786 445 -10000 672 444 252 398 260 984 501 442 598 -10000 70 616 946 715 839 444 515 568 268 -10000 321 210 168 472 268 421 204 570 191 -10000 480 96 635 456 880 510 231 217 520 -10000 531 368 452 8 77 594 414 778 197 -10000 420 429 919 416 412 599 532 681 95 -10000 402 197 88 492 615 226 674 240 803 -10000 974 40 618 36 285 599 28 568 332 -10000 216 306 713 219 774 124 443 483 386 -10000 640 652 625 31 955 266 464 123 947 -10000 791 354 600 698 212 699 605 879 954 -10000 33 896 314 465 101 926 480 174 601 -10000 229 494 671 32 398 18 895 274 124 -10000 367 580 185 626 30 39 687 577 733 -10000 13 622 400 700 323 489 208 763 495 -10000 738 957 169 562 689 104 124 55 547 -10000 318 482 511 619 602 384 267 16 575 -10000 348 352 924 806 827 725 785 721 323 -10000 211 352 767 280 94 110 171 383 451 -10000 443 544 406 771 692 206 210 471 586 -10000 429 480 107 887 573 602 911 427 330 -10000 713 737 576 784 875 688 221 251 263 -10000 270 732 485 648 910 460 820 736 735 -10000 13 477 892 419 263 863 857 304 0 -10000 300 552 311 971 781 164 690 648 928 -10000 777 671 28 29 849 360 59 318 472 -10000 835 31 399 446 314 92 187 129 153 -10000 958 919 125 688 29 910 953 268 282 -10000 300 299 501 688 798 384 771 978 486 -10000 584 863 414 53 795 783 829 502 86 -10000 467 59 155 62 16 485 446 436 82 -10000 305 257 445 520 202 308 824 247 691 -10000 910 704 377 534 241 811 384 951 967 -10000 286 599 356 706 409 212 203 66 807 -10000 406 297 473 285 319 651 314 24 978 -10000 561 840 140 858 431 366 710 9 483 -10000 969 938 709 477 314 64 427 576 696 -10000 954 376 404 15 393 481 828 274 628 -10000 995 240 775 571 317 743 922 730 77 -10000 920 598 856 57 253 997 8 435 669 -10000 833 544 467 912 182 663 805 445 36 -10000 841 143 545 518 238 871 740 527 763 -10000 847 492 34 588 358 30 867 364 732 -10000 797 501 804 156 524 207 330 258 269 -10000 721 754 388 889 854 290 680 929 417 -10000 465 892 765 814 300 359 606 949 402 -10000 21 301 605 371 127 915 659 122 62 -10000 480 140 55 103 993 725 80 873 960 -10000 67 625 516 98 204 272 321 959 199 -10000 451 545 970 880 400 763 412 722 383 -10000 839 304 23 824 305 862 43 192 940 -10000 831 998 499 364 451 344 21 199 905 -10000 67 316 201 368 222 875 311 86 356 -10000 185 56 673 967 237 560 134 320 908 -10000 700 259 107 830 991 544 92 977 698 -10000 299 297 229 969 198 989 51 760 909 -10000 57 734 221 771 824 452 972 81 607 -10000 619 257 875 10 807 992 459 732 620 -10000 269 747 957 191 484 352 965 590 903 -10000 966 614 323 454 4 637 104 334 899 -10000 877 453 188 532 603 847 148 495 602 -10000 119 911 707 895 150 462 650 578 690 -10000 847 791 77 461 50 874 955 110 263 -10000 203 541 807 420 294 31 197 399 413 -10000 206 252 415 265 536 805 596 288 15 -10000 851 997 819 128 662 146 607 605 229 -10000 603 827 512 766 350 983 592 273 215 -10000 465 875 459 810 308 803 146 363 521 -10000 198 541 972 766 69 430 578 903 999 -10000 273 485 361 829 344 349 550 141 404 -10000 530 520 229 526 947 515 887 228 243 -10000 666 622 286 661 173 134 643 414 268 -10000 11 994 198 726 640 701 971 846 158 -10000 411 889 498 906 214 69 655 406 596 -10000 396 763 903 238 76 7 625 883 589 -10000 236 71 522 275 403 85 786 261 865 -10000 708 103 199 894 411 190 680 649 660 -10000 168 471 419 240 616 628 456 162 91 -10000 131 618 188 391 806 188 644 687 461 -10000 632 618 750 308 403 213 806 870 88 -10000 747 323 384 986 681 329 322 721 21 -10000 386 519 429 519 963 667 538 745 34 -10000 431 655 700 825 616 984 634 342 153 -10000 725 242 171 754 310 473 175 780 360 -10000 459 409 919 325 576 465 290 954 794 -10000 595 438 157 679 8 497 37 911 861 -10000 99 781 625 676 828 108 300 616 761 -10000 891 152 235 683 146 799 840 419 964 -10000 738 306 393 953 966 153 320 631 455 -10000 959 221 605 248 408 675 771 444 446 -10000 850 773 277 244 145 748 814 697 113 -10000 978 531 244 115 474 438 45 141 839 -10000 89 832 541 247 114 963 826 515 765 -10000 746 193 480 441 325 236 765 585 642 -10000 845 829 840 754 968 176 550 136 903 -10000 661 754 561 407 508 634 78 354 380 -10000 664 757 245 660 244 723 972 571 759 -10000 400 676 35 74 499 471 271 210 930 -10000 216 845 635 628 199 707 427 853 431 -10000 848 715 341 247 968 465 599 303 737 -10000 502 758 454 700 313 670 417 560 919 -10000 660 690 601 550 502 805 424 221 152 -10000 422 685 65 138 140 126 913 959 316 -10000 202 693 459 384 527 34 479 132 878 -10000 143 456 74 935 225 510 445 864 435 -10000 896 889 475 39 73 221 424 541 57 -10000 342 656 152 878 494 435 629 795 269 -10000 987 874 818 581 174 29 574 342 469 -10000 761 566 226 316 949 832 43 752 25 -10000 427 386 248 353 503 200 561 220 818 -10000 355 354 672 985 975 266 557 813 234 -10000 782 794 400 467 620 726 136 117 660 -10000 106 202 953 616 780 199 373 997 323 -10000 748 99 963 83 684 930 666 323 248 -10000 490 718 32 575 61 344 600 256 506 -10000 739 750 299 452 303 887 998 815 323 -10000 844 916 431 231 181 310 285 718 724 -10000 490 83 489 121 383 678 543 468 357 -10000 841 832 299 926 636 934 54 835 136 -10000 736 891 656 606 857 273 727 106 180 -10000 690 338 953 605 934 737 127 433 662 -10000 989 141 788 856 111 656 477 503 520 -10000 366 557 196 30 622 662 681 7 869 -10000 276 204 505 389 522 431 771 116 762 -10000 86 35 19 751 859 422 839 551 725 -10000 300 46 792 408 422 37 74 173 537 -10000 121 462 922 743 891 307 823 758 192 -10000 224 187 433 349 882 920 571 70 896 -10000 539 110 282 321 692 858 262 379 365 -10000 726 730 554 481 668 566 277 374 766 -10000 325 242 275 50 479 960 745 764 926 -10000 280 28 621 331 91 224 971 390 388 -10000 626 322 525 259 170 298 889 195 805 -10000 239 150 160 648 568 985 20 847 995 -10000 549 157 742 654 310 935 259 750 777 -10000 364 236 698 610 880 945 529 301 399 -10000 774 268 179 204 934 446 507 523 634 -10000 445 680 622 610 161 149 727 557 365 -10000 433 887 506 128 202 202 402 545 433 -10000 217 90 814 678 428 664 816 434 319 -10000 605 390 507 270 570 553 3 638 771 -10000 275 240 578 64 642 37 780 660 301 -10000 931 66 183 221 334 330 566 392 532 -10000 434 537 309 716 949 644 373 771 174 -10000 981 42 523 170 404 133 732 253 160 -10000 214 266 624 87 889 508 454 216 770 -10000 52 342 413 211 212 347 134 584 947 -10000 21 766 55 197 1000 653 278 442 629 -10000 545 528 304 263 50 502 198 675 692 -10000 574 420 592 30 640 507 799 974 477 -10000 760 483 786 402 94 335 192 969 573 -10000 247 134 82 388 853 237 612 491 729 -10000 727 53 800 42 229 516 320 89 333 -10000 366 822 527 481 840 716 525 421 947 -10000 835 702 84 440 463 251 357 305 335 -10000 228 704 496 386 316 127 669 150 792 -10000 480 891 168 663 517 761 378 271 626 -10000 84 341 855 666 699 404 15 387 744 -10000 421 586 648 766 168 716 899 134 479 -10000 285 979 994 650 918 777 934 41 418 -10000 314 671 95 7 49 657 232 448 539 -10000 464 406 76 750 451 346 861 743 60 -10000 544 136 783 438 647 412 625 924 225 -10000 799 19 668 616 136 726 9 959 268 -10000 852 885 88 960 611 675 853 301 160 -10000 292 491 541 126 469 180 684 957 969 -10000 395 276 181 163 93 452 341 134 260 -10000 522 142 862 114 93 958 721 858 270 -10000 364 922 991 427 153 781 971 693 57 -10000 294 644 0 223 740 903 468 234 130 -10000 882 635 602 839 257 114 3 494 896 -10000 944 369 549 254 671 839 929 76 807 -10000 120 599 234 715 534 467 399 934 998 -10000 282 482 579 512 868 875 436 483 249 -10000 250 156 935 326 811 26 374 472 969 -10000 558 872 625 35 779 504 733 591 668 -10000 739 469 933 675 922 776 191 184 195 -10000 1000 845 454 200 747 585 25 338 260 -10000 310 461 78 645 103 170 204 749 198 -10000 496 71 697 192 814 375 343 574 958 -10000 41 784 400 824 421 597 467 824 469 -10000 14 650 545 678 593 163 107 253 836 -10000 157 270 656 464 728 403 15 889 974 -10000 373 732 642 73 193 671 0 87 243 -10000 817 902 751 425 199 340 910 737 659 -10000 284 531 391 237 742 100 16 246 915 -10000 45 965 86 279 993 208 169 767 906 -10000 426 945 143 133 870 574 354 980 588 -10000 108 378 448 591 235 49 861 570 528 -10000 936 413 107 549 949 339 870 877 786 -10000 94 179 879 625 614 936 58 891 645 -10000 80 419 277 177 273 390 270 845 561 -10000 937 331 99 12 953 32 633 668 759 -10000 96 417 460 818 215 882 102 808 743 -10000 642 728 281 660 386 820 373 333 11 -10000 284 46 697 953 785 841 238 188 635 -10000 235 489 513 400 450 934 634 144 263 -10000 564 181 160 764 907 839 675 574 577 -10000 839 464 223 984 282 727 37 561 247 -10000 201 527 965 971 114 631 66 203 393 -10000 460 753 902 30 189 560 495 468 854 -10000 523 627 66 880 464 304 947 508 500 -10000 436 926 853 321 321 60 957 777 246 -10000 335 512 456 605 112 798 414 893 788 -10000 342 131 375 454 254 842 844 730 33 -10000 553 334 887 989 861 292 79 227 763 -10000 481 942 363 679 485 537 840 945 623 -10000 968 357 960 872 35 998 516 113 402 -10000 906 262 173 930 235 997 319 257 794 -10000 853 505 197 246 583 117 419 758 775 -10000 920 614 730 393 615 598 693 19 520 -10000 311 603 706 104 5 812 363 348 525 -10000 728 685 975 541 686 377 303 79 291 -10000 515 129 653 729 902 742 617 288 203 -10000 250 884 946 625 596 763 361 240 706 -10000 526 376 235 312 92 89 172 875 894 -10000 153 416 86 687 726 142 823 667 674 -10000 400 73 484 773 431 281 589 181 529 -10000 634 328 573 748 69 690 909 866 127 -10000 307 306 838 432 731 663 286 805 965 -10000 584 944 93 846 4 824 787 115 956 -10000 155 753 763 618 429 0 383 686 412 -10000 576 66 558 658 886 726 428 186 346 -10000 1 956 545 25 141 648 459 664 783 -10000 508 759 173 714 882 122 299 845 729 -10000 569 10 788 86 243 707 929 906 445 -10000 233 753 740 740 464 544 689 529 740 -10000 82 933 387 586 183 905 95 795 901 -10000 749 786 703 787 587 124 712 598 617 -10000 25 536 139 564 427 942 719 257 167 -10000 293 59 481 515 133 271 763 633 63 -10000 82 280 175 25 424 677 423 966 515 -10000 452 563 771 836 811 365 895 337 15 -10000 56 10 501 805 215 403 758 539 156 -10000 309 629 897 114 760 846 701 63 610 -10000 336 476 574 799 569 391 929 351 34 -10000 531 10 813 376 990 170 415 653 290 -10000 967 245 982 561 837 25 33 204 788 -10000 15 443 681 885 903 818 666 547 419 -10000 632 17 151 586 179 661 559 719 342 -10000 851 47 702 651 93 511 599 165 928 -10000 297 72 824 895 567 908 758 79 284 -10000 763 424 604 367 162 808 257 891 15 -10000 80 141 649 827 609 876 283 677 321 -10000 773 388 819 437 702 89 144 512 549 -10000 624 441 375 145 690 40 630 834 815 -10000 649 549 846 934 914 194 531 204 363 -10000 654 535 990 839 609 783 943 367 385 -10000 395 356 552 988 846 772 761 326 639 -10000 216 337 64 200 366 194 654 274 359 -10000 461 550 760 271 708 78 521 779 393 -10000 83 13 505 309 603 131 389 743 891 -10000 745 258 875 654 41 774 192 421 969 -10000 271 386 188 517 243 391 147 465 146 -10000 836 607 236 286 487 310 598 646 465 -10000 285 880 141 372 870 354 294 457 697 -10000 976 847 422 715 472 529 221 869 618 -10000 673 589 917 493 592 892 39 218 716 -10000 778 793 973 237 874 340 187 202 782 -10000 765 417 954 987 634 98 794 648 13 -10000 138 509 336 99 217 381 792 238 260 -10000 112 644 205 686 803 245 315 410 242 -10000 708 485 32 384 129 514 86 418 499 -10000 0 518 508 591 278 724 874 546 228 -10000 957 379 921 961 942 242 448 14 310 -10000 665 641 140 379 720 713 581 572 246 -10000 559 770 456 531 855 49 379 489 957 -10000 497 444 716 59 631 863 735 146 93 -10000 31 795 514 976 463 411 798 103 95 -10000 247 128 499 522 786 345 467 952 496 -10000 91 979 15 633 835 741 711 481 507 -10000 365 412 813 934 755 495 543 943 750 -10000 479 295 510 639 399 499 908 66 653 -10000 82 837 458 660 23 293 390 682 915 -10000 877 360 92 394 626 203 400 250 563 -10000 572 933 318 717 193 15 584 7 872 -10000 500 276 950 450 171 135 893 346 168 -10000 354 632 255 974 927 845 604 561 750 -10000 570 647 392 213 980 323 362 807 3 -10000 860 211 115 923 266 266 210 925 817 -10000 665 326 809 952 370 542 961 6 279 -10000 80 507 856 478 160 240 849 728 129 -10000 472 232 947 120 386 531 488 289 560 -10000 192 136 536 566 654 872 432 995 490 -10000 513 458 717 16 957 816 959 846 401 -10000 204 804 668 807 649 979 599 949 47 -10000 308 625 548 538 76 138 3 48 348 -10000 633 18 637 311 270 468 654 647 762 -10000 822 953 34 464 895 9 615 475 440 -10000 735 400 549 439 854 661 51 11 258 -10000 509 894 949 176 72 570 639 890 974 -10000 987 323 75 780 974 758 391 392 76 -10000 686 929 627 473 931 63 663 939 626 -10000 105 200 550 443 890 732 570 281 769 -10000 806 79 872 992 527 587 423 210 570 -10000 636 440 131 204 849 484 966 191 590 -10000 674 2 590 226 41 773 660 59 731 -10000 273 900 666 829 168 902 941 768 71 -10000 88 528 169 419 42 96 431 724 101 -10000 452 373 850 146 114 753 108 56 666 -10000 104 888 672 831 624 367 69 708 170 -10000 965 432 920 629 924 987 84 161 143 -10000 721 569 269 839 517 953 988 794 811 -10000 136 255 401 586 222 727 995 856 661 -10000 89 250 125 300 520 295 38 964 942 -10000 41 623 70 211 122 76 129 169 256 -10000 763 426 122 75 40 33 469 593 957 -10000 780 758 41 668 864 144 281 323 857 -10000 769 506 468 292 642 142 295 652 540 -10000 564 904 133 104 116 643 532 296 934 -10000 4 403 466 823 389 620 847 538 530 -10000 401 253 740 989 814 830 171 681 584 -10000 1 705 912 48 336 922 504 845 94 -10000 185 471 807 99 582 45 966 209 719 -10000 147 823 349 30 499 740 756 955 330 -10000 226 900 166 539 277 550 720 987 112 -10000 36 834 700 160 967 330 812 593 623 -10000 172 722 879 512 749 146 19 406 329 -10000 654 790 663 215 467 434 616 399 187 -10000 281 593 757 711 691 103 332 882 281 -10000 613 970 115 565 785 857 160 935 54 -10000 856 847 923 552 776 775 355 848 931 -10000 196 637 172 116 363 989 278 282 616 -10000 9 319 968 55 504 63 791 588 347 -10000 447 469 14 268 852 996 650 656 62 -10000 440 294 830 304 79 848 363 203 320 -10000 846 265 457 654 118 919 652 77 66 -10000 204 162 750 558 81 515 20 994 192 -10000 220 460 792 60 344 2 809 186 735 -10000 271 633 223 844 597 864 897 681 469 -10000 336 619 759 401 605 256 70 593 324 -10000 61 65 169 283 920 305 622 395 679 -10000 785 157 634 436 886 306 534 247 843 -10000 223 69 259 865 550 530 54 991 902 -10000 451 532 499 882 30 945 44 687 99 -10000 760 726 600 679 817 738 524 303 576 -10000 587 383 159 745 49 460 940 324 540 -10000 233 792 786 373 498 214 324 921 745 -10000 768 90 14 858 667 321 967 497 765 -10000 782 243 230 347 809 711 165 0 111 -10000 593 770 320 211 506 512 945 964 590 -10000 957 994 553 965 538 149 872 330 827 -10000 98 508 794 966 512 19 441 424 0 -10000 71 974 144 306 775 679 415 686 786 -10000 528 406 832 593 936 605 247 442 190 -10000 188 724 641 642 315 391 952 612 923 -10000 813 614 648 582 525 552 806 177 251 -10000 552 373 167 720 641 749 641 920 191 -10000 999 521 749 777 372 162 252 641 849 -10000 96 941 104 122 801 362 465 953 50 -10000 307 616 906 275 317 266 871 477 329 -10000 622 120 381 975 634 839 207 965 23 -10000 832 565 544 395 313 828 693 292 785 -10000 362 176 49 543 260 77 186 683 746 -10000 835 68 923 81 203 267 876 917 926 -10000 179 299 690 129 753 351 741 260 619 -10000 704 400 642 930 951 847 303 192 73 -10000 87 931 927 273 609 885 730 425 864 -10000 932 691 712 772 541 331 878 933 314 -10000 696 265 532 809 458 910 657 890 92 -10000 296 863 74 355 1000 203 399 574 625 -10000 965 532 494 650 196 577 283 162 431 -10000 134 532 863 706 598 644 976 76 59 -10000 960 859 643 920 172 680 312 702 834 -10000 953 698 212 680 817 722 650 968 214 -10000 903 799 618 296 571 401 391 131 717 -10000 675 579 297 677 611 363 895 588 988 -10000 204 538 486 503 308 684 348 356 221 -10000 31 319 759 689 355 328 714 532 39 -10000 562 788 884 505 10 890 407 540 41 -10000 774 47 386 723 159 625 550 457 401 -10000 572 790 832 338 133 938 562 22 697 -10000 141 915 678 610 621 491 898 41 709 -10000 700 103 664 755 696 924 926 108 664 -10000 223 878 876 310 492 302 828 646 318 -10000 438 220 385 991 208 103 757 73 127 -10000 903 880 695 364 205 680 272 626 757 -10000 902 844 307 289 748 523 909 984 930 -10000 949 673 678 510 478 660 274 205 406 -10000 142 91 84 445 448 205 190 530 386 -10000 476 191 634 712 700 383 697 884 758 -10000 194 486 713 43 598 629 217 167 735 -10000 548 463 756 210 130 239 48 907 966 -10000 892 893 235 971 137 168 383 854 292 -10000 425 632 425 248 735 906 583 199 490 -10000 45 792 167 39 54 19 316 8 252 -10000 122 460 13 631 276 542 356 484 203 -10000 687 932 386 91 641 111 454 589 149 -10000 893 837 949 127 352 131 567 195 627 -10000 793 198 878 819 870 980 240 350 592 -10000 942 469 475 972 206 563 289 915 103 -10000 636 484 802 649 925 225 506 281 573 -10000 518 928 761 777 932 421 400 937 549 -10000 743 824 314 628 383 245 470 147 414 -10000 922 983 584 265 303 839 360 309 968 -10000 316 555 774 589 153 501 991 219 367 -10000 333 687 445 56 521 882 30 960 232 -10000 727 533 11 907 286 871 573 431 70 -10000 940 647 411 914 649 390 86 8 554 -10000 975 251 433 885 932 256 768 550 788 -10000 567 529 606 313 30 770 929 364 186 -10000 86 972 179 121 675 59 107 96 201 -10000 127 385 629 808 469 348 102 361 434 -10000 919 714 328 618 407 273 261 837 758 -10000 118 943 487 736 379 171 747 110 823 -10000 187 971 80 211 559 990 151 302 525 -10000 835 512 748 60 79 784 463 849 851 -10000 294 306 744 621 638 238 786 513 779 -10000 629 969 91 677 337 841 125 998 209 -10000 53 635 529 309 874 222 474 837 464 -10000 190 983 810 85 217 220 643 441 271 -10000 364 505 999 516 557 431 757 89 511 -10000 152 290 590 347 941 528 956 990 565 -10000 77 849 917 765 398 795 713 475 131 -10000 572 775 919 668 875 732 585 157 443 -10000 792 976 199 793 13 671 428 352 546 -10000 185 528 948 883 601 157 666 10 494 -10000 852 250 288 753 441 445 600 852 463 -10000 54 167 104 789 659 103 800 521 285 -10000 258 39 807 257 386 60 989 599 351 -10000 605 48 458 377 336 519 611 467 226 -10000 527 102 184 945 98 734 620 537 472 -10000 670 939 980 344 752 126 992 246 450 -10000 395 89 108 926 272 865 186 415 381 -10000 586 766 709 598 910 237 626 834 810 -10000 221 509 675 313 658 537 672 726 100 -10000 601 150 180 618 157 265 664 342 173 -10000 456 111 220 741 989 238 694 487 671 -10000 807 218 835 835 257 279 134 540 689 -10000 956 721 921 763 602 984 685 582 909 -10000 257 137 743 197 70 672 943 686 103 -10000 659 580 518 114 147 372 309 265 1 -10000 253 257 848 263 824 500 687 204 953 -10000 640 478 953 511 280 526 858 504 505 -10000 330 107 599 23 631 49 591 704 658 -10000 435 726 286 770 354 631 279 355 355 -10000 2 391 539 992 638 800 930 860 12 -10000 277 106 191 606 251 907 542 47 335 -10000 995 637 672 885 108 864 29 904 882 -10000 898 770 657 312 503 134 7 209 374 -10000 365 813 147 0 988 556 198 694 738 -10000 456 366 565 505 151 115 750 219 476 -10000 709 610 879 734 66 926 167 442 620 -10000 810 768 836 960 671 163 645 644 225 -10000 795 799 77 529 240 978 135 472 330 -10000 583 745 154 1 614 172 853 145 454 -10000 588 291 874 140 744 348 70 234 644 -10000 559 732 999 309 610 460 136 108 708 -10000 369 456 216 211 166 876 622 997 346 -10000 262 955 650 310 96 114 499 13 927 -10000 400 462 319 114 34 778 131 719 543 -10000 84 362 786 717 600 379 247 160 172 -10000 587 79 539 278 718 524 450 35 220 -10000 726 112 193 429 997 975 58 8 77 -10000 685 522 374 516 279 69 554 376 144 -10000 118 817 776 331 828 766 19 73 729 -10000 116 404 2 485 548 698 45 289 555 -10000 480 815 412 86 747 346 258 213 637 -10000 540 751 64 767 752 884 29 930 957 -10000 549 711 796 599 268 206 614 128 291 -10000 789 160 38 128 749 182 575 109 841 -10000 313 275 290 848 818 320 825 741 22 -10000 866 678 730 908 957 700 702 512 715 -10000 452 703 424 328 500 32 654 37 744 -10000 615 975 786 410 567 318 627 210 704 -10000 662 978 328 569 842 937 697 832 769 -10000 109 63 378 197 525 442 208 63 641 -10000 580 142 879 461 544 459 406 716 944 -10000 498 953 470 625 790 158 658 895 824 -10000 983 629 301 294 742 699 555 325 865 -10000 468 323 613 296 639 548 674 837 88 -10000 351 233 716 644 637 546 702 141 83 -10000 925 946 453 960 38 139 728 316 758 -10000 457 842 519 835 504 603 683 24 690 -10000 139 538 255 345 575 623 329 301 619 -10000 226 20 987 577 648 985 624 84 963 -10000 396 853 641 329 661 958 46 380 197 -10000 703 665 639 934 884 610 764 984 381 -10000 792 456 946 895 706 467 11 226 915 -10000 275 227 513 233 429 185 386 855 927 -10000 769 464 801 993 292 818 977 893 680 -10000 914 843 955 423 684 252 869 140 656 -10000 83 390 627 632 861 546 121 614 432 -10000 892 723 383 786 429 22 979 298 716 -10000 120 270 786 727 467 125 254 322 41 -10000 980 853 96 967 491 303 972 13 685 -10000 400 177 272 888 426 595 701 527 202 -10000 176 246 973 22 72 951 243 503 53 -10000 810 644 119 711 616 694 783 863 397 -10000 754 742 207 173 150 341 754 390 325 -10000 642 273 875 870 833 428 897 432 442 -10000 610 310 158 232 118 184 788 302 310 -10000 469 226 249 206 945 84 501 294 861 -10000 59 645 982 228 149 997 77 600 739 -10000 467 670 584 960 543 501 687 844 2 -10000 633 334 919 507 450 83 257 938 360 -10000 712 306 948 89 389 630 161 4 102 -10000 986 605 276 584 839 784 748 994 583 -10000 967 877 203 931 186 84 302 244 106 -10000 347 364 672 275 701 981 968 831 584 -10000 774 93 762 348 72 804 679 285 337 -10000 161 359 870 858 225 235 493 581 38 -10000 317 106 833 344 195 927 388 448 64 -10000 913 235 667 40 98 834 303 824 922 -10000 656 817 134 714 837 750 105 1 459 -10000 869 950 960 101 80 621 65 229 985 -10000 963 524 775 345 66 4 765 576 661 -10000 206 417 687 705 501 561 618 147 382 -10000 104 433 741 213 968 849 105 537 226 -10000 894 635 118 276 620 420 37 188 817 -10000 82 319 304 804 574 383 618 138 447 -10000 797 134 158 123 819 580 281 620 816 -10000 331 64 425 830 614 967 410 660 735 -10000 287 627 750 719 880 238 170 104 819 -10000 874 533 532 210 440 163 695 898 634 -10000 871 480 433 244 556 552 395 192 930 -10000 642 975 186 322 18 838 658 665 729 -10000 104 102 621 25 593 166 239 956 177 -10000 765 398 132 395 985 60 1 838 724 -10000 785 804 403 382 572 47 560 105 257 -10000 592 512 763 632 37 652 187 578 484 -10000 813 517 897 955 285 345 838 191 2 -10000 345 123 23 930 682 859 789 675 600 -10000 118 712 812 245 129 487 717 632 274 -10000 263 355 124 182 568 253 836 185 315 -10000 538 743 940 888 587 593 231 697 158 -10000 609 360 433 42 220 186 136 263 426 -10000 706 343 995 477 923 907 491 501 732 -10000 378 32 254 792 813 615 548 125 204 -10000 360 340 231 761 286 715 669 58 73 -10000 248 15 776 50 876 690 685 205 694 -10000 124 708 839 189 84 334 754 838 802 -10000 844 887 360 99 808 518 585 876 479 -10000 207 725 130 723 290 921 194 486 246 -10000 688 677 677 542 457 625 629 764 558 -10000 685 88 101 462 792 823 472 926 368 -10000 682 960 472 197 264 701 878 41 257 -10000 419 875 300 954 494 641 845 417 465 -10000 814 170 117 314 710 918 956 359 293 -10000 807 408 708 525 779 785 86 414 989 -10000 532 676 612 944 222 496 503 301 632 -10000 838 455 115 519 80 451 110 565 820 -10000 656 705 274 444 697 785 396 750 588 -10000 896 209 434 383 972 293 390 827 834 -10000 539 305 659 171 922 389 448 653 454 -10000 639 555 47 289 967 297 950 862 499 -10000 695 937 3 254 921 992 241 797 675 -10000 57 838 996 27 818 303 245 868 226 -10000 52 533 335 890 342 20 521 866 95 -10000 691 867 578 229 920 546 587 703 212 -10000 812 142 258 510 521 669 180 221 34 -10000 553 69 236 567 188 78 517 508 778 -10000 544 810 481 140 272 463 693 304 809 -10000 272 141 471 966 342 97 415 778 971 -10000 172 791 459 104 45 600 765 948 555 -10000 399 253 414 707 427 274 438 657 575 -10000 361 880 857 706 878 492 37 719 997 -10000 389 637 335 893 346 154 991 33 608 -10000 303 841 489 381 915 783 373 127 910 -10000 259 134 109 839 307 38 191 108 895 -10000 674 779 924 543 586 298 580 576 291 -10000 309 389 544 769 354 532 654 631 831 -10000 837 174 332 468 628 507 394 680 436 -10000 596 884 255 787 419 433 781 339 587 -10000 877 799 56 591 233 858 814 426 330 -10000 288 237 543 90 441 934 581 486 794 -10000 571 951 26 248 329 423 388 965 91 -10000 616 951 146 333 395 803 643 962 748 -10000 41 824 902 880 978 151 126 883 32 -10000 230 505 800 123 203 909 813 946 320 -10000 864 615 809 678 209 364 848 518 909 -10000 620 528 595 684 184 83 263 931 60 -10000 827 562 24 676 881 661 275 877 93 -10000 992 842 68 687 58 706 193 383 914 -10000 411 592 25 689 578 276 556 685 529 -10000 738 744 136 571 855 439 817 123 284 -10000 959 79 226 240 541 378 771 833 77 -10000 450 29 776 691 1 189 287 594 865 -10000 697 873 165 943 915 166 66 622 856 -10000 333 774 595 916 135 76 742 194 554 -10000 479 990 601 790 873 498 478 572 800 -10000 174 925 4 427 482 198 895 969 292 -10000 490 523 418 168 208 468 497 746 996 -10000 77 779 486 579 868 982 817 422 827 -10000 902 874 287 593 935 864 959 446 138 -10000 212 842 767 897 357 421 165 394 66 -10000 181 300 594 707 205 231 348 766 277 -10000 932 46 779 841 292 790 143 310 449 -10000 178 48 413 510 978 759 410 676 542 -10000 957 621 494 536 107 642 214 767 879 -10000 478 48 499 426 16 782 946 18 222 -10000 178 887 566 108 910 170 659 295 39 -10000 123 325 567 524 612 550 515 514 109 -10000 582 351 959 432 367 883 671 89 290 -10000 388 131 264 10 323 249 933 7 282 -10000 840 899 785 735 965 345 529 92 465 -10000 577 522 868 761 51 295 887 161 436 -10000 417 324 722 697 647 989 801 252 761 -10000 493 618 918 286 801 947 193 386 103 -10000 809 825 393 233 503 980 786 911 921 -10000 167 633 704 766 168 725 708 507 510 -10000 340 335 562 640 822 205 917 17 655 -10000 748 770 529 16 43 882 923 836 674 -10000 83 847 429 983 886 969 298 278 412 -10000 291 537 213 792 314 188 303 932 826 -10000 37 285 190 340 121 342 794 67 848 -10000 163 185 883 495 495 617 604 103 617 -10000 95 565 74 400 661 286 820 313 245 -10000 763 54 387 795 643 381 904 935 238 -10000 47 608 947 15 267 449 109 948 929 -10000 113 697 677 990 570 288 870 600 703 -10000 734 182 911 224 727 278 633 197 325 -10000 823 614 197 467 961 249 389 276 345 -10000 526 591 783 933 517 796 197 311 765 -10000 213 188 916 771 303 661 676 705 862 -10000 658 202 321 646 711 159 6 785 842 -10000 746 195 39 262 103 435 489 182 466 -10000 868 619 775 354 211 675 303 821 282 -10000 966 522 376 275 908 868 288 800 201 -10000 111 119 564 716 160 884 489 441 598 -10000 905 265 367 554 436 547 412 302 53 -10000 190 453 516 956 706 100 226 279 607 -10000 145 695 55 21 142 830 867 293 979 -10000 361 314 512 887 429 839 110 132 583 -10000 406 607 21 761 949 705 766 252 941 -10000 11 742 445 420 495 259 533 38 423 -10000 475 891 809 970 687 475 958 922 956 -10000 850 463 303 927 755 674 944 390 116 -10000 113 594 514 631 500 697 622 151 568 -10000 833 187 746 814 31 645 847 230 382 -10000 755 214 541 14 777 976 656 900 116 -10000 831 559 588 968 103 953 716 287 521 -10000 98 456 4 635 874 270 394 361 880 -10000 561 634 465 616 808 777 568 991 38 -10000 947 392 804 65 917 782 436 179 672 -10000 409 589 136 448 586 177 806 503 12 -10000 383 272 639 137 669 459 933 670 508 -10000 813 121 539 504 753 363 432 197 145 -10000 883 154 325 665 642 340 130 320 734 -10000 515 584 354 119 738 949 122 664 711 -10000 518 123 556 128 863 0 527 539 486 -10000 842 383 107 200 821 837 116 414 239 -10000 94 991 662 264 880 183 647 112 898 -10000 450 732 848 734 203 709 131 747 488 -10000 210 211 183 282 350 479 889 936 700 -10000 491 645 569 905 106 94 756 825 132 -10000 240 251 519 944 908 605 977 166 804 -10000 510 75 756 79 735 169 479 688 415 -10000 312 111 131 815 393 533 873 227 249 -10000 8 9 712 648 250 682 508 63 765 -10000 583 481 218 813 434 88 799 494 297 -10000 37 894 273 627 2 490 47 363 949 -10000 956 398 996 642 357 124 657 69 478 -10000 124 356 417 63 822 801 886 728 584 -10000 543 97 906 928 993 108 995 534 948 -10000 693 977 941 690 171 735 847 465 25 -10000 737 785 589 53 499 323 280 329 841 -10000 37 231 128 247 372 619 589 547 665 -10000 63 921 667 101 289 898 972 381 95 -10000 704 203 984 720 359 868 195 990 66 -10000 810 16 703 830 591 154 541 621 271 -10000 858 183 229 106 945 236 176 401 428 -10000 573 811 623 327 937 135 613 150 569 -10000 165 466 322 735 481 928 22 451 719 -10000 648 588 394 421 595 101 41 737 247 -10000 931 825 303 319 775 94 785 67 195 -10000 786 155 313 95 688 292 250 642 760 -10000 344 825 417 572 143 912 174 877 676 -10000 95 904 536 785 936 699 735 760 45 -10000 238 221 708 668 830 927 926 888 866 -10000 694 323 368 846 677 896 571 424 536 -10000 388 628 856 61 898 695 674 669 139 -10000 16 954 922 309 991 684 476 381 144 -10000 540 603 651 337 564 196 234 330 500 -10000 183 180 470 171 611 523 97 315 896 -10000 518 626 85 379 402 394 295 487 145 -10000 853 671 82 370 11 857 837 733 367 -10000 40 401 555 967 106 386 605 377 433 -10000 985 670 222 468 349 193 433 734 147 -10000 624 979 649 417 40 414 91 378 914 -10000 682 113 40 142 573 429 304 450 481 -10000 560 395 188 384 355 181 995 522 816 -10000 937 47 759 96 531 699 558 209 380 -10000 725 397 565 953 564 459 475 545 202 -10000 211 851 491 352 619 294 603 533 918 -10000 18 469 678 617 981 478 516 805 756 -10000 683 277 952 679 493 264 723 97 744 -10000 71 207 929 118 216 705 704 364 403 -10000 485 103 797 428 631 49 161 367 782 -10000 493 264 979 893 168 764 652 839 296 -10000 35 225 75 388 165 75 322 190 735 -10000 396 901 82 317 883 840 610 874 686 -10000 525 637 845 379 872 295 81 950 627 -10000 40 585 632 537 820 12 783 901 824 -10000 558 943 354 202 495 206 56 319 984 -10000 690 394 32 30 624 194 521 536 839 -10000 474 26 999 665 59 687 732 80 112 -10000 952 867 645 243 872 404 288 296 695 -10000 746 436 583 842 681 725 621 471 640 -10000 481 779 578 310 261 218 709 445 61 -10000 576 722 985 199 331 288 55 405 427 -10000 532 921 64 857 836 726 175 408 222 -10000 877 361 181 530 413 197 206 730 906 -10000 261 298 614 165 869 329 197 596 454 -10000 896 128 279 941 42 343 121 422 72 -10000 863 980 434 983 935 979 234 878 188 -10000 220 467 535 890 757 62 837 280 68 -10000 509 843 148 941 625 825 718 669 245 -10000 567 107 644 711 760 206 868 935 5 -10000 610 19 778 277 289 808 315 992 789 -10000 705 938 413 590 39 93 305 856 683 -10000 525 337 14 971 264 832 546 948 620 -10000 400 848 470 673 257 860 62 565 929 -10000 292 312 731 253 252 687 442 822 963 -10000 394 556 100 510 790 588 470 80 730 -10000 343 742 252 607 125 34 654 300 906 -10000 397 181 892 179 15 14 864 855 700 -10000 597 705 934 599 553 403 667 357 294 -10000 112 552 631 35 34 789 219 876 446 -10000 382 256 850 999 799 130 53 365 287 -10000 866 724 256 756 628 444 357 214 510 -10000 437 892 120 251 589 31 380 363 753 -10000 428 583 116 967 195 412 202 928 823 -10000 695 801 392 767 204 348 978 109 119 -10000 964 457 266 217 735 521 145 52 251 -10000 394 58 568 151 6 998 743 400 649 -10000 927 300 771 844 131 504 443 742 799 -10000 888 346 0 434 126 268 491 902 741 -10000 390 757 98 610 769 340 11 374 581 -10000 281 874 904 346 712 487 406 570 261 -10000 462 217 603 885 64 927 339 379 550 -10000 257 831 629 225 798 680 178 99 984 -10000 437 553 600 143 466 763 776 274 868 -10000 305 710 512 321 338 538 618 183 584 -10000 246 783 89 675 509 624 472 397 189 -10000 216 732 199 144 773 120 952 939 804 -10000 257 5 127 781 499 807 298 16 594 -10000 827 451 850 609 835 27 662 12 388 -10000 439 587 516 443 465 473 945 163 252 -10000 769 967 96 734 709 717 457 627 200 -10000 254 791 391 820 875 197 151 33 428 -10000 480 434 739 150 821 341 231 297 237 -10000 815 322 776 90 926 198 627 755 736 -10000 584 732 21 968 888 134 80 333 281 -10000 929 806 659 918 906 716 962 131 275 -10000 440 762 20 100 132 176 65 433 126 -10000 549 877 120 211 957 871 594 778 781 -10000 217 575 994 659 813 376 240 788 831 -10000 703 413 9 11 806 88 898 590 236 -10000 119 131 355 767 374 311 972 77 145 -10000 224 633 155 842 543 709 187 916 359 -10000 213 147 781 621 689 548 351 849 333 -10000 868 891 805 682 167 842 280 564 617 -10000 464 868 834 612 733 224 587 654 5 -10000 743 688 336 748 795 776 960 397 82 -10000 213 375 169 581 739 306 314 299 738 -10000 604 14 449 747 37 78 170 1000 154 -10000 467 186 426 841 939 751 430 655 829 -10000 670 490 444 610 60 428 455 289 227 -10000 16 790 973 680 357 439 748 62 369 -10000 54 157 439 726 69 220 272 374 152 -10000 422 805 338 741 373 279 240 866 845 -10000 415 256 589 650 853 280 422 304 502 -10000 885 586 186 583 456 343 197 266 30 -10000 136 688 462 773 557 193 932 571 737 -10000 395 615 799 15 130 747 845 793 855 -10000 392 257 262 773 468 780 339 50 579 -10000 109 530 647 557 648 182 40 965 802 -10000 48 407 261 743 305 296 377 125 568 -10000 223 730 755 82 11 103 908 917 958 -10000 609 121 537 772 348 891 346 36 748 -10000 178 285 764 849 646 871 726 541 959 -10000 351 145 383 987 481 654 703 677 293 -10000 86 114 475 745 163 52 614 937 281 -10000 883 627 78 906 490 866 38 189 477 -10000 946 588 994 720 857 880 397 937 800 -10000 122 14 239 924 752 43 971 173 288 -10000 774 280 203 377 341 544 234 982 525 -10000 459 34 993 203 694 817 143 436 193 -10000 517 389 292 713 216 799 116 11 834 -10000 544 485 502 33 22 164 318 210 164 -10000 620 42 888 723 434 783 980 813 100 -10000 876 457 963 548 99 135 485 109 252 -10000 379 750 405 812 502 339 278 40 803 -10000 396 74 744 387 533 803 879 884 229 -10000 562 243 624 489 996 680 621 160 800 -10000 326 8 436 249 153 570 716 868 463 -10000 100 179 897 498 365 162 720 271 66 -10000 460 311 649 525 172 59 368 325 953 -10000 272 15 511 31 966 606 612 336 824 -10000 934 822 29 14 652 294 239 607 17 -10000 489 418 850 728 840 532 261 998 274 -10000 661 452 682 17 153 641 751 62 933 -10000 412 774 672 75 540 872 47 767 479 -10000 240 846 221 718 595 252 280 959 424 -10000 110 43 641 565 94 720 845 146 87 -10000 357 953 496 469 905 425 404 654 559 -10000 103 126 137 500 780 510 983 41 403 -10000 820 609 24 471 258 734 243 469 111 -10000 713 520 527 426 306 784 32 477 907 -10000 752 762 250 275 632 950 193 484 8 -10000 999 373 542 185 367 431 588 236 219 -10000 344 807 948 519 864 606 812 746 772 -10000 774 693 210 601 583 312 272 436 933 -10000 449 751 834 727 859 626 1 357 795 -10000 400 375 869 64 483 924 498 849 578 -10000 12 810 935 126 990 298 193 453 852 -10000 671 796 480 765 963 851 353 4 923 -10000 753 275 140 273 255 424 594 870 270 -10000 528 249 270 238 140 458 163 247 770 -10000 27 900 594 954 677 851 487 726 92 -10000 567 832 807 147 152 81 629 750 306 -10000 491 420 252 133 615 665 584 962 586 -10000 668 196 702 915 949 243 14 875 796 -10000 459 116 955 379 940 405 125 194 359 -10000 539 778 490 862 628 970 361 631 351 -10000 821 210 601 207 92 662 255 176 558 -10000 635 463 390 552 166 820 295 106 416 -10000 751 859 343 382 687 663 509 143 688 -10000 970 375 521 30 188 830 210 247 95 -10000 81 194 347 645 687 711 176 99 727 -10000 668 748 282 925 521 122 591 580 488 -10000 399 902 98 726 430 573 788 566 692 -10000 253 79 449 693 323 908 776 912 90 -10000 487 90 882 264 57 761 148 576 111 -10000 754 359 544 463 290 891 310 941 43 -10000 799 743 335 824 615 916 240 590 638 -10000 527 499 228 198 35 237 425 166 52 -10000 867 638 782 78 35 839 229 36 394 -10000 958 270 586 800 79 140 242 819 133 -10000 809 197 856 572 383 400 775 658 598 -10000 573 303 565 691 786 729 31 124 41 -10000 934 582 128 291 805 59 427 363 84 -10000 634 164 759 855 339 80 93 153 722 -10000 414 534 181 244 695 135 576 983 625 -10000 746 548 961 80 512 222 1000 182 70 -10000 985 412 111 20 513 247 62 31 210 -10000 476 686 576 888 862 782 454 437 320 -10000 463 674 803 69 526 544 732 614 30 -10000 595 471 495 795 532 915 341 319 552 -10000 746 925 995 323 30 284 110 315 59 -10000 163 515 438 64 185 432 842 165 388 -10000 622 497 718 155 568 242 839 472 758 -10000 537 705 660 567 211 539 970 697 175 -10000 889 777 227 425 687 238 999 625 448 -10000 368 816 123 635 288 273 626 491 713 -10000 522 167 879 24 454 390 347 682 830 -10000 507 100 28 597 992 201 901 536 550 -10000 976 459 988 13 58 599 668 290 730 -10000 742 197 948 315 570 672 268 251 981 -10000 983 397 759 974 275 148 532 803 706 -10000 589 828 144 536 87 66 576 365 40 -10000 101 356 180 664 283 815 187 547 22 -10000 357 120 974 256 955 14 515 367 973 -10000 593 730 687 638 765 509 557 502 689 -10000 412 396 982 464 331 10 952 784 678 -10000 36 606 700 781 974 894 392 826 414 -10000 414 55 678 552 618 427 976 280 333 -10000 345 550 611 238 391 737 93 601 691 -10000 882 952 720 904 208 97 17 217 811 -10000 968 189 935 983 250 350 598 387 76 -10000 569 227 738 785 978 176 751 930 724 -10000 794 537 771 413 191 848 750 396 456 -10000 391 16 641 64 899 286 916 19 45 -10000 76 225 465 549 614 693 604 808 500 -10000 766 971 417 802 830 586 660 314 168 -10000 433 39 588 662 299 389 99 593 143 -10000 511 674 694 913 890 937 275 495 475 -10000 549 709 120 693 343 878 365 192 734 -10000 666 671 789 218 226 538 517 880 856 -10000 958 868 987 445 427 806 688 275 649 -10000 398 504 517 276 666 474 909 437 125 -10000 802 454 40 656 156 825 334 689 268 -10000 915 459 7 772 47 825 174 516 301 -10000 526 316 622 967 113 416 948 655 4 -10000 752 966 891 350 138 641 485 631 452 -10000 998 649 310 248 116 688 20 136 543 -10000 290 349 943 951 908 608 757 664 798 -10000 767 82 327 399 569 356 783 309 588 -10000 252 432 478 308 363 881 423 756 435 -10000 921 65 741 451 870 329 529 538 336 -10000 406 271 957 448 66 348 353 819 774 -10000 904 938 920 935 954 585 442 650 240 -10000 572 389 404 908 787 476 833 227 892 -10000 379 644 630 985 819 928 768 738 921 -10000 198 335 44 298 390 842 687 834 512 -10000 816 532 986 729 180 573 920 596 221 -10000 223 907 574 847 613 201 914 438 981 -10000 658 138 882 346 558 198 183 639 721 -10000 276 131 642 145 601 417 145 834 537 -10000 741 405 264 697 318 408 476 239 666 -10000 76 6 661 88 936 347 927 35 951 -10000 808 969 344 718 766 650 236 910 666 -10000 775 23 651 790 196 550 409 954 78 -10000 435 917 940 106 806 991 68 308 497 -10000 94 952 480 725 683 570 479 120 842 -10000 127 585 365 652 385 833 404 398 734 -10000 185 885 445 654 586 708 368 901 417 -10000 861 214 601 641 289 884 927 649 8 -10000 880 119 315 568 398 326 693 864 94 -10000 889 65 229 724 855 341 234 487 23 -10000 24 800 854 215 898 329 567 580 687 -10000 445 814 254 570 795 441 941 195 187 -10000 606 630 250 592 691 467 758 831 545 -10000 847 510 291 628 938 782 925 14 44 -10000 552 928 815 50 72 840 841 615 727 -10000 417 72 409 390 214 642 647 99 422 -10000 381 487 312 101 595 11 367 866 63 -10000 162 524 468 646 698 972 573 587 818 -10000 778 400 485 845 558 518 337 550 532 -10000 741 418 357 883 675 175 361 969 93 -10000 589 332 832 131 668 8 920 516 507 -10000 180 500 162 391 739 723 167 458 123 -10000 377 665 161 465 981 186 899 878 541 -10000 861 949 527 783 292 305 51 644 240 -10000 758 925 712 813 546 817 80 591 865 -10000 619 59 642 164 376 832 891 897 347 -10000 895 129 419 406 797 938 564 270 877 -10000 594 379 30 893 46 80 642 493 37 -10000 480 924 818 420 1 615 942 925 859 -10000 474 531 398 275 383 298 759 307 447 -10000 998 10 540 511 233 642 457 113 760 -10000 621 220 285 470 565 467 870 908 420 -10000 859 43 132 864 75 879 231 512 286 -10000 380 421 626 285 883 273 335 272 687 -10000 567 459 538 685 374 490 34 315 566 -10000 167 541 997 299 575 898 547 554 758 -10000 384 555 963 456 951 539 290 921 579 -10000 188 328 708 668 599 546 43 941 490 -10000 839 154 164 813 510 290 454 869 481 -10000 931 795 570 896 503 600 518 997 56 -10000 268 708 814 982 184 346 620 313 341 -10000 285 442 342 939 327 307 840 27 202 -10000 833 387 343 502 493 447 19 787 471 -10000 339 851 910 845 886 653 285 287 972 -10000 208 810 864 279 398 296 436 366 558 -10000 271 274 605 131 453 737 5 542 691 -10000 310 612 541 436 141 836 55 242 967 -10000 889 326 27 584 998 34 686 786 516 -10000 59 846 583 890 16 120 653 250 401 -10000 644 877 894 267 1000 202 805 603 755 -10000 471 727 231 74 384 739 310 532 862 -10000 146 266 251 80 388 494 715 707 580 -10000 796 134 547 738 986 502 917 578 182 -10000 124 388 780 169 724 424 615 983 63 -10000 869 894 222 345 792 989 718 723 944 -10000 736 434 198 429 16 939 88 518 429 -10000 69 596 395 835 780 1 25 439 950 -10000 299 140 7 987 122 83 923 93 383 -10000 304 705 247 161 679 862 139 503 301 -10000 228 116 393 107 888 431 406 64 660 -10000 750 605 149 609 246 231 851 377 327 -10000 834 924 685 37 415 42 510 277 783 -10000 80 342 631 452 593 347 322 477 190 -10000 466 133 199 603 455 916 530 854 656 -10000 511 287 370 566 331 739 546 383 477 -10000 452 528 860 912 127 291 621 369 819 -10000 402 560 457 805 924 309 838 284 781 -10000 961 79 802 484 622 483 776 758 740 -10000 497 428 814 126 49 617 453 688 180 -10000 206 38 908 891 581 816 822 945 938 -10000 898 492 503 215 39 474 999 400 218 -10000 102 52 929 295 863 984 108 17 969 -10000 868 488 785 624 240 558 340 714 163 -10000 175 883 137 7 886 981 196 842 619 -10000 907 212 223 928 714 28 755 523 711 -10000 208 401 721 896 182 799 601 1000 482 -10000 421 779 371 960 424 829 646 135 757 -10000 692 83 995 213 317 426 236 295 665 -10000 650 429 22 1000 981 636 188 333 477 -10000 689 31 580 241 54 483 278 229 876 -10000 337 915 826 319 994 282 534 98 321 -10000 477 194 244 917 745 28 329 275 230 -10000 404 242 817 242 66 851 225 767 578 -10000 531 874 376 682 719 494 82 726 507 -10000 67 398 236 883 932 672 715 406 652 -10000 587 820 204 276 728 684 200 340 522 -10000 559 247 264 603 825 402 469 42 727 -10000 185 863 945 10 316 818 675 612 65 -10000 966 959 866 331 367 479 768 839 362 -10000 434 198 53 8 140 465 456 553 884 -10000 440 108 72 991 315 328 561 823 556 -10000 936 815 419 267 454 941 669 646 527 -10000 826 644 470 683 561 876 611 465 175 -10000 240 159 332 257 226 54 674 841 453 -10000 873 860 328 927 674 314 68 818 624 -10000 912 56 687 366 538 601 629 790 921 -10000 400 808 145 687 561 129 640 230 337 -10000 16 425 971 288 801 549 594 178 276 -10000 653 507 1 400 483 165 946 976 711 -10000 940 46 680 308 986 196 190 699 170 -10000 134 88 914 759 172 453 846 535 104 -10000 664 383 534 78 121 709 955 216 90 -10000 618 145 473 263 386 413 237 832 22 -10000 300 653 26 554 897 15 468 868 200 -10000 23 974 527 740 713 607 531 781 974 -10000 150 37 209 65 500 960 784 732 86 -10000 837 280 376 115 797 365 498 37 444 -10000 156 113 992 814 942 772 922 245 354 -10000 925 427 632 861 870 848 935 766 198 -10000 809 739 8 766 990 741 741 453 269 -10000 115 1000 560 276 90 599 73 358 941 -10000 340 439 634 139 822 793 793 720 626 -10000 158 270 79 78 652 967 667 879 596 -10000 232 881 403 482 573 253 605 540 107 -10000 146 395 412 486 821 279 406 637 698 -10000 287 332 14 602 974 441 477 453 489 -10000 993 147 738 928 896 745 150 452 952 -10000 8 110 273 738 809 146 646 844 161 -10000 352 241 877 598 940 920 966 441 862 -10000 91 548 2 819 297 191 539 659 253 -10000 59 794 451 815 32 162 633 82 402 -10000 573 771 881 943 287 533 929 345 0 -10000 851 923 44 94 520 897 751 365 566 -10000 16 9 299 350 199 389 803 418 542 -10000 966 508 907 66 4 909 967 393 108 -10000 662 378 156 404 163 183 952 134 719 -10000 877 212 200 428 935 169 798 183 249 -10000 128 437 583 185 447 525 112 964 917 -10000 118 830 3 253 778 478 127 99 836 -10000 531 403 729 952 429 808 981 594 119 -10000 85 636 229 425 775 61 259 278 260 -10000 74 421 110 574 789 881 762 382 551 -10000 223 447 297 292 977 781 262 801 655 -10000 818 565 311 454 236 208 432 646 808 -10000 171 207 622 894 678 868 251 655 752 -10000 984 558 988 541 527 832 832 929 123 -10000 998 833 946 180 904 364 786 3 720 -10000 266 641 546 783 605 830 927 965 954 -10000 58 680 148 224 133 213 439 43 173 -10000 752 791 180 535 646 620 197 783 759 -10000 554 180 279 985 752 911 695 659 475 -10000 548 887 350 836 394 727 178 110 652 -10000 167 240 370 647 888 929 771 252 504 -10000 591 884 983 352 510 233 443 773 427 -10000 383 786 467 772 272 107 934 905 772 -10000 254 184 337 458 517 835 245 488 953 -10000 112 408 653 718 637 605 712 609 632 -10000 272 579 914 220 853 898 66 710 605 -10000 75 632 354 628 493 412 905 561 963 -10000 843 40 979 735 560 682 900 961 37 -10000 307 165 565 464 771 808 556 678 403 -10000 110 339 764 991 149 463 803 618 561 -10000 810 728 563 643 35 810 101 618 976 -10000 39 550 816 727 956 760 552 4 899 -10000 549 504 87 209 953 210 547 802 411 -10000 998 81 450 250 564 402 574 717 72 -10000 582 581 360 720 100 84 578 140 916 -10000 912 804 57 793 728 362 580 760 234 -10000 440 514 351 224 298 313 767 396 171 -10000 752 568 949 641 41 535 772 468 882 -10000 103 733 25 376 220 296 778 572 787 -10000 989 288 369 903 3 913 662 594 492 -10000 382 818 353 130 747 846 215 688 488 -10000 490 718 108 619 380 676 926 277 919 -10000 155 641 916 440 965 249 581 598 290 -10000 770 632 809 466 25 381 160 659 413 -10000 504 235 342 508 126 753 276 516 729 -10000 76 123 781 280 592 413 660 737 574 -10000 445 960 720 500 650 475 472 407 195 -10000 185 963 432 294 861 880 795 413 33 -10000 853 726 732 258 270 245 994 99 556 -10000 98 391 901 531 862 165 152 215 641 -10000 990 309 553 178 481 730 784 371 334 -10000 991 399 878 315 610 656 673 756 806 -10000 40 843 444 647 182 293 805 486 159 -10000 344 235 574 657 937 539 288 368 714 -10000 336 418 337 158 600 555 371 335 550 -10000 494 819 549 113 526 886 399 746 558 -10000 872 730 19 385 40 563 156 65 707 -10000 188 706 976 762 282 510 935 614 159 -10000 976 876 543 655 804 210 504 113 30 -10000 840 235 467 603 349 5 64 74 742 -10000 638 535 609 561 178 249 53 286 703 -10000 815 169 465 127 908 811 504 293 402 -10000 520 852 148 399 791 24 189 738 382 -10000 312 383 960 73 2 11 73 291 39 -10000 393 745 661 917 737 209 252 578 16 -10000 179 566 682 636 382 760 665 723 21 -10000 313 950 267 67 217 454 570 531 302 -10000 338 505 852 202 266 130 951 544 951 -10000 65 33 39 118 223 372 148 885 579 -10000 572 897 929 468 25 13 934 861 828 -10000 567 122 447 82 211 11 515 384 469 -10000 156 61 662 368 50 244 984 382 144 -10000 690 698 121 160 502 140 95 403 608 -10000 156 296 153 865 573 115 272 318 775 -10000 787 962 423 70 484 973 596 885 624 -10000 848 477 441 718 195 210 439 836 75 -10000 97 942 491 734 789 758 83 907 502 -10000 38 621 220 21 704 896 187 674 543 -10000 938 642 755 860 944 811 874 552 277 -10000 273 117 856 961 392 624 403 344 294 -10000 345 578 163 996 599 217 41 609 94 -10000 765 718 611 357 762 146 666 301 171 -10000 447 549 777 134 74 243 594 375 678 -10000 372 923 914 251 632 574 884 794 498 -10000 505 653 928 347 81 897 235 995 53 -10000 658 519 130 56 693 980 542 641 146 -10000 187 660 193 152 296 553 791 174 858 -10000 606 342 76 562 13 54 299 94 871 -10000 148 964 838 781 402 424 909 163 714 -10000 273 269 257 987 653 389 559 987 922 -10000 126 57 607 144 62 831 559 645 727 -10000 524 785 40 833 389 607 398 653 711 -10000 713 330 133 403 797 892 116 716 816 -10000 170 578 498 366 833 18 455 954 35 -10000 959 101 690 441 177 875 997 819 528 -10000 476 272 329 230 130 761 776 740 659 -10000 86 692 999 953 842 918 324 675 152 -10000 88 534 101 20 333 87 222 772 137 -10000 572 688 910 999 950 152 913 615 57 -10000 445 706 129 638 351 111 300 398 212 -10000 100 575 989 68 704 437 819 781 267 -10000 605 335 584 247 568 117 389 544 993 -10000 947 688 349 173 299 445 799 427 387 -10000 27 168 222 349 561 338 517 317 601 -10000 0 457 437 766 989 174 336 229 989 -10000 508 290 260 339 716 649 618 975 156 -10000 199 856 80 897 37 529 185 774 424 -10000 463 77 778 968 846 453 794 912 189 -10000 207 264 461 592 638 798 528 163 775 -10000 103 96 966 98 701 951 494 896 557 -10000 511 464 39 194 932 16 668 773 449 -10000 502 685 411 226 789 732 231 250 930 -10000 817 861 945 130 46 111 308 750 136 -10000 164 38 925 795 603 75 843 954 676 -10000 917 480 119 9 633 854 983 918 944 -10000 774 949 697 536 849 62 625 93 722 -10000 486 52 502 593 395 407 897 248 488 -10000 125 224 981 399 525 980 573 952 469 -10000 571 778 313 132 106 952 920 200 396 -10000 541 468 732 72 238 454 785 89 373 -10000 512 177 898 972 867 614 673 285 289 -10000 539 361 732 429 891 252 333 946 816 -10000 878 582 694 77 420 810 977 917 397 -10000 575 4 226 140 809 892 694 389 226 -10000 746 376 108 970 796 847 558 190 713 -10000 750 498 719 999 960 264 694 22 875 -10000 429 568 444 591 920 654 849 534 713 -10000 629 64 335 290 577 874 716 110 147 -10000 177 237 560 208 772 514 65 228 744 -10000 716 521 519 763 322 475 238 44 633 -10000 306 263 33 318 666 159 40 526 196 -10000 200 856 16 879 639 774 330 459 590 -10000 47 717 457 878 818 134 951 203 425 -10000 331 21 369 404 993 539 84 75 388 -10000 144 344 658 676 497 715 243 437 510 -10000 750 280 750 72 681 956 608 913 851 -10000 771 121 668 901 619 570 148 436 534 -10000 515 59 909 845 241 810 863 251 255 -10000 320 305 923 858 663 413 143 604 685 -10000 253 16 543 128 302 712 595 467 543 -10000 5 296 109 400 731 943 381 468 405 -10000 421 441 140 70 505 333 886 474 226 -10000 666 94 789 284 606 964 138 249 969 -10000 308 780 777 452 866 718 914 779 908 -10000 12 353 112 441 624 684 984 306 875 -10000 246 847 300 470 487 691 562 621 945 -10000 924 528 595 186 793 118 342 710 343 -10000 431 123 240 216 565 167 175 679 935 -10000 63 888 313 455 540 719 158 182 991 -10000 424 757 156 688 24 499 285 435 342 -10000 347 955 891 12 311 375 950 417 402 -10000 954 755 553 449 924 42 469 202 632 -10000 377 665 215 631 805 332 928 588 224 -10000 223 609 75 159 386 591 115 312 611 -10000 353 318 106 900 731 148 367 83 613 -10000 207 675 636 16 440 659 209 751 34 -10000 486 343 969 775 190 142 727 469 830 -10000 209 469 590 161 168 952 723 459 869 -10000 390 878 203 277 968 430 917 641 152 -10000 856 762 614 120 44 823 796 938 741 -10000 989 428 960 730 496 403 314 910 871 -10000 588 217 351 66 338 929 860 567 256 -10000 619 679 921 296 890 610 924 624 889 -10000 417 869 103 549 321 121 277 709 118 -10000 564 573 239 194 869 865 491 284 157 -10000 696 868 35 209 849 435 811 238 943 -10000 908 471 764 81 663 332 928 305 652 -10000 626 843 550 229 91 251 137 217 489 -10000 373 872 407 816 341 485 349 758 613 -10000 302 118 113 28 188 357 823 237 418 -10000 470 757 520 977 482 203 348 798 174 -10000 320 962 306 959 736 434 678 618 531 -10000 128 214 829 560 279 727 879 777 96 -10000 916 81 404 652 645 24 61 565 458 -10000 819 356 372 755 113 297 963 697 248 -10000 903 672 547 773 593 251 0 422 732 -10000 904 370 859 932 258 607 173 456 276 -10000 734 100 41 474 51 815 238 526 303 -10000 839 273 372 822 345 130 220 379 4 -10000 735 629 402 494 550 470 730 109 439 -10000 162 850 423 159 707 119 545 267 172 -10000 838 296 987 80 628 963 738 71 891 -10000 841 838 584 242 36 293 537 293 267 -10000 795 916 352 270 18 313 430 369 129 -10000 313 494 891 135 432 385 377 73 155 -10000 28 724 261 402 756 361 919 514 922 -10000 522 981 993 282 145 764 567 216 29 -10000 791 731 797 797 722 314 47 741 417 -10000 767 676 684 178 460 891 746 776 447 -10000 431 424 277 456 184 949 199 67 741 -10000 455 121 915 12 355 807 145 742 527 -10000 945 592 337 504 80 474 453 291 210 -10000 68 156 967 789 138 454 993 474 458 -10000 5 539 789 910 977 848 388 830 220 -10000 77 92 627 357 370 555 377 42 149 -10000 134 433 516 118 745 313 223 594 58 -10000 533 793 523 441 315 254 852 762 343 -10000 560 321 37 17 770 188 585 900 978 -10000 829 293 903 346 500 344 466 458 472 -10000 423 837 12 356 629 987 141 364 505 -10000 574 663 713 846 258 613 840 464 439 -10000 840 446 44 693 60 896 779 628 837 -10000 266 502 908 812 533 704 904 694 506 -10000 301 496 482 61 91 913 723 945 632 -10000 677 802 166 318 411 911 792 271 16 -10000 356 218 190 21 352 541 947 240 863 -10000 470 298 314 76 756 889 734 986 236 -10000 412 95 710 168 95 847 126 137 60 -10000 926 381 530 70 651 637 67 603 224 -10000 886 913 607 743 398 185 441 808 232 -10000 807 451 846 608 617 447 319 327 449 -10000 611 111 886 106 728 707 877 99 383 -10000 553 165 597 706 932 193 807 438 871 -10000 43 177 193 580 927 950 764 376 394 -10000 221 229 206 355 563 640 564 523 538 -10000 409 199 477 340 937 224 352 371 813 -10000 44 578 940 468 48 663 500 970 874 -10000 502 643 656 537 9 745 601 753 207 -10000 198 748 274 671 208 967 638 541 218 -10000 850 643 320 662 867 37 776 207 430 -10000 647 735 69 314 930 48 654 870 691 -10000 71 522 172 19 578 39 626 116 59 -10000 392 235 370 154 652 542 396 284 672 -10000 290 176 451 308 697 991 590 396 101 -10000 120 779 195 121 358 691 939 593 586 -10000 495 176 177 877 536 548 351 859 273 -10000 475 507 434 80 631 749 991 832 77 -10000 785 534 535 902 792 973 715 406 445 -10000 231 800 102 266 461 84 360 148 397 -10000 869 365 436 480 305 956 818 152 731 -10000 655 571 155 342 557 333 318 787 404 -10000 825 88 753 454 975 6 501 92 804 -10000 746 747 798 170 628 802 56 360 381 -10000 252 247 336 485 135 804 476 822 858 -10000 410 988 656 767 318 183 68 715 829 -10000 298 287 640 195 540 214 255 492 550 -10000 978 306 825 767 28 719 976 288 869 -10000 357 278 539 584 846 483 692 346 967 -10000 346 434 675 184 60 764 510 760 726 -10000 118 320 860 154 343 483 461 727 707 -10000 49 701 318 862 729 65 391 305 376 -10000 115 932 920 57 164 5 895 689 367 -10000 198 642 804 702 709 471 496 491 805 -10000 140 62 549 946 558 769 120 518 69 -10000 470 526 897 10 95 919 87 475 77 -10000 325 961 415 344 357 575 112 639 978 -10000 123 86 416 801 636 265 377 194 296 -10000 367 319 430 618 246 889 3 764 784 -10000 831 55 843 386 179 901 691 588 706 -10000 346 458 542 169 454 78 556 75 702 -10000 351 24 480 737 380 984 345 748 215 -10000 754 346 43 948 623 854 878 153 355 -10000 721 345 715 542 769 489 574 665 151 -10000 12 767 893 453 384 712 40 29 619 -10000 505 0 827 906 272 239 614 180 958 -10000 371 743 747 626 822 548 954 322 185 -10000 312 568 725 929 279 673 455 402 870 -10000 47 355 779 255 612 810 360 144 628 -10000 760 80 469 891 731 242 269 816 68 -10000 407 860 596 368 118 949 453 592 468 -10000 232 863 236 473 384 601 428 492 889 -10000 793 66 66 642 469 429 526 554 905 -10000 598 148 448 25 156 656 408 337 107 -10000 288 198 541 750 274 692 252 535 374 -10000 655 78 410 505 553 674 901 335 33 -10000 820 811 158 207 607 686 195 824 363 -10000 138 505 800 710 495 756 256 819 65 -10000 258 538 194 273 407 322 646 531 764 -10000 131 750 351 152 188 841 201 629 201 -10000 998 843 193 208 357 677 151 574 451 -10000 328 813 288 859 639 723 885 580 594 -10000 77 151 55 20 80 675 329 218 19 -10000 20 799 260 464 193 29 715 276 544 -10000 372 270 438 664 452 633 859 308 879 -10000 539 962 951 486 948 450 834 963 974 -10000 559 819 95 368 965 392 430 389 646 -10000 684 778 778 454 544 499 447 694 940 -10000 50 981 64 376 201 108 688 375 611 -10000 717 592 26 803 917 103 168 1 88 -10000 394 834 249 527 51 264 307 709 680 -10000 706 149 235 182 886 369 428 776 753 -10000 418 416 977 989 790 854 261 64 865 -10000 485 680 222 926 896 196 60 62 902 -10000 718 311 959 525 203 943 921 737 629 -10000 977 797 125 376 993 479 164 230 264 -10000 291 627 759 584 173 59 946 456 297 -10000 943 663 767 314 95 967 279 258 219 -10000 201 293 861 14 467 619 136 294 7 -10000 37 190 860 947 251 114 1000 192 699 -10000 499 456 248 940 193 568 943 22 32 -10000 654 506 943 438 193 480 112 664 602 -10000 124 14 980 142 607 865 365 133 233 -10000 503 476 648 19 78 585 693 686 542 -10000 968 27 299 774 740 766 120 197 46 -10000 786 476 171 268 847 204 505 691 86 -10000 426 683 922 935 900 959 586 431 121 -10000 984 529 453 29 291 77 189 504 74 -10000 357 341 526 507 443 921 62 103 9 -10000 152 882 910 44 947 380 726 189 675 -10000 974 296 334 744 793 994 39 797 668 -10000 155 761 448 257 173 882 705 320 27 -10000 582 267 193 919 415 413 476 460 462 -10000 452 567 214 725 18 792 535 471 324 -10000 571 478 130 282 658 91 901 33 121 -10000 119 609 858 811 591 130 383 765 456 -10000 689 577 156 343 208 580 367 198 92 -10000 509 610 455 117 434 96 499 298 703 -10000 257 872 693 957 717 468 620 272 725 -10000 119 612 612 572 849 293 410 184 449 -10000 813 107 399 524 515 975 478 875 109 -10000 707 393 76 740 460 314 975 413 306 -10000 680 766 747 26 921 154 102 762 603 -10000 930 618 288 614 622 804 726 225 651 -10000 801 609 242 910 252 717 110 386 310 -10000 879 738 959 218 835 761 620 866 623 -10000 421 163 212 39 356 19 7 961 843 -10000 8 605 891 796 80 511 619 480 0 -10000 719 106 388 704 290 641 308 129 889 -10000 628 694 137 583 917 17 718 430 137 -10000 640 675 274 567 490 450 505 382 649 -10000 464 228 679 757 708 194 875 790 379 -10000 531 324 467 598 495 984 710 364 390 -10000 486 942 982 767 458 132 716 200 312 -10000 285 377 121 694 604 570 152 787 240 -10000 546 528 596 709 2 973 947 397 927 -10000 564 76 279 921 822 38 928 950 859 -10000 430 88 561 26 331 716 533 894 930 -10000 386 833 355 855 306 807 228 604 34 -10000 879 434 985 459 636 706 824 446 718 -10000 454 198 919 567 147 112 48 976 369 -10000 379 28 20 329 640 480 200 714 961 -10000 701 74 855 520 403 521 807 250 50 -10000 460 51 663 638 40 912 567 163 205 -10000 880 133 973 274 942 828 210 696 991 -10000 909 746 287 563 811 151 54 613 174 -10000 35 415 834 610 510 247 500 510 51 -10000 782 291 457 441 3 886 657 484 234 -10000 705 965 152 31 225 585 680 498 108 -10000 944 393 331 979 495 38 575 280 204 -10000 161 558 44 67 429 423 969 191 454 -10000 547 255 545 54 355 815 346 262 753 -10000 289 366 212 100 890 753 77 343 62 -10000 883 912 999 597 237 832 607 433 496 -10000 330 54 580 540 958 517 312 394 500 -10000 917 64 947 974 139 475 443 784 882 -10000 351 974 15 2 613 159 652 313 808 -10000 346 67 682 441 813 58 324 693 260 -10000 388 993 106 362 294 264 86 292 433 -10000 185 750 826 315 357 542 215 173 796 -10000 332 984 482 569 686 169 11 389 271 -10000 19 649 40 760 234 770 100 143 928 -10000 701 580 243 841 974 443 32 120 35 -10000 295 38 797 95 618 317 228 175 300 -10000 289 721 161 434 887 301 499 505 68 -10000 979 700 177 837 358 24 669 94 750 -10000 393 242 993 337 992 998 51 534 595 -10000 399 513 494 499 79 545 446 519 457 -10000 527 435 67 43 884 23 429 594 889 -10000 969 55 698 792 468 392 642 908 832 -10000 161 784 76 892 866 152 680 102 18 -10000 332 975 908 283 845 336 550 967 22 -10000 306 826 661 654 68 330 208 529 408 -10000 520 82 393 968 77 14 629 266 381 -10000 923 611 945 50 28 972 473 246 306 -10000 372 179 388 386 692 775 714 805 438 -10000 124 868 500 990 775 592 124 818 253 -10000 734 863 257 689 853 137 501 721 557 -10000 62 542 379 448 607 812 297 140 242 -10000 669 470 941 979 668 516 261 302 607 -10000 143 391 730 510 450 160 211 430 943 -10000 213 511 438 536 922 298 919 155 606 -10000 352 369 699 593 871 148 671 706 136 -10000 201 399 568 508 945 732 780 17 152 -10000 764 937 71 263 142 558 545 380 285 -10000 569 866 141 62 374 506 483 840 430 -10000 845 413 632 407 731 846 705 852 854 -10000 546 938 381 18 893 428 594 143 81 -10000 462 912 960 802 107 208 518 512 281 -10000 547 764 850 194 910 936 390 925 540 -10000 679 114 168 138 75 11 260 115 301 -10000 30 747 210 294 993 755 147 844 931 -10000 13 953 587 161 705 513 713 659 549 -10000 421 690 423 357 153 207 372 0 890 -10000 553 165 940 238 465 535 776 269 558 -10000 389 203 983 544 176 662 363 795 387 -10000 145 491 832 116 893 992 302 626 661 -10000 389 629 967 72 953 136 96 551 859 -10000 726 989 28 542 736 997 454 822 487 -10000 875 9 291 503 768 548 674 409 393 -10000 337 551 809 187 940 794 881 688 529 -10000 613 912 818 591 580 280 65 398 71 -10000 209 827 546 582 724 686 357 59 443 -10000 491 796 280 527 20 352 650 955 202 -10000 122 273 613 260 639 488 203 769 8 -10000 812 335 372 828 297 97 735 424 550 -10000 586 418 709 558 304 328 719 746 604 -10000 683 237 481 439 565 231 846 116 584 -10000 156 361 280 243 217 151 834 207 551 -10000 809 967 268 192 136 621 468 284 420 -10000 88 664 826 467 383 299 617 191 733 -10000 836 615 345 892 595 849 696 313 696 -10000 263 350 37 24 675 44 841 133 385 -10000 844 79 790 172 350 123 923 15 810 -10000 65 952 669 270 656 690 5 530 920 -10000 853 890 207 242 343 939 80 75 175 -10000 604 534 460 706 484 660 714 191 57 -10000 626 677 8 50 151 581 414 637 274 -10000 329 710 560 671 344 408 965 606 230 -10000 232 460 918 41 943 624 347 461 351 -10000 991 670 751 377 126 665 638 565 190 -10000 295 625 455 304 50 464 809 787 963 -10000 818 619 700 239 293 822 787 898 574 -10000 984 195 169 867 311 106 383 941 841 -10000 109 792 785 237 918 766 605 517 981 -10000 601 372 77 423 934 708 13 449 930 -10000 210 123 1000 7 286 127 637 53 452 -10000 449 79 851 458 662 633 737 629 720 -10000 555 15 895 849 883 680 266 372 225 -10000 201 732 250 744 145 293 278 549 809 -10000 167 530 820 242 409 571 597 632 642 -10000 10 822 711 369 61 763 887 580 78 -10000 10 407 874 623 849 506 454 944 637 -10000 491 107 1 225 596 272 263 637 153 -10000 833 478 308 617 562 633 451 214 142 -10000 347 459 5 751 731 912 870 525 626 -10000 98 365 99 33 588 655 779 164 207 -10000 646 924 528 623 802 688 467 991 926 -10000 483 544 717 491 711 348 379 484 267 -10000 28 473 644 889 872 506 889 745 656 -10000 519 660 282 750 36 487 37 20 720 -10000 169 190 380 699 809 557 633 18 867 -10000 14 360 6 492 499 689 629 536 646 -10000 253 40 482 875 402 485 757 695 539 -10000 478 109 308 46 156 59 292 831 452 -10000 825 989 555 735 572 607 444 107 873 -10000 382 797 813 611 554 629 787 843 106 -10000 736 418 144 173 51 413 153 907 123 -10000 403 648 946 586 41 483 333 66 504 -10000 378 683 258 320 314 907 437 674 801 -10000 974 348 867 671 366 317 479 212 422 -10000 545 80 656 800 124 107 717 119 327 -10000 639 340 672 954 596 175 334 519 459 -10000 870 436 265 442 5 490 726 660 945 -10000 174 822 848 310 315 720 78 642 843 -10000 187 301 673 392 173 89 426 378 807 -10000 121 195 622 159 359 486 655 458 980 -10000 863 167 951 470 919 565 350 782 37 -10000 842 301 524 241 55 848 363 853 489 -10000 23 249 861 109 198 409 652 504 604 -10000 890 210 851 299 381 456 383 615 665 -10000 983 166 155 275 615 165 720 913 305 -10000 996 626 492 598 358 499 181 721 630 -10000 619 909 11 901 38 816 877 460 463 -10000 337 70 788 776 625 853 95 990 605 -10000 815 487 175 31 148 415 850 670 666 -10000 179 338 133 843 526 684 998 80 176 -10000 47 610 451 289 459 327 181 948 888 -10000 824 461 910 776 348 745 215 650 816 -10000 259 139 586 602 248 900 239 614 121 -10000 180 501 2 763 264 324 825 41 155 -10000 891 599 114 291 740 669 924 491 893 -10000 362 655 320 68 916 735 732 329 441 -10000 697 273 808 989 862 507 279 103 845 -10000 968 55 361 193 389 495 968 441 20 -10000 357 526 388 706 100 252 253 541 949 -10000 46 472 381 822 377 944 516 280 243 -10000 682 354 748 225 533 997 876 523 387 -10000 848 932 834 42 489 702 674 358 154 -10000 311 211 835 372 796 49 297 446 453 -10000 529 994 631 216 716 297 617 831 285 -10000 305 376 704 786 143 417 434 193 866 -10000 503 887 209 140 901 912 242 142 757 -10000 208 712 302 586 118 149 872 585 181 -10000 645 860 470 291 907 612 465 266 547 -10000 84 996 964 363 9 14 823 389 987 -10000 273 813 914 222 735 195 464 196 854 -10000 81 354 536 385 523 661 244 535 955 -10000 86 942 180 303 290 697 55 751 805 -10000 975 321 835 236 58 537 553 65 48 -10000 151 391 840 116 94 407 547 582 214 -10000 745 69 246 544 135 395 947 711 739 -10000 605 75 116 672 448 636 800 380 347 -10000 526 245 583 937 956 888 10 692 137 -10000 714 500 326 233 84 94 444 380 486 -10000 47 3 607 365 2 107 591 181 271 -10000 643 143 231 536 747 991 286 157 290 -10000 331 120 39 501 476 601 904 78 804 -10000 862 233 637 641 988 755 187 636 69 -10000 894 429 901 12 463 447 951 337 976 -10000 113 695 749 825 268 827 639 75 251 -10000 353 429 426 478 830 311 620 407 596 -10000 851 27 826 822 64 13 891 153 282 -10000 525 863 595 429 71 945 186 692 927 -10000 920 463 673 223 312 876 616 289 861 -10000 737 38 540 687 442 807 775 254 767 -10000 849 329 413 396 714 387 183 399 980 -10000 118 76 946 389 617 752 982 720 963 -10000 692 86 870 131 594 209 546 776 465 -10000 95 66 537 491 405 314 74 509 791 -10000 233 157 590 767 921 800 100 636 366 -10000 814 961 650 994 767 826 107 474 537 -10000 885 441 774 135 634 217 624 154 836 -10000 732 23 3 516 455 272 371 425 241 -10000 798 38 781 729 826 304 713 642 646 -10000 482 803 647 157 450 175 826 931 860 -10000 711 320 47 925 985 931 424 854 688 -10000 599 398 317 739 833 955 245 736 124 -10000 484 908 425 311 610 654 976 874 889 -10000 189 870 348 825 911 623 722 15 875 -10000 196 344 316 31 55 647 845 509 179 -10000 931 615 987 234 77 847 567 593 23 -10000 308 240 47 106 951 433 936 931 399 -10000 542 122 467 343 907 770 233 385 430 -10000 763 527 502 325 608 1000 508 468 866 -10000 709 507 660 152 846 440 966 20 320 -10000 981 221 758 308 625 897 467 437 90 -10000 799 756 756 256 102 264 131 172 72 -10000 408 454 39 329 919 302 973 75 776 -10000 323 923 210 280 902 877 39 599 536 -10000 27 454 208 858 783 536 747 775 191 -10000 413 252 31 255 465 584 149 583 484 -10000 247 426 96 292 852 505 330 375 325 -10000 164 84 774 119 203 417 713 18 653 -10000 60 636 911 581 127 18 948 90 817 -10000 103 357 943 549 924 713 758 219 997 -10000 341 285 535 774 839 736 305 973 350 -10000 861 845 482 574 542 256 22 651 891 -10000 94 987 531 390 217 880 220 57 181 -10000 282 781 501 83 653 120 441 635 83 -10000 53 375 542 912 599 905 642 385 217 -10000 281 861 937 224 444 498 433 157 295 -10000 775 120 785 521 463 349 416 700 890 -10000 323 512 736 799 691 636 573 616 832 -10000 528 325 167 966 697 132 878 863 435 -10000 518 808 971 735 149 787 821 302 93 -10000 583 362 929 860 936 763 504 182 36 -10000 400 576 325 807 800 75 128 623 463 -10000 694 969 842 233 911 623 379 483 31 -10000 227 513 629 705 710 621 55 545 930 -10000 331 196 994 758 153 585 942 522 694 -10000 570 137 925 225 280 3 446 198 693 -10000 488 252 111 410 225 49 144 1 52 -10000 809 985 889 512 545 633 563 502 107 -10000 326 851 474 78 16 637 431 504 899 -10000 738 74 137 243 862 938 970 508 377 -10000 509 255 424 82 540 172 655 905 278 -10000 705 264 287 192 189 28 865 568 333 -10000 299 394 758 757 171 148 106 493 859 -10000 220 279 872 842 571 377 826 946 591 -10000 268 224 583 426 1000 945 636 146 538 -10000 157 273 78 241 664 444 26 122 987 -10000 670 827 463 875 522 563 867 856 66 -10000 908 260 127 578 794 586 214 490 782 -10000 350 479 277 206 66 158 725 18 74 -10000 84 242 199 620 872 486 86 561 60 -10000 983 684 517 108 934 477 831 278 773 -10000 262 640 550 743 889 198 874 339 806 -10000 861 858 495 744 333 916 570 225 55 -10000 414 205 3 275 308 572 80 628 700 -10000 987 607 619 691 250 952 629 218 439 -10000 129 644 556 412 135 960 47 845 969 -10000 164 677 11 253 339 542 838 712 516 -10000 229 698 496 272 822 951 499 405 338 -10000 863 693 586 817 195 551 745 109 27 -10000 455 557 464 633 759 458 909 342 639 -10000 52 206 69 245 31 157 747 936 899 -10000 989 376 954 892 42 49 439 984 885 -10000 429 261 155 492 799 471 384 9 411 -10000 913 170 818 291 693 275 413 44 318 -10000 987 206 64 823 230 716 343 201 812 -10000 939 364 46 552 101 240 18 888 438 -10000 875 995 146 898 113 704 84 454 551 -10000 747 673 545 256 182 224 301 378 1000 -10000 773 980 112 111 525 773 993 342 838 -10000 603 211 488 582 876 118 176 705 671 -10000 374 760 911 125 530 646 471 682 865 -10000 190 198 336 445 434 77 148 906 576 -10000 835 486 764 993 459 244 232 561 488 -10000 391 675 902 481 665 252 523 849 191 -10000 328 87 381 739 70 389 444 995 671 -10000 505 843 213 615 247 382 85 859 86 -10000 394 592 697 872 623 610 222 928 350 -10000 116 397 880 340 85 731 169 385 124 -10000 556 642 481 228 112 907 583 702 64 -10000 524 479 866 315 171 456 356 948 82 -10000 82 213 151 989 106 391 413 320 691 -10000 350 504 47 538 873 251 154 993 432 -10000 183 755 369 388 118 301 220 607 700 -10000 412 113 965 257 23 852 925 233 832 -10000 938 762 57 693 408 551 645 739 968 -10000 278 169 939 571 733 935 542 746 71 -10000 271 615 736 278 557 498 353 529 792 -10000 786 445 457 534 75 406 991 62 120 -10000 664 104 427 92 607 860 83 514 151 -10000 775 623 849 637 484 920 284 344 131 -10000 113 831 387 391 732 832 55 889 928 -10000 289 322 290 567 697 186 484 588 486 -10000 516 729 583 597 539 252 826 508 196 -10000 623 841 766 901 725 375 108 473 781 -10000 371 294 118 740 519 6 347 214 336 -10000 53 809 140 904 810 355 539 352 907 -10000 136 971 153 382 24 701 555 591 178 -10000 857 821 563 106 242 194 196 609 150 -10000 949 392 495 912 393 190 352 518 516 -10000 469 146 334 432 251 313 565 934 611 -10000 778 304 711 892 835 601 892 490 103 -10000 391 541 887 182 949 752 888 649 549 -10000 466 279 994 114 813 862 267 689 462 -10000 293 851 678 65 974 904 227 178 726 -10000 576 910 176 569 735 531 387 392 863 -10000 251 432 785 288 867 627 530 222 64 -10000 881 215 980 569 204 933 26 924 562 -10000 620 560 885 844 54 751 858 805 593 -10000 731 159 752 937 28 145 213 131 69 -10000 257 54 695 68 715 248 547 969 454 -10000 679 35 878 610 855 102 467 362 400 -10000 254 399 530 337 546 352 392 451 445 -10000 498 453 663 977 249 272 211 59 521 -10000 663 6 579 897 18 743 866 116 917 -10000 145 826 36 798 472 939 642 502 541 -10000 260 335 889 494 301 827 527 238 468 -10000 186 43 191 955 211 3 300 49 923 -10000 179 560 347 777 963 680 84 339 799 -10000 540 971 405 978 798 117 253 482 672 -10000 532 499 777 763 400 752 376 847 577 -10000 585 926 92 901 349 60 413 705 759 -10000 979 907 854 165 913 117 717 841 803 -10000 227 716 356 136 532 392 853 907 202 -10000 751 499 586 136 5 489 514 824 985 -10000 131 453 966 559 966 151 483 941 72 -10000 746 539 65 450 632 924 175 239 864 -10000 289 484 10 872 975 863 471 113 985 -10000 392 940 393 91 986 741 210 238 484 -10000 536 353 320 827 219 534 337 699 365 -10000 641 597 946 659 212 639 44 470 793 -10000 613 705 567 445 360 69 848 717 561 -10000 951 2 262 422 967 382 431 779 427 -10000 695 921 834 42 880 21 189 559 263 -10000 167 64 341 826 488 136 22 627 112 -10000 771 637 824 519 102 221 257 905 152 -10000 524 924 622 305 604 976 199 152 442 -10000 724 442 233 480 892 122 111 960 686 -10000 162 3 683 729 163 823 391 823 587 -10000 615 847 608 336 229 557 936 727 102 -10000 448 390 764 21 141 38 625 451 60 -10000 139 374 583 46 850 553 245 386 398 -10000 482 89 450 763 565 43 83 919 945 -10000 186 679 352 556 895 531 174 660 753 -10000 245 46 488 979 711 968 223 199 393 -10000 638 558 362 973 999 25 710 241 757 -10000 950 41 138 945 657 3 634 581 127 -10000 125 790 243 941 701 682 776 544 536 -10000 217 88 870 771 88 574 71 536 263 -10000 686 594 711 779 45 28 771 849 292 -10000 618 736 754 292 990 298 682 278 139 -10000 920 408 996 769 407 705 964 725 118 -10000 804 275 171 948 501 443 704 601 150 -10000 186 324 85 233 668 812 396 733 199 -10000 986 284 525 240 363 482 809 57 564 -10000 440 995 887 409 830 349 415 878 690 -10000 610 934 497 722 411 880 678 294 662 -10000 957 714 320 444 974 124 933 678 878 -10000 217 964 356 835 735 629 141 596 370 -10000 599 79 179 692 960 998 750 417 923 -10000 343 476 592 767 281 12 906 550 222 -10000 352 601 693 226 896 397 238 727 832 -10000 415 252 187 35 627 956 935 316 937 -10000 702 22 664 59 608 521 519 208 432 -10000 870 602 144 50 33 769 868 983 264 -10000 871 297 492 391 540 819 698 818 266 -10000 390 98 24 560 444 340 61 706 196 -10000 993 144 418 516 101 436 343 935 481 -10000 967 464 783 901 294 627 832 809 805 -10000 495 83 661 930 299 334 242 909 635 -10000 608 82 187 382 769 284 696 700 619 -10000 34 896 237 355 337 957 27 696 327 -10000 957 447 955 726 121 26 644 381 523 -10000 565 148 871 91 946 370 109 404 884 -10000 919 953 846 605 184 699 929 126 720 -10000 691 17 210 67 294 418 276 644 647 -10000 799 912 643 800 233 79 286 307 986 -10000 246 972 884 314 703 100 34 955 435 -10000 912 55 677 705 290 993 337 809 523 -10000 606 695 249 265 905 288 147 158 8 -10000 920 240 610 108 287 628 103 392 540 -10000 50 530 585 880 58 297 827 363 222 -10000 320 901 528 123 961 816 321 588 887 -10000 621 197 101 477 355 239 34 59 945 -10000 191 708 833 21 234 462 389 193 879 -10000 262 878 710 562 891 6 447 821 418 -10000 166 336 722 18 698 416 107 861 853 -10000 213 158 146 482 775 213 557 361 312 -10000 411 7 705 859 795 717 500 160 820 -10000 585 381 905 100 929 286 853 771 737 -10000 672 381 606 123 469 341 734 11 1 -10000 180 484 437 469 42 214 261 442 633 -10000 166 176 217 67 151 906 329 289 67 -10000 978 806 173 115 599 627 962 412 192 -10000 529 811 746 527 566 681 322 528 237 -10000 966 971 933 400 504 951 779 996 721 -10000 821 79 570 677 932 585 378 149 713 -10000 807 748 613 849 541 170 145 70 526 -10000 983 734 193 898 851 967 640 869 171 -10000 300 649 878 198 47 824 963 468 529 -10000 789 674 549 433 549 798 117 593 739 -10000 500 440 960 276 482 947 391 110 303 -10000 155 827 735 363 51 62 569 297 795 -10000 107 121 613 786 255 910 384 277 807 -10000 338 1000 716 831 763 341 707 572 550 -10000 488 310 450 497 640 599 752 743 228 -10000 779 488 498 241 586 261 316 18 439 -10000 340 342 222 371 819 764 809 137 142 -10000 442 20 52 826 216 71 172 735 436 -10000 293 434 87 113 175 30 776 204 748 -10000 786 30 849 116 266 204 770 138 26 -10000 844 744 88 685 409 50 127 926 818 -10000 849 193 657 134 25 368 84 369 847 -10000 740 362 628 746 863 255 83 904 704 -10000 167 723 194 670 558 723 286 448 298 -10000 461 763 401 773 457 235 410 443 809 -10000 201 647 798 834 372 255 312 27 574 -10000 691 770 424 132 739 693 826 107 896 -10000 46 488 768 502 172 787 315 32 571 -10000 402 544 148 21 601 101 938 381 908 -10000 615 567 45 618 192 514 40 357 605 -10000 74 480 512 841 112 526 838 974 549 -10000 279 665 318 540 425 304 454 180 995 -10000 68 566 131 627 637 781 690 589 62 -10000 205 644 905 596 657 691 960 684 501 -10000 650 214 819 254 410 715 675 266 526 -10000 106 141 614 269 955 506 269 331 576 -10000 548 19 675 648 332 157 575 927 173 -10000 482 415 664 125 295 859 931 658 208 -10000 230 741 588 242 453 480 964 896 611 -10000 403 216 950 577 968 83 238 873 182 -10000 708 533 839 123 953 95 327 420 222 -10000 694 981 225 949 957 131 204 867 14 -10000 956 822 165 33 500 895 395 210 439 -10000 598 549 917 251 225 912 671 665 975 -10000 337 57 396 252 795 420 242 453 266 -10000 941 161 461 223 369 73 761 297 246 -10000 925 81 72 534 172 86 344 495 980 -10000 810 456 107 473 318 933 706 486 917 -10000 127 169 242 468 530 174 963 189 454 -10000 477 554 620 546 298 411 318 907 494 -10000 594 79 918 708 74 265 59 460 351 -10000 273 413 915 202 87 527 500 683 477 -10000 631 294 711 267 385 726 170 581 597 -10000 641 886 403 250 825 400 870 423 196 -10000 678 207 809 472 606 884 931 387 573 -10000 505 406 122 247 548 736 945 574 787 -10000 651 64 799 481 302 672 951 368 834 -10000 43 26 568 388 461 114 889 972 584 -10000 886 578 532 416 540 693 876 506 958 -10000 616 10 522 228 578 377 670 820 466 -10000 778 333 131 610 458 524 681 807 469 -10000 837 303 510 535 795 320 133 665 319 -10000 638 881 400 513 962 339 256 647 510 -10000 364 391 151 534 419 368 649 881 431 -10000 834 38 455 815 1 190 423 174 313 -10000 100 637 134 109 633 103 501 355 469 -10000 381 609 221 177 255 307 81 717 447 -10000 426 649 559 934 563 277 231 416 679 -10000 509 104 418 829 770 547 320 624 762 -10000 758 124 777 65 675 11 719 112 722 -10000 953 971 273 173 621 306 571 97 625 -10000 956 17 621 110 519 675 182 320 290 -10000 74 263 92 74 364 498 875 170 952 -10000 850 896 271 28 712 187 705 695 557 -10000 162 835 850 560 187 649 246 79 565 -10000 193 97 479 471 39 192 436 627 793 -10000 72 153 332 224 993 647 303 980 276 -10000 266 892 759 397 709 469 598 534 801 -10000 975 600 502 938 486 525 142 218 530 -10000 604 81 290 327 704 450 21 265 431 -10000 129 790 111 275 574 650 464 313 571 -10000 50 157 403 676 201 792 315 402 993 -10000 738 267 234 900 904 338 476 656 127 -10000 301 495 600 211 101 455 942 710 798 -10000 915 859 150 997 778 607 27 705 586 -10000 87 29 706 393 503 103 230 45 137 -10000 634 266 942 237 281 8 293 815 511 -10000 905 619 527 326 613 655 890 145 300 -10000 317 837 663 892 706 754 981 172 58 -10000 534 6 180 773 893 486 618 119 411 -10000 486 796 111 969 396 435 237 84 84 -10000 90 949 308 199 241 745 183 624 440 -10000 886 482 108 604 580 288 136 42 73 -10000 776 133 935 991 638 959 839 709 490 -10000 23 608 672 120 67 615 12 616 209 -10000 787 743 609 639 351 467 200 116 167 -10000 201 150 65 456 550 711 145 599 332 -10000 195 68 542 901 450 724 813 841 763 -10000 409 546 128 955 215 586 730 966 415 -10000 993 822 264 275 936 66 890 699 737 -10000 63 696 464 433 410 609 653 626 232 -10000 707 187 963 321 14 381 401 582 689 -10000 391 215 441 779 305 52 399 945 446 -10000 98 693 929 856 384 118 953 349 330 -10000 33 913 966 919 985 504 817 634 953 -10000 650 847 921 409 784 370 457 439 446 -10000 647 169 358 679 604 144 91 363 429 -10000 44 475 394 983 17 730 835 543 109 -10000 436 323 702 326 731 904 494 529 491 -10000 973 614 403 0 776 690 475 175 318 -10000 654 158 490 598 821 71 318 315 427 -10000 909 434 437 295 982 15 723 247 487 -10000 720 339 684 103 942 106 504 177 708 -10000 154 702 996 85 874 681 600 646 991 -10000 540 822 52 646 631 389 842 642 423 -10000 261 723 94 166 811 567 353 403 447 -10000 487 866 667 560 758 451 844 413 418 -10000 825 873 958 965 582 703 92 573 683 -10000 913 275 686 756 346 921 632 32 354 -10000 21 565 87 151 900 196 489 187 942 -10000 742 39 898 830 948 460 980 968 296 -10000 263 211 827 372 213 352 606 339 403 -10000 525 691 847 261 564 742 254 446 602 -10000 460 883 676 262 954 602 93 72 240 -10000 497 172 247 586 736 905 47 577 404 -10000 47 678 0 520 293 788 681 960 419 -10000 444 151 585 130 176 778 94 861 772 -10000 181 57 659 614 37 70 455 46 285 -10000 361 305 465 200 851 836 244 799 602 -10000 750 387 298 417 253 978 218 523 709 -10000 746 117 132 811 836 197 633 59 664 -10000 465 755 497 656 223 720 80 179 786 -10000 891 729 960 797 311 58 295 245 486 -10000 853 739 882 943 174 460 100 290 700 -10000 667 789 948 350 231 587 867 241 559 -10000 445 404 200 396 358 708 875 872 983 -10000 825 948 559 58 742 980 281 190 997 -10000 262 655 633 982 296 859 383 235 917 -10000 710 361 572 129 274 542 613 933 625 -10000 409 840 718 210 218 504 992 547 559 -10000 777 946 631 27 666 969 826 167 862 -10000 943 978 272 146 338 601 875 579 368 -10000 753 824 872 631 810 108 818 724 683 -10000 936 48 784 23 474 676 734 859 53 -10000 666 108 420 489 469 544 118 676 234 -10000 626 523 765 419 418 772 73 598 82 -10000 971 722 161 129 69 952 56 662 430 -10000 9 388 814 316 563 667 839 340 38 -10000 605 137 985 942 961 551 990 596 643 -10000 644 818 15 902 809 578 466 497 381 -10000 903 125 165 897 413 446 491 112 93 -10000 117 913 18 884 90 160 646 570 969 -10000 290 97 181 656 533 996 963 91 205 -10000 357 420 854 274 815 469 42 34 62 -10000 261 447 816 230 216 661 186 39 300 -10000 941 929 949 109 351 577 412 877 459 -10000 848 50 942 913 230 109 454 505 919 -10000 422 544 854 504 416 11 29 662 253 -10000 648 917 242 236 570 788 787 516 858 -10000 408 757 495 373 68 183 915 294 331 -10000 729 681 692 781 698 833 404 555 379 -10000 178 506 729 571 103 445 887 869 98 -10000 629 260 290 506 197 633 959 891 343 -10000 277 627 250 831 971 238 485 464 707 -10000 515 674 897 791 376 75 886 330 650 -10000 254 139 349 63 479 205 165 687 881 -10000 197 540 875 334 589 313 405 256 151 -10000 454 707 538 709 940 821 739 335 773 -10000 81 751 509 432 958 707 170 64 629 -10000 80 438 22 172 218 677 321 374 429 -10000 568 481 527 44 878 396 577 433 830 -10000 390 885 732 734 165 340 877 999 1 -10000 908 315 400 953 990 226 225 567 423 -10000 453 406 470 793 9 364 53 638 985 -10000 287 889 637 617 312 102 432 156 845 -10000 813 995 411 3 730 323 824 300 945 -10000 270 614 245 504 838 879 498 787 675 -10000 76 111 614 928 783 222 863 683 256 -10000 154 863 266 307 258 94 937 566 185 -10000 318 628 948 374 170 23 276 705 721 -10000 751 722 673 209 557 664 300 989 894 -10000 181 112 272 606 466 644 658 154 555 -10000 909 243 349 374 320 185 331 901 255 -10000 848 866 1000 768 952 263 108 628 174 -10000 625 590 108 505 361 649 409 346 909 -10000 96 638 453 173 934 819 653 73 737 -10000 799 642 632 967 610 85 448 778 505 -10000 522 977 986 588 225 692 377 664 534 -10000 18 298 359 166 833 174 99 315 920 -10000 134 352 866 168 578 298 99 977 985 -10000 538 393 592 286 685 69 77 943 902 -10000 411 178 395 676 880 895 306 18 387 -10000 184 681 868 847 970 195 393 494 766 -10000 50 183 934 190 836 552 522 570 878 -10000 70 376 194 885 226 229 791 506 377 -10000 779 152 291 161 638 539 249 863 536 -10000 997 776 422 751 973 685 837 884 315 -10000 125 524 955 353 98 419 409 305 202 -10000 794 92 769 22 103 790 743 413 17 -10000 739 382 889 687 924 441 180 32 691 -10000 663 789 297 752 179 933 541 16 931 -10000 272 708 168 492 54 74 574 992 909 -10000 522 374 414 163 319 868 356 736 327 -10000 936 387 873 668 608 218 925 722 71 -10000 487 120 755 261 739 765 394 174 746 -10000 77 859 565 52 939 225 494 19 117 -10000 47 801 1 291 342 126 488 861 996 -10000 442 187 555 262 762 695 297 308 129 -10000 681 766 549 304 884 491 59 714 89 -10000 343 183 601 946 380 35 559 480 106 -10000 681 533 156 672 320 422 763 288 190 -10000 43 734 912 899 671 751 460 74 417 -10000 872 822 456 967 492 82 146 552 720 -10000 228 159 275 705 301 280 58 346 443 -10000 9 210 51 748 680 655 387 779 140 -10000 784 783 936 274 856 996 89 231 126 -10000 802 632 667 357 247 625 334 689 445 -10000 917 644 972 228 962 848 317 169 619 -10000 706 78 444 406 847 683 609 419 697 -10000 39 142 110 700 212 194 691 836 987 -10000 555 562 894 704 777 455 23 102 865 -10000 645 710 492 203 815 161 880 839 760 -10000 172 296 46 903 112 202 561 275 183 -10000 741 815 553 746 442 209 131 223 1000 -10000 453 554 721 822 460 191 134 326 399 -10000 400 22 619 497 130 188 293 164 528 -10000 308 402 592 707 3 478 607 798 535 -10000 93 200 303 403 770 933 54 982 154 -10000 860 195 528 167 384 447 96 373 228 -10000 835 873 513 16 357 129 180 595 410 -10000 493 295 712 552 345 730 382 361 726 -10000 758 56 735 378 189 947 60 721 953 -10000 893 134 560 265 490 749 986 891 137 -10000 541 511 375 57 83 75 289 68 745 -10000 408 111 650 309 588 582 717 867 795 -10000 148 731 41 592 69 964 796 386 629 -10000 18 966 666 578 105 278 259 591 174 -10000 92 759 661 264 48 966 453 617 801 -10000 669 162 956 234 759 337 86 239 302 -10000 881 6 296 911 809 302 543 464 422 -10000 200 771 637 271 598 917 303 125 2 -10000 108 229 319 653 158 679 909 104 311 -10000 55 938 537 871 604 3 590 989 792 -10000 577 152 586 603 567 117 268 943 276 -10000 379 795 594 972 627 254 673 331 135 -10000 111 516 727 910 526 402 904 790 368 -10000 200 382 932 351 330 455 739 903 275 -10000 962 487 816 28 569 693 337 405 618 -10000 412 493 141 728 852 593 908 302 628 -10000 98 753 291 372 135 538 451 261 676 -10000 396 405 556 330 874 346 703 877 201 -10000 554 626 182 983 413 177 210 329 945 -10000 228 23 713 417 212 223 350 45 747 -10000 498 928 104 525 7 650 275 28 261 -10000 764 496 554 624 599 992 606 494 518 -10000 31 623 937 342 191 907 737 687 870 -10000 105 323 63 665 47 624 467 58 71 -10000 487 91 885 939 823 780 214 964 686 -10000 735 430 385 197 74 716 801 813 431 -10000 190 795 744 537 517 336 737 511 908 -10000 784 558 51 66 288 6 768 492 671 -10000 977 10 995 342 735 758 602 780 785 -10000 487 81 560 214 39 692 290 524 690 -10000 124 821 643 986 461 631 324 693 238 -10000 10 945 398 375 56 92 251 447 20 -10000 745 430 722 760 810 549 389 431 553 -10000 908 228 44 150 589 629 31 626 516 -10000 596 73 675 311 609 246 925 196 308 -10000 470 920 569 372 436 235 522 644 279 -10000 381 756 326 541 798 831 32 478 294 -10000 322 421 24 562 886 737 554 850 157 -10000 721 677 871 666 503 573 556 504 792 -10000 286 229 899 942 507 536 265 916 93 -10000 138 585 136 765 530 536 193 826 775 -10000 558 55 888 15 232 753 770 291 562 -10000 846 175 696 736 206 618 495 577 912 -10000 601 534 811 137 216 91 941 907 619 -10000 241 275 484 848 888 389 584 906 879 -10000 179 340 113 744 193 412 692 344 961 -10000 572 27 855 811 464 226 755 329 907 -10000 583 908 520 216 919 67 764 453 425 -10000 77 744 68 454 156 646 244 372 410 -10000 819 425 45 675 173 123 680 599 809 -10000 901 543 215 438 845 198 18 546 310 -10000 274 639 520 353 63 525 358 168 714 -10000 154 542 539 824 502 277 966 171 255 -10000 60 637 217 763 736 326 426 114 876 -10000 453 95 740 689 408 611 314 103 925 -10000 486 237 243 490 836 141 314 401 730 -10000 726 684 56 498 974 597 454 195 142 -10000 517 16 11 426 520 744 540 753 144 -10000 884 185 916 79 734 60 978 987 367 -10000 674 263 604 939 969 233 108 398 389 -10000 229 608 143 535 246 332 713 619 452 -10000 813 300 85 456 376 389 350 861 168 -10000 988 921 405 867 999 252 142 706 73 -10000 650 221 138 639 271 675 240 601 125 -10000 587 822 823 645 202 209 402 680 413 -10000 857 105 705 581 1 324 757 39 859 -10000 762 728 54 715 130 201 281 131 279 -10000 345 897 745 959 923 950 419 935 476 -10000 291 273 355 841 490 292 560 115 322 -10000 333 179 579 474 582 863 992 785 108 -10000 400 268 49 639 83 18 725 319 362 -10000 932 277 950 316 912 575 517 62 577 -10000 806 431 646 461 133 74 159 68 556 -10000 313 401 843 444 554 739 357 976 467 -10000 551 940 121 320 401 140 18 471 91 -10000 639 397 676 913 121 732 785 394 565 -10000 635 995 630 230 669 466 716 411 678 -10000 632 821 256 640 107 507 946 259 413 -10000 341 227 112 246 998 241 710 409 95 -10000 215 836 397 719 418 27 763 14 340 -10000 825 932 185 478 952 153 112 60 550 -10000 387 406 216 531 2 837 574 499 845 -10000 760 474 378 223 608 350 282 733 140 -10000 83 590 864 94 790 942 552 721 688 -10000 849 935 787 635 179 712 165 47 114 -10000 966 279 294 477 650 631 80 426 691 -10000 20 880 240 855 528 482 901 251 866 -10000 165 9 763 566 393 857 134 671 476 -10000 686 558 305 242 728 685 717 171 534 -10000 47 634 373 928 266 589 218 45 980 -10000 142 396 586 631 571 332 923 789 879 -10000 519 317 713 500 102 843 221 94 975 -10000 807 800 310 264 61 274 946 336 2 -10000 972 956 454 569 771 70 219 795 575 -10000 270 828 349 534 526 33 460 362 758 -10000 980 502 572 840 372 123 390 41 533 -10000 235 268 137 985 385 926 250 331 941 -10000 246 969 441 269 40 758 885 288 726 -10000 523 542 617 918 312 809 991 706 867 -10000 993 656 319 426 912 890 652 910 645 -10000 635 580 936 276 584 906 447 887 764 -10000 802 885 144 86 171 717 35 602 548 -10000 130 696 688 166 563 66 354 646 483 -10000 594 896 870 312 338 33 404 460 823 -10000 567 794 215 767 381 297 398 412 178 -10000 601 334 262 959 72 876 323 737 79 -10000 930 737 898 605 189 179 633 583 810 -10000 440 587 914 520 668 87 576 684 762 -10000 83 76 21 685 927 393 1000 107 624 -10000 256 405 484 599 375 876 115 720 624 -10000 770 826 423 115 161 919 796 444 132 -10000 436 702 141 835 856 988 229 563 722 -10000 85 786 989 222 532 507 245 730 217 -10000 980 151 527 835 844 224 955 335 480 -10000 967 154 375 411 29 500 84 672 718 -10000 582 213 66 307 625 519 901 727 197 -10000 661 952 994 29 75 157 244 973 605 -10000 847 448 888 460 242 556 92 945 934 -10000 523 87 632 134 832 144 688 825 620 -10000 869 198 279 697 824 728 231 268 257 -10000 91 937 266 154 456 4 481 429 342 -10000 874 148 527 462 704 52 3 202 15 -10000 471 296 128 17 263 533 563 143 633 -10000 224 810 990 551 974 324 364 429 554 -10000 77 256 930 44 505 612 339 0 562 -10000 0 826 438 1000 103 449 400 976 859 -10000 121 478 196 416 613 113 138 800 888 -10000 704 789 335 845 371 840 603 684 169 -10000 774 126 900 134 17 722 772 986 525 -10000 913 198 670 729 385 555 562 708 175 -10000 363 829 573 499 58 274 22 899 931 -10000 535 111 192 470 595 750 147 551 130 -10000 760 480 862 496 693 833 331 375 414 -10000 434 139 20 980 203 146 858 394 643 -10000 659 649 557 430 800 228 213 65 278 -10000 576 911 894 240 778 518 808 86 355 -10000 414 473 748 862 221 52 36 662 701 -10000 236 989 161 206 756 923 103 974 55 -10000 683 323 285 994 383 313 216 716 144 -10000 797 461 784 98 956 296 459 201 604 -10000 533 459 361 923 253 14 361 331 39 -10000 47 139 456 955 454 809 972 572 48 -10000 274 956 156 353 793 284 380 840 740 -10000 146 776 276 79 130 617 953 972 693 -10000 831 621 670 691 825 999 58 248 450 -10000 390 309 281 367 263 489 927 401 660 -10000 582 855 685 468 520 741 282 920 99 -10000 160 310 677 264 338 839 218 365 164 -10000 206 975 531 543 71 282 727 346 99 -10000 988 323 946 870 950 836 521 650 419 -10000 666 747 883 907 755 758 332 602 198 -10000 166 207 676 461 386 248 373 820 866 -10000 512 268 730 301 994 601 451 971 823 -10000 388 342 756 564 759 471 599 270 557 -10000 148 600 620 840 891 819 115 431 46 -10000 779 56 962 117 259 393 330 24 28 -10000 636 803 972 855 56 147 16 907 411 -10000 401 224 584 420 99 393 240 517 52 -10000 154 272 274 335 674 405 122 931 72 -10000 682 929 219 56 125 761 626 908 735 -10000 680 288 259 366 914 848 269 469 782 -10000 537 640 892 8 250 186 781 479 801 -10000 850 436 740 264 738 197 812 915 105 -10000 321 952 871 179 700 308 607 305 193 -10000 168 933 392 303 585 629 314 558 462 -10000 330 391 423 889 1 153 714 719 476 -10000 268 42 583 767 807 241 226 934 717 -10000 25 613 482 637 376 28 764 836 854 -10000 494 185 992 461 376 653 976 707 337 -10000 499 724 329 680 107 103 979 691 587 -10000 738 371 629 664 330 346 873 137 89 -10000 656 913 10 561 310 961 805 837 570 -10000 465 855 196 571 706 781 882 574 163 -10000 84 605 296 266 647 132 439 507 749 -10000 355 666 527 120 503 829 56 85 556 -10000 783 482 551 743 748 740 328 507 602 -10000 496 216 266 352 221 74 432 19 751 -10000 187 993 247 64 744 989 369 74 555 -10000 751 310 11 86 96 320 578 258 878 -10000 745 908 708 322 925 947 474 40 737 -10000 255 540 545 556 203 290 292 484 54 -10000 65 620 881 18 53 49 580 367 737 -10000 238 970 496 395 578 566 406 897 528 -10000 93 214 920 353 494 996 864 416 939 -10000 672 156 712 976 20 745 796 643 457 -10000 448 152 116 994 822 336 553 832 683 -10000 989 486 53 304 378 571 190 187 310 -10000 778 457 931 380 243 920 687 419 835 -10000 851 419 871 209 731 528 16 743 986 -10000 210 0 283 897 639 997 242 998 796 -10000 828 527 685 649 588 977 583 893 218 -10000 547 924 861 413 408 288 51 628 846 -10000 657 801 450 726 352 637 200 72 100 -10000 265 54 833 241 5 277 378 628 970 -10000 776 367 18 793 564 784 18 733 251 -10000 474 161 254 869 37 879 958 464 559 -10000 899 361 250 656 254 766 33 18 322 -10000 816 242 723 84 425 275 85 979 905 -10000 325 256 466 287 823 998 853 212 303 -10000 245 138 179 574 195 481 153 376 914 -10000 799 111 159 745 174 256 652 352 146 -10000 204 364 781 26 786 487 74 358 711 -10000 796 637 189 710 223 547 861 651 413 -10000 429 609 854 976 903 838 448 396 364 -10000 826 821 920 722 567 536 106 172 699 -10000 982 848 664 558 792 137 908 61 871 -10000 429 470 214 662 129 578 883 897 684 -10000 937 90 179 30 297 406 455 662 262 -10000 672 196 279 210 268 717 91 602 777 -10000 785 159 729 708 232 926 6 959 801 -10000 153 101 524 113 550 641 209 935 109 -10000 416 807 708 683 773 114 482 312 598 -10000 352 649 717 604 352 850 846 857 462 -10000 674 828 641 755 610 2 18 76 702 -10000 946 93 821 49 117 419 566 558 0 -10000 220 3 203 952 716 153 471 684 888 -10000 831 359 2 625 753 171 529 138 572 -10000 446 981 201 595 128 985 188 934 7 -10000 651 359 577 321 186 326 4 793 770 -10000 520 17 734 365 603 238 227 926 564 -10000 245 621 287 778 7 866 772 113 256 -10000 620 468 773 411 757 127 754 221 121 -10000 64 643 65 941 460 121 155 598 315 -10000 849 1 50 627 696 359 246 224 893 -10000 253 556 932 795 528 339 868 312 787 -10000 469 287 374 166 175 918 656 645 585 -10000 399 470 846 509 286 633 77 868 2 -10000 32 429 469 7 955 310 210 164 417 -10000 72 34 695 667 469 489 591 114 564 -10000 61 140 64 612 798 204 609 421 321 -10000 112 205 823 709 170 854 16 257 626 -10000 693 158 136 207 691 566 322 531 834 -10000 165 897 1000 738 338 556 657 487 342 -10000 942 579 686 358 604 678 982 600 929 -10000 93 102 1 1000 720 29 904 905 729 -10000 134 133 347 946 368 911 450 79 155 -10000 96 450 388 932 203 40 497 928 123 -10000 508 139 683 79 811 650 993 617 405 -10000 306 727 433 448 354 713 71 453 381 -10000 44 716 840 232 284 750 729 774 22 -10000 174 411 55 734 357 372 226 709 30 -10000 441 303 494 543 831 658 789 502 568 -10000 5 654 236 241 827 260 188 40 77 -10000 720 34 380 83 497 388 211 514 825 -10000 648 528 883 67 864 164 66 709 159 -10000 871 662 329 81 591 274 670 603 284 -10000 577 230 289 93 273 942 3 209 162 -10000 892 753 875 60 465 299 499 23 350 -10000 713 99 618 852 180 461 820 304 268 -10000 549 73 758 819 450 908 53 778 300 -10000 259 779 493 407 169 776 549 473 306 -10000 601 828 983 873 622 219 209 392 653 -10000 569 7 656 384 902 498 321 778 278 -10000 667 95 754 100 714 499 277 457 979 -10000 704 246 828 568 479 908 320 184 198 -10000 911 784 425 946 762 65 183 612 802 -10000 792 291 318 619 29 288 419 789 230 -10000 294 719 862 297 439 733 70 866 395 -10000 823 367 813 683 738 951 959 989 839 -10000 119 49 796 911 23 226 292 7 183 -10000 418 757 139 985 843 580 934 358 602 -10000 703 378 819 432 288 407 75 449 583 -10000 377 960 353 142 398 392 487 650 880 -10000 671 428 898 919 854 509 151 39 519 -10000 205 722 725 310 506 710 427 917 293 -10000 526 573 679 12 220 745 826 886 968 -10000 22 524 636 937 12 753 951 11 185 -10000 493 153 60 920 187 556 956 312 267 -10000 914 991 304 292 898 519 909 867 831 -10000 588 526 12 855 852 961 774 329 879 -10000 403 259 243 104 634 569 371 470 751 -10000 388 247 126 864 298 440 248 955 315 -10000 594 104 477 927 725 332 252 589 550 -10000 260 692 847 351 176 78 59 308 802 -10000 988 858 317 317 408 581 753 823 148 -10000 427 702 893 416 557 659 476 515 410 -10000 997 178 33 172 619 593 479 511 758 -10000 559 302 203 156 743 289 283 927 919 -10000 838 718 631 596 481 603 756 700 405 -10000 58 866 436 258 691 617 406 61 428 -10000 888 206 658 103 829 730 372 142 873 -10000 530 523 688 199 22 752 852 411 175 -10000 473 78 259 162 168 456 970 609 336 -10000 9 203 204 619 668 888 736 131 383 -10000 655 785 947 78 583 918 478 269 713 -10000 853 196 153 566 545 360 160 509 471 -10000 979 738 609 43 440 939 403 254 929 -10000 592 498 776 772 773 964 229 170 273 -10000 511 518 689 780 361 43 467 638 356 -10000 732 265 176 612 702 503 995 471 923 -10000 304 597 356 739 668 717 787 610 465 -10000 83 711 670 357 901 476 905 130 47 -10000 748 487 533 722 834 975 854 798 5 -10000 530 22 511 590 291 957 121 310 82 -10000 331 53 674 615 209 660 879 126 343 -10000 327 619 233 244 901 0 367 725 339 -10000 446 303 83 797 400 721 554 220 904 -10000 928 325 310 482 829 912 197 530 639 -10000 129 574 437 79 68 140 415 620 706 -10000 833 872 98 811 686 447 645 675 249 -10000 68 154 596 741 397 351 112 791 679 -10000 371 899 467 62 598 205 867 270 592 -10000 601 807 789 411 961 637 685 437 50 -10000 333 800 718 214 464 992 719 852 870 -10000 366 126 891 567 453 734 49 265 838 -10000 120 128 245 759 371 235 78 755 673 -10000 244 829 781 343 240 541 605 373 295 -10000 774 836 949 728 567 353 936 410 502 -10000 549 136 5 299 344 649 143 579 785 -10000 797 464 56 983 967 317 382 563 575 -10000 207 358 278 161 402 27 14 653 966 -10000 375 591 545 349 807 684 496 889 759 -10000 770 522 138 292 68 177 355 500 486 -10000 556 266 739 807 546 699 751 416 402 -10000 416 127 178 103 37 58 948 45 670 -10000 961 544 10 404 644 113 64 992 811 -10000 943 242 975 995 376 81 210 37 996 -10000 524 930 983 945 440 424 215 956 477 -10000 728 434 511 725 842 973 885 875 341 -10000 597 146 429 353 431 836 667 124 924 -10000 424 974 348 323 492 629 850 531 625 -10000 618 927 44 4 643 544 575 177 296 -10000 947 782 67 637 290 376 842 401 51 -10000 738 17 372 662 778 993 284 825 425 -10000 409 649 599 527 746 764 298 326 809 -10000 559 56 822 46 285 9 228 717 677 -10000 412 557 485 618 772 859 651 578 521 -10000 965 176 68 185 132 266 160 946 128 -10000 189 441 288 758 659 747 784 823 852 -10000 271 660 524 33 707 628 222 312 980 -10000 496 8 666 141 771 151 556 152 129 -10000 255 336 340 377 654 651 734 283 115 -10000 197 880 585 369 914 452 34 36 371 -10000 91 994 15 107 126 55 661 286 71 -10000 555 192 129 303 171 633 70 69 383 -10000 542 333 518 109 442 764 620 958 809 -10000 462 411 798 349 708 178 343 987 861 -10000 816 571 613 476 362 951 260 135 817 -10000 837 147 486 857 495 853 602 939 194 -10000 150 618 406 911 916 672 23 688 403 -10000 850 474 480 984 230 691 894 312 542 -10000 487 637 456 718 389 783 25 492 378 -10000 320 799 580 859 782 995 436 537 235 -10000 793 261 704 292 381 994 847 131 444 -10000 929 876 850 246 44 920 92 69 435 -10000 19 395 503 866 327 395 144 149 595 -10000 748 20 398 521 547 119 319 854 33 -10000 824 856 929 635 608 541 989 976 527 -10000 265 896 329 802 761 792 712 306 717 -10000 563 299 168 528 505 249 480 291 410 -10000 565 426 862 195 479 613 400 719 116 -10000 714 576 486 92 975 619 553 544 143 -10000 389 550 375 521 236 294 870 914 581 -10000 324 929 967 143 477 636 423 94 348 -10000 698 150 693 421 974 980 629 186 542 -10000 741 729 338 604 692 315 513 537 196 -10000 214 511 596 513 347 574 369 611 962 -10000 270 237 586 156 975 568 652 607 759 -10000 212 385 403 798 98 35 37 741 692 -10000 731 462 483 969 75 377 567 906 947 -10000 272 471 778 838 385 791 88 994 732 -10000 837 627 180 850 358 427 181 547 872 -10000 669 810 357 681 777 590 96 638 689 -10000 17 440 510 532 107 150 212 337 344 -10000 91 879 509 424 575 892 685 786 766 -10000 518 392 782 168 430 266 772 68 308 -10000 527 84 480 942 878 357 741 547 697 -10000 761 582 586 219 667 891 967 920 791 -10000 627 118 926 51 261 803 13 776 502 -10000 224 823 789 510 942 963 174 208 404 -10000 600 549 447 860 428 764 136 611 819 -10000 483 314 969 321 598 41 89 753 571 -10000 359 347 293 606 313 542 790 26 867 -10000 688 536 505 55 602 646 117 849 298 -10000 727 842 349 912 901 199 903 46 761 -10000 656 816 951 511 828 194 762 881 121 -10000 398 180 117 878 818 537 133 388 821 -10000 468 466 728 756 376 332 200 503 523 -10000 282 246 531 551 2 330 766 259 308 -10000 123 228 951 421 153 421 766 551 349 -10000 372 725 826 14 61 386 951 835 693 -10000 626 83 793 453 620 549 457 404 910 -10000 568 960 382 122 231 618 430 854 89 -10000 647 479 273 547 796 24 790 654 168 -10000 109 604 74 419 563 373 294 457 995 -10000 997 342 359 232 884 714 66 939 517 -10000 971 635 514 742 622 972 738 325 487 -10000 596 68 539 188 144 377 447 249 86 -10000 892 878 628 328 632 496 394 545 498 -10000 609 167 484 571 838 479 564 693 566 -10000 789 227 128 336 118 773 188 196 670 -10000 238 231 92 285 30 178 468 583 8 -10000 306 955 384 287 146 10 524 848 222 -10000 749 670 604 888 131 759 200 704 972 -10000 349 734 81 101 589 34 986 809 843 -10000 602 160 558 724 837 12 296 953 950 -10000 387 399 70 307 593 514 370 995 876 -10000 956 140 115 650 657 199 279 153 138 -10000 172 377 520 881 607 526 134 895 94 -10000 891 816 445 369 108 732 238 850 629 -10000 832 873 776 368 660 208 786 572 109 -10000 140 842 696 571 56 784 545 887 380 -10000 214 614 523 509 521 677 756 327 225 -10000 162 797 494 852 2 353 257 474 308 -10000 622 447 746 392 784 251 356 192 370 -10000 302 31 151 773 41 641 336 303 150 -10000 371 134 935 79 194 731 761 960 624 -10000 845 968 788 655 95 709 390 382 202 -10000 128 504 112 944 533 455 802 77 970 -10000 604 261 625 392 309 847 312 524 110 -10000 298 519 105 484 103 537 433 953 530 -10000 229 287 843 169 648 88 809 101 488 -10000 477 865 744 302 138 667 740 537 824 -10000 285 286 21 321 129 882 804 789 8 -10000 421 506 400 399 513 901 300 572 941 -10000 255 12 892 119 61 990 505 834 79 -10000 753 408 835 599 977 735 116 917 791 -10000 936 12 723 630 77 558 807 891 706 -10000 403 464 968 23 914 22 293 952 831 -10000 271 796 410 885 863 27 168 718 976 -10000 563 708 573 85 988 466 94 486 368 -10000 746 985 732 645 889 125 911 913 420 -10000 734 689 587 880 464 427 647 681 114 -10000 325 465 977 672 524 50 900 872 303 -10000 819 847 236 751 736 409 372 965 227 -10000 668 839 274 640 840 847 179 407 161 -10000 154 763 564 271 555 289 947 3 585 -10000 956 80 828 866 477 840 976 710 481 -10000 876 844 126 646 715 770 791 845 559 -10000 483 820 450 421 109 300 108 232 243 -10000 62 739 774 972 661 940 774 673 834 -10000 58 149 154 539 201 111 450 776 672 -10000 202 453 385 77 295 222 540 398 805 -10000 442 431 102 976 499 462 942 929 606 -10000 205 768 347 878 410 840 162 489 6 -10000 114 402 686 239 124 343 496 876 763 -10000 789 0 54 32 58 332 272 54 580 -10000 388 458 498 944 609 37 586 371 834 -10000 113 169 149 276 634 904 893 280 681 -10000 465 275 182 457 908 495 345 798 14 -10000 844 450 780 427 561 564 266 55 673 -10000 975 337 322 845 207 120 958 104 126 -10000 300 88 353 146 465 812 2 159 580 -10000 356 813 978 990 304 723 65 94 70 -10000 949 676 899 870 316 281 118 792 235 -10000 197 66 627 579 294 961 713 714 656 -10000 512 311 17 383 894 219 801 631 576 -10000 553 869 978 748 164 296 911 689 803 -10000 22 629 651 106 65 474 484 654 740 -10000 48 10 784 159 428 794 791 286 282 -10000 718 260 645 155 753 958 265 115 123 -10000 270 134 542 627 658 580 223 615 589 -10000 266 735 225 433 98 265 798 637 916 -10000 6 911 9 649 677 974 173 288 559 -10000 795 459 550 920 684 891 253 395 149 -10000 604 680 60 129 547 910 52 440 45 -10000 111 709 857 98 411 144 379 769 115 -10000 338 958 206 754 451 450 935 126 97 -10000 95 343 995 594 177 623 238 645 684 -10000 871 868 269 716 199 460 85 344 262 -10000 193 460 760 151 533 193 873 983 209 -10000 405 857 445 196 936 860 29 532 459 -10000 543 683 301 149 186 314 407 526 327 -10000 856 162 928 554 296 389 391 810 423 -10000 949 865 255 183 714 136 1 813 316 -10000 233 549 693 815 216 891 88 628 26 -10000 253 591 779 742 887 965 904 343 219 -10000 420 241 402 686 352 903 620 517 237 -10000 404 699 520 443 948 143 443 83 798 -10000 849 376 803 655 431 951 926 652 854 -10000 969 594 652 571 655 187 955 167 704 -10000 16 762 708 877 523 737 705 993 970 -10000 423 777 600 85 737 599 231 944 567 -10000 282 166 722 648 926 109 220 982 876 -10000 257 288 803 519 167 0 310 260 804 -10000 183 430 812 288 251 39 329 533 998 -10000 310 293 570 315 384 31 519 203 899 -10000 554 47 465 899 149 725 532 293 265 -10000 525 156 181 587 407 177 948 323 295 -10000 18 895 703 835 342 501 754 909 729 -10000 157 158 602 833 334 79 700 114 76 -10000 946 181 733 179 770 892 701 306 149 -10000 863 872 292 943 198 447 469 951 1000 -10000 251 153 751 885 567 503 3 6 807 -10000 504 298 153 484 733 139 606 355 400 -10000 872 774 462 8 836 406 298 758 375 -10000 874 143 873 102 791 901 241 766 434 -10000 532 786 734 575 936 756 653 492 295 -10000 21 496 303 355 275 910 827 220 791 -10000 420 696 570 31 159 793 747 176 352 -10000 99 457 98 628 113 840 655 71 753 -10000 914 415 917 568 639 95 687 126 462 -10000 822 651 828 451 485 855 697 280 304 -10000 801 762 915 154 57 704 587 363 777 -10000 185 568 627 504 866 140 938 324 213 -10000 28 970 824 84 137 699 767 289 160 -10000 267 887 423 154 998 707 741 219 766 -10000 773 999 855 334 310 737 936 362 122 -10000 884 819 522 174 587 990 372 672 456 -10000 625 31 966 929 991 458 979 422 880 -10000 929 388 669 624 558 889 548 905 170 -10000 742 430 859 981 409 960 879 661 490 -10000 726 210 255 878 848 206 138 244 549 -10000 915 366 641 408 355 11 153 128 395 -10000 281 87 589 521 431 521 175 970 443 -10000 74 615 881 562 616 996 268 667 127 -10000 293 988 66 47 826 104 37 791 82 -10000 926 920 337 175 321 218 477 575 396 -10000 1 697 883 534 738 565 981 841 559 -10000 702 388 308 346 265 507 73 796 405 -10000 228 978 994 749 3 533 221 96 624 -10000 46 92 323 247 917 696 937 408 93 -10000 790 734 612 204 442 265 221 589 261 -10000 463 286 296 894 853 787 303 596 55 -10000 631 301 501 655 774 626 494 817 629 -10000 27 147 937 973 782 801 436 565 664 -10000 934 131 80 196 504 560 466 224 927 -10000 286 486 150 995 915 270 767 414 35 -10000 718 431 16 300 23 969 70 684 783 -10000 793 299 302 319 61 815 201 696 887 -10000 160 79 860 81 276 172 461 53 932 -10000 348 568 690 120 933 634 361 26 892 -10000 868 861 446 86 246 518 384 396 250 -10000 257 771 29 800 967 574 615 792 785 -10000 707 974 723 256 92 979 499 3 928 -10000 594 962 828 700 3 814 932 643 32 -10000 335 908 120 351 155 754 423 783 595 -10000 168 150 56 575 695 90 56 326 77 -10000 368 834 80 995 383 225 793 486 882 -10000 474 47 272 315 728 203 827 425 219 -10000 777 722 746 22 993 317 735 31 464 -10000 500 574 305 169 809 210 315 150 302 -10000 907 760 802 801 700 546 111 298 690 -10000 661 490 543 698 670 179 504 68 558 -10000 400 666 308 265 338 430 171 360 608 -10000 39 802 174 940 353 122 769 451 12 -10000 678 450 537 181 169 65 493 445 247 -10000 744 465 391 121 443 425 114 898 115 -10000 758 591 602 403 520 40 330 131 452 -10000 262 597 391 57 953 284 993 223 167 -10000 546 712 807 195 166 374 626 618 187 -10000 523 92 12 594 367 556 685 25 179 -10000 545 866 782 381 407 199 567 863 242 -10000 425 690 320 78 816 818 897 257 978 -10000 468 247 140 803 513 591 351 594 839 -10000 973 861 665 971 511 259 971 26 904 -10000 590 16 398 26 228 474 465 538 336 -10000 948 805 916 50 339 942 532 737 421 -10000 748 884 646 373 871 82 170 221 684 -10000 111 185 910 962 237 258 525 124 313 -10000 920 237 837 469 705 522 665 886 474 -10000 463 511 846 899 690 157 114 565 880 -10000 55 485 203 922 827 626 564 228 132 -10000 783 553 45 513 274 197 749 611 288 -10000 947 226 763 528 543 772 220 887 480 -10000 158 447 332 14 127 117 550 230 709 -10000 640 521 302 194 483 635 670 24 247 -10000 935 37 999 11 696 325 298 372 217 -10000 874 751 306 781 47 335 767 81 39 -10000 402 129 995 76 784 698 275 258 833 -10000 67 485 574 172 882 519 37 707 476 -10000 596 880 333 384 952 338 712 575 488 -10000 768 35 464 598 359 815 74 204 836 -10000 591 515 744 145 731 896 980 416 653 -10000 799 731 135 44 99 319 193 890 193 -10000 283 271 29 500 114 189 15 700 647 -10000 471 763 934 338 97 173 865 138 808 -10000 116 246 346 275 240 408 855 742 149 -10000 647 849 770 669 942 813 973 908 151 -10000 457 654 0 396 869 890 307 566 990 -10000 84 968 92 31 485 810 179 508 484 -10000 98 862 585 735 48 107 133 326 438 -10000 312 8 777 433 995 106 494 294 529 -10000 364 319 660 88 645 585 559 561 847 -10000 314 757 958 532 497 315 155 760 366 -10000 549 999 330 576 742 268 226 300 617 -10000 586 55 802 984 516 80 237 730 269 -10000 620 595 184 304 424 625 850 624 61 -10000 533 401 885 17 85 817 42 474 601 -10000 825 420 588 362 741 239 528 123 804 -10000 604 288 883 973 446 869 976 239 86 -10000 292 93 730 871 663 837 54 982 685 -10000 226 632 104 791 693 72 794 262 12 -10000 226 557 599 385 883 319 583 148 108 -10000 8 203 928 746 875 428 882 169 71 -10000 158 856 962 476 843 242 345 780 198 -10000 418 620 929 666 887 250 732 727 901 -10000 409 492 394 661 983 864 327 248 939 -10000 948 851 268 357 559 358 826 299 276 -10000 56 726 86 494 973 529 767 87 858 -10000 837 921 554 108 689 601 336 555 650 -10000 631 867 852 343 994 881 212 888 549 -10000 956 155 95 1 110 880 891 59 206 -10000 862 72 722 632 238 34 315 725 183 -10000 537 340 846 748 549 265 939 437 628 -10000 669 36 139 368 526 95 95 398 234 -10000 530 612 971 891 638 567 628 769 983 -10000 893 954 195 545 179 104 472 845 572 -10000 644 148 480 165 180 906 255 738 850 -10000 25 484 969 684 275 601 870 246 598 -10000 448 971 77 431 964 498 8 49 101 -10000 988 893 301 301 438 416 860 28 984 -10000 933 141 615 604 491 258 802 611 834 -10000 423 720 136 924 977 22 2 887 419 -10000 514 412 453 297 82 874 17 403 555 -10000 727 1 106 431 824 152 353 206 130 -10000 459 122 468 404 378 413 312 390 986 -10000 587 866 144 142 552 294 292 988 92 -10000 621 50 365 328 956 984 182 823 788 -10000 86 24 116 873 187 974 552 188 122 -10000 718 923 397 362 404 14 351 449 128 -10000 317 372 460 758 23 543 196 552 311 -10000 695 685 430 488 379 474 54 326 704 -10000 1000 38 517 147 205 388 992 543 233 -10000 540 149 746 912 381 47 71 240 367 -10000 230 108 332 935 786 991 643 269 323 -10000 166 570 90 269 523 892 5 456 653 -10000 445 455 298 883 451 683 741 467 814 -10000 519 23 669 749 554 377 22 184 435 -10000 957 418 630 652 787 415 317 45 643 -10000 421 55 168 611 67 909 667 700 563 -10000 419 227 525 326 136 251 262 170 254 -10000 105 776 388 114 762 661 415 764 64 -10000 291 787 687 426 139 153 573 862 265 -10000 158 4 992 641 80 373 542 638 956 -10000 220 119 516 995 380 269 516 633 857 -10000 300 752 905 545 127 226 339 822 433 -10000 279 475 505 265 499 546 322 811 885 -10000 490 940 143 720 351 803 785 942 204 -10000 857 562 834 836 146 194 87 18 303 -10000 708 315 451 280 248 251 535 472 280 -10000 492 693 389 970 872 730 427 746 925 -10000 496 800 476 70 535 702 770 27 579 -10000 502 809 350 526 923 806 320 558 247 -10000 116 672 853 566 463 458 808 356 72 -10000 451 571 967 424 640 900 167 372 928 -10000 901 212 961 922 64 13 545 394 701 -10000 648 679 124 759 474 352 570 921 289 -10000 438 518 796 45 239 942 828 511 936 -10000 863 984 399 335 949 368 67 544 330 -10000 657 970 755 263 110 944 334 854 164 -10000 208 911 116 189 790 931 605 746 454 -10000 557 274 217 711 708 512 671 132 398 -10000 929 885 742 862 689 786 703 934 49 -10000 368 807 321 497 593 680 974 685 951 -10000 869 623 571 992 343 450 437 211 506 -10000 608 860 461 323 938 959 958 20 662 -10000 397 921 971 929 390 397 485 977 668 -10000 211 456 905 982 339 555 62 203 245 -10000 458 866 380 1000 448 588 442 142 862 -10000 951 264 173 490 118 421 971 372 542 -10000 593 964 609 436 401 219 45 47 526 -10000 697 2 85 118 911 511 429 182 811 -10000 637 278 664 222 645 783 865 777 624 -10000 716 830 178 424 723 231 371 42 5 -10000 665 159 714 770 191 495 837 983 104 -10000 957 967 144 94 28 362 407 310 691 -10000 85 288 710 563 634 316 729 903 763 -10000 738 470 500 766 266 100 824 915 308 -10000 193 632 79 348 729 829 474 213 836 -10000 294 95 335 67 120 75 569 808 541 -10000 78 967 202 530 71 193 230 511 275 -10000 678 220 815 823 46 680 741 500 872 -10000 396 276 110 401 288 527 676 867 302 -10000 980 714 756 725 562 540 580 844 840 -10000 703 494 740 986 868 705 392 821 14 -10000 605 893 263 899 171 565 414 744 236 -10000 242 421 603 262 96 764 111 476 865 -10000 996 925 579 666 110 328 270 181 247 -10000 9 284 570 53 321 672 557 437 427 -10000 865 415 197 278 876 504 27 415 277 -10000 926 199 886 247 169 356 228 659 30 -10000 171 14 740 990 795 210 615 268 634 -10000 286 98 756 994 756 276 310 167 650 -10000 689 233 91 417 746 980 436 348 735 -10000 627 97 940 143 464 817 129 95 208 -10000 436 303 505 183 236 112 525 983 396 -10000 380 604 798 209 471 644 408 925 515 -10000 22 678 176 362 65 233 686 29 556 -10000 565 355 284 904 222 610 836 784 202 -10000 600 817 809 598 807 40 263 991 62 -10000 96 447 377 9 957 562 659 120 153 -10000 950 563 548 448 547 186 370 939 215 -10000 575 951 55 236 461 879 502 525 376 -10000 876 475 186 55 836 235 574 929 187 -10000 789 150 627 742 801 259 880 979 267 -10000 168 131 139 127 564 493 107 952 111 -10000 808 719 992 44 274 730 328 898 415 -10000 786 511 210 140 36 913 676 790 605 -10000 25 72 381 273 172 152 213 292 763 -10000 995 611 956 483 602 135 475 188 536 -10000 647 844 876 44 830 299 830 630 306 -10000 713 926 692 314 291 518 970 683 449 -10000 306 502 404 321 927 61 114 528 148 -10000 724 46 74 326 546 816 374 135 790 -10000 463 483 480 92 939 21 849 9 297 -10000 694 6 242 616 34 903 298 726 55 -10000 518 815 217 750 354 986 553 709 745 -10000 212 744 459 738 541 651 922 690 516 -10000 631 670 347 619 940 485 402 356 667 -10000 167 219 743 354 235 155 471 143 320 -10000 468 667 525 71 245 896 507 95 112 -10000 888 750 465 531 476 549 392 550 846 -10000 409 515 931 436 917 40 748 938 810 -10000 868 232 625 934 668 808 553 738 657 -10000 537 969 380 418 145 326 505 98 768 -10000 526 183 921 822 732 242 998 456 308 -10000 916 854 954 537 851 640 713 329 513 -10000 246 908 395 815 923 863 656 803 765 -10000 860 584 807 0 67 197 5 395 498 -10000 531 984 973 210 623 383 716 158 554 -10000 346 167 508 551 583 474 886 359 451 -10000 14 904 325 989 493 196 425 623 163 -10000 556 333 233 179 325 984 207 871 35 -10000 908 437 983 336 342 632 480 687 533 -10000 695 808 229 811 447 841 903 904 278 -10000 284 30 864 585 435 926 957 275 86 -10000 179 890 383 599 752 352 6 622 20 -10000 570 504 951 850 122 91 682 135 795 -10000 692 115 734 75 668 908 217 790 10 -10000 927 953 71 783 961 697 764 15 45 -10000 144 430 524 597 562 671 694 405 802 -10000 822 755 130 163 235 43 460 509 864 -10000 30 602 752 866 261 539 894 620 528 -10000 290 502 585 996 745 870 892 347 921 -10000 753 38 387 987 458 223 489 359 667 -10000 170 60 889 240 182 819 782 847 807 -10000 263 336 310 312 81 946 785 801 392 -10000 828 436 726 572 478 215 939 986 863 -10000 269 243 375 43 308 604 887 960 362 -10000 908 869 278 64 962 872 857 575 638 -10000 987 323 346 520 227 88 142 325 926 -10000 10 541 803 346 228 607 651 885 820 -10000 215 140 226 104 972 892 77 319 449 -10000 120 923 236 626 145 609 247 518 631 -10000 863 468 945 995 738 668 683 69 58 -10000 294 515 799 987 854 295 761 708 468 -10000 261 747 871 512 483 480 801 720 20 -10000 16 282 522 659 344 280 99 971 753 -10000 453 293 600 893 195 343 154 81 224 -10000 301 960 250 504 420 176 849 813 316 -10000 97 10 194 481 837 112 866 871 157 -10000 345 1 85 824 623 455 662 143 244 -10000 579 28 722 717 689 370 361 216 474 -10000 221 672 202 488 191 716 759 990 762 -10000 426 193 189 692 367 767 678 17 80 -10000 61 488 512 403 542 491 333 575 489 -10000 590 357 164 453 995 708 237 383 20 -10000 714 381 975 573 766 32 348 23 676 -10000 888 387 747 282 801 507 861 398 565 -10000 731 997 827 752 700 898 998 154 3 -10000 373 393 309 533 497 853 829 235 549 -10000 815 761 74 490 573 471 551 320 825 -10000 10 474 216 89 595 229 49 309 50 -10000 674 637 38 189 493 763 171 349 503 -10000 580 243 721 239 257 975 945 207 29 -10000 177 290 160 873 207 954 324 426 793 -10000 476 601 254 910 567 949 187 830 181 -10000 497 755 761 98 546 313 536 638 469 -10000 832 84 329 865 130 638 97 21 534 -10000 796 606 222 505 573 368 670 160 362 -10000 194 26 270 937 120 742 871 465 326 -10000 195 207 23 14 48 299 210 244 102 -10000 524 471 282 766 172 754 280 922 77 -10000 203 250 193 466 485 330 468 474 562 -10000 288 864 685 980 380 373 80 377 5 -10000 331 250 232 611 763 823 383 767 849 -10000 610 60 945 790 335 330 936 970 12 -10000 154 910 256 194 11 6 386 159 147 -10000 295 814 954 789 138 744 415 57 847 -10000 573 533 797 508 177 609 402 871 619 -10000 52 950 779 144 690 311 691 644 997 -10000 639 192 484 900 32 525 360 215 84 -10000 109 176 260 231 257 927 780 754 40 -10000 593 802 596 694 304 31 293 876 441 -10000 876 74 231 473 841 214 763 94 105 -10000 593 302 33 967 159 66 391 205 917 -10000 832 232 189 504 741 981 887 30 635 -10000 112 162 397 672 649 103 879 406 161 -10000 362 647 120 922 274 928 31 79 307 -10000 110 465 602 802 110 781 985 510 659 -10000 528 379 377 887 405 705 212 844 737 -10000 67 432 137 78 443 247 803 343 150 -10000 133 512 932 552 732 544 332 107 534 -10000 421 560 101 266 730 217 763 643 981 -10000 728 853 142 222 909 721 385 608 144 -10000 922 838 849 408 166 5 156 265 892 -10000 66 259 641 677 587 497 487 261 733 -10000 919 52 99 100 179 128 172 9 367 -10000 379 59 573 248 70 662 649 920 436 -10000 28 467 969 350 453 78 603 668 478 -10000 739 751 659 328 654 211 865 227 515 -10000 858 894 212 863 154 477 196 252 190 -10000 996 566 495 964 26 45 589 582 251 -10000 664 403 152 569 572 89 819 769 326 -10000 923 48 612 72 523 506 228 458 714 -10000 960 482 194 693 104 818 426 826 828 -10000 188 460 828 298 506 899 244 383 195 -10000 824 824 471 379 52 103 125 208 179 -10000 510 139 722 605 566 274 944 708 443 -10000 926 308 76 829 265 882 41 919 310 -10000 320 14 820 917 636 898 269 602 78 -10000 143 403 491 484 600 518 340 671 851 -10000 62 892 306 452 61 322 404 463 90 -10000 381 255 665 495 909 845 292 749 329 -10000 686 839 530 987 724 952 384 292 850 -10000 176 609 740 538 990 159 534 782 494 -10000 384 596 736 976 875 6 507 126 715 -10000 276 821 496 449 810 251 604 540 151 -10000 433 429 403 108 950 229 734 224 510 -10000 988 442 673 701 630 512 220 448 544 -10000 959 570 822 439 231 102 966 573 307 -10000 646 685 603 518 526 860 256 917 894 -10000 560 447 398 281 868 81 296 650 527 -10000 80 860 407 610 34 321 620 572 183 -10000 409 897 660 803 497 186 52 363 934 -10000 491 820 118 580 513 692 589 6 325 -10000 865 679 690 932 605 813 890 59 564 -10000 90 473 575 822 201 710 808 39 622 -10000 726 987 906 916 245 152 180 186 476 -10000 284 254 548 750 77 598 115 103 791 -10000 210 749 136 315 179 633 707 144 91 -10000 315 309 396 219 804 119 555 560 761 -10000 329 584 27 197 446 624 771 580 592 -10000 47 593 641 938 283 122 687 108 829 -10000 220 489 106 885 107 6 519 202 526 -10000 508 706 968 864 767 314 363 374 810 -10000 397 216 327 931 492 215 625 92 271 -10000 338 907 931 922 792 407 493 8 52 -10000 643 88 737 507 610 872 381 296 277 -10000 56 889 364 288 965 209 955 981 458 -10000 887 397 222 307 513 592 609 509 205 -10000 692 758 874 245 274 564 565 276 36 -10000 863 110 815 790 345 186 891 379 845 -10000 831 586 887 547 135 833 884 350 308 -10000 296 414 773 440 431 690 841 521 231 -10000 256 572 897 868 281 536 282 235 775 -10000 843 290 374 327 24 34 470 198 132 -10000 462 493 598 777 227 731 844 372 527 -10000 717 419 541 916 472 663 94 671 517 -10000 883 408 183 115 90 118 453 418 525 -10000 975 989 155 462 652 272 345 378 123 -10000 698 774 219 584 368 56 236 504 405 -10000 481 794 528 144 727 680 255 599 34 -10000 266 598 680 814 605 184 89 199 393 -10000 217 327 469 800 26 618 883 43 772 -10000 186 102 5 662 931 455 888 556 205 -10000 792 817 708 420 763 68 850 805 942 -10000 996 855 698 435 779 567 445 970 897 -10000 525 911 853 618 631 88 358 267 635 -10000 861 743 767 277 770 588 292 228 60 -10000 949 226 683 157 621 212 768 161 562 -10000 199 658 187 46 402 30 368 107 746 -10000 182 229 202 959 20 596 420 484 272 -10000 301 619 321 775 414 525 358 163 709 -10000 554 988 867 50 385 679 894 325 557 -10000 625 152 679 797 104 39 465 421 914 -10000 261 817 387 234 289 652 54 373 145 -10000 6 449 617 189 713 129 299 751 279 -10000 317 219 265 676 828 907 883 518 651 -10000 553 659 62 441 26 520 863 937 827 -10000 463 753 578 898 36 160 148 921 355 -10000 643 226 549 851 843 744 196 686 365 -10000 289 681 237 680 33 530 679 753 70 -10000 621 150 727 406 853 303 569 368 251 -10000 533 947 510 76 481 80 581 880 668 -10000 583 239 420 741 533 914 157 804 316 -10000 412 896 614 888 216 263 702 264 299 -10000 76 411 748 821 990 916 122 413 681 -10000 990 288 938 369 864 558 364 410 591 -10000 423 679 406 127 30 412 146 454 509 -10000 712 525 727 210 779 874 251 622 882 -10000 630 400 153 681 104 981 530 800 251 -10000 116 199 306 748 661 953 1 807 596 -10000 170 759 452 499 521 851 721 222 48 -10000 257 211 273 260 706 262 200 428 348 -10000 453 607 380 936 404 515 565 540 396 -10000 650 220 714 692 494 450 897 25 152 -10000 886 209 457 14 123 139 819 785 164 -10000 718 697 444 384 964 85 668 79 836 -10000 680 444 496 300 299 599 211 936 197 -10000 277 41 89 598 779 525 670 990 838 -10000 758 763 367 467 127 197 693 924 490 -10000 661 5 676 139 18 32 289 901 448 -10000 744 419 544 681 880 940 610 647 689 -10000 43 836 874 181 185 201 2 73 258 -10000 847 198 938 621 875 991 585 411 869 -10000 67 139 595 692 265 24 227 554 357 -10000 4 795 652 423 298 809 390 37 236 -10000 976 867 84 82 963 92 363 677 188 -10000 974 573 713 372 25 917 689 434 616 -10000 898 218 728 179 743 760 259 202 980 -10000 663 409 24 766 133 494 503 369 967 -10000 376 922 123 297 46 859 739 144 998 -10000 41 463 127 114 637 775 331 772 116 -10000 41 302 93 900 520 871 55 354 965 -10000 416 533 941 977 279 123 201 175 34 -10000 548 594 942 600 723 896 177 129 987 -10000 122 676 683 25 6 205 131 320 44 -10000 223 250 491 800 919 976 915 294 329 -10000 189 267 322 693 957 384 69 795 81 -10000 523 125 281 312 791 679 167 640 463 -10000 807 546 555 391 257 166 211 538 254 -10000 672 359 838 170 166 865 859 958 333 -10000 439 287 309 325 800 686 962 729 79 -10000 984 266 180 232 325 410 829 980 345 -10000 797 224 561 850 281 473 552 406 242 -10000 699 180 317 545 339 297 707 796 262 -10000 462 650 96 976 206 696 228 275 225 -10000 91 243 792 982 728 869 418 442 815 -10000 214 3 822 603 450 90 471 283 473 -10000 88 807 773 901 760 216 367 680 810 -10000 515 903 395 179 621 79 613 463 885 -10000 225 339 13 963 996 396 859 139 808 -10000 772 113 616 548 446 321 867 62 348 -10000 253 125 433 754 517 194 869 273 437 -10000 533 920 919 879 701 374 55 883 612 -10000 6 748 98 141 420 183 203 583 174 -10000 586 4 213 136 311 605 582 843 942 -10000 821 133 334 390 965 83 850 202 785 -10000 65 278 350 574 80 546 476 269 433 -10000 65 40 410 344 53 355 839 470 269 -10000 68 721 93 393 475 903 678 495 165 -10000 127 458 552 777 986 800 858 148 849 -10000 882 983 96 255 282 822 227 530 372 -10000 884 909 920 617 675 144 500 462 618 -10000 866 1000 46 973 71 596 995 841 392 -10000 312 179 582 440 139 170 486 693 588 -10000 245 107 284 228 58 894 765 524 311 -10000 899 588 300 99 595 722 982 619 323 -10000 87 124 421 516 234 378 931 104 127 -10000 78 547 459 956 885 366 180 438 892 -10000 97 28 188 907 641 568 606 428 236 -10000 853 559 240 272 749 89 206 135 761 -10000 134 9 661 905 301 970 653 50 422 -10000 54 903 24 22 781 16 262 882 241 -10000 838 786 399 383 279 547 339 165 843 -10000 856 168 257 98 768 869 417 521 873 -10000 814 462 962 885 306 37 524 323 290 -10000 443 904 74 292 262 387 74 973 946 -10000 465 439 996 871 68 487 851 206 429 -10000 1 907 827 538 721 390 62 55 130 -10000 744 534 243 207 212 799 748 612 389 -10000 30 571 753 259 586 976 272 563 832 -10000 627 700 742 851 445 145 530 575 461 -10000 247 607 393 958 73 989 565 165 25 -10000 118 220 837 903 672 517 516 46 156 -10000 962 232 277 357 731 124 475 994 677 -10000 647 5 147 20 592 157 384 59 352 -10000 820 681 289 151 6 812 856 528 991 -10000 379 220 652 926 314 993 851 81 855 -10000 158 528 432 569 587 194 755 742 787 -10000 222 897 99 542 131 451 582 34 295 -10000 78 585 802 709 953 932 649 645 157 -10000 415 452 371 698 606 398 257 469 809 -10000 221 99 39 959 459 897 626 204 4 -10000 578 359 784 734 488 460 384 488 860 -10000 22 182 358 684 492 111 935 142 475 -10000 574 152 98 92 716 275 667 340 337 -10000 806 934 649 478 665 521 253 994 557 -10000 502 611 682 898 159 328 717 324 542 -10000 731 309 622 708 848 494 140 64 426 -10000 581 517 226 792 811 257 835 135 425 -10000 100 700 799 670 306 58 736 297 712 -10000 148 189 450 110 346 868 989 516 560 -10000 685 882 495 139 978 637 272 990 31 -10000 534 449 424 159 640 94 931 192 446 -10000 162 982 522 458 303 174 343 753 130 -10000 127 696 946 105 110 102 409 224 600 -10000 858 110 862 303 337 397 202 591 525 -10000 232 228 153 317 408 193 515 467 961 -10000 592 739 424 570 956 670 519 3 722 -10000 408 532 851 332 893 423 668 360 20 -10000 304 327 788 766 931 615 529 331 555 -10000 820 624 162 143 247 600 397 415 706 -10000 445 259 217 595 412 342 243 221 405 -10000 916 460 728 318 8 88 688 210 274 -10000 828 493 222 54 269 576 132 981 817 -10000 478 974 198 688 596 497 879 813 352 -10000 557 198 757 532 119 23 232 621 470 -10000 10 58 912 642 53 648 501 648 902 -10000 696 505 84 750 691 201 709 508 832 -10000 861 112 221 57 9 3 428 596 1000 -10000 651 346 81 878 701 780 20 418 155 -10000 354 27 70 84 286 640 31 955 769 -10000 407 592 852 782 896 158 497 248 467 -10000 983 171 694 958 879 320 954 427 272 -10000 239 387 337 60 221 385 667 373 38 -10000 966 364 676 180 540 902 477 848 19 -10000 294 437 676 409 843 628 390 609 983 -10000 470 632 230 367 294 416 674 873 12 -10000 0 412 466 797 573 860 724 16 262 -10000 44 936 593 876 396 987 50 783 581 -10000 416 293 788 164 625 373 336 266 198 -10000 170 702 225 277 414 823 659 237 953 -10000 328 468 326 722 530 521 282 699 670 -10000 845 18 366 417 531 600 9 106 932 -10000 119 851 571 29 110 323 311 760 668 -10000 908 780 461 802 667 898 278 80 676 -10000 453 887 410 13 880 99 137 84 370 -10000 145 734 697 446 396 975 453 485 255 -10000 650 762 163 649 847 910 155 123 494 -10000 670 505 933 15 315 364 629 105 247 -10000 783 269 90 982 745 367 721 159 140 -10000 773 21 829 678 426 264 761 538 858 -10000 459 706 870 153 660 369 814 341 460 -10000 633 12 723 191 857 365 632 944 681 -10000 769 987 916 959 363 831 224 302 879 -10000 197 343 700 50 393 45 657 392 517 -10000 154 420 579 809 65 826 821 653 662 -10000 686 108 715 286 855 199 967 453 528 -10000 275 670 575 635 607 318 490 489 274 -10000 704 925 47 123 502 740 85 273 26 -10000 693 865 206 249 64 241 977 729 978 -10000 891 554 115 446 678 572 506 80 923 -10000 333 527 630 430 410 178 641 322 147 -10000 566 655 518 804 225 2 994 567 25 -10000 599 308 927 943 964 837 932 482 277 -10000 275 367 364 618 528 980 67 524 56 -10000 706 792 127 954 485 826 238 122 77 -10000 794 668 588 800 143 794 784 678 978 -10000 736 141 574 310 678 97 679 511 399 -10000 12 755 234 845 376 777 806 195 563 -10000 601 688 289 954 637 278 180 296 940 -10000 886 438 251 899 47 202 223 190 579 -10000 100 921 834 292 987 294 25 250 698 -10000 339 372 319 242 949 590 683 460 809 -10000 885 766 322 426 128 448 437 864 491 -10000 844 630 660 475 118 856 926 21 766 -10000 172 759 148 523 6 996 114 158 217 -10000 2 381 472 704 931 271 155 606 235 -10000 920 63 304 380 882 327 526 235 485 -10000 193 700 246 656 775 702 217 372 868 -10000 667 256 177 163 955 165 712 278 817 -10000 137 429 799 383 840 819 124 41 228 -10000 427 472 23 285 420 307 515 866 525 -10000 505 155 632 929 952 235 675 76 334 -10000 80 779 661 796 747 944 616 241 992 -10000 600 833 294 286 187 740 510 151 417 -10000 283 332 752 104 719 801 75 298 375 -10000 753 283 850 742 455 928 782 369 847 -10000 331 727 457 382 28 941 354 166 196 -10000 422 586 245 164 930 336 708 214 431 -10000 507 138 900 558 963 209 372 848 82 -10000 652 986 546 691 128 721 662 25 99 -10000 404 320 603 808 254 737 337 480 243 -10000 103 121 993 470 445 858 431 313 706 -10000 466 93 890 805 974 813 384 80 245 -10000 427 156 994 147 474 655 863 874 11 -10000 666 516 309 726 82 303 275 774 893 -10000 572 134 530 660 14 603 125 211 578 -10000 300 939 867 974 999 243 443 836 22 -10000 896 405 109 261 778 939 498 893 14 -10000 539 919 289 989 652 78 148 963 829 -10000 124 612 367 347 66 961 78 291 49 -10000 466 227 290 351 23 333 680 212 670 -10000 574 701 807 858 308 225 228 993 461 -10000 775 417 641 450 457 37 891 197 828 -10000 965 686 635 802 783 849 31 628 389 -10000 428 972 842 252 67 928 211 1000 55 -10000 338 602 590 397 257 571 910 690 942 -10000 324 363 62 665 370 36 699 123 382 -10000 721 478 383 131 754 262 176 124 93 -10000 710 874 594 404 765 548 545 28 535 -10000 108 310 962 69 659 597 293 155 270 -10000 188 954 383 268 164 388 152 680 995 -10000 562 912 167 979 329 51 415 233 898 -10000 853 240 257 84 998 402 272 12 735 -10000 86 336 188 712 526 716 181 467 618 -10000 247 127 976 181 113 474 241 103 521 -10000 912 443 782 899 922 905 625 980 863 -10000 735 721 404 393 985 76 121 476 553 -10000 637 130 214 170 967 252 323 855 766 -10000 307 526 625 20 331 969 302 899 591 -10000 903 141 804 705 767 846 424 188 964 -10000 178 250 124 38 110 814 848 721 662 -10000 625 778 934 725 278 485 600 220 267 -10000 888 587 377 118 161 267 75 277 599 -10000 359 688 976 424 211 795 395 608 205 -10000 394 914 208 496 114 21 554 784 706 -10000 972 826 752 408 713 487 117 412 208 -10000 846 772 747 892 643 49 76 325 392 -10000 377 652 494 910 883 572 118 644 337 -10000 237 608 237 301 975 127 539 290 310 -10000 20 246 746 79 768 293 588 561 876 -10000 50 618 904 200 25 594 992 542 149 -10000 955 139 111 613 554 35 973 227 617 -10000 920 723 725 237 125 497 815 370 689 -10000 432 80 183 179 767 389 833 861 927 -10000 966 163 245 151 406 228 388 443 646 -10000 530 956 73 535 821 114 675 720 483 -10000 152 690 546 515 229 344 842 327 88 -10000 676 429 570 832 561 146 528 934 564 -10000 520 957 684 726 370 603 165 57 19 -10000 500 831 275 957 995 763 110 598 755 -10000 436 763 895 467 901 988 385 203 354 -10000 192 55 746 867 997 818 117 950 212 -10000 29 368 796 301 134 337 913 798 64 -10000 645 780 228 515 596 951 69 174 333 -10000 471 622 361 447 267 99 828 716 93 -10000 463 121 820 119 51 931 516 46 722 -10000 574 488 163 405 908 632 79 774 504 -10000 914 738 865 964 516 195 344 382 740 -10000 715 112 86 960 59 327 842 18 606 -10000 201 128 295 340 93 931 316 717 622 -10000 806 776 386 815 230 112 770 453 481 -10000 117 355 559 64 157 440 663 622 873 -10000 680 497 417 278 200 642 731 978 696 -10000 858 302 201 761 523 391 114 638 832 -10000 356 464 477 649 913 948 179 410 479 -10000 292 520 413 377 793 543 435 814 813 -10000 688 772 88 82 91 227 609 368 321 -10000 459 731 654 33 467 925 81 875 872 -10000 841 167 832 665 881 102 38 493 80 -10000 970 634 23 968 903 42 883 893 370 -10000 196 735 696 272 852 193 319 870 222 -10000 382 326 777 543 283 731 247 597 222 -10000 462 863 273 618 524 583 556 53 465 -10000 116 118 724 845 253 605 433 987 636 -10000 130 21 765 14 490 636 642 459 77 -10000 699 469 150 64 928 944 339 240 281 -10000 664 695 838 755 358 647 200 859 365 -10000 603 29 71 867 431 677 47 250 415 -10000 335 990 871 994 961 476 720 674 470 -10000 359 380 549 892 488 899 263 491 202 -10000 621 987 538 822 330 697 460 208 522 -10000 242 283 384 826 46 510 882 382 498 -10000 246 712 977 105 435 26 773 583 693 -10000 592 962 657 763 510 367 972 24 908 -10000 160 169 204 64 678 927 273 256 218 -10000 623 325 397 551 678 10 882 132 529 -10000 920 129 750 977 865 1 552 866 460 -10000 807 914 764 708 966 640 69 306 885 -10000 830 752 658 956 122 863 55 634 622 -10000 487 695 377 261 653 173 261 920 377 -10000 350 241 858 164 449 377 942 573 812 -10000 501 437 129 29 608 99 331 359 918 -10000 85 589 819 701 518 730 946 278 657 -10000 592 963 525 626 428 367 507 607 60 -10000 247 906 481 324 466 811 991 642 952 -10000 811 786 495 179 208 953 885 213 940 -10000 558 357 315 402 719 357 863 394 163 -10000 763 801 118 863 780 727 52 244 145 -10000 72 846 568 678 699 78 472 615 729 -10000 614 165 645 936 107 548 995 728 173 -10000 198 640 931 115 877 573 329 860 36 -10000 854 950 802 350 690 396 99 493 248 -10000 82 480 234 377 152 311 351 351 505 -10000 659 315 327 547 649 828 444 69 109 -10000 811 812 480 688 337 68 654 456 34 -10000 378 795 687 710 424 117 631 636 632 -10000 803 125 666 240 129 532 444 84 71 -10000 387 604 322 249 450 222 586 803 605 -10000 706 392 144 464 373 919 784 399 424 -10000 977 911 220 757 828 51 810 579 45 -10000 480 785 406 2 453 637 82 331 926 -10000 45 569 250 535 342 919 62 875 891 -10000 572 365 615 152 109 856 755 288 437 -10000 4 286 100 230 768 15 950 368 137 -10000 753 857 384 10 49 891 899 836 695 -10000 990 829 598 938 528 403 602 424 725 -10000 15 491 314 896 453 535 360 215 803 -10000 578 685 554 180 768 810 39 911 944 -10000 991 501 993 431 651 556 590 888 539 -10000 373 961 413 259 170 378 768 893 429 -10000 629 655 118 928 906 838 940 840 401 -10000 358 208 69 107 789 103 744 927 807 -10000 852 67 622 452 433 276 210 251 364 -10000 197 681 909 623 747 50 403 30 0 -10000 560 304 607 460 141 23 935 597 825 -10000 6 544 561 856 370 29 814 390 965 -10000 652 277 865 68 367 521 131 964 422 -10000 28 229 496 516 215 838 125 417 273 -10000 396 756 840 917 397 611 565 209 157 -10000 405 797 750 20 298 816 284 678 524 -10000 428 539 459 932 124 688 292 460 340 -10000 696 507 896 562 779 783 490 354 750 -10000 621 591 326 778 557 488 342 472 875 -10000 999 623 286 658 634 860 915 516 317 -10000 885 88 690 332 315 816 428 118 59 -10000 135 38 677 380 34 457 992 893 198 -10000 598 469 70 11 190 609 633 173 271 -10000 734 950 257 792 791 796 201 158 285 -10000 105 262 600 7 972 432 278 936 752 -10000 665 687 468 5 768 475 876 994 823 -10000 82 481 356 948 976 514 130 936 35 -10000 909 757 957 630 379 909 86 530 699 -10000 936 144 278 321 744 986 631 746 25 -10000 928 264 623 255 201 142 337 132 889 -10000 544 540 440 143 722 81 305 545 157 -10000 69 684 40 817 481 16 548 673 332 -10000 484 488 578 28 580 270 489 856 730 -10000 532 373 317 416 773 619 910 489 568 -10000 565 383 605 907 964 457 764 609 9 -10000 366 770 424 581 833 152 27 467 810 -10000 941 559 504 414 881 55 2 672 809 -10000 644 355 935 711 723 525 1 297 904 -10000 431 88 359 810 179 312 657 463 833 -10000 718 256 466 592 606 237 695 964 357 -10000 36 325 57 493 136 468 663 81 231 -10000 345 19 980 208 521 921 412 63 373 -10000 488 34 829 28 202 41 616 548 394 -10000 887 215 991 827 620 675 285 754 487 -10000 439 949 891 558 828 509 432 967 565 -10000 972 860 731 842 270 560 206 184 980 -10000 238 375 153 815 158 288 119 681 50 -10000 389 691 501 694 939 124 322 809 566 -10000 170 410 419 267 162 704 683 995 483 -10000 429 49 41 515 161 519 737 601 702 -10000 346 648 766 722 312 649 245 222 54 -10000 528 904 89 407 350 744 700 807 148 -10000 508 30 54 628 863 577 808 329 703 -10000 800 476 641 938 74 886 238 826 234 -10000 861 613 436 726 344 608 686 164 744 -10000 261 519 537 448 923 779 315 311 431 -10000 362 53 203 874 28 428 737 237 44 -10000 616 455 512 689 230 35 976 794 705 -10000 320 652 509 719 845 678 77 494 257 -10000 502 881 872 375 990 693 157 773 545 -10000 515 983 768 955 334 836 292 209 805 -10000 663 580 700 320 59 661 415 467 611 -10000 172 494 384 65 336 912 283 381 850 -10000 494 236 905 457 425 715 517 497 206 -10000 362 432 483 231 708 391 44 311 393 -10000 831 776 27 68 883 172 712 263 115 -10000 934 360 401 435 177 381 610 597 876 -10000 379 407 888 466 375 998 724 605 657 -10000 252 41 163 994 415 257 625 24 283 -10000 255 965 411 83 906 686 387 547 321 -10000 470 789 349 697 782 648 287 350 62 -10000 602 42 246 30 561 530 863 365 441 -10000 115 975 68 112 529 2 469 485 607 -10000 606 77 534 790 167 1 774 87 383 -10000 283 47 788 187 338 296 404 354 71 -10000 913 867 673 5 278 15 469 254 375 -10000 380 411 107 685 307 356 707 520 373 -10000 565 368 500 692 564 859 962 986 360 -10000 678 85 514 945 129 504 585 789 658 -10000 730 130 650 22 517 432 513 105 282 -10000 799 172 331 954 71 930 412 154 879 -10000 383 551 253 933 161 873 129 470 666 -10000 696 832 461 863 378 82 432 467 810 -10000 101 816 49 198 919 966 911 126 397 -10000 322 932 785 600 543 620 593 296 646 -10000 556 453 499 818 319 606 998 92 498 -10000 791 938 504 813 143 624 470 853 246 -10000 645 284 854 191 544 599 918 6 750 -10000 813 727 577 932 538 767 877 750 650 -10000 718 420 914 881 271 153 569 339 796 -10000 410 821 794 827 505 881 617 255 993 -10000 14 821 402 488 718 74 147 131 218 -10000 877 58 310 682 261 36 768 168 834 -10000 754 475 120 533 375 100 398 236 937 -10000 938 294 282 654 657 658 635 735 597 -10000 871 478 619 107 923 538 400 577 419 -10000 535 980 489 775 889 944 291 716 984 -10000 103 682 787 920 580 66 219 16 962 -10000 91 711 873 283 288 602 489 494 903 -10000 544 198 670 775 433 78 542 282 718 -10000 492 461 385 153 890 764 137 145 822 -10000 999 572 9 385 466 550 935 133 230 -10000 515 337 903 77 15 600 756 192 462 -10000 892 926 935 513 336 853 460 1 316 -10000 215 440 714 981 45 13 954 490 769 -10000 725 324 609 216 458 49 368 435 843 -10000 204 837 943 182 341 526 869 774 647 -10000 610 924 932 775 672 990 758 984 221 -10000 20 311 218 496 730 108 925 648 614 -10000 198 601 330 757 442 867 141 446 562 -10000 773 221 24 619 902 838 175 48 259 -10000 907 227 700 540 934 53 48 191 600 -10000 419 384 853 104 575 323 474 721 545 -10000 282 925 476 417 78 734 146 809 814 -10000 598 460 540 890 836 590 380 98 600 -10000 533 538 779 858 264 836 919 630 635 -10000 471 572 873 429 259 124 732 177 706 -10000 773 640 66 606 403 265 928 452 806 -10000 735 912 285 28 158 370 488 888 657 -10000 272 491 619 69 915 85 870 72 457 -10000 400 284 357 48 822 230 981 698 494 -10000 674 9 287 317 240 162 423 301 246 -10000 188 988 627 94 707 748 205 174 990 -10000 549 890 449 858 87 569 336 966 889 -10000 834 596 877 127 26 521 294 605 457 -10000 238 63 608 542 71 862 543 643 280 -10000 475 233 815 489 162 858 151 628 256 -10000 256 169 264 950 212 998 347 494 785 -10000 305 647 211 40 184 844 110 118 716 -10000 962 963 188 459 503 769 249 864 475 -10000 473 950 34 408 264 498 527 389 127 -10000 562 971 651 220 509 44 121 302 141 -10000 833 556 48 581 785 22 65 150 438 -10000 200 354 503 637 616 32 951 12 644 -10000 561 470 989 356 338 530 142 216 487 -10000 623 419 591 665 388 851 235 898 85 -10000 928 301 517 232 346 551 596 208 911 -10000 673 384 706 421 559 737 230 355 480 -10000 665 360 907 485 778 553 424 100 756 -10000 659 276 316 291 282 1000 8 879 82 -10000 131 831 81 884 865 37 590 910 971 -10000 487 940 522 953 476 633 580 656 267 -10000 736 653 633 376 912 404 950 750 980 -10000 935 319 1000 5 4 768 275 606 911 -10000 221 449 486 369 932 998 327 630 894 -10000 696 929 881 726 438 218 802 1000 401 -10000 64 935 214 408 611 508 173 854 39 -10000 792 475 115 366 157 581 560 388 207 -10000 395 887 155 451 69 806 947 666 93 -10000 44 171 933 901 496 356 532 819 367 -10000 885 158 707 665 114 405 87 383 389 -10000 137 611 470 285 68 771 116 421 543 -10000 674 573 25 7 808 375 105 771 348 -10000 32 735 21 580 261 622 531 125 911 -10000 646 68 509 881 284 59 835 813 771 -10000 53 245 830 599 467 466 229 99 571 -10000 44 354 212 451 357 138 263 966 626 -10000 619 614 421 770 607 261 22 735 211 -10000 646 68 507 997 557 203 159 999 220 -10000 934 535 76 940 617 140 592 294 582 -10000 821 344 420 565 50 782 538 652 650 -10000 552 954 600 92 755 973 12 74 179 -10000 739 126 676 993 919 984 695 978 51 -10000 670 635 556 981 260 9 805 623 851 -10000 531 148 949 260 736 326 89 239 301 -10000 271 785 368 776 793 203 135 366 420 -10000 997 388 421 402 52 193 753 733 509 -10000 987 882 740 957 399 85 91 233 697 -10000 689 673 537 538 866 749 411 978 0 -10000 195 727 171 563 242 820 931 561 417 -10000 924 421 138 651 821 806 950 402 569 -10000 895 731 150 557 365 603 924 341 551 -10000 258 306 710 204 16 499 672 19 520 -10000 511 230 292 970 702 671 647 931 933 -10000 5 405 752 529 751 473 121 718 479 -10000 293 208 672 23 630 580 75 282 70 -10000 931 926 579 481 555 911 204 663 872 -10000 729 857 102 151 611 526 264 509 219 -10000 333 502 922 798 94 18 289 935 898 -10000 1 496 982 169 142 583 135 317 376 -10000 238 346 625 537 877 844 566 920 245 -10000 359 27 913 907 232 145 779 571 689 -10000 587 527 470 549 892 132 771 608 82 -10000 8 890 509 196 956 103 829 500 533 -10000 958 595 528 676 198 293 153 574 67 -10000 807 23 111 715 994 246 350 102 630 -10000 619 754 166 389 917 441 342 506 775 -10000 941 891 755 982 451 281 416 893 435 -10000 703 247 598 587 755 512 221 542 685 -10000 863 931 974 555 976 700 403 715 454 -10000 705 783 39 757 700 852 760 249 346 -10000 960 955 136 950 375 239 594 559 315 -10000 694 588 350 349 168 984 765 55 620 -10000 557 145 925 1000 903 836 946 73 133 -10000 13 685 502 994 600 818 47 658 402 -10000 259 18 265 149 880 242 231 47 685 -10000 689 286 584 569 914 432 735 218 425 -10000 228 731 378 584 899 597 415 841 262 -10000 436 208 169 930 997 261 286 659 364 -10000 709 827 751 323 826 202 396 33 253 -10000 400 134 988 32 574 967 569 910 232 -10000 263 667 578 336 364 280 194 611 692 -10000 704 287 251 151 36 106 860 592 722 -10000 998 797 293 800 402 202 741 308 374 -10000 172 539 652 731 574 765 294 847 636 -10000 195 545 632 33 310 339 867 360 240 -10000 414 658 329 926 165 469 750 623 502 -10000 307 542 65 282 316 269 105 69 852 -10000 117 837 634 89 394 556 945 65 271 -10000 570 86 312 451 432 773 929 720 285 -10000 416 254 564 283 522 77 812 78 789 -10000 512 315 215 939 370 998 171 727 106 -10000 370 576 738 332 48 573 312 251 133 -10000 311 724 977 984 162 506 171 3 361 -10000 724 331 502 592 215 420 886 986 770 -10000 189 418 373 386 610 377 642 912 107 -10000 801 888 36 837 851 922 562 487 423 -10000 855 387 326 303 871 214 183 749 258 -10000 789 269 790 288 509 673 720 745 524 -10000 158 674 661 430 718 995 712 479 115 -10000 86 654 159 385 566 491 560 471 514 -10000 853 592 524 320 255 804 167 941 268 -10000 513 753 938 505 224 495 279 938 26 -10000 927 653 990 626 119 270 968 24 954 -10000 763 669 772 310 64 139 517 152 686 -10000 123 564 911 515 740 51 330 130 241 -10000 577 675 302 904 812 915 246 125 991 -10000 877 723 194 285 24 547 815 534 567 -10000 634 553 750 801 263 633 992 978 979 -10000 172 595 9 618 371 974 180 308 28 -10000 339 441 47 117 92 179 358 996 43 -10000 290 613 148 545 350 692 743 168 322 -10000 188 491 928 386 286 28 394 342 884 -10000 2 984 892 519 6 565 902 909 116 -10000 955 452 394 923 598 503 33 809 695 -10000 183 971 68 21 720 45 162 872 454 -10000 419 866 921 439 842 881 426 105 395 -10000 310 349 997 525 337 151 299 260 337 -10000 90 436 468 188 437 972 358 290 709 -10000 146 813 684 76 273 150 938 591 801 -10000 817 121 308 308 482 201 161 619 39 -10000 324 912 455 227 272 539 583 789 700 -10000 551 438 889 935 975 867 218 487 101 -10000 757 802 119 119 75 897 349 223 660 -10000 696 356 486 708 869 244 133 199 814 -10000 579 240 559 575 230 705 58 495 820 -10000 952 39 814 621 966 982 625 165 710 -10000 138 513 164 832 601 279 346 794 792 -10000 837 763 807 667 157 352 233 735 341 -10000 570 563 900 81 933 621 178 665 566 -10000 992 305 415 782 431 380 424 555 457 -10000 810 598 520 524 171 741 706 909 782 -10000 699 178 177 780 983 389 206 354 529 -10000 246 402 486 404 750 664 572 615 378 -10000 706 652 882 512 990 981 819 156 118 -10000 582 390 97 460 88 506 482 892 621 -10000 330 723 920 759 39 165 295 301 372 -10000 863 390 771 199 524 397 603 980 872 -10000 864 921 782 680 832 653 36 159 544 -10000 914 575 843 101 888 502 433 195 956 -10000 87 235 325 714 646 686 75 943 666 -10000 740 315 35 970 422 558 357 725 422 -10000 630 203 715 60 178 309 739 279 383 -10000 838 754 302 938 429 270 499 663 387 -10000 955 632 571 734 592 604 366 77 458 -10000 313 992 685 425 406 275 87 322 729 -10000 780 874 490 55 71 198 266 585 814 -10000 132 762 645 379 729 535 45 278 538 -10000 79 778 374 292 589 428 572 975 481 -10000 781 405 448 980 354 776 469 721 525 -10000 247 300 426 856 312 95 5 700 224 -10000 826 978 805 785 7 2 538 696 619 -10000 599 803 795 716 458 340 623 259 659 -10000 561 400 392 618 276 250 932 408 99 -10000 440 145 798 286 378 723 212 207 521 -10000 85 980 151 383 338 436 815 807 382 -10000 895 622 397 309 705 502 132 76 878 -10000 66 402 320 421 296 234 873 960 35 -10000 152 966 332 237 558 756 956 571 697 -10000 469 575 830 426 33 484 648 368 957 -10000 615 448 320 640 666 141 605 387 522 -10000 430 443 291 250 923 955 948 677 168 -10000 218 778 924 538 827 343 137 117 477 -10000 843 130 698 68 180 881 904 315 449 -10000 889 890 87 240 41 675 862 328 610 -10000 546 320 118 229 608 216 409 95 353 -10000 73 237 707 513 390 0 705 463 14 -10000 137 10 315 789 295 994 61 277 977 -10000 163 421 254 922 620 61 516 706 48 -10000 993 960 253 387 358 256 665 581 238 -10000 224 91 420 815 854 637 389 694 254 -10000 297 486 316 156 126 221 571 680 464 -10000 377 607 34 221 6 193 977 3 656 -10000 102 914 623 576 179 39 336 582 301 -10000 77 696 605 247 867 716 663 892 374 -10000 471 298 427 591 745 428 258 387 15 -10000 826 362 286 436 616 898 810 453 995 -10000 321 160 924 904 264 238 12 946 341 -10000 367 665 998 176 940 240 747 750 559 -10000 990 286 417 565 446 919 783 930 909 -10000 79 612 716 957 430 453 701 859 661 -10000 687 869 442 778 16 106 55 57 951 -10000 943 585 306 931 72 801 906 677 328 -10000 134 839 312 11 419 831 789 317 543 -10000 499 439 441 807 45 240 633 77 696 -10000 314 846 378 225 505 797 143 115 275 -10000 941 313 729 98 433 447 342 131 746 -10000 932 408 614 175 83 688 559 393 464 -10000 491 844 392 317 460 216 257 40 452 -10000 833 880 4 656 685 742 343 466 754 -10000 673 959 449 268 492 75 70 161 919 -10000 950 540 471 217 96 679 647 463 747 -10000 149 946 523 623 78 71 198 669 582 -10000 829 74 115 927 190 930 19 766 145 -10000 305 377 351 761 136 497 316 768 261 -10000 980 965 166 953 959 859 585 368 597 -10000 469 392 170 81 935 662 72 995 482 -10000 99 79 835 134 62 552 626 966 918 -10000 632 421 784 88 524 712 729 260 262 -10000 721 965 414 413 288 244 165 382 835 -10000 946 519 320 490 106 744 680 34 239 -10000 124 453 571 258 500 96 643 49 710 -10000 403 11 542 265 536 936 740 269 778 -10000 38 283 495 854 243 354 416 791 241 -10000 295 25 447 772 826 293 911 276 963 -10000 826 18 855 839 164 23 43 216 679 -10000 296 655 67 392 996 761 210 989 543 -10000 297 69 202 130 754 501 78 986 310 -10000 703 571 287 628 18 198 275 581 926 -10000 998 805 180 888 127 55 21 957 992 -10000 201 784 911 686 459 832 890 836 566 -10000 816 124 864 426 663 599 922 453 933 -10000 810 860 804 324 134 847 937 627 928 -10000 263 431 350 455 896 812 273 360 296 -10000 389 470 56 881 464 131 117 201 145 -10000 778 734 484 135 324 724 36 995 655 -10000 87 434 59 159 503 705 650 390 943 -10000 844 316 965 497 103 604 923 222 864 -10000 135 343 584 596 756 376 311 306 771 -10000 955 802 655 477 81 498 799 673 322 -10000 855 647 999 448 883 412 230 94 438 -10000 401 117 963 949 566 720 903 929 255 -10000 705 642 711 625 183 880 317 50 169 -10000 574 189 416 718 895 848 669 991 533 -10000 919 412 587 18 252 389 832 960 221 -10000 624 659 141 311 860 796 626 377 422 -10000 934 329 579 809 504 2 953 997 93 -10000 859 258 362 291 255 35 875 272 240 -10000 408 374 862 773 8 509 921 180 25 -10000 409 19 203 542 953 297 14 893 331 -10000 171 341 638 664 476 497 837 796 254 -10000 544 96 940 360 80 376 718 633 164 -10000 444 378 268 0 716 903 513 491 314 -10000 95 206 472 218 743 611 438 274 190 -10000 60 40 627 214 692 463 679 439 306 -10000 64 568 414 61 586 324 763 486 210 -10000 408 313 668 588 119 898 868 651 755 -10000 81 652 898 695 505 199 560 810 103 -10000 55 352 226 745 487 580 687 642 881 -10000 507 736 843 26 138 670 863 709 529 -10000 713 373 323 980 925 711 16 108 600 -10000 87 13 802 917 768 864 375 759 492 end maximize 0 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 -10000 !adjacency cddlib-0.94j/examples/samplelp.ine0000644000175000017500000000207713270061061014114 00000000000000* Rational LP data H-representation begin 20 5 rational 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 3008 20980 -97775 -101225 0 3985 25643 -135871 -130580 0 4324 26978 -133655 -168473 0 3534 25361 -46243 -100407 0 8836 40796 -176661 -215616 0 5376 37562 -182576 -217615 0 4982 33088 -98880 -167278 0 4775 39122 -136701 -193393 0 8046 42958 -225138 -256575 0 8554 48955 -257370 -312877 0 6147 45514 -165274 -227099 0 8366 55140 -203989 -321623 0 13479 68037 -174270 -341743 0 21808 78302 -322990 -487539 1 -8554/10000 -48955/10000 0 0 1 0 0 -257370/10000 -312877/10000 end maximize 0 1 1/2 1/3 1/4 debug cddlib-0.94j/examples/samplelp.testlp1_gmp_output0000644000175000017500000000660513270061057017226 00000000000000lsne-2-240% testlp1_gmp >> Input file: samplelp.ine input file samplelp.ine is open size = 20 x 5 Number Type = rational H-representation begin 20 5 rational 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 3008 20980 -97775 -101225 0 3985 25643 -135871 -130580 0 4324 26978 -133655 -168473 0 3534 25361 -46243 -100407 0 8836 40796 -176661 -215616 0 5376 37562 -182576 -217615 0 4982 33088 -98880 -167278 0 4775 39122 -136701 -193393 0 8046 42958 -225138 -256575 0 8554 48955 -257370 -312877 0 6147 45514 -165274 -227099 0 8366 55140 -203989 -321623 0 13479 68037 -174270 -341743 0 21808 78302 -322990 -487539 1 -4277/5000 -9791/2000 0 0 1 0 0 -25737/1000 -312877/10000 end --- Running dd_LPSolve --- * cdd LP solver result * cdd: a double description code:Version 0.90gmp (May 19, 2000) * compiled for GMP rational arithmetic. * Copyright (C) 1996, Komei Fukuda, fukuda@ifor.math.ethz.ch * #constraints = 20 * #variables = 4 * Algorithm: dual simplex algorithm * maximization is chosen * Objective function is 0 + 1 X[ 1] + 1/2 X[ 2] + 1/3 X[ 3] + 1/4 X[ 4] * LP status: a dual pair (x,y) of optimal solutions found. begin primal_solution 1 : 5000/4277 2 : 0 3 : 19925000/581120267 4 : 0 dual_solution 6 : 1/407613 2 : 18187069067/3486721602 19 : 2057990000/1743360801 4 : 114707/1630452 optimal_value : 2057990000/1743360801 end * number of pivot operations = 10 (ph0 = 4, ph1 = 3, ph2 = 3, ph3 = 0) *Computation starts at Sun May 21 23:30:19 2000 * terminates at Sun May 21 23:30:19 2000 *Total processor time = 0 seconds * = 0 h 0 m 0 s (Iter, #Row, #Total, #Curr, Feas)= 6 5 9 7 3 (Iter, #Row, #Total, #Curr, Feas)= 7 8 9 7 3 (Iter, #Row, #Total, #Curr, Feas)= 8 6 14 9 5 (Iter, #Row, #Total, #Curr, Feas)= 9 7 18 9 5 (Iter, #Row, #Total, #Curr, Feas)= 10 12 21 11 6 (Iter, #Row, #Total, #Curr, Feas)= 11 11 21 11 6 (Iter, #Row, #Total, #Curr, Feas)= 12 10 26 13 10 (Iter, #Row, #Total, #Curr, Feas)= 13 15 26 13 10 (Iter, #Row, #Total, #Curr, Feas)= 14 13 29 15 10 (Iter, #Row, #Total, #Curr, Feas)= 15 16 29 15 10 (Iter, #Row, #Total, #Curr, Feas)= 16 14 34 15 15 All the vertices of the feasible region. V-representation begin 15 5 rational 1 0 2000/9791 0 0 1 5000/4277 0 0 0 1 0 2000/9791 51286000/1330312961 0 1 5000/4277 0 19925000/581120267 0 1 5000/4277 0 0 23875000/827141861 1 5000/4277 0 12707515000/376823017893 2877136000/4898699232609 1 1143413390000/1409570226171 88141030000/1409570226171 0 43460900000/1409570226171 1 5000/4277 0 2845715000/23783251846081 52652240000/1829480911237 1 12493061640000/10714427322421 5691430000/10714427322421 0 309613220000/10714427322421 1 0 2000/9791 0 10000/312877 1 241499988750/746539852973 2346752500/15883826659 0 10000/312877 1 127276149881465000/245208557641088631 27849359418340000/245208557641088631 6956201331595000/245208557641088631 705035354360000/81736185880362877 1 15266257972352500/27738073472746771 2998532612235000/27738073472746771 497786252410000/27738073472746771 1279018810000/74364808237927 1 0 2000/9791 3261122022000/87174523590197 103651790000/87174523590197 1 0 0 0 0 end cddlib-0.94j/examples/samplelp.testlp1_output0000644000175000017500000000660313270061057016361 00000000000000lsne-2-240% testlp1 >> Input file: samplelp.ine input file samplelp.ine is open size = 20 x 5 Number Type = rational H-representation begin 20 5 real 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 3008 20980 -97775 -101225 0 3985 25643 -135871 -130580 0 4324 26978 -133655 -168473 0 3534 25361 -46243 -100407 0 8836 40796 -176661 -2.156160000E+05 0 5376 37562 -182576 -2.176150000E+05 0 4982 33088 -98880 -167278 0 4775 39122 -136701 -193393 0 8046 42958 -2.251380000E+05 -2.565750000E+05 0 8554 48955 -2.573700000E+05 -3.128770000E+05 0 6147 45514 -165274 -2.270990000E+05 0 8366 55140 -203989 -3.216230000E+05 0 13479 68037 -174270 -3.417430000E+05 0 21808 78302 -3.229900000E+05 -4.875390000E+05 1 -8.554000000E-01 -4.895500000E+00 0 0 1 0 0 -2.573700000E+01 -3.128770000E+01 end --- Running dd_LPSolve --- * cdd LP solver result * cdd: a double description code:Version 0.90gmp (May 19, 2000) * compiled for C double arithmetic. * Copyright (C) 1996, Komei Fukuda, fukuda@ifor.math.ethz.ch * #constraints = 20 * #variables = 4 * Algorithm: dual simplex algorithm * maximization is chosen * Objective function is 0 + 1 X[ 1] + 5.000000000E-01 X[ 2] + 3.333333333E-01 X[ 3] + 2.500000000E-01 X[ 4] * LP status: a dual pair (x,y) of optimal solutions found. begin primal_solution 1 : 1.169043722E+00 2 : 0 3 : 3.428722268E-02 4 : 0 dual_solution 6 : 0 2 : 5.216094413E+00 19 : 1.180472796E+00 4 : 7.035288374E-02 optimal_value : 1.180472796E+00 end * number of pivot operations = 10 (ph0 = 4, ph1 = 3, ph2 = 3, ph3 = 0) *Computation starts at Sun May 21 23:27:48 2000 * terminates at Sun May 21 23:27:48 2000 *Total processor time = 0 seconds * = 0 h 0 m 0 s (Iter, #Row, #Total, #Curr, Feas)= 6 5 9 7 3 (Iter, #Row, #Total, #Curr, Feas)= 7 8 9 7 3 (Iter, #Row, #Total, #Curr, Feas)= 8 6 14 9 5 (Iter, #Row, #Total, #Curr, Feas)= 9 7 18 9 5 (Iter, #Row, #Total, #Curr, Feas)= 10 12 21 11 6 (Iter, #Row, #Total, #Curr, Feas)= 11 11 21 11 6 (Iter, #Row, #Total, #Curr, Feas)= 12 10 26 13 10 (Iter, #Row, #Total, #Curr, Feas)= 13 15 26 13 10 (Iter, #Row, #Total, #Curr, Feas)= 14 13 29 15 10 (Iter, #Row, #Total, #Curr, Feas)= 15 16 29 15 10 (Iter, #Row, #Total, #Curr, Feas)= 16 14 34 15 15 All the vertices of the feasible region. V-representation begin 15 5 real 1 0 2.042692268E-01 0 0 1 1.169043722E+00 0 0 0 1 0 2.042692268E-01 3.855183066E-02 0 1 1.169043722E+00 0 3.428722268E-02 0 1 1.169043722E+00 0 0 2.886445618E-02 1 1.169043722E+00 0 3.372276744E-02 5.873265255E-04 1 8.111787329E-01 6.253042833E-02 0 3.083273128E-02 1 1.169043722E+00 0 1.196520568E-04 2.877987941E-02 1 1.166003676E+00 5.311931127E-04 0 2.889685194E-02 1 0 2.042692268E-01 0 3.196144172E-02 1 3.234924268E-01 1.477447816E-01 0 3.196144172E-02 1 5.190526428E-01 1.135741741E-01 2.836850964E-02 8.625743259E-03 1 5.503719639E-01 1.081016897E-01 1.794595623E-02 1.719924841E-02 1 0 2.042692268E-01 3.740911780E-02 1.189014700E-03 1 0 0 0 0 end cddlib-0.94j/examples/samplev1.ext0000644000175000017500000000022413270061057014051 00000000000000* file name: libtesta.ext * a 1-D cone in 3D space V-representation begin 2 4 integer 1 1 0 1 0 0 1 0 end incidence adjacency cddlib-0.94j/examples/samplev2.ext0000644000175000017500000000026113270061057014053 00000000000000* file name: libtestb.ext * a 1-D cone in 3D space without any vertices V-representation begin 3 4 integer 0 0 0 1 1 1 0 0 0 1 -1 0 end linearity 1 3 cddlib-0.94j/examples/samplev3.ext0000644000175000017500000000032113270061057014051 00000000000000* test file for redundancy removal * the redundant rows: 2 4 5 6 7 * the implicit linearities : 8 9 V-representation begin 9 3 integer 1 0 0 1 2 0 1 0 2 1 1 1 1 2 1 1 1 2 1 2 2 0 1 0 0 -1 0 end cddlib-0.94j/examples-ext/0000755000175000017500000000000013312731233012454 500000000000000cddlib-0.94j/examples-ext/ccc4.ext0000644000175000017500000000044113270061057013734 00000000000000* file name: ccc4.ext * Complete cut cone on 4 vertices * The number of facets is 12. V-representation begin 7 7 integer 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 1 0 0 1 1 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0 1 0 0 1 1 0 end cddlib-0.94j/examples-ext/ccc5.ext0000644000175000017500000000071513270061057013741 00000000000000* file name: ccc5.ext * Complete cut cone on 5 vertices * The number of facets is 40. V-representation begin 15 11 integer 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 1 0 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 0 0 0 1 1 0 1 1 1 1 0 0 0 1 0 1 1 0 1 1 0 1 0 0 1 1 0 1 1 0 0 1 1 0 1 0 0 1 1 1 0 0 1 1 0 1 0 1 0 1 0 1 1 0 1 0 1 1 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 1 0 0 1 1 0 0 1 0 0 0 1 1 1 0 0 0 end cddlib-0.94j/examples-ext/ccc6.ext0000644000175000017500000000224313270061057013740 00000000000000* file name: ccc6.ext * Complete cut cone on 6 vertices * The number of facets is 210. V-representation begin 31 16 integer 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 0 1 1 0 1 0 0 1 0 0 1 1 0 0 1 1 1 0 1 0 0 1 0 0 1 0 1 0 1 0 1 1 1 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 1 0 1 1 1 0 1 1 1 0 0 1 1 0 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 0 1 1 1 0 1 1 1 0 0 0 1 0 1 1 0 1 0 0 1 1 1 1 0 0 0 1 1 1 1 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 0 0 1 1 1 0 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 0 1 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 1 0 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 0 0 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 1 0 0 1 1 0 0 0 1 1 1 1 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 0 1 0 1 1 1 0 0 1 1 0 0 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 end cddlib-0.94j/examples-ext/ccp4.ext0000644000175000017500000000054513270061057013756 00000000000000* file name: ccp4.ext * Input file for computing the facets of the complete cut polytope on 4 vertices * The number of facets is 16. V-representation begin 8 7 integer 1 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 0 1 1 0 end cddlib-0.94j/examples-ext/ccp5.ext0000644000175000017500000000102213270061057013746 00000000000000* filename: ccp5.ext * Input file for computing the facets of the complete cut polytope on 5 vertices * The number of facets is 56. V-representation begin 16 11 integer 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 1 0 1 1 1 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1 1 1 0 0 1 1 1 0 0 1 1 1 1 0 1 0 1 0 1 1 0 1 1 1 1 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 0 0 0 1 1 1 0 0 0 end cddlib-0.94j/examples-ext/ccp6.ext0000644000175000017500000000236513270061057013762 00000000000000* file name: ccc6.ext * Input file for computing the facets of the complete cut polytope on 6 vertices * The number of facets is 368. V-representation begin 32 16 integer 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 0 1 1 0 1 0 0 1 0 0 1 1 0 1 1 1 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 0 1 0 0 1 0 1 1 1 0 0 1 1 1 0 1 1 1 1 1 1 0 0 0 1 0 1 0 1 1 1 0 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 1 1 1 1 0 1 1 0 1 0 1 1 0 1 0 1 0 1 1 0 1 1 1 0 1 1 0 1 0 0 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 0 0 1 1 1 1 1 0 1 0 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 0 0 0 1 1 0 1 1 1 1 0 1 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 1 0 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 0 1 1 0 1 1 0 0 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 1 0 0 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 0 1 1 1 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 end cddlib-0.94j/examples-ext/cyclic10-4.ext0000644000175000017500000000041613270061057014672 00000000000000* 3-dim cyclic polytope with 10 vertices * Number of facets (outputs) =16 V-representation begin 10 4 integer 1 1 1 1 1 2 4 8 1 3 9 27 1 4 16 64 1 5 25 125 1 6 36 216 1 7 49 343 1 8 64 512 1 9 81 729 1 10 100 1000 end cddlib-0.94j/examples-ext/cyclic12-6.ext0000644000175000017500000000070013270061057014672 00000000000000* 5-dim cyclic polytope with12 vertices * Number of facets (outputs) =72 V-representation begin 12 6 integer 1 1 1 1 1 1 1 2 4 8 16 32 1 3 9 27 81 243 1 4 16 64 256 1024 1 5 25 125 625 3125 1 6 36 216 1296 7776 1 7 49 343 2401 16807 1 8 64 512 4096 32768 1 9 81 729 6561 59049 1 10 100 1000 10000 100000 1 11 121 1331 14641 161051 1 12 144 1728 20736 248832 end cddlib-0.94j/examples-ext/cyclic14-8.ext0000644000175000017500000000133413270061057014702 00000000000000* 7-dim cyclic polytope with 14 vertices * Number of facets (outputs) =240 V-representation begin 14 8 integer 1 1 1 1 1 1 1 1 1 2 4 8 16 32 64 128 1 3 9 27 81 243 729 2187 1 4 16 64 256 1024 4096 16384 1 5 25 125 625 3125 15625 78125 1 6 36 216 1296 7776 46656 279936 1 7 49 343 2401 16807 117649 823543 1 8 64 512 4096 32768 262144 2097152 1 9 81 729 6561 59049 531441 4782969 1 10 100 1000 10000 100000 1000000 10000000 1 11 121 1331 14641 161051 1771561 19487171 1 12 144 1728 20736 248832 2985984 35831808 1 13 169 2197 28561 371293 4826809 62748517 1 14 196 2744 38416 537824 7529536 105413504 end cddlib-0.94j/examples-ext/cyclic16-10.ext0000644000175000017500000000225513270061057014760 00000000000000* 9-dim cyclic polytope with 16 vertices * Number of facets (outputs) =660 * This must be computed with exact arithmetic V-representation begin 16 10 integer 1 1 1 1 1 1 1 1 1 1 1 2 4 8 16 32 64 128 256 512 1 3 9 27 81 243 729 2187 6561 19683 1 4 16 64 256 1024 4096 16384 65536 262144 1 5 25 125 625 3125 15625 78125 390625 1953125 1 6 36 216 1296 7776 46656 279936 1679616 10077696 1 7 49 343 2401 16807 117649 823543 5764801 40353607 1 8 64 512 4096 32768 262144 2097152 16777216 134217728 1 9 81 729 6561 59049 531441 4782969 43046721 387420489 1 10 100 1000 10000 100000 1000000 10000000 100000000 1000000000 1 11 121 1331 14641 161051 1771561 19487171 214358881 2357947691 1 12 144 1728 20736 248832 2985984 35831808 429981696 5159780352 1 13 169 2197 28561 371293 4826809 62748517 815730721 10604499373 1 14 196 2744 38416 537824 7529536 105413504 1475789056 20661046784 1 15 225 3375 50625 759375 11390625 170859375 2562890625 38443359375 1 16 256 4096 65536 1048576 16777216 268435456 4294967296 68719476736 end cddlib-0.94j/examples-ext/irbox200-4.ext0000644000175000017500000001232413270061057014631 00000000000000* File name: ibox200-4.ext * Randomly generated 200 integral points in [-100..100]^3 V-representation begin 200 4 integer 1 12 -49 2 1 -38 25 -3 1 -26 39 -7 1 -25 28 44 1 -20 -41 -31 1 49 45 28 1 -42 12 -25 1 -9 -31 -20 1 49 5 33 1 15 34 30 1 -18 -3 31 1 34 8 6 1 -19 31 -4 1 23 -44 -25 1 17 -14 -16 1 36 -14 -20 1 15 -7 42 1 39 33 -39 1 -30 33 15 1 -46 -1 0 1 33 30 47 1 14 14 5 1 -28 45 -13 1 17 18 -7 1 41 -13 27 1 -24 -27 -36 1 5 37 5 1 -2 27 -11 1 7 47 -28 1 -26 -49 20 1 24 34 0 1 21 0 -35 1 -23 20 -39 1 13 -12 28 1 -44 -20 -35 1 33 4 -12 1 46 -39 -25 1 2 7 -47 1 41 -34 49 1 -36 -11 -49 1 33 -37 34 1 -16 34 -15 1 -1 -39 -45 1 8 23 -8 1 -12 29 21 1 2 13 -23 1 39 10 -13 1 -36 -37 43 1 -34 -46 -41 1 -34 -32 -2 1 -33 -49 10 1 -48 -15 -5 1 -14 33 4 1 -10 -7 -21 1 31 29 -42 1 2 -18 21 1 29 -29 -18 1 -34 -15 -6 1 -41 0 -2 1 -32 16 14 1 14 32 15 1 -25 33 -49 1 19 -31 33 1 -26 8 -24 1 2 -10 -44 1 9 42 -12 1 -19 21 8 1 12 37 43 1 -44 45 -6 1 3 -36 -40 1 -31 27 42 1 33 -47 25 1 33 21 43 1 17 45 1 1 43 -2 41 1 49 -42 34 1 -13 -11 5 1 45 -49 -7 1 38 -43 -11 1 -18 10 2 1 -8 28 -19 1 -16 12 -17 1 -40 -4 -45 1 -46 -36 -49 1 5 -43 -2 1 -3 -44 5 1 -18 -7 43 1 36 -12 44 1 -20 -24 -49 1 18 7 10 1 -29 48 -10 1 0 -17 -48 1 33 -8 -2 1 37 -4 10 1 38 -49 17 1 -14 -2 22 1 41 28 -35 1 35 15 2 1 29 44 27 1 30 13 -15 1 -8 33 -16 1 30 -16 15 1 31 -32 -42 1 -20 -44 3 1 39 43 3 1 6 -20 -49 1 -20 -29 29 1 -5 -44 -5 1 46 34 -11 1 24 15 -48 1 -41 -43 35 1 -8 37 -30 1 -42 19 -13 1 -34 48 -8 1 18 37 -15 1 -27 -5 13 1 -27 23 33 1 -48 -32 39 1 -3 -35 23 1 34 38 -10 1 36 47 -4 1 22 -11 -17 1 41 -3 -47 1 -22 12 -49 1 18 -18 37 1 -46 3 -17 1 17 26 -44 1 1 28 -26 1 -9 -25 -11 1 -35 -40 -23 1 3 46 -26 1 49 18 12 1 -18 9 -40 1 -16 37 21 1 -15 5 -46 1 -27 9 6 1 4 -23 -16 1 10 27 -38 1 34 -31 -14 1 -27 -17 -4 1 -1 35 -8 1 22 34 -40 1 -15 -33 19 1 -5 0 6 1 -33 34 -37 1 -30 -43 21 1 26 11 48 1 -40 -28 26 1 -29 -43 44 1 6 -21 -23 1 -48 27 -38 1 -7 0 46 1 2 34 -36 1 -28 -21 13 1 27 -5 -1 1 39 14 5 1 11 -9 -33 1 9 0 -11 1 -14 20 -5 1 -20 -22 23 1 6 -21 0 1 18 21 49 1 14 -25 34 1 27 -4 -37 1 -8 -26 7 1 39 -36 -27 1 -4 24 13 1 11 -15 -36 1 -49 20 33 1 -4 49 -38 1 -31 6 -10 1 18 -25 -38 1 18 39 -13 1 2 17 32 1 14 -41 -44 1 -27 48 -31 1 -5 -6 43 1 -42 -44 -22 1 -29 -44 48 1 -45 1 47 1 -34 19 4 1 5 -11 28 1 17 -43 17 1 -46 8 -15 1 35 -26 -6 1 41 -3 -8 1 -39 41 34 1 -46 49 40 1 -18 -29 46 1 -20 -25 -2 1 -22 -9 -32 1 31 46 5 1 10 14 11 1 -22 17 -29 1 12 3 -5 1 -44 -5 40 1 -2 4 32 1 -18 8 31 1 -27 40 -48 1 -31 -29 -23 end cddlib-0.94j/examples-ext/irbox20-4.ext0000644000175000017500000000121213270061057014543 00000000000000* File name: irbox20-4.ext * Randomly generated 20 integral points in [-100..100]^3 V-representation begin 20 4 integer 1 -45 1 47 1 -34 19 4 1 5 -11 28 1 17 -43 17 1 -46 8 -15 1 35 -26 -6 1 41 -3 -8 1 -39 41 34 1 -46 49 40 1 -18 -29 46 1 -20 -25 -2 1 -22 -9 -32 1 31 46 5 1 10 14 11 1 -22 17 -29 1 12 3 -5 1 -44 -5 40 1 -2 4 32 1 -18 8 31 1 -27 40 -48 end cddlib-0.94j/examples-ext/prodst62.ext0000644000175000017500000053077713270061057014627 00000000000000* Created by Alain Prodon. * Convex hull problem and the number of facets is 168. V-representation begin 3461 25 integer 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 0 1 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 1 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 end cddlib-0.94j/examples-ext/reg24-5.ext0000644000175000017500000000104513270061057014206 00000000000000* The vertices of a self-dual 4-dim regular polytope * with 24 octahedron facets. * We use hull option to compute all (24) facet inequalities. V-representation begin 24 5 integer 1 1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 2 0 0 0 1 0 2 0 0 1 0 0 2 0 1 0 0 0 2 1 -2 0 0 0 1 0 -2 0 0 1 0 0 -2 0 1 0 0 0 -2 end cddlib-0.94j/examples-ext/reg600-5.ext0000644000175000017500000005610013270061057014270 00000000000000* filename: reg600-5.ine * The vertices of a 4-dim regular polytope with 600 vertices. * Hull computation for finding all 120 facets. V-representation begin 600 5 real 1 -2. -2. 0 0 1 -2. 0 -2. 0 1 -2. 0 0 -2. 1 -2. 0 0 2. 1 -2. 0 2. 0 1 -2. 2. 0 0 1 0 -2. -2. 0 1 0 -2. 0 -2. 1 0 -2. 0 2. 1 0 -2. 2. 0 1 0 0 -2. -2. 1 0 0 -2. 2. 1 0 0 2. -2. 1 0 0 2. 2. 1 0 2. -2. 0 1 0 2. 0 -2. 1 0 2. 0 2. 1 0 2. 2. 0 1 2. -2. 0 0 1 2. 0 -2. 0 1 2. 0 0 -2. 1 2. 0 0 2. 1 2. 0 2. 0 1 2. 2. 0 0 1 -1. -1. -1. -2.236067977 1 -1. -1. -1. 2.236067977 1 -1. -1. 1. -2.236067977 1 -1. -1. 1. 2.236067977 1 -1. -1. -2.236067977 -1. 1 -1. -1. -2.236067977 1. 1 -1. -1. 2.236067977 -1. 1 -1. -1. 2.236067977 1. 1 -1. 1. -1. -2.236067977 1 -1. 1. -1. 2.236067977 1 -1. 1. 1. -2.236067977 1 -1. 1. 1. 2.236067977 1 -1. 1. -2.236067977 -1. 1 -1. 1. -2.236067977 1. 1 -1. 1. 2.236067977 -1. 1 -1. 1. 2.236067977 1. 1 -1. -2.236067977 -1. -1. 1 -1. -2.236067977 -1. 1. 1 -1. -2.236067977 1. -1. 1 -1. -2.236067977 1. 1. 1 -1. 2.236067977 -1. -1. 1 -1. 2.236067977 -1. 1. 1 -1. 2.236067977 1. -1. 1 -1. 2.236067977 1. 1. 1 1. -1. -1. -2.236067977 1 1. -1. -1. 2.236067977 1 1. -1. 1. -2.236067977 1 1. -1. 1. 2.236067977 1 1. -1. -2.236067977 -1. 1 1. -1. -2.236067977 1. 1 1. -1. 2.236067977 -1. 1 1. -1. 2.236067977 1. 1 1. 1. -1. -2.236067977 1 1. 1. -1. 2.236067977 1 1. 1. 1. -2.236067977 1 1. 1. 1. 2.236067977 1 1. 1. -2.236067977 -1. 1 1. 1. -2.236067977 1. 1 1. 1. 2.236067977 -1. 1 1. 1. 2.236067977 1. 1 1. -2.236067977 -1. -1. 1 1. -2.236067977 -1. 1. 1 1. -2.236067977 1. -1. 1 1. -2.236067977 1. 1. 1 1. 2.236067977 -1. -1. 1 1. 2.236067977 -1. 1. 1 1. 2.236067977 1. -1. 1 1. 2.236067977 1. 1. 1 -2.236067977 -1. -1. -1. 1 -2.236067977 -1. -1. 1. 1 -2.236067977 -1. 1. -1. 1 -2.236067977 -1. 1. 1. 1 -2.236067977 1. -1. -1. 1 -2.236067977 1. -1. 1. 1 -2.236067977 1. 1. -1. 1 -2.236067977 1. 1. 1. 1 2.236067977 -1. -1. -1. 1 2.236067977 -1. -1. 1. 1 2.236067977 -1. 1. -1. 1 2.236067977 -1. 1. 1. 1 2.236067977 1. -1. -1. 1 2.236067977 1. -1. 1. 1 2.236067977 1. 1. -1. 1 2.236067977 1. 1. 1. 1 -1.618033989 -1.618033989 -1.618033989 -0.3819660113 1 -1.618033989 -1.618033989 -1.618033989 0.3819660113 1 -1.618033989 -1.618033989 -0.3819660113 -1.618033989 1 -1.618033989 -1.618033989 -0.3819660113 1.618033989 1 -1.618033989 -1.618033989 0.3819660113 -1.618033989 1 -1.618033989 -1.618033989 0.3819660113 1.618033989 1 -1.618033989 -1.618033989 1.618033989 -0.3819660113 1 -1.618033989 -1.618033989 1.618033989 0.3819660113 1 -1.618033989 -0.3819660113 -1.618033989 -1.618033989 1 -1.618033989 -0.3819660113 -1.618033989 1.618033989 1 -1.618033989 -0.3819660113 1.618033989 -1.618033989 1 -1.618033989 -0.3819660113 1.618033989 1.618033989 1 -1.618033989 0.3819660113 -1.618033989 -1.618033989 1 -1.618033989 0.3819660113 -1.618033989 1.618033989 1 -1.618033989 0.3819660113 1.618033989 -1.618033989 1 -1.618033989 0.3819660113 1.618033989 1.618033989 1 -1.618033989 1.618033989 -1.618033989 -0.3819660113 1 -1.618033989 1.618033989 -1.618033989 0.3819660113 1 -1.618033989 1.618033989 -0.3819660113 -1.618033989 1 -1.618033989 1.618033989 -0.3819660113 1.618033989 1 -1.618033989 1.618033989 0.3819660113 -1.618033989 1 -1.618033989 1.618033989 0.3819660113 1.618033989 1 -1.618033989 1.618033989 1.618033989 -0.3819660113 1 -1.618033989 1.618033989 1.618033989 0.3819660113 1 -0.3819660113 -1.618033989 -1.618033989 -1.618033989 1 -0.3819660113 -1.618033989 -1.618033989 1.618033989 1 -0.3819660113 -1.618033989 1.618033989 -1.618033989 1 -0.3819660113 -1.618033989 1.618033989 1.618033989 1 -0.3819660113 1.618033989 -1.618033989 -1.618033989 1 -0.3819660113 1.618033989 -1.618033989 1.618033989 1 -0.3819660113 1.618033989 1.618033989 -1.618033989 1 -0.3819660113 1.618033989 1.618033989 1.618033989 1 0.3819660113 -1.618033989 -1.618033989 -1.618033989 1 0.3819660113 -1.618033989 -1.618033989 1.618033989 1 0.3819660113 -1.618033989 1.618033989 -1.618033989 1 0.3819660113 -1.618033989 1.618033989 1.618033989 1 0.3819660113 1.618033989 -1.618033989 -1.618033989 1 0.3819660113 1.618033989 -1.618033989 1.618033989 1 0.3819660113 1.618033989 1.618033989 -1.618033989 1 0.3819660113 1.618033989 1.618033989 1.618033989 1 1.618033989 -1.618033989 -1.618033989 -0.3819660113 1 1.618033989 -1.618033989 -1.618033989 0.3819660113 1 1.618033989 -1.618033989 -0.3819660113 -1.618033989 1 1.618033989 -1.618033989 -0.3819660113 1.618033989 1 1.618033989 -1.618033989 0.3819660113 -1.618033989 1 1.618033989 -1.618033989 0.3819660113 1.618033989 1 1.618033989 -1.618033989 1.618033989 -0.3819660113 1 1.618033989 -1.618033989 1.618033989 0.3819660113 1 1.618033989 -0.3819660113 -1.618033989 -1.618033989 1 1.618033989 -0.3819660113 -1.618033989 1.618033989 1 1.618033989 -0.3819660113 1.618033989 -1.618033989 1 1.618033989 -0.3819660113 1.618033989 1.618033989 1 1.618033989 0.3819660113 -1.618033989 -1.618033989 1 1.618033989 0.3819660113 -1.618033989 1.618033989 1 1.618033989 0.3819660113 1.618033989 -1.618033989 1 1.618033989 0.3819660113 1.618033989 1.618033989 1 1.618033989 1.618033989 -1.618033989 -0.3819660113 1 1.618033989 1.618033989 -1.618033989 0.3819660113 1 1.618033989 1.618033989 -0.3819660113 -1.618033989 1 1.618033989 1.618033989 -0.3819660113 1.618033989 1 1.618033989 1.618033989 0.3819660113 -1.618033989 1 1.618033989 1.618033989 0.3819660113 1.618033989 1 1.618033989 1.618033989 1.618033989 -0.3819660113 1 1.618033989 1.618033989 1.618033989 0.3819660113 1 -0.6180339887 -0.6180339887 -0.6180339887 -2.618033989 1 -0.6180339887 -0.6180339887 -0.6180339887 2.618033989 1 -0.6180339887 -0.6180339887 0.6180339887 -2.618033989 1 -0.6180339887 -0.6180339887 0.6180339887 2.618033989 1 -0.6180339887 -0.6180339887 -2.618033989 -0.6180339887 1 -0.6180339887 -0.6180339887 -2.618033989 0.6180339887 1 -0.6180339887 -0.6180339887 2.618033989 -0.6180339887 1 -0.6180339887 -0.6180339887 2.618033989 0.6180339887 1 -0.6180339887 0.6180339887 -0.6180339887 -2.618033989 1 -0.6180339887 0.6180339887 -0.6180339887 2.618033989 1 -0.6180339887 0.6180339887 0.6180339887 -2.618033989 1 -0.6180339887 0.6180339887 0.6180339887 2.618033989 1 -0.6180339887 0.6180339887 -2.618033989 -0.6180339887 1 -0.6180339887 0.6180339887 -2.618033989 0.6180339887 1 -0.6180339887 0.6180339887 2.618033989 -0.6180339887 1 -0.6180339887 0.6180339887 2.618033989 0.6180339887 1 -0.6180339887 -2.618033989 -0.6180339887 -0.6180339887 1 -0.6180339887 -2.618033989 -0.6180339887 0.6180339887 1 -0.6180339887 -2.618033989 0.6180339887 -0.6180339887 1 -0.6180339887 -2.618033989 0.6180339887 0.6180339887 1 -0.6180339887 2.618033989 -0.6180339887 -0.6180339887 1 -0.6180339887 2.618033989 -0.6180339887 0.6180339887 1 -0.6180339887 2.618033989 0.6180339887 -0.6180339887 1 -0.6180339887 2.618033989 0.6180339887 0.6180339887 1 0.6180339887 -0.6180339887 -0.6180339887 -2.618033989 1 0.6180339887 -0.6180339887 -0.6180339887 2.618033989 1 0.6180339887 -0.6180339887 0.6180339887 -2.618033989 1 0.6180339887 -0.6180339887 0.6180339887 2.618033989 1 0.6180339887 -0.6180339887 -2.618033989 -0.6180339887 1 0.6180339887 -0.6180339887 -2.618033989 0.6180339887 1 0.6180339887 -0.6180339887 2.618033989 -0.6180339887 1 0.6180339887 -0.6180339887 2.618033989 0.6180339887 1 0.6180339887 0.6180339887 -0.6180339887 -2.618033989 1 0.6180339887 0.6180339887 -0.6180339887 2.618033989 1 0.6180339887 0.6180339887 0.6180339887 -2.618033989 1 0.6180339887 0.6180339887 0.6180339887 2.618033989 1 0.6180339887 0.6180339887 -2.618033989 -0.6180339887 1 0.6180339887 0.6180339887 -2.618033989 0.6180339887 1 0.6180339887 0.6180339887 2.618033989 -0.6180339887 1 0.6180339887 0.6180339887 2.618033989 0.6180339887 1 0.6180339887 -2.618033989 -0.6180339887 -0.6180339887 1 0.6180339887 -2.618033989 -0.6180339887 0.6180339887 1 0.6180339887 -2.618033989 0.6180339887 -0.6180339887 1 0.6180339887 -2.618033989 0.6180339887 0.6180339887 1 0.6180339887 2.618033989 -0.6180339887 -0.6180339887 1 0.6180339887 2.618033989 -0.6180339887 0.6180339887 1 0.6180339887 2.618033989 0.6180339887 -0.6180339887 1 0.6180339887 2.618033989 0.6180339887 0.6180339887 1 -2.618033989 -0.6180339887 -0.6180339887 -0.6180339887 1 -2.618033989 -0.6180339887 -0.6180339887 0.6180339887 1 -2.618033989 -0.6180339887 0.6180339887 -0.6180339887 1 -2.618033989 -0.6180339887 0.6180339887 0.6180339887 1 -2.618033989 0.6180339887 -0.6180339887 -0.6180339887 1 -2.618033989 0.6180339887 -0.6180339887 0.6180339887 1 -2.618033989 0.6180339887 0.6180339887 -0.6180339887 1 -2.618033989 0.6180339887 0.6180339887 0.6180339887 1 2.618033989 -0.6180339887 -0.6180339887 -0.6180339887 1 2.618033989 -0.6180339887 -0.6180339887 0.6180339887 1 2.618033989 -0.6180339887 0.6180339887 -0.6180339887 1 2.618033989 -0.6180339887 0.6180339887 0.6180339887 1 2.618033989 0.6180339887 -0.6180339887 -0.6180339887 1 2.618033989 0.6180339887 -0.6180339887 0.6180339887 1 2.618033989 0.6180339887 0.6180339887 -0.6180339887 1 2.618033989 0.6180339887 0.6180339887 0.6180339887 1 -1. 0 -2.618033989 -0.3819660113 1 -1. 0 -2.618033989 0.3819660113 1 -1. 0 2.618033989 -0.3819660113 1 -1. 0 2.618033989 0.3819660113 1 -1. -0.3819660113 0 -2.618033989 1 -1. -0.3819660113 0 2.618033989 1 -1. 0.3819660113 0 -2.618033989 1 -1. 0.3819660113 0 2.618033989 1 -1. -2.618033989 -0.3819660113 0 1 -1. -2.618033989 0.3819660113 0 1 -1. 2.618033989 -0.3819660113 0 1 -1. 2.618033989 0.3819660113 0 1 0 -1. -0.3819660113 -2.618033989 1 0 -1. -0.3819660113 2.618033989 1 0 -1. 0.3819660113 -2.618033989 1 0 -1. 0.3819660113 2.618033989 1 0 1. -0.3819660113 -2.618033989 1 0 1. -0.3819660113 2.618033989 1 0 1. 0.3819660113 -2.618033989 1 0 1. 0.3819660113 2.618033989 1 0 -0.3819660113 -2.618033989 -1. 1 0 -0.3819660113 -2.618033989 1. 1 0 -0.3819660113 2.618033989 -1. 1 0 -0.3819660113 2.618033989 1. 1 0 0.3819660113 -2.618033989 -1. 1 0 0.3819660113 -2.618033989 1. 1 0 0.3819660113 2.618033989 -1. 1 0 0.3819660113 2.618033989 1. 1 0 -2.618033989 -1. -0.3819660113 1 0 -2.618033989 -1. 0.3819660113 1 0 -2.618033989 1. -0.3819660113 1 0 -2.618033989 1. 0.3819660113 1 0 2.618033989 -1. -0.3819660113 1 0 2.618033989 -1. 0.3819660113 1 0 2.618033989 1. -0.3819660113 1 0 2.618033989 1. 0.3819660113 1 1. 0 -2.618033989 -0.3819660113 1 1. 0 -2.618033989 0.3819660113 1 1. 0 2.618033989 -0.3819660113 1 1. 0 2.618033989 0.3819660113 1 1. -0.3819660113 0 -2.618033989 1 1. -0.3819660113 0 2.618033989 1 1. 0.3819660113 0 -2.618033989 1 1. 0.3819660113 0 2.618033989 1 1. -2.618033989 -0.3819660113 0 1 1. -2.618033989 0.3819660113 0 1 1. 2.618033989 -0.3819660113 0 1 1. 2.618033989 0.3819660113 0 1 -0.3819660113 -1. -2.618033989 0 1 -0.3819660113 -1. 2.618033989 0 1 -0.3819660113 0 -1. -2.618033989 1 -0.3819660113 0 -1. 2.618033989 1 -0.3819660113 0 1. -2.618033989 1 -0.3819660113 0 1. 2.618033989 1 -0.3819660113 1. -2.618033989 0 1 -0.3819660113 1. 2.618033989 0 1 -0.3819660113 -2.618033989 0 -1. 1 -0.3819660113 -2.618033989 0 1. 1 -0.3819660113 2.618033989 0 -1. 1 -0.3819660113 2.618033989 0 1. 1 0.3819660113 -1. -2.618033989 0 1 0.3819660113 -1. 2.618033989 0 1 0.3819660113 0 -1. -2.618033989 1 0.3819660113 0 -1. 2.618033989 1 0.3819660113 0 1. -2.618033989 1 0.3819660113 0 1. 2.618033989 1 0.3819660113 1. -2.618033989 0 1 0.3819660113 1. 2.618033989 0 1 0.3819660113 -2.618033989 0 -1. 1 0.3819660113 -2.618033989 0 1. 1 0.3819660113 2.618033989 0 -1. 1 0.3819660113 2.618033989 0 1. 1 -2.618033989 -1. 0 -0.3819660113 1 -2.618033989 -1. 0 0.3819660113 1 -2.618033989 0 -0.3819660113 -1. 1 -2.618033989 0 -0.3819660113 1. 1 -2.618033989 0 0.3819660113 -1. 1 -2.618033989 0 0.3819660113 1. 1 -2.618033989 1. 0 -0.3819660113 1 -2.618033989 1. 0 0.3819660113 1 -2.618033989 -0.3819660113 -1. 0 1 -2.618033989 -0.3819660113 1. 0 1 -2.618033989 0.3819660113 -1. 0 1 -2.618033989 0.3819660113 1. 0 1 2.618033989 -1. 0 -0.3819660113 1 2.618033989 -1. 0 0.3819660113 1 2.618033989 0 -0.3819660113 -1. 1 2.618033989 0 -0.3819660113 1. 1 2.618033989 0 0.3819660113 -1. 1 2.618033989 0 0.3819660113 1. 1 2.618033989 1. 0 -0.3819660113 1 2.618033989 1. 0 0.3819660113 1 2.618033989 -0.3819660113 -1. 0 1 2.618033989 -0.3819660113 1. 0 1 2.618033989 0.3819660113 -1. 0 1 2.618033989 0.3819660113 1. 0 1 0 -2.236067977 -1.618033989 -0.6180339887 1 0 -2.236067977 -1.618033989 0.6180339887 1 0 -2.236067977 1.618033989 -0.6180339887 1 0 -2.236067977 1.618033989 0.6180339887 1 0 2.236067977 -1.618033989 -0.6180339887 1 0 2.236067977 -1.618033989 0.6180339887 1 0 2.236067977 1.618033989 -0.6180339887 1 0 2.236067977 1.618033989 0.6180339887 1 0 -1.618033989 -0.6180339887 -2.236067977 1 0 -1.618033989 -0.6180339887 2.236067977 1 0 -1.618033989 0.6180339887 -2.236067977 1 0 -1.618033989 0.6180339887 2.236067977 1 0 -0.6180339887 -2.236067977 -1.618033989 1 0 -0.6180339887 -2.236067977 1.618033989 1 0 -0.6180339887 2.236067977 -1.618033989 1 0 -0.6180339887 2.236067977 1.618033989 1 0 0.6180339887 -2.236067977 -1.618033989 1 0 0.6180339887 -2.236067977 1.618033989 1 0 0.6180339887 2.236067977 -1.618033989 1 0 0.6180339887 2.236067977 1.618033989 1 0 1.618033989 -0.6180339887 -2.236067977 1 0 1.618033989 -0.6180339887 2.236067977 1 0 1.618033989 0.6180339887 -2.236067977 1 0 1.618033989 0.6180339887 2.236067977 1 -2.236067977 0 -0.6180339887 -1.618033989 1 -2.236067977 0 -0.6180339887 1.618033989 1 -2.236067977 0 0.6180339887 -1.618033989 1 -2.236067977 0 0.6180339887 1.618033989 1 -2.236067977 -1.618033989 0 -0.6180339887 1 -2.236067977 -1.618033989 0 0.6180339887 1 -2.236067977 -0.6180339887 -1.618033989 0 1 -2.236067977 -0.6180339887 1.618033989 0 1 -2.236067977 0.6180339887 -1.618033989 0 1 -2.236067977 0.6180339887 1.618033989 0 1 -2.236067977 1.618033989 0 -0.6180339887 1 -2.236067977 1.618033989 0 0.6180339887 1 2.236067977 0 -0.6180339887 -1.618033989 1 2.236067977 0 -0.6180339887 1.618033989 1 2.236067977 0 0.6180339887 -1.618033989 1 2.236067977 0 0.6180339887 1.618033989 1 2.236067977 -1.618033989 0 -0.6180339887 1 2.236067977 -1.618033989 0 0.6180339887 1 2.236067977 -0.6180339887 -1.618033989 0 1 2.236067977 -0.6180339887 1.618033989 0 1 2.236067977 0.6180339887 -1.618033989 0 1 2.236067977 0.6180339887 1.618033989 0 1 2.236067977 1.618033989 0 -0.6180339887 1 2.236067977 1.618033989 0 0.6180339887 1 -1.618033989 0 -2.236067977 -0.6180339887 1 -1.618033989 0 -2.236067977 0.6180339887 1 -1.618033989 0 2.236067977 -0.6180339887 1 -1.618033989 0 2.236067977 0.6180339887 1 -1.618033989 -2.236067977 -0.6180339887 0 1 -1.618033989 -2.236067977 0.6180339887 0 1 -1.618033989 2.236067977 -0.6180339887 0 1 -1.618033989 2.236067977 0.6180339887 0 1 -1.618033989 -0.6180339887 0 -2.236067977 1 -1.618033989 -0.6180339887 0 2.236067977 1 -1.618033989 0.6180339887 0 -2.236067977 1 -1.618033989 0.6180339887 0 2.236067977 1 -0.6180339887 0 -1.618033989 -2.236067977 1 -0.6180339887 0 -1.618033989 2.236067977 1 -0.6180339887 0 1.618033989 -2.236067977 1 -0.6180339887 0 1.618033989 2.236067977 1 -0.6180339887 -2.236067977 0 -1.618033989 1 -0.6180339887 -2.236067977 0 1.618033989 1 -0.6180339887 2.236067977 0 -1.618033989 1 -0.6180339887 2.236067977 0 1.618033989 1 -0.6180339887 -1.618033989 -2.236067977 0 1 -0.6180339887 -1.618033989 2.236067977 0 1 -0.6180339887 1.618033989 -2.236067977 0 1 -0.6180339887 1.618033989 2.236067977 0 1 0.6180339887 0 -1.618033989 -2.236067977 1 0.6180339887 0 -1.618033989 2.236067977 1 0.6180339887 0 1.618033989 -2.236067977 1 0.6180339887 0 1.618033989 2.236067977 1 0.6180339887 -2.236067977 0 -1.618033989 1 0.6180339887 -2.236067977 0 1.618033989 1 0.6180339887 2.236067977 0 -1.618033989 1 0.6180339887 2.236067977 0 1.618033989 1 0.6180339887 -1.618033989 -2.236067977 0 1 0.6180339887 -1.618033989 2.236067977 0 1 0.6180339887 1.618033989 -2.236067977 0 1 0.6180339887 1.618033989 2.236067977 0 1 1.618033989 0 -2.236067977 -0.6180339887 1 1.618033989 0 -2.236067977 0.6180339887 1 1.618033989 0 2.236067977 -0.6180339887 1 1.618033989 0 2.236067977 0.6180339887 1 1.618033989 -2.236067977 -0.6180339887 0 1 1.618033989 -2.236067977 0.6180339887 0 1 1.618033989 2.236067977 -0.6180339887 0 1 1.618033989 2.236067977 0.6180339887 0 1 1.618033989 -0.6180339887 0 -2.236067977 1 1.618033989 -0.6180339887 0 2.236067977 1 1.618033989 0.6180339887 0 -2.236067977 1 1.618033989 0.6180339887 0 2.236067977 1 -2. -1. -1.618033989 -0.6180339887 1 -2. -1. -1.618033989 0.6180339887 1 -2. -1. 1.618033989 -0.6180339887 1 -2. -1. 1.618033989 0.6180339887 1 -2. 1. -1.618033989 -0.6180339887 1 -2. 1. -1.618033989 0.6180339887 1 -2. 1. 1.618033989 -0.6180339887 1 -2. 1. 1.618033989 0.6180339887 1 -2. -1.618033989 -0.6180339887 -1. 1 -2. -1.618033989 -0.6180339887 1. 1 -2. -1.618033989 0.6180339887 -1. 1 -2. -1.618033989 0.6180339887 1. 1 -2. -0.6180339887 -1. -1.618033989 1 -2. -0.6180339887 -1. 1.618033989 1 -2. -0.6180339887 1. -1.618033989 1 -2. -0.6180339887 1. 1.618033989 1 -2. 0.6180339887 -1. -1.618033989 1 -2. 0.6180339887 -1. 1.618033989 1 -2. 0.6180339887 1. -1.618033989 1 -2. 0.6180339887 1. 1.618033989 1 -2. 1.618033989 -0.6180339887 -1. 1 -2. 1.618033989 -0.6180339887 1. 1 -2. 1.618033989 0.6180339887 -1. 1 -2. 1.618033989 0.6180339887 1. 1 -1. -2. -0.6180339887 -1.618033989 1 -1. -2. -0.6180339887 1.618033989 1 -1. -2. 0.6180339887 -1.618033989 1 -1. -2. 0.6180339887 1.618033989 1 -1. 2. -0.6180339887 -1.618033989 1 -1. 2. -0.6180339887 1.618033989 1 -1. 2. 0.6180339887 -1.618033989 1 -1. 2. 0.6180339887 1.618033989 1 -1. -1.618033989 -2. -0.6180339887 1 -1. -1.618033989 -2. 0.6180339887 1 -1. -1.618033989 2. -0.6180339887 1 -1. -1.618033989 2. 0.6180339887 1 -1. -0.6180339887 -1.618033989 -2. 1 -1. -0.6180339887 -1.618033989 2. 1 -1. -0.6180339887 1.618033989 -2. 1 -1. -0.6180339887 1.618033989 2. 1 -1. 0.6180339887 -1.618033989 -2. 1 -1. 0.6180339887 -1.618033989 2. 1 -1. 0.6180339887 1.618033989 -2. 1 -1. 0.6180339887 1.618033989 2. 1 -1. 1.618033989 -2. -0.6180339887 1 -1. 1.618033989 -2. 0.6180339887 1 -1. 1.618033989 2. -0.6180339887 1 -1. 1.618033989 2. 0.6180339887 1 1. -2. -0.6180339887 -1.618033989 1 1. -2. -0.6180339887 1.618033989 1 1. -2. 0.6180339887 -1.618033989 1 1. -2. 0.6180339887 1.618033989 1 1. 2. -0.6180339887 -1.618033989 1 1. 2. -0.6180339887 1.618033989 1 1. 2. 0.6180339887 -1.618033989 1 1. 2. 0.6180339887 1.618033989 1 1. -1.618033989 -2. -0.6180339887 1 1. -1.618033989 -2. 0.6180339887 1 1. -1.618033989 2. -0.6180339887 1 1. -1.618033989 2. 0.6180339887 1 1. -0.6180339887 -1.618033989 -2. 1 1. -0.6180339887 -1.618033989 2. 1 1. -0.6180339887 1.618033989 -2. 1 1. -0.6180339887 1.618033989 2. 1 1. 0.6180339887 -1.618033989 -2. 1 1. 0.6180339887 -1.618033989 2. 1 1. 0.6180339887 1.618033989 -2. 1 1. 0.6180339887 1.618033989 2. 1 1. 1.618033989 -2. -0.6180339887 1 1. 1.618033989 -2. 0.6180339887 1 1. 1.618033989 2. -0.6180339887 1 1. 1.618033989 2. 0.6180339887 1 2. -1. -1.618033989 -0.6180339887 1 2. -1. -1.618033989 0.6180339887 1 2. -1. 1.618033989 -0.6180339887 1 2. -1. 1.618033989 0.6180339887 1 2. 1. -1.618033989 -0.6180339887 1 2. 1. -1.618033989 0.6180339887 1 2. 1. 1.618033989 -0.6180339887 1 2. 1. 1.618033989 0.6180339887 1 2. -1.618033989 -0.6180339887 -1. 1 2. -1.618033989 -0.6180339887 1. 1 2. -1.618033989 0.6180339887 -1. 1 2. -1.618033989 0.6180339887 1. 1 2. -0.6180339887 -1. -1.618033989 1 2. -0.6180339887 -1. 1.618033989 1 2. -0.6180339887 1. -1.618033989 1 2. -0.6180339887 1. 1.618033989 1 2. 0.6180339887 -1. -1.618033989 1 2. 0.6180339887 -1. 1.618033989 1 2. 0.6180339887 1. -1.618033989 1 2. 0.6180339887 1. 1.618033989 1 2. 1.618033989 -0.6180339887 -1. 1 2. 1.618033989 -0.6180339887 1. 1 2. 1.618033989 0.6180339887 -1. 1 2. 1.618033989 0.6180339887 1. 1 -1.618033989 -2. -1. -0.6180339887 1 -1.618033989 -2. -1. 0.6180339887 1 -1.618033989 -2. 1. -0.6180339887 1 -1.618033989 -2. 1. 0.6180339887 1 -1.618033989 -1. -0.6180339887 -2. 1 -1.618033989 -1. -0.6180339887 2. 1 -1.618033989 -1. 0.6180339887 -2. 1 -1.618033989 -1. 0.6180339887 2. 1 -1.618033989 1. -0.6180339887 -2. 1 -1.618033989 1. -0.6180339887 2. 1 -1.618033989 1. 0.6180339887 -2. 1 -1.618033989 1. 0.6180339887 2. 1 -1.618033989 2. -1. -0.6180339887 1 -1.618033989 2. -1. 0.6180339887 1 -1.618033989 2. 1. -0.6180339887 1 -1.618033989 2. 1. 0.6180339887 1 -1.618033989 -0.6180339887 -2. -1. 1 -1.618033989 -0.6180339887 -2. 1. 1 -1.618033989 -0.6180339887 2. -1. 1 -1.618033989 -0.6180339887 2. 1. 1 -1.618033989 0.6180339887 -2. -1. 1 -1.618033989 0.6180339887 -2. 1. 1 -1.618033989 0.6180339887 2. -1. 1 -1.618033989 0.6180339887 2. 1. 1 -0.6180339887 -2. -1.618033989 -1. 1 -0.6180339887 -2. -1.618033989 1. 1 -0.6180339887 -2. 1.618033989 -1. 1 -0.6180339887 -2. 1.618033989 1. 1 -0.6180339887 -1. -2. -1.618033989 1 -0.6180339887 -1. -2. 1.618033989 1 -0.6180339887 -1. 2. -1.618033989 1 -0.6180339887 -1. 2. 1.618033989 1 -0.6180339887 1. -2. -1.618033989 1 -0.6180339887 1. -2. 1.618033989 1 -0.6180339887 1. 2. -1.618033989 1 -0.6180339887 1. 2. 1.618033989 1 -0.6180339887 2. -1.618033989 -1. 1 -0.6180339887 2. -1.618033989 1. 1 -0.6180339887 2. 1.618033989 -1. 1 -0.6180339887 2. 1.618033989 1. 1 -0.6180339887 -1.618033989 -1. -2. 1 -0.6180339887 -1.618033989 -1. 2. 1 -0.6180339887 -1.618033989 1. -2. 1 -0.6180339887 -1.618033989 1. 2. 1 -0.6180339887 1.618033989 -1. -2. 1 -0.6180339887 1.618033989 -1. 2. 1 -0.6180339887 1.618033989 1. -2. 1 -0.6180339887 1.618033989 1. 2. 1 0.6180339887 -2. -1.618033989 -1. 1 0.6180339887 -2. -1.618033989 1. 1 0.6180339887 -2. 1.618033989 -1. 1 0.6180339887 -2. 1.618033989 1. 1 0.6180339887 -1. -2. -1.618033989 1 0.6180339887 -1. -2. 1.618033989 1 0.6180339887 -1. 2. -1.618033989 1 0.6180339887 -1. 2. 1.618033989 1 0.6180339887 1. -2. -1.618033989 1 0.6180339887 1. -2. 1.618033989 1 0.6180339887 1. 2. -1.618033989 1 0.6180339887 1. 2. 1.618033989 1 0.6180339887 2. -1.618033989 -1. 1 0.6180339887 2. -1.618033989 1. 1 0.6180339887 2. 1.618033989 -1. 1 0.6180339887 2. 1.618033989 1. 1 0.6180339887 -1.618033989 -1. -2. 1 0.6180339887 -1.618033989 -1. 2. 1 0.6180339887 -1.618033989 1. -2. 1 0.6180339887 -1.618033989 1. 2. 1 0.6180339887 1.618033989 -1. -2. 1 0.6180339887 1.618033989 -1. 2. 1 0.6180339887 1.618033989 1. -2. 1 0.6180339887 1.618033989 1. 2. 1 1.618033989 -2. -1. -0.6180339887 1 1.618033989 -2. -1. 0.6180339887 1 1.618033989 -2. 1. -0.6180339887 1 1.618033989 -2. 1. 0.6180339887 1 1.618033989 -1. -0.6180339887 -2. 1 1.618033989 -1. -0.6180339887 2. 1 1.618033989 -1. 0.6180339887 -2. 1 1.618033989 -1. 0.6180339887 2. 1 1.618033989 1. -0.6180339887 -2. 1 1.618033989 1. -0.6180339887 2. 1 1.618033989 1. 0.6180339887 -2. 1 1.618033989 1. 0.6180339887 2. 1 1.618033989 2. -1. -0.6180339887 1 1.618033989 2. -1. 0.6180339887 1 1.618033989 2. 1. -0.6180339887 1 1.618033989 2. 1. 0.6180339887 1 1.618033989 -0.6180339887 -2. -1. 1 1.618033989 -0.6180339887 -2. 1. 1 1.618033989 -0.6180339887 2. -1. 1 1.618033989 -0.6180339887 2. 1. 1 1.618033989 0.6180339887 -2. -1. 1 1.618033989 0.6180339887 -2. 1. 1 1.618033989 0.6180339887 2. -1. 1 1.618033989 0.6180339887 2. 1. end cddlib-0.94j/examples-ine/0000755000175000017500000000000013312731233012427 500000000000000cddlib-0.94j/examples-ine/allzero.ine0000644000175000017500000000022413270061057014515 00000000000000* File name: allzero.ine H-representation begin 6 4 integer 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 end cddlib-0.94j/examples-ine/cross10.ine0000644000175000017500000007010713270061057014346 00000000000000* 10-dim cross polytope H-representation begin 1024 11 integer 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 end cddlib-0.94j/examples-ine/cross12.ine0000644000175000017500000041011013270061057014340 00000000000000* 12-dim cross polytope H-representation begin 4096 13 integer 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 1 1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 end cddlib-0.94j/examples-ine/cross6.ine0000644000175000017500000000230213270061057014263 00000000000000* 6-dim cross polytope H-representation begin 64 7 integer 1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 -1 -1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 end cddlib-0.94j/examples-ine/cross8.ine0000644000175000017500000001350313270061057014272 00000000000000* 8-dim cross polytope H-representation begin 256 9 integer 1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 1 1 1 1 1 1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 1 -1 1 1 1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 1 -1 1 1 1 1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 1 -1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 1 -1 1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 1 -1 1 1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 1 -1 1 1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 1 -1 1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 -1 1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 1 -1 1 1 1 -1 -1 1 1 1 -1 1 -1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 -1 1 -1 -1 1 1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 -1 -1 1 1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 1 -1 1 1 1 1 1 -1 -1 1 -1 1 1 1 -1 1 -1 -1 1 -1 1 1 -1 1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 1 -1 1 1 1 -1 -1 1 -1 1 -1 1 -1 1 -1 -1 1 -1 1 -1 -1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 1 -1 -1 1 1 1 1 -1 -1 1 -1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 -1 1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 -1 1 -1 -1 -1 1 1 1 1 1 1 -1 -1 -1 1 1 1 1 -1 1 -1 -1 -1 1 1 1 -1 1 1 -1 -1 -1 1 1 1 -1 -1 1 -1 -1 -1 1 1 -1 1 1 1 -1 -1 -1 1 1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 1 -1 1 1 1 1 -1 -1 -1 1 -1 1 1 -1 1 -1 -1 -1 1 -1 1 -1 1 1 -1 -1 -1 1 -1 1 -1 -1 1 -1 -1 -1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 -1 1 -1 1 -1 -1 -1 1 -1 -1 -1 1 1 -1 -1 -1 1 -1 -1 -1 -1 1 -1 -1 -1 -1 1 1 1 1 1 -1 -1 -1 -1 1 1 1 -1 1 -1 -1 -1 -1 1 1 -1 1 1 -1 -1 -1 -1 1 1 -1 -1 1 -1 -1 -1 -1 1 -1 1 1 1 -1 -1 -1 -1 1 -1 1 -1 1 -1 -1 -1 -1 1 -1 -1 1 1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 -1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 1 1 -1 1 -1 -1 -1 -1 -1 1 -1 1 1 -1 -1 -1 -1 -1 1 -1 -1 1 -1 -1 -1 -1 -1 -1 1 1 1 -1 -1 -1 -1 -1 -1 1 -1 1 -1 -1 -1 -1 -1 -1 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 end cddlib-0.94j/examples-ine/cube10.ine0000644000175000017500000000135113277651306014137 00000000000000* 10-dim hypercube H-representation begin 20 11 integer 1 1 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 1 1 -1 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 -1 end cddlib-0.94j/examples-ine/cube12.ine0000644000175000017500000000200113270061057014121 00000000000000* 12-dim hypercube H-representation begin 24 13 integer 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 -1 0 0 0 0 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 0 0 0 0 -1 end cddlib-0.94j/examples-ine/cube6.ine0000644000175000017500000000050013270061057014046 00000000000000* 6-dim hypercube H-representation begin 12 7 integer 1 1 0 0 0 0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 -1 0 0 0 0 0 1 0 -1 0 0 0 0 1 0 0 -1 0 0 0 1 0 0 0 -1 0 0 1 0 0 0 0 -1 0 1 0 0 0 0 0 -1 end cddlib-0.94j/examples-ine/cube8.ine0000644000175000017500000000077713270061057014070 00000000000000* 8-dim hypercube H-representation begin 16 9 integer 1 1 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 -1 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 1 0 0 0 -1 0 0 0 0 1 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 -1 end cddlib-0.94j/examples-ine/cubocta.ine0000644000175000017500000000043013270061057014464 00000000000000filename: cubocta.ine Cuboctahedron H-representation begin 14 4 integer 1 1 0 0 1 0 1 0 1 0 0 1 1 -1 0 0 1 0 -1 0 1 0 0 -1 2 1 1 1 2 -1 1 1 2 1 -1 1 2 1 1 -1 2 -1 -1 1 2 1 -1 -1 2 -1 1 -1 2 -1 -1 -1 end cddlib-0.94j/examples-ine/ex1.ine0000644000175000017500000000035313270061057013545 00000000000000* file name: ex1.ine * 2 dimensional polyhedron with three vertices (0,3), (-1, 4) and (-1,10) and * two extremal rays (2,1) and (1,2). H-representation begin 4 3 integer 12 2 -1 -6 -1 2 -3 1 1 1 1 0 end cddlib-0.94j/examples-ine/infeas.ine0000644000175000017500000000065313270061062014314 00000000000000* File name: infeas.ine * The empty polytope. No vertices and rays. H-representation begin 13 7 integer 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 -2 1 0 0 0 0 0 0 0 0 0 0 0 1 1 -1 0 0 0 0 0 1 0 -1 0 0 0 0 1 0 0 -1 0 0 0 1 0 0 0 -1 0 0 1 0 0 0 0 -1 0 1 0 0 0 0 0 -1 end minimize 0 1 1 1 1 1 1 debug cddlib-0.94j/examples-ine/integralpoints.ine0000644000175000017500000000225113270061057016111 00000000000000* This input file is an example for generating * integral solutions to the following system of linear inequalities: * 10 x1 + 7 x2 <= 70 * 11 x1 + 5 x2 >= 55 * x1 >= 0, x2 >= 0 * By using the fact that 0<=x1<=7 and 0<=x2<=10, we apply * the (binary representation) substitution: x1 = 4 x13 + 2 x12 + x11 (all binary variables) x2 = 8 x24 + 4 x23 + 2 x22 + x21 (all binary variables) * The reduced system of linear inequalities is the input data. * Since all integral (i.e. 0-1) solutions are extreme points, * the integral extreme points are in one-to-one correspondence * with the integral solutions to the original system. In this * example, there are 194 extreme points among which 10 are * integral (0-1) solutions. H-representation begin 16 8 integer 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1 -1 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 1 0 0 -1 0 0 0 0 1 0 0 0 -1 0 0 0 1 0 0 0 0 -1 0 0 1 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 -1 70 -40 -20 -10 -56 -28 -14 -7 -55 44 22 11 40 20 10 5 end cddlib-0.94j/examples-ine/kkd18_4.ine0000644000175000017500000000132513270061061014210 00000000000000* kkd18_4.ine * This must be computed with rational arithmetic. H-representation begin 18 5 integer 3976210973720 -5964591245895 -33802508475500 -161110322828670 -745886931169976 5 -10 -50 -220 -974 5 -5 -35 -185 -899 5 0 -10 -90 -574 5 5 25 95 301 5 10 70 400 2146 5 15 125 855 5501 5 20 190 1490 11026 5 25 265 2335 19501 5 30 350 3420 31826 5 35 445 4775 49021 5 40 550 6430 72226 5 45 665 8415 102701 5 50 790 10760 141826 5 55 925 13495 191101 5 60 1070 16650 252146 5 65 1225 20255 326701 -3976210973719 5964591245895 33802508475500 161110322828670 745886931169976 end cddlib-0.94j/examples-ine/kkd27_5.ine0000644000175000017500000000252713270061061014216 00000000000000* kkd27_5.ine * This must be computed with rational arithmetic. H-representation begin 27 6 integer 1172039901841798080 -1758060515119739835 -12306436783413558955 -72080893223436992535 -406122552605284841587 -2275777153240670950215 6 -15 -85 -435 -2269 -12195 6 -9 -67 -393 -2179 -12009 6 -3 -37 -279 -1789 -10743 6 3 5 -57 -739 -6057 6 9 59 309 1475 6549 6 15 125 855 5501 34455 6 21 203 1617 12131 88641 6 27 293 2631 22301 184407 6 33 395 3933 37091 342093 6 39 509 5559 57725 587799 6 45 635 7545 85571 954105 6 51 773 9927 122141 1480791 6 57 923 12741 169091 2215557 6 63 1085 16023 228221 3214743 6 69 1259 19809 301475 4544049 6 75 1445 24135 390941 6279255 6 81 1643 29037 498851 8506941 6 87 1853 34551 627581 11325207 6 93 2075 40713 779651 14844393 6 99 2309 47559 957725 19187799 6 105 2555 55125 1164611 24492405 6 111 2813 63447 1403261 30909591 6 117 3083 72561 1676771 38605857 6 123 3365 82503 1988381 47763543 6 129 3659 93309 2341475 58581549 -1172039901841798079 1758060515119739835 12306436783413558955 72080893223436992535 406122552605284841587 2275777153240670950215 end cddlib-0.94j/examples-ine/kkd38_6.ine0000644000175000017500000000463113270061061014217 00000000000000* kkd38_6.ine * This must be computed with rational arithmetic. H-representation begin 38 7 integer 2919394390774395218459334 -4379091595292464054287507 -36492430237104184038520181 -253987324572060483286422939 -1691789494531258045567157717 -11149182918946980113429731347 -73511950112254277868261780941 7 -21 -133 -777 -4669 -29001 -184813 7 -14 -112 -728 -4564 -28784 -184372 7 -7 -77 -595 -4109 -27307 -179717 7 0 -28 -336 -2884 -21840 -156148 7 7 35 91 -301 -7133 -75445 7 14 112 728 4396 25424 141772 7 21 203 1617 12131 88641 638723 7 28 308 2800 23996 200368 1650188 7 35 427 4319 41251 384335 3535267 7 42 560 6216 65324 670992 6815180 7 49 707 8533 97811 1098349 12216107 7 56 868 11312 140476 1712816 20717068 7 63 1043 14595 195251 2570043 33602843 7 70 1232 18424 264236 3735760 52521932 7 77 1435 22841 349699 5286617 79549555 7 84 1652 27888 454076 7311024 117255692 7 91 1883 33607 579971 9909991 168778163 7 98 2128 40040 730156 13197968 237900748 7 105 2387 47229 907571 17303685 329136347 7 112 2660 55216 1115324 22370992 447815180 7 119 2947 64043 1356691 28559699 600178027 7 126 3248 73752 1635116 36046416 793474508 7 133 3563 84385 1954211 45025393 1036066403 7 140 3892 95984 2317756 55709360 1337536012 7 147 4235 108591 2729699 68330367 1708799555 7 154 4592 122248 3194156 83140624 2162225612 7 161 4963 136997 3715411 100413341 2711758603 7 168 5348 152880 4297916 120443568 3373047308 7 175 5747 169939 4946291 143549035 4163578427 7 182 6160 188216 5665324 170070992 5102815180 7 189 6587 207753 6459971 200375049 6212340947 7 196 7028 228592 7335356 234852016 7516007948 7 203 7483 250775 8296771 273918743 9040090963 7 210 7952 274344 9349676 318018960 10813446092 7 217 8435 299341 10499699 367624117 12867674555 7 224 8932 325808 11752636 423234224 15237291532 -2919394390774395218459333 4379091595292464054287507 36492430237104184038520181 253987324572060483286422939 1691789494531258045567157717 11149182918946980113429731347 73511950112254277868261780941 end cddlib-0.94j/examples-ine/nonfull.ine0000644000175000017500000000032313270061057014522 00000000000000* filename: nonfull.ine * non full-dimensional polyhedron H-representation begin 6 4 integer 2 -1 0 0 -2 1 0 0 2 0 -1 0 -1 1 0 0 -1 0 1 0 -1 0 0 1 end cddlib-0.94j/examples-ine/origin.ine0000644000175000017500000000052613270061057014341 00000000000000* filename: origin.ine * The polytope consists of a single point, the origin. * cddlib now works properly for this input (version 090c and up). H-representation begin 7 7 integer 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 -1 -1 -1 -1 -1 -1 end cddlib-0.94j/examples-ine/reg24-5.ine0000644000175000017500000000074613270061057014143 00000000000000* The facets of a self-dual 4-dim regular polytope * with 24 octahedron facets. H-representation begin 24 5 integer 1 1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 1 1 1 -1 1 -1 1 1 -1 -1 1 1 1 -1 -1 -1 1 -1 1 1 1 1 -1 1 1 -1 1 -1 1 -1 1 1 -1 1 -1 -1 1 -1 -1 1 1 1 -1 -1 1 -1 1 -1 -1 -1 1 1 -1 -1 -1 -1 1 2 0 0 0 1 0 2 0 0 1 0 0 2 0 1 0 0 0 2 1 -2 0 0 0 1 0 -2 0 0 1 0 0 -2 0 1 0 0 0 -2 end cddlib-0.94j/examples-ine/sampleh1.ine0000644000175000017500000000023713270061061014556 00000000000000* file name: sampleh1.ine * a 3-D cone containing no vertices and a line H-representation begin 3 4 integer 2 -1 -1 0 0 1 0 0 0 0 1 0 end cddlib-0.94j/examples-ine/sampleh2.ine0000644000175000017500000000020013270061061014545 00000000000000* file name: sampleh2.ine * a hyperplane with no vertices and rays H-representation begin 1 4 integer -1 0 0 1 end cddlib-0.94j/examples-ine/sampleh3.ine0000644000175000017500000000021613270061061014555 00000000000000* file name: sampleh3.ine * a 3-D homogeneous cone with no vertices H-representation begin 2 4 integer 0 1 1 0 0 0 1 0 end cddlib-0.94j/examples-ine/sampleh4.ine0000644000175000017500000000034413270061061014560 00000000000000* File name: sampleh4.ine * trivial inequalities: the polyhedron is the whole space. H-representation begin 6 4 integer 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 end maximize 0 1 1 1 cddlib-0.94j/examples-ine/sampleh5.ine0000644000175000017500000000041013270061061014553 00000000000000* file name: sampleh5.ine * test file for redundancy removal H-representation linearity 1 3 begin 10 4 integer 0 1 0 0 0 0 1 0 0 0 0 1 0 2 0 0 0 0 0 3 1 -1 -1 -1 1 -1 -1 0 1 0 -1 -1 1 -1 0 -1 2 -1 -1 -1 end maximize 0 1 1 1 cddlib-0.94j/examples-ine/sampleh6.ine0000644000175000017500000000026013270061061014557 00000000000000* file name: sampleh6.ine * test file for forced-equality checking H-representation begin 5 4 integer 0 1 0 0 0 0 1 0 0 0 0 1 1 -1 -1 -1 -1 1 1 0 end cddlib-0.94j/examples-ine/sampleh7.ine0000644000175000017500000000044013270061061014560 00000000000000* test file for redundancy removal * the redundant rows are * 3 4 5 9 10 * LP type = 1 Seed = 123 H-representation begin 10 3 integer 0 1 0 0 0 1 -10000 651 693 -10000 697 637 -10000 368 824 -10000 87 725 -10000 387 219 -10000 430 202 -10000 356 988 -10000 674 979 end cddlib-0.94j/examples-ine/sampleh8.ine0000644000175000017500000001041013270061061014557 00000000000000* test file for redundancy removal * the redundant rows are * 10 11 12 14 21 23 26 32 39 40 41 44 46 * 50 51 54 56 57 59 62 63 64 69 76 77 78 * 79 83 84 85 87 88 91 94 97 * LP type = 1 Seed = 123 H-representation begin 100 10 integer 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 -10000 651 693 84 697 637 340 368 824 663 -10000 725 742 387 219 751 430 202 745 356 -10000 377 674 979 167 815 988 412 676 475 -10000 710 275 949 284 629 1 422 974 510 -10000 692 945 725 488 271 430 724 225 726 -10000 465 258 450 343 87 168 161 103 919 -10000 86 79 656 493 832 514 791 506 29 -10000 63 630 874 918 877 272 992 119 480 -10000 598 926 42 378 288 66 927 919 99 -10000 256 354 106 979 641 160 395 225 837 -10000 202 388 900 471 160 751 300 731 818 -10000 342 502 825 563 639 261 194 984 990 -10000 266 406 364 216 448 675 145 694 866 -10000 362 983 732 378 134 902 946 877 205 -10000 926 125 949 888 234 630 275 707 67 -10000 634 81 192 768 652 822 311 961 895 -10000 983 597 743 314 696 585 367 396 826 -10000 511 545 539 97 111 996 477 35 372 -10000 474 103 152 753 159 120 929 161 563 -10000 549 793 307 456 444 184 149 792 894 -10000 839 488 917 192 168 788 959 245 25 -10000 750 165 338 182 392 381 962 117 713 -10000 738 827 943 507 914 814 951 663 815 -10000 493 339 225 351 450 788 992 167 792 -10000 174 773 247 247 180 517 445 599 596 -10000 303 26 967 39 535 4 7 335 217 -10000 772 173 189 291 668 191 610 677 544 -10000 848 642 40 125 865 100 259 534 648 -10000 501 622 398 624 118 416 30 17 236 -10000 218 602 697 892 322 314 361 573 985 -10000 958 856 608 492 563 478 311 614 740 -10000 582 913 938 949 715 338 39 726 998 -10000 521 805 708 221 624 316 24 127 322 -10000 491 189 412 774 418 200 193 633 315 -10000 144 679 383 447 989 939 441 631 482 -10000 940 241 153 215 149 457 254 207 125 -10000 80 873 207 904 684 600 940 431 825 -10000 75 100 353 637 432 377 940 758 164 -10000 627 721 915 710 8 786 96 17 576 -10000 247 104 607 432 540 164 597 282 317 -10000 553 787 881 942 152 318 44 509 518 -10000 181 772 942 993 916 900 713 694 812 -10000 625 26 638 261 385 196 676 717 572 -10000 11 911 296 761 658 631 757 817 400 -10000 964 989 879 491 490 751 490 97 405 -10000 28 461 343 452 480 504 411 242 892 -10000 768 746 347 352 724 487 185 767 287 -10000 924 228 958 554 352 460 765 742 430 -10000 737 986 499 993 721 29 821 416 813 -10000 483 458 249 781 584 321 779 209 570 -10000 222 166 975 53 765 256 859 469 164 -10000 82 696 181 166 375 145 415 496 261 -10000 540 309 526 918 439 489 846 417 775 -10000 699 145 327 873 467 866 711 393 603 -10000 445 668 729 224 654 970 279 789 680 -10000 28 659 365 306 186 520 427 176 191 -10000 919 58 859 436 105 35 560 716 14 -10000 641 238 340 524 205 255 272 14 472 -10000 817 22 904 782 573 847 649 100 280 -10000 925 277 930 495 736 960 276 726 657 -10000 336 54 357 979 941 765 593 630 286 -10000 65 113 104 915 222 158 580 520 188 -10000 42 617 904 414 588 857 416 94 988 -10000 716 49 849 67 607 99 934 184 217 -10000 458 32 500 552 108 980 255 998 935 -10000 860 936 115 268 231 281 948 209 766 -10000 293 330 940 570 857 421 574 481 364 -10000 959 949 372 757 306 757 752 312 137 -10000 769 303 737 260 187 695 946 723 433 -10000 980 564 605 363 776 893 558 616 603 -10000 945 23 632 820 54 677 795 616 625 -10000 629 692 585 33 674 703 304 489 949 -10000 52 903 723 746 692 232 917 933 211 -10000 367 566 364 318 607 818 424 234 605 -10000 915 305 354 829 469 447 925 188 799 -10000 387 596 946 888 751 614 539 295 299 -10000 969 902 10 739 289 923 808 28 151 -10000 537 152 546 442 182 301 258 265 762 -10000 671 288 343 199 694 391 457 947 250 -10000 415 734 423 435 696 111 53 227 784 -10000 800 992 720 76 40 419 608 182 683 -10000 619 627 278 526 453 960 772 992 86 -10000 836 623 0 21 371 4 676 964 658 -10000 258 677 64 968 62 219 587 308 299 -10000 224 823 258 449 575 526 908 585 405 -10000 593 660 663 341 36 79 50 242 293 -10000 80 761 270 460 82 133 874 559 41 -10000 169 539 257 827 222 743 873 929 523 -10000 403 167 259 377 76 160 749 448 902 -10000 290 5 276 509 342 909 193 443 552 -10000 928 326 757 405 598 765 143 833 150 end cddlib-0.94j/examples-ine/samplelp1.ine0000644000175000017500000000025713270061061014744 00000000000000* file name: samplelp1.ine * LP H-representation begin 6 4 integer 1 1 0 0 1 0 1 0 1 0 0 1 1 -1 0 0 1 0 -1 0 1 0 0 -1 end maximize 0 1 1 1 cddlib-0.94j/examples-ine/samplelp2.ine0000644000175000017500000000027713270061061014747 00000000000000* file name: samplelp2.ine * LP H-representation linearity 2 3 4 begin 4 5 rational 0 1 1 0 0 0 0 2 0 0 3 0 -1 0 0 9/2 0 0 -1 -1 end minimize 0 2 3/5 0 0 cddlib-0.94j/examples-ine/samplelp3.ine0000644000175000017500000001444413270061061014751 00000000000000* file name: samplelp3.ine * LP given by floating-point real numbers H-representation begin 120 5 real 2.618033989E+00 1 0 0 0 8.472135943E+00 2.618033984E+00 1.618033988E+00 -1 0 8.472135943E+00 2.618033984E+00 1.618033988E+00 1 0 8.472135945E+00 2.618033984E+00 1 0 1.618033990E+00 8.472135945E+00 2.618033984E+00 1 0 -1.618033990E+00 8.472135946E+00 2.618033985E+00 0 1.618033990E+00 1 8.472135946E+00 2.618033985E+00 0 1.618033990E+00 -1 8.472135946E+00 2.618033985E+00 0 -1.618033990E+00 1 8.472135946E+00 2.618033985E+00 0 -1.618033990E+00 -1 8.472135960E+00 2.618033990E+00 -1 0 1.618033991E+00 8.472135954E+00 2.618033988E+00 -1 0 -1.618033990E+00 8.472135941E+00 2.618033984E+00 -1.618033987E+00 1 0 8.472135946E+00 2.618033984E+00 -1.618033992E+00 -1 0 8.472135966E+00 1.618033989E+00 2.618033995E+00 0 1 8.472135966E+00 1.618033989E+00 2.618033995E+00 0 -1 5.236067982E+00 1 1 1 1 5.236067982E+00 1 1 1 -1 5.236067980E+00 1 1 -1 1 5.236067980E+00 1 1 -1 -1 8.472135941E+00 1.618033989E+00 1 2.618033982E+00 0 8.472135936E+00 1.618033985E+00 1 -2.618033983E+00 0 8.472135965E+00 1.618033992E+00 0 1 2.618033991E+00 8.472135965E+00 1.618033992E+00 0 1 -2.618033991E+00 8.472135967E+00 1.618033992E+00 0 -1 2.618033993E+00 8.472135967E+00 1.618033992E+00 0 -1 -2.618033993E+00 8.472135996E+00 1.618034002E+00 -1 2.618033998E+00 0 8.472135985E+00 1.618033997E+00 -1 -2.618033998E+00 0 5.236067982E+00 1 -1 1 1 5.236067987E+00 1 -1 1 -1 5.236067983E+00 1 -1 -1 1 5.236067984E+00 1 -1 -1 -1 8.472135981E+00 1.618033999E+00 -2.618033991E+00 0 1 8.472135972E+00 1.618033998E+00 -2.618033988E+00 0 -1 8.472135864E+00 1 2.618033957E+00 1.618033969E+00 0 8.472135874E+00 1 2.618033960E+00 -1.618033969E+00 0 8.472135841E+00 1 1.618033964E+00 0 2.618033948E+00 8.472135864E+00 1 1.618033970E+00 0 -2.618033956E+00 8.472135865E+00 1 0 2.618033957E+00 1.618033968E+00 8.472135880E+00 1 0 2.618033963E+00 -1.618033971E+00 8.472135921E+00 1 0 -2.618033977E+00 1.618033982E+00 8.472135936E+00 1 0 -2.618033982E+00 -1.618033984E+00 8.472135950E+00 1 -1.618033984E+00 0 2.618033987E+00 8.472135975E+00 1 -1.618033991E+00 0 -2.618033996E+00 8.472135940E+00 1 -2.618033980E+00 1.618033987E+00 0 8.472135918E+00 1 -2.618033977E+00 -1.618033979E+00 0 2.618033992E+00 0 1 0 0 8.472135970E+00 0 2.618033994E+00 1 1.618033987E+00 8.472135966E+00 0 2.618033993E+00 1 -1.618033986E+00 8.472135969E+00 0 2.618033993E+00 -1 1.618033989E+00 8.472135965E+00 0 2.618033993E+00 -1 -1.618033988E+00 8.472135978E+00 0 1.618033994E+00 2.618033994E+00 1 8.472136017E+00 0 1.618034002E+00 2.618034006E+00 -1 8.472135962E+00 0 1.618033993E+00 -2.618033988E+00 1 8.472135995E+00 0 1.618033999E+00 -2.618033998E+00 -1 8.472135946E+00 0 1 1.618033984E+00 2.618033986E+00 8.472135944E+00 0 1 1.618033985E+00 -2.618033986E+00 8.472135922E+00 0 1 -1.618033980E+00 2.618033979E+00 2.618033990E+00 0 0 0 1 8.472135919E+00 0 1 -1.618033980E+00 -2.618033979E+00 2.618033989E+00 0 0 0 -1 2.618033988E+00 0 0 1 0 2.618033987E+00 0 0 -1 0 8.472135960E+00 0 -1 1.618033993E+00 2.618033991E+00 8.472135908E+00 0 -1.618033977E+00 2.618033974E+00 1 8.472135958E+00 0 -1 1.618033994E+00 -2.618033991E+00 8.472135901E+00 0 -1.618033978E+00 2.618033974E+00 -1 8.472135954E+00 0 -1 -1.618033990E+00 2.618033990E+00 8.472135908E+00 0 -1.618033976E+00 -2.618033974E+00 1 8.472135952E+00 0 -1 -1.618033991E+00 -2.618033990E+00 8.472135907E+00 0 -1.618033978E+00 -2.618033975E+00 -1 8.472135946E+00 0 -2.618033995E+00 1 1.618033991E+00 8.472135953E+00 0 -2.618033995E+00 -1 1.618033994E+00 8.472135953E+00 0 -2.618033998E+00 1 -1.618033992E+00 8.472135955E+00 0 -2.618033996E+00 -1 -1.618033994E+00 2.618033981E+00 0 -1 0 0 8.472135799E+00 -1 2.618033936E+00 1.618033957E+00 0 8.472135806E+00 -1 2.618033939E+00 -1.618033956E+00 0 8.472135741E+00 -1 1.618033945E+00 0 2.618033918E+00 8.472135889E+00 -1.618033990E+00 2.618033960E+00 0 1 8.472135767E+00 -1 1.618033951E+00 0 -2.618033925E+00 8.472135878E+00 -1.618033996E+00 2.618033953E+00 0 -1 8.472135831E+00 -1 0 2.618033947E+00 1.618033962E+00 5.236068004E+00 -1 1 1 1 8.472135830E+00 -1 0 2.618033948E+00 -1.618033961E+00 5.236067998E+00 -1 1 1 -1 8.472135931E+00 -1 0 -2.618033980E+00 1.618033984E+00 5.236067998E+00 -1 1 -1 1 8.472135930E+00 -1 0 -2.618033980E+00 -1.618033982E+00 5.236067992E+00 -1 1 -1 -1 8.472135952E+00 -1.618033993E+00 1 2.618033986E+00 0 8.472135960E+00 -1.618033995E+00 1 -2.618033988E+00 0 8.472135973E+00 -1 -1.618033989E+00 0 2.618033995E+00 8.472135979E+00 -1.618033991E+00 0 1 2.618033997E+00 8.472135996E+00 -1 -1.618033995E+00 0 -2.618034002E+00 8.472135951E+00 -1.618033985E+00 0 1 -2.618033988E+00 8.472135999E+00 -1.618033998E+00 0 -1 2.618034003E+00 8.472135970E+00 -1.618033992E+00 0 -1 -2.618033994E+00 8.472135949E+00 -1 -2.618033984E+00 1.618033989E+00 0 8.472135976E+00 -1.618033990E+00 -1 2.618033998E+00 0 8.472135886E+00 -1 -2.618033968E+00 -1.618033973E+00 0 8.472136008E+00 -1.618034002E+00 -1 -2.618034009E+00 0 5.236068025E+00 -1 -1 1 1 5.236068045E+00 -1 -1 1 -1 5.236067992E+00 -1 -1 -1 1 5.236067996E+00 -1 -1 -1 -1 8.472135733E+00 -1.618033890E+00 -2.618033931E+00 0 1 8.472135716E+00 -1.618033884E+00 -2.618033926E+00 0 -1 8.472135892E+00 -2.618033958E+00 1.618033988E+00 1 0 8.472135949E+00 -2.618033975E+00 1.618033999E+00 -1 0 8.472135850E+00 -2.618033938E+00 1 0 1.618033982E+00 8.472135860E+00 -2.618033944E+00 1 0 -1.618033981E+00 8.472135925E+00 -2.618033969E+00 0 1.618033991E+00 1 8.472135937E+00 -2.618033972E+00 0 1.618033995E+00 -1 8.472135998E+00 -2.618034011E+00 0 -1.618033985E+00 1 8.472136011E+00 -2.618034015E+00 0 -1.618033988E+00 -1 8.472136073E+00 -2.618034037E+00 -1 0 1.618034000E+00 8.472136082E+00 -2.618034044E+00 -1 0 -1.618033997E+00 8.472135976E+00 -2.618034005E+00 -1.618033977E+00 1 0 8.472136051E+00 -2.618034034E+00 -1.618033992E+00 -1 0 2.618033989E+00 -1 0 0 0 end maximize 0 1 2.1 3.1 4.5 cddlib-0.94j/examples-ine/samplelp4.ine0000644000175000017500000001436513270061061014754 00000000000000* file name: lpmintest.ine H-representation begin 120 5 real 2.618033989E+00 1 0 0 0 8.472135943E+00 2.618033984E+00 1.618033988E+00 -1 0 8.472135943E+00 2.618033984E+00 1.618033988E+00 1 0 8.472135945E+00 2.618033984E+00 1 0 1.618033990E+00 8.472135945E+00 2.618033984E+00 1 0 -1.618033990E+00 8.472135946E+00 2.618033985E+00 0 1.618033990E+00 1 8.472135946E+00 2.618033985E+00 0 1.618033990E+00 -1 8.472135946E+00 2.618033985E+00 0 -1.618033990E+00 1 8.472135946E+00 2.618033985E+00 0 -1.618033990E+00 -1 8.472135960E+00 2.618033990E+00 -1 0 1.618033991E+00 8.472135954E+00 2.618033988E+00 -1 0 -1.618033990E+00 8.472135941E+00 2.618033984E+00 -1.618033987E+00 1 0 8.472135946E+00 2.618033984E+00 -1.618033992E+00 -1 0 8.472135966E+00 1.618033989E+00 2.618033995E+00 0 1 8.472135966E+00 1.618033989E+00 2.618033995E+00 0 -1 5.236067982E+00 1 1 1 1 5.236067982E+00 1 1 1 -1 5.236067980E+00 1 1 -1 1 5.236067980E+00 1 1 -1 -1 8.472135941E+00 1.618033989E+00 1 2.618033982E+00 0 8.472135936E+00 1.618033985E+00 1 -2.618033983E+00 0 8.472135965E+00 1.618033992E+00 0 1 2.618033991E+00 8.472135965E+00 1.618033992E+00 0 1 -2.618033991E+00 8.472135967E+00 1.618033992E+00 0 -1 2.618033993E+00 8.472135967E+00 1.618033992E+00 0 -1 -2.618033993E+00 8.472135996E+00 1.618034002E+00 -1 2.618033998E+00 0 8.472135985E+00 1.618033997E+00 -1 -2.618033998E+00 0 5.236067982E+00 1 -1 1 1 5.236067987E+00 1 -1 1 -1 5.236067983E+00 1 -1 -1 1 5.236067984E+00 1 -1 -1 -1 8.472135981E+00 1.618033999E+00 -2.618033991E+00 0 1 8.472135972E+00 1.618033998E+00 -2.618033988E+00 0 -1 8.472135864E+00 1 2.618033957E+00 1.618033969E+00 0 8.472135874E+00 1 2.618033960E+00 -1.618033969E+00 0 8.472135841E+00 1 1.618033964E+00 0 2.618033948E+00 8.472135864E+00 1 1.618033970E+00 0 -2.618033956E+00 8.472135865E+00 1 0 2.618033957E+00 1.618033968E+00 8.472135880E+00 1 0 2.618033963E+00 -1.618033971E+00 8.472135921E+00 1 0 -2.618033977E+00 1.618033982E+00 8.472135936E+00 1 0 -2.618033982E+00 -1.618033984E+00 8.472135950E+00 1 -1.618033984E+00 0 2.618033987E+00 8.472135975E+00 1 -1.618033991E+00 0 -2.618033996E+00 8.472135940E+00 1 -2.618033980E+00 1.618033987E+00 0 8.472135918E+00 1 -2.618033977E+00 -1.618033979E+00 0 2.618033992E+00 0 1 0 0 8.472135970E+00 0 2.618033994E+00 1 1.618033987E+00 8.472135966E+00 0 2.618033993E+00 1 -1.618033986E+00 8.472135969E+00 0 2.618033993E+00 -1 1.618033989E+00 8.472135965E+00 0 2.618033993E+00 -1 -1.618033988E+00 8.472135978E+00 0 1.618033994E+00 2.618033994E+00 1 8.472136017E+00 0 1.618034002E+00 2.618034006E+00 -1 8.472135962E+00 0 1.618033993E+00 -2.618033988E+00 1 8.472135995E+00 0 1.618033999E+00 -2.618033998E+00 -1 8.472135946E+00 0 1 1.618033984E+00 2.618033986E+00 8.472135944E+00 0 1 1.618033985E+00 -2.618033986E+00 8.472135922E+00 0 1 -1.618033980E+00 2.618033979E+00 2.618033990E+00 0 0 0 1 8.472135919E+00 0 1 -1.618033980E+00 -2.618033979E+00 2.618033989E+00 0 0 0 -1 2.618033988E+00 0 0 1 0 2.618033987E+00 0 0 -1 0 8.472135960E+00 0 -1 1.618033993E+00 2.618033991E+00 8.472135908E+00 0 -1.618033977E+00 2.618033974E+00 1 8.472135958E+00 0 -1 1.618033994E+00 -2.618033991E+00 8.472135901E+00 0 -1.618033978E+00 2.618033974E+00 -1 8.472135954E+00 0 -1 -1.618033990E+00 2.618033990E+00 8.472135908E+00 0 -1.618033976E+00 -2.618033974E+00 1 8.472135952E+00 0 -1 -1.618033991E+00 -2.618033990E+00 8.472135907E+00 0 -1.618033978E+00 -2.618033975E+00 -1 8.472135946E+00 0 -2.618033995E+00 1 1.618033991E+00 8.472135953E+00 0 -2.618033995E+00 -1 1.618033994E+00 8.472135953E+00 0 -2.618033998E+00 1 -1.618033992E+00 8.472135955E+00 0 -2.618033996E+00 -1 -1.618033994E+00 2.618033981E+00 0 -1 0 0 8.472135799E+00 -1 2.618033936E+00 1.618033957E+00 0 8.472135806E+00 -1 2.618033939E+00 -1.618033956E+00 0 8.472135741E+00 -1 1.618033945E+00 0 2.618033918E+00 8.472135889E+00 -1.618033990E+00 2.618033960E+00 0 1 8.472135767E+00 -1 1.618033951E+00 0 -2.618033925E+00 8.472135878E+00 -1.618033996E+00 2.618033953E+00 0 -1 8.472135831E+00 -1 0 2.618033947E+00 1.618033962E+00 5.236068004E+00 -1 1 1 1 8.472135830E+00 -1 0 2.618033948E+00 -1.618033961E+00 5.236067998E+00 -1 1 1 -1 8.472135931E+00 -1 0 -2.618033980E+00 1.618033984E+00 5.236067998E+00 -1 1 -1 1 8.472135930E+00 -1 0 -2.618033980E+00 -1.618033982E+00 5.236067992E+00 -1 1 -1 -1 8.472135952E+00 -1.618033993E+00 1 2.618033986E+00 0 8.472135960E+00 -1.618033995E+00 1 -2.618033988E+00 0 8.472135973E+00 -1 -1.618033989E+00 0 2.618033995E+00 8.472135979E+00 -1.618033991E+00 0 1 2.618033997E+00 8.472135996E+00 -1 -1.618033995E+00 0 -2.618034002E+00 8.472135951E+00 -1.618033985E+00 0 1 -2.618033988E+00 8.472135999E+00 -1.618033998E+00 0 -1 2.618034003E+00 8.472135970E+00 -1.618033992E+00 0 -1 -2.618033994E+00 8.472135949E+00 -1 -2.618033984E+00 1.618033989E+00 0 8.472135976E+00 -1.618033990E+00 -1 2.618033998E+00 0 8.472135886E+00 -1 -2.618033968E+00 -1.618033973E+00 0 8.472136008E+00 -1.618034002E+00 -1 -2.618034009E+00 0 5.236068025E+00 -1 -1 1 1 5.236068045E+00 -1 -1 1 -1 5.236067992E+00 -1 -1 -1 1 5.236067996E+00 -1 -1 -1 -1 8.472135733E+00 -1.618033890E+00 -2.618033931E+00 0 1 8.472135716E+00 -1.618033884E+00 -2.618033926E+00 0 -1 8.472135892E+00 -2.618033958E+00 1.618033988E+00 1 0 8.472135949E+00 -2.618033975E+00 1.618033999E+00 -1 0 8.472135850E+00 -2.618033938E+00 1 0 1.618033982E+00 8.472135860E+00 -2.618033944E+00 1 0 -1.618033981E+00 8.472135925E+00 -2.618033969E+00 0 1.618033991E+00 1 8.472135937E+00 -2.618033972E+00 0 1.618033995E+00 -1 8.472135998E+00 -2.618034011E+00 0 -1.618033985E+00 1 8.472136011E+00 -2.618034015E+00 0 -1.618033988E+00 -1 8.472136073E+00 -2.618034037E+00 -1 0 1.618034000E+00 8.472136082E+00 -2.618034044E+00 -1 0 -1.618033997E+00 8.472135976E+00 -2.618034005E+00 -1.618033977E+00 1 0 8.472136051E+00 -2.618034034E+00 -1.618033992E+00 -1 0 2.618033989E+00 -1 0 0 0 end minimize 0 1 1 1 1 cddlib-0.94j/examples-ine/samplelp.ine0000644000175000017500000000207013270061061014656 00000000000000* Rational LP data H-representation begin 20 5 rational 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 3008 20980 -97775 -101225 0 3985 25643 -135871 -130580 0 4324 26978 -133655 -168473 0 3534 25361 -46243 -100407 0 8836 40796 -176661 -215616 0 5376 37562 -182576 -217615 0 4982 33088 -98880 -167278 0 4775 39122 -136701 -193393 0 8046 42958 -225138 -256575 0 8554 48955 -257370 -312877 0 6147 45514 -165274 -227099 0 8366 55140 -203989 -321623 0 13479 68037 -174270 -341743 0 21808 78302 -322990 -487539 1 -8554/10000 -48955/10000 0 0 1 0 0 -257370/10000 -312877/10000 end maximize 0 1 1/2 1/3 1/4 cddlib-0.94j/examples-ine3d/0000755000175000017500000000000013312731233012656 500000000000000cddlib-0.94j/examples-ine3d/cube3.ine0000644000175000017500000000024613270061057014301 00000000000000filename: cube3.ine Hypercube of dimension 3 H-representation begin 6 4 integer 1 1 0 0 1 0 1 0 1 0 0 1 1 -1 0 0 1 0 -1 0 1 0 0 -1 end cddlib-0.94j/examples-ine3d/cubocta.ine0000644000175000017500000000043013270061057014713 00000000000000filename: cubocta.ine Cuboctahedron H-representation begin 14 4 integer 1 1 0 0 1 0 1 0 1 0 0 1 1 -1 0 0 1 0 -1 0 1 0 0 -1 2 1 1 1 2 -1 1 1 2 1 -1 1 2 1 1 -1 2 -1 -1 1 2 1 -1 -1 2 -1 1 -1 2 -1 -1 -1 end cddlib-0.94j/examples-ine3d/dodeca.ine0000644000175000017500000000074213270061057014520 00000000000000filename: dodeca.ine dodecahedron inequalities H-representation begin 12 4 real 1 0 -0.61803398874989485 -1. 1 -1. 0 -0.61803398874989485 1 -0.61803398874989485 -1. 0 1 0 0.61803398874989485 1. 1 1. 0 0.61803398874989485 1 0.61803398874989485 1. 0 1 0 0.61803398874989485 -1. 1 -1. 0 0.61803398874989485 1 0.61803398874989485 -1. 0 1 0 -0.61803398874989485 1. 1 1. 0 -0.61803398874989485 1 -0.61803398874989485 1. 0 end cddlib-0.94j/examples-ine3d/grcubocta.ine0000644000175000017500000000072213270061057015250 00000000000000filename: grcubocta.ine Great rhombicuboctahedron H-representation begin 26 4 integer 1 1 0 0 1 0 1 0 1 0 0 1 1 -1 0 0 1 0 -1 0 1 0 0 -1 2 1 1 1 2 -1 1 1 2 1 -1 1 2 1 1 -1 2 -1 -1 1 2 1 -1 -1 2 -1 1 -1 2 -1 -1 -1 5 3 3 0 5 0 3 3 5 3 0 3 5 -3 3 0 5 0 -3 3 5 3 0 -3 5 3 -3 0 5 0 3 -3 5 -3 0 3 5 -3 -3 0 5 0 -3 -3 5 -3 0 -3 end cddlib-0.94j/examples-ine3d/hexocta.ine0000644000175000017500000000130513270061057014730 00000000000000filename: hexocta.ine Hexakis octahedron H-representation begin 48 4 integer 3 -3 1 -2 3 -2 -1 -3 3 -2 1 -3 3 -3 -1 -2 3 -2 3 -1 3 -2 3 1 3 -3 2 -1 3 -3 2 1 3 1 -3 2 3 1 -2 3 3 -1 -3 2 3 -1 -2 3 3 1 2 3 3 1 3 2 3 -1 2 3 3 -1 3 2 3 3 1 -2 3 2 -1 -3 3 3 -1 -2 3 2 1 -3 3 2 3 -1 3 3 2 -1 3 2 3 1 3 3 2 1 3 2 1 3 3 3 -1 2 3 2 -1 3 3 3 1 2 3 2 -3 1 3 2 -3 -1 3 3 -2 1 3 3 -2 -1 3 -1 3 -2 3 -1 2 -3 3 1 3 -2 3 1 2 -3 3 -1 -2 -3 3 -1 -3 -2 3 1 -2 -3 3 1 -3 -2 3 -3 -1 2 3 -2 1 3 3 -2 -1 3 3 -3 1 2 3 -2 -3 1 3 -2 -3 -1 3 -3 -2 1 3 -3 -2 -1 end cddlib-0.94j/examples-ine3d/icododeca.ine0000644000175000017500000000320413270061057015207 00000000000000Icosidodecahedron % rational numbers appearing here are % -3-5^(1/2), -1-5^(1/2) and their negatives. H-representation begin 32 4 real 1 -2. -5.2360679775 0. 1 0. -2. -5.2360679775 1 0. -5.2360679775 -3.2360679775 1 0. -5.2360679775 3.2360679775 1 0. -2. 5.2360679775 1 2. -5.2360679775 0. 1 -5.2360679775 0. -2. 1 -5.2360679775 -3.2360679775 0. 1 -5.2360679775 3.2360679775 0. 1 -5.2360679775 0. 2. 1 -3.2360679775 0. -5.2360679775 1 -3.2360679775 -3.2360679775 -3.2360679775 1 -3.2360679775 3.2360679775 -3.2360679775 1 -3.2360679775 -3.2360679775 3.2360679775 1 -3.2360679775 3.2360679775 3.2360679775 1 -3.2360679775 0. 5.2360679775 1 3.2360679775 0. -5.2360679775 1 3.2360679775 -3.2360679775 -3.2360679775 1 3.2360679775 3.2360679775 -3.2360679775 1 3.2360679775 -3.2360679775 3.2360679775 1 3.2360679775 3.2360679775 3.2360679775 1 3.2360679775 0. 5.2360679775 1 5.2360679775 0. -2. 1 5.2360679775 -3.2360679775 0. 1 5.2360679775 3.2360679775 0. 1 5.2360679775 0. 2. 1 -2. 5.2360679775 0. 1 0. 2. -5.2360679775 1 0. 5.2360679775 -3.2360679775 1 0. 5.2360679775 3.2360679775 1 0. 2. 5.2360679775 1 2. 5.2360679775 0. end cddlib-0.94j/examples-ine3d/rcubocta.ine0000644000175000017500000000071313270061057015101 00000000000000filename: rcubocta.ine Rhombicuboctahedron H-representation begin 26 4 integer 1 1 0 0 1 0 1 0 1 0 0 1 1 -1 0 0 1 0 -1 0 1 0 0 -1 2 1 1 1 2 -1 1 1 2 1 -1 1 2 1 1 -1 2 -1 -1 1 2 1 -1 -1 2 -1 1 -1 2 -1 -1 -1 3 2 2 0 3 0 2 2 3 2 0 2 3 -2 2 0 3 0 -2 2 3 2 0 -2 3 2 -2 0 3 0 2 -2 3 -2 0 2 3 -2 -2 0 3 0 -2 -2 3 -2 0 -2 end cddlib-0.94j/examples-ine3d/rhomtria.ine0000644000175000017500000000265113270061057015127 00000000000000Rhombic Triacontahedron H-representation begin 30 4 real .1 -1.54508497e-01 5.90169944e-02 -9.54915028e-02 .1 -9.54915028e-02 1.54508497e-01 -5.90169944e-02 .1 -9.54915028e-02 1.54508497e-01 5.90169944e-02 .1 -5.90169944e-02 -9.54915028e-02 1.54508497e-01 .1 0 0 1.90983006e-01 .1 -5.90169944e-02 9.54915028e-02 1.54508497e-01 .1 0 1.90983006e-01 0 .1 9.54915028e-02 -1.54508497e-01 5.90169944e-02 .1 5.90169944e-02 -9.54915028e-02 1.54508497e-01 .1 5.90169944e-02 9.54915028e-02 -1.54508497e-01 .1 9.54915028e-02 1.54508497e-01 -5.90169944e-02 .1 1.54508497e-01 -5.90169944e-02 -9.54915028e-02 .1 1.54508497e-01 5.90169944e-02 -9.54915028e-02 .1 1.90983006e-01 0 0 .1 1.54508497e-01 5.90169944e-02 9.54915028e-02 .1 1.54508497e-01 -5.90169944e-02 9.54915028e-02 .1 9.54915028e-02 1.54508497e-01 5.90169944e-02 .1 5.90169944e-02 9.54915028e-02 1.54508497e-01 .1 5.90169944e-02 -9.54915028e-02 -1.54508497e-01 .1 9.54915028e-02 -1.54508497e-01 -5.90169944e-02 .1 0 -1.90983006e-01 0 .1 -5.90169944e-02 9.54915028e-02 -1.54508497e-01 .1 0 0 -1.90983006e-01 .1 -5.90169944e-02 -9.54915028e-02 -1.54508497e-01 .1 -1.54508497e-01 5.90169944e-02 9.54915028e-02 .1 -1.54508497e-01 -5.90169944e-02 9.54915028e-02 .1 -9.54915028e-02 -1.54508497e-01 -5.90169944e-02 .1 -9.54915028e-02 -1.54508497e-01 5.90169944e-02 .1 -1.54508497e-01 -5.90169944e-02 -9.54915028e-02 .1 -1.90983006e-01 0 0 end cddlib-0.94j/m4/0000755000175000017500000000000013312731233010360 500000000000000cddlib-0.94j/m4/libtool.m40000644000175000017500000112707613300566262012231 00000000000000# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996-2001, 2003-2017 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. m4_define([_LT_COPYING], [dnl # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . ]) # serial 58 LT_INIT # LT_PREREQ(VERSION) # ------------------ # Complain and exit if this libtool version is less that VERSION. m4_defun([LT_PREREQ], [m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, [m4_default([$3], [m4_fatal([Libtool version $1 or higher is required], 63)])], [$2])]) # _LT_CHECK_BUILDDIR # ------------------ # Complain if the absolute build directory name contains unusual characters m4_defun([_LT_CHECK_BUILDDIR], [case `pwd` in *\ * | *\ *) AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; esac ]) # LT_INIT([OPTIONS]) # ------------------ AC_DEFUN([LT_INIT], [AC_PREREQ([2.62])dnl We use AC_PATH_PROGS_FEATURE_CHECK AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl AC_BEFORE([$0], [LT_LANG])dnl AC_BEFORE([$0], [LT_OUTPUT])dnl AC_BEFORE([$0], [LTDL_INIT])dnl m4_require([_LT_CHECK_BUILDDIR])dnl dnl Autoconf doesn't catch unexpanded LT_ macros by default: m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 dnl unless we require an AC_DEFUNed macro: AC_REQUIRE([LTOPTIONS_VERSION])dnl AC_REQUIRE([LTSUGAR_VERSION])dnl AC_REQUIRE([LTVERSION_VERSION])dnl AC_REQUIRE([LTOBSOLETE_VERSION])dnl m4_require([_LT_PROG_LTMAIN])dnl _LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' AC_SUBST(LIBTOOL)dnl _LT_SETUP # Only expand once: m4_define([LT_INIT]) ])# LT_INIT # Old names: AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PROG_LIBTOOL], []) dnl AC_DEFUN([AM_PROG_LIBTOOL], []) # _LT_PREPARE_CC_BASENAME # ----------------------- m4_defun([_LT_PREPARE_CC_BASENAME], [ # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in @S|@*""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } ])# _LT_PREPARE_CC_BASENAME # _LT_CC_BASENAME(CC) # ------------------- # It would be clearer to call AC_REQUIREs from _LT_PREPARE_CC_BASENAME, # but that macro is also expanded into generated libtool script, which # arranges for $SED and $ECHO to be set by different means. m4_defun([_LT_CC_BASENAME], [m4_require([_LT_PREPARE_CC_BASENAME])dnl AC_REQUIRE([_LT_DECL_SED])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl func_cc_basename $1 cc_basename=$func_cc_basename_result ]) # _LT_FILEUTILS_DEFAULTS # ---------------------- # It is okay to use these file commands and assume they have been set # sensibly after 'm4_require([_LT_FILEUTILS_DEFAULTS])'. m4_defun([_LT_FILEUTILS_DEFAULTS], [: ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} ])# _LT_FILEUTILS_DEFAULTS # _LT_SETUP # --------- m4_defun([_LT_SETUP], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl _LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl dnl _LT_DECL([], [host_alias], [0], [The host system])dnl _LT_DECL([], [host], [0])dnl _LT_DECL([], [host_os], [0])dnl dnl _LT_DECL([], [build_alias], [0], [The build system])dnl _LT_DECL([], [build], [0])dnl _LT_DECL([], [build_os], [0])dnl dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl dnl AC_REQUIRE([AC_PROG_LN_S])dnl test -z "$LN_S" && LN_S="ln -s" _LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl dnl AC_REQUIRE([LT_CMD_MAX_LEN])dnl _LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl _LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl m4_require([_LT_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_WITH_SYSROOT])dnl m4_require([_LT_CMD_TRUNCATE])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi ]) if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi _LT_CHECK_OBJDIR m4_require([_LT_TAG_COMPILER])dnl case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o _LT_CC_BASENAME([$compiler]) # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then _LT_PATH_MAGIC fi ;; esac # Use C for the default configuration in the libtool script LT_SUPPORTED_TAG([CC]) _LT_LANG_C_CONFIG _LT_LANG_DEFAULT_CONFIG _LT_CONFIG_COMMANDS ])# _LT_SETUP # _LT_PREPARE_SED_QUOTE_VARS # -------------------------- # Define a few sed substitution that help us do robust quoting. m4_defun([_LT_PREPARE_SED_QUOTE_VARS], [# Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\([["`\\]]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ]) # _LT_PROG_LTMAIN # --------------- # Note that this code is called both from 'configure', and 'config.status' # now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, # 'config.status' has no value for ac_aux_dir unless we are using Automake, # so we pass a copy along to make sure it has a sensible value anyway. m4_defun([_LT_PROG_LTMAIN], [m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl _LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) ltmain=$ac_aux_dir/ltmain.sh ])# _LT_PROG_LTMAIN ## ------------------------------------- ## ## Accumulate code for creating libtool. ## ## ------------------------------------- ## # So that we can recreate a full libtool script including additional # tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS # in macros and then make a single call at the end using the 'libtool' # label. # _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) # ---------------------------------------- # Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL_INIT], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_INIT], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_INIT]) # _LT_CONFIG_LIBTOOL([COMMANDS]) # ------------------------------ # Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. m4_define([_LT_CONFIG_LIBTOOL], [m4_ifval([$1], [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], [$1 ])])]) # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) # _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) # ----------------------------------------------------- m4_defun([_LT_CONFIG_SAVE_COMMANDS], [_LT_CONFIG_LIBTOOL([$1]) _LT_CONFIG_LIBTOOL_INIT([$2]) ]) # _LT_FORMAT_COMMENT([COMMENT]) # ----------------------------- # Add leading comment marks to the start of each line, and a trailing # full-stop to the whole comment if one is not present already. m4_define([_LT_FORMAT_COMMENT], [m4_ifval([$1], [ m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) )]) ## ------------------------ ## ## FIXME: Eliminate VARNAME ## ## ------------------------ ## # _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) # ------------------------------------------------------------------- # CONFIGNAME is the name given to the value in the libtool script. # VARNAME is the (base) name used in the configure script. # VALUE may be 0, 1 or 2 for a computed quote escaped value based on # VARNAME. Any other value will be used directly. m4_define([_LT_DECL], [lt_if_append_uniq([lt_decl_varnames], [$2], [, ], [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], [m4_ifval([$1], [$1], [$2])]) lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) m4_ifval([$4], [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) lt_dict_add_subkey([lt_decl_dict], [$2], [tagged?], [m4_ifval([$5], [yes], [no])])]) ]) # _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) # -------------------------------------------------------- m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) # lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_tag_varnames], [_lt_decl_filter([tagged?], [yes], $@)]) # _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) # --------------------------------------------------------- m4_define([_lt_decl_filter], [m4_case([$#], [0], [m4_fatal([$0: too few arguments: $#])], [1], [m4_fatal([$0: too few arguments: $#: $1])], [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], [lt_dict_filter([lt_decl_dict], $@)])[]dnl ]) # lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) # -------------------------------------------------- m4_define([lt_decl_quote_varnames], [_lt_decl_filter([value], [1], $@)]) # lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_dquote_varnames], [_lt_decl_filter([value], [2], $@)]) # lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) # --------------------------------------------------- m4_define([lt_decl_varnames_tagged], [m4_assert([$# <= 2])dnl _$0(m4_quote(m4_default([$1], [[, ]])), m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) m4_define([_lt_decl_varnames_tagged], [m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) # lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) # ------------------------------------------------ m4_define([lt_decl_all_varnames], [_$0(m4_quote(m4_default([$1], [[, ]])), m4_if([$2], [], m4_quote(lt_decl_varnames), m4_quote(m4_shift($@))))[]dnl ]) m4_define([_lt_decl_all_varnames], [lt_join($@, lt_decl_varnames_tagged([$1], lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl ]) # _LT_CONFIG_STATUS_DECLARE([VARNAME]) # ------------------------------------ # Quote a variable value, and forward it to 'config.status' so that its # declaration there will have the same value as in 'configure'. VARNAME # must have a single quote delimited value for this to work. m4_define([_LT_CONFIG_STATUS_DECLARE], [$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) # _LT_CONFIG_STATUS_DECLARATIONS # ------------------------------ # We delimit libtool config variables with single quotes, so when # we write them to config.status, we have to be sure to quote all # embedded single quotes properly. In configure, this macro expands # each variable declared with _LT_DECL (and _LT_TAGDECL) into: # # ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], [m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAGS # ---------------- # Output comment and list of tags supported by the script m4_defun([_LT_LIBTOOL_TAGS], [_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl available_tags='_LT_TAGS'dnl ]) # _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) # ----------------------------------- # Extract the dictionary values for VARNAME (optionally with TAG) and # expand to a commented shell variable setting: # # # Some comment about what VAR is for. # visible_name=$lt_internal_name m4_define([_LT_LIBTOOL_DECLARE], [_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [description])))[]dnl m4_pushdef([_libtool_name], m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), [0], [_libtool_name=[$]$1], [1], [_libtool_name=$lt_[]$1], [2], [_libtool_name=$lt_[]$1], [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl ]) # _LT_LIBTOOL_CONFIG_VARS # ----------------------- # Produce commented declarations of non-tagged libtool config variables # suitable for insertion in the LIBTOOL CONFIG section of the 'libtool' # script. Tagged libtool config variables (even for the LIBTOOL CONFIG # section) are produced by _LT_LIBTOOL_TAG_VARS. m4_defun([_LT_LIBTOOL_CONFIG_VARS], [m4_foreach([_lt_var], m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) # _LT_LIBTOOL_TAG_VARS(TAG) # ------------------------- m4_define([_LT_LIBTOOL_TAG_VARS], [m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) # _LT_TAGVAR(VARNAME, [TAGNAME]) # ------------------------------ m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) # _LT_CONFIG_COMMANDS # ------------------- # Send accumulated output to $CONFIG_STATUS. Thanks to the lists of # variables for single and double quote escaping we saved from calls # to _LT_DECL, we can put quote escaped variables declarations # into 'config.status', and then the shell code to quote escape them in # for loops in 'config.status'. Finally, any additional code accumulated # from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. m4_defun([_LT_CONFIG_COMMANDS], [AC_PROVIDE_IFELSE([LT_OUTPUT], dnl If the libtool generation code has been placed in $CONFIG_LT, dnl instead of duplicating it all over again into config.status, dnl then we will have config.status run $CONFIG_LT later, so it dnl needs to know what name is stored there: [AC_CONFIG_COMMANDS([libtool], [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], dnl If the libtool generation code is destined for config.status, dnl expand the accumulated commands and init code now: [AC_CONFIG_COMMANDS([libtool], [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) ])#_LT_CONFIG_COMMANDS # Initialize. m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], [ # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' _LT_CONFIG_STATUS_DECLARATIONS LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$[]1 _LTECHO_EOF' } # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_dquote_varnames); do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done _LT_OUTPUT_LIBTOOL_INIT ]) # _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) # ------------------------------------ # Generate a child script FILE with all initialization necessary to # reuse the environment learned by the parent script, and make the # file executable. If COMMENT is supplied, it is inserted after the # '#!' sequence but before initialization text begins. After this # macro, additional text can be appended to FILE to form the body of # the child script. The macro ends with non-zero status if the # file could not be fully written (such as if the disk is full). m4_ifdef([AS_INIT_GENERATED], [m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], [m4_defun([_LT_GENERATED_FILE_INIT], [m4_require([AS_PREPARE])]dnl [m4_pushdef([AS_MESSAGE_LOG_FD])]dnl [lt_write_fail=0 cat >$1 <<_ASEOF || lt_write_fail=1 #! $SHELL # Generated by $as_me. $2 SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$1 <<\_ASEOF || lt_write_fail=1 AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 _ASEOF test 0 = "$lt_write_fail" && chmod +x $1[]dnl m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT # LT_OUTPUT # --------- # This macro allows early generation of the libtool script (before # AC_OUTPUT is called), incase it is used in configure for compilation # tests. AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) _LT_GENERATED_FILE_INIT(["$CONFIG_LT"], [# Run this file to recreate a libtool stub with the current configuration.]) cat >>"$CONFIG_LT" <<\_LTEOF lt_cl_silent=false exec AS_MESSAGE_LOG_FD>>config.log { echo AS_BOX([Running $as_me.]) } >&AS_MESSAGE_LOG_FD lt_cl_help="\ '$as_me' creates a local libtool stub from the current configuration, for use in further configure time tests before the real libtool is generated. Usage: $[0] [[OPTIONS]] -h, --help print this help, then exit -V, --version print version number, then exit -q, --quiet do not print progress messages -d, --debug don't remove temporary files Report bugs to ." lt_cl_version="\ m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) configured by $[0], generated by m4_PACKAGE_STRING. Copyright (C) 2011 Free Software Foundation, Inc. This config.lt script is free software; the Free Software Foundation gives unlimited permision to copy, distribute and modify it." while test 0 != $[#] do case $[1] in --version | --v* | -V ) echo "$lt_cl_version"; exit 0 ;; --help | --h* | -h ) echo "$lt_cl_help"; exit 0 ;; --debug | --d* | -d ) debug=: ;; --quiet | --q* | --silent | --s* | -q ) lt_cl_silent=: ;; -*) AC_MSG_ERROR([unrecognized option: $[1] Try '$[0] --help' for more information.]) ;; *) AC_MSG_ERROR([unrecognized argument: $[1] Try '$[0] --help' for more information.]) ;; esac shift done if $lt_cl_silent; then exec AS_MESSAGE_FD>/dev/null fi _LTEOF cat >>"$CONFIG_LT" <<_LTEOF _LT_OUTPUT_LIBTOOL_COMMANDS_INIT _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AC_MSG_NOTICE([creating $ofile]) _LT_OUTPUT_LIBTOOL_COMMANDS AS_EXIT(0) _LTEOF chmod +x "$CONFIG_LT" # configure is writing to config.log, but config.lt does its own redirection, # appending to config.log, which fails on DOS, as config.log is still kept # open by configure. Here we exec the FD to /dev/null, effectively closing # config.log, so it can be properly (re)opened and appended to by config.lt. lt_cl_success=: test yes = "$silent" && lt_config_lt_args="$lt_config_lt_args --quiet" exec AS_MESSAGE_LOG_FD>/dev/null $SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false exec AS_MESSAGE_LOG_FD>>config.log $lt_cl_success || AS_EXIT(1) ])# LT_OUTPUT # _LT_CONFIG(TAG) # --------------- # If TAG is the built-in tag, create an initial libtool script with a # default configuration from the untagged config vars. Otherwise add code # to config.status for appending the configuration named by TAG from the # matching tagged config vars. m4_defun([_LT_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_CONFIG_SAVE_COMMANDS([ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl m4_if(_LT_TAG, [C], [ # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 _LT_COPYING _LT_LIBTOOL_TAGS # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE _LT_PREPARE_MUNGE_PATH_LIST _LT_PREPARE_CC_BASENAME # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac _LT_PROG_LTMAIN # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ], [cat <<_LT_EOF >> "$ofile" dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded dnl in a comment (ie after a #). # ### BEGIN LIBTOOL TAG CONFIG: $1 _LT_LIBTOOL_TAG_VARS(_LT_TAG) # ### END LIBTOOL TAG CONFIG: $1 _LT_EOF ])dnl /m4_if ], [m4_if([$1], [], [ PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile'], []) ])dnl /_LT_CONFIG_SAVE_COMMANDS ])# _LT_CONFIG # LT_SUPPORTED_TAG(TAG) # --------------------- # Trace this macro to discover what tags are supported by the libtool # --tag option, using: # autoconf --trace 'LT_SUPPORTED_TAG:$1' AC_DEFUN([LT_SUPPORTED_TAG], []) # C support is built-in for now m4_define([_LT_LANG_C_enabled], []) m4_define([_LT_TAGS], []) # LT_LANG(LANG) # ------------- # Enable libtool support for the given language if not already enabled. AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [Go], [_LT_LANG(GO)], [Java], [_LT_LANG(GCJ)], [Fortran 77], [_LT_LANG(F77)], [Fortran], [_LT_LANG(FC)], [Windows Resource], [_LT_LANG(RC)], [m4_ifdef([_LT_LANG_]$1[_CONFIG], [_LT_LANG($1)], [m4_fatal([$0: unsupported language: "$1"])])])dnl ])# LT_LANG # _LT_LANG(LANGNAME) # ------------------ m4_defun([_LT_LANG], [m4_ifdef([_LT_LANG_]$1[_enabled], [], [LT_SUPPORTED_TAG([$1])dnl m4_append([_LT_TAGS], [$1 ])dnl m4_define([_LT_LANG_]$1[_enabled], [])dnl _LT_LANG_$1_CONFIG($1)])dnl ])# _LT_LANG m4_ifndef([AC_PROG_GO], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_GO. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_GO], [AC_LANG_PUSH(Go)dnl AC_ARG_VAR([GOC], [Go compiler command])dnl AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl _AC_ARG_VAR_LDFLAGS()dnl AC_CHECK_TOOL(GOC, gccgo) if test -z "$GOC"; then if test -n "$ac_tool_prefix"; then AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) fi fi if test -z "$GOC"; then AC_CHECK_PROG(GOC, gccgo, gccgo, false) fi ])#m4_defun ])#m4_ifndef # _LT_LANG_DEFAULT_CONFIG # ----------------------- m4_defun([_LT_LANG_DEFAULT_CONFIG], [AC_PROVIDE_IFELSE([AC_PROG_CXX], [LT_LANG(CXX)], [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) AC_PROVIDE_IFELSE([AC_PROG_F77], [LT_LANG(F77)], [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) AC_PROVIDE_IFELSE([AC_PROG_FC], [LT_LANG(FC)], [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal dnl pulling things in needlessly. AC_PROVIDE_IFELSE([AC_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], [LT_LANG(GCJ)], [AC_PROVIDE_IFELSE([LT_PROG_GCJ], [LT_LANG(GCJ)], [m4_ifdef([AC_PROG_GCJ], [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([A][M_PROG_GCJ], [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) m4_ifdef([LT_PROG_GCJ], [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) AC_PROVIDE_IFELSE([AC_PROG_GO], [LT_LANG(GO)], [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) AC_PROVIDE_IFELSE([LT_PROG_RC], [LT_LANG(RC)], [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) ])# _LT_LANG_DEFAULT_CONFIG # Obsolete macros: AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_CXX], []) dnl AC_DEFUN([AC_LIBTOOL_F77], []) dnl AC_DEFUN([AC_LIBTOOL_FC], []) dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) dnl AC_DEFUN([AC_LIBTOOL_RC], []) # _LT_TAG_COMPILER # ---------------- m4_defun([_LT_TAG_COMPILER], [AC_REQUIRE([AC_PROG_CC])dnl _LT_DECL([LTCC], [CC], [1], [A C compiler])dnl _LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl _LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl _LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC ])# _LT_TAG_COMPILER # _LT_COMPILER_BOILERPLATE # ------------------------ # Check for compiler boilerplate output or warnings with # the simple compiler test code. m4_defun([_LT_COMPILER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ])# _LT_COMPILER_BOILERPLATE # _LT_LINKER_BOILERPLATE # ---------------------- # Check for linker boilerplate output or warnings with # the simple link test code. m4_defun([_LT_LINKER_BOILERPLATE], [m4_require([_LT_DECL_SED])dnl ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ])# _LT_LINKER_BOILERPLATE # _LT_REQUIRED_DARWIN_CHECKS # ------------------------- m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ case $host_os in rhapsody* | darwin*) AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) AC_CHECK_TOOL([LIPO], [lipo], [:]) AC_CHECK_TOOL([OTOOL], [otool], [:]) AC_CHECK_TOOL([OTOOL64], [otool64], [:]) _LT_DECL([], [DSYMUTIL], [1], [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) _LT_DECL([], [NMEDIT], [1], [Tool to change global to local symbols on Mac OS X]) _LT_DECL([], [LIPO], [1], [Tool to manipulate fat objects and archives on Mac OS X]) _LT_DECL([], [OTOOL], [1], [ldd/readelf like tool for Mach-O binaries on Mac OS X]) _LT_DECL([], [OTOOL64], [1], [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], [lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -rf libconftest.dylib* rm -f conftest.* fi]) AC_CACHE_CHECK([for -exported_symbols_list linker flag], [lt_cv_ld_exported_symbols_list], [lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [lt_cv_ld_exported_symbols_list=yes], [lt_cv_ld_exported_symbols_list=no]) LDFLAGS=$save_LDFLAGS ]) AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], [lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD echo "$AR $AR_FLAGS libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD $AR $AR_FLAGS libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&AS_MESSAGE_LOG_FD elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&AS_MESSAGE_LOG_FD fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM ]) case $host_os in rhapsody* | darwin1.[[012]]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[[012]][[,.]]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES([TAG]) # --------------------------------- # Checks for linker and compiler features on darwin m4_defun([_LT_DARWIN_LINKER_FEATURES], [ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported if test yes = "$lt_cv_ld_force_load"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) else _LT_TAGVAR(whole_archive_flag_spec, $1)='' fi _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" m4_if([$1], [CXX], [ if test yes != "$lt_cv_apple_cc_single_mod"; then _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dsymutil" _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \$lib-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$lib-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring$_lt_dar_export_syms$_lt_dsymutil" fi ],[]) else _LT_TAGVAR(ld_shlibs, $1)=no fi ]) # _LT_SYS_MODULE_PATH_AIX([TAGNAME]) # ---------------------------------- # Links a minimal program and checks the executable # for the system default hardcoded library path. In most cases, # this is /usr/lib:/lib, but when the MPI compilers are used # the location of the communication and MPI libs are included too. # If we don't find anything, use the default library path according # to the aix ld manual. # Store the results from the different compilers for each TAGNAME. # Allow to override them for all tags through lt_cv_aix_libpath. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ lt_aix_libpath_sed='[ /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }]' _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=/usr/lib:/lib fi ]) aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [m4_divert_text([M4SH-INIT], [$1 ])])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Find how we can fake an echo command that does not interpret backslash. # In particular, with Autoconf 2.60 or later we add some code to the start # of the generated configure script that will find a shell with a builtin # printf (that we can use as an echo command). m4_defun([_LT_PROG_ECHO_BACKSLASH], [ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO AC_MSG_CHECKING([how to print strings]) # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $[]1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } case $ECHO in printf*) AC_MSG_RESULT([printf]) ;; print*) AC_MSG_RESULT([print -r]) ;; *) AC_MSG_RESULT([cat]) ;; esac m4_ifdef([_AS_DETECT_SUGGESTED], [_AS_DETECT_SUGGESTED([ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test "X`printf %s $ECHO`" = "X$ECHO" \ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _LT_WITH_SYSROOT # ---------------- AC_DEFUN([_LT_WITH_SYSROOT], [AC_MSG_CHECKING([for sysroot]) AC_ARG_WITH([sysroot], [AS_HELP_STRING([--with-sysroot@<:@=DIR@:>@], [Search for dependent libraries within DIR (or the compiler's sysroot if not specified).])], [], [with_sysroot=no]) dnl lt_sysroot will always be passed unquoted. We quote it here dnl in case the user passed a directory name. lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) AC_MSG_RESULT([$with_sysroot]) AC_MSG_ERROR([The sysroot must be an absolute path.]) ;; esac AC_MSG_RESULT([${lt_sysroot:-no}]) _LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl [dependent libraries, and where our libraries should be installed.])]) # _LT_ENABLE_LOCK # --------------- m4_defun([_LT_ENABLE_LOCK], [AC_ARG_ENABLE([libtool-lock], [AS_HELP_STRING([--disable-libtool-lock], [avoid locking (might break parallel builds)])]) test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, [AC_LANG_PUSH(C) AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) AC_LANG_POP]) if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock ])# _LT_ENABLE_LOCK # _LT_PROG_AR # ----------- m4_defun([_LT_PROG_AR], [AC_CHECK_TOOLS(AR, [ar], false) : ${AR=ar} _LT_DECL([], [AR], [1], [The archiver]) # Use ARFLAGS variable as AR's operation code to sync the variable naming with # Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have # higher priority because thats what people were doing historically (setting # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS # variable obsoleted/removed. test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} lt_ar_flags=$AR_FLAGS _LT_DECL([], [lt_ar_flags], [0], [Flags to create an archive (by configure)]) # Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override # by AR_FLAGS because that was never working and AR_FLAGS is about to die. _LT_DECL([], [AR_FLAGS], [\@S|@{ARFLAGS-"\@S|@lt_ar_flags"}], [Flags to create an archive]) AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], [lt_cv_ar_at_file=no AC_COMPILE_IFELSE([AC_LANG_PROGRAM], [echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' AC_TRY_EVAL([lt_ar_try]) if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a AC_TRY_EVAL([lt_ar_try]) if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a ]) ]) if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi _LT_DECL([], [archiver_list_spec], [1], [How to feed a file listing to the archiver]) ])# _LT_PROG_AR # _LT_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [_LT_PROG_AR AC_CHECK_TOOL(STRIP, strip, :) test -z "$STRIP" && STRIP=: _LT_DECL([], [STRIP], [1], [A symbol stripping program]) AC_CHECK_TOOL(RANLIB, ranlib, :) test -z "$RANLIB" && RANLIB=: _LT_DECL([], [RANLIB], [1], [Commands used to install an old-style archive]) # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac _LT_DECL([], [old_postinstall_cmds], [2]) _LT_DECL([], [old_postuninstall_cmds], [2]) _LT_TAGDECL([], [old_archive_cmds], [2], [Commands used to build an old-style archive]) _LT_DECL([], [lock_old_archive_extraction], [0], [Whether to use a lock for old archive extraction]) ])# _LT_CMD_OLD_ARCHIVE # _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------------------- # Check whether the given compiler option works AC_DEFUN([_LT_COMPILER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$3" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi fi $RM conftest* ]) if test yes = "[$]$2"; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ])# _LT_COMPILER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) # _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, # [ACTION-SUCCESS], [ACTION-FAILURE]) # ---------------------------------------------------- # Check whether the given linker option works AC_DEFUN([_LT_LINKER_OPTION], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_SED])dnl AC_CACHE_CHECK([$1], [$2], [$2=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $3" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&AS_MESSAGE_LOG_FD $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then $2=yes fi else $2=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS ]) if test yes = "[$]$2"; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ])# _LT_LINKER_OPTION # Old name: AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) # LT_CMD_MAX_LEN #--------------- AC_DEFUN([LT_CMD_MAX_LEN], [AC_REQUIRE([AC_CANONICAL_HOST])dnl # find the maximum length of command line arguments AC_MSG_CHECKING([the maximum length of command line arguments]) AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac ]) if test -n "$lt_cv_sys_max_cmd_len"; then AC_MSG_RESULT($lt_cv_sys_max_cmd_len) else AC_MSG_RESULT(none) fi max_cmd_len=$lt_cv_sys_max_cmd_len _LT_DECL([], [max_cmd_len], [0], [What is the maximum length of a command?]) ])# LT_CMD_MAX_LEN # Old name: AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) # _LT_HEADER_DLFCN # ---------------- m4_defun([_LT_HEADER_DLFCN], [AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl ])# _LT_HEADER_DLFCN # _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, # ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) # ---------------------------------------------------------------- m4_defun([_LT_TRY_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes = "$cross_compiling"; then : [$4] else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF [#line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; }] _LT_EOF if AC_TRY_EVAL(ac_link) && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) $1 ;; x$lt_dlneed_uscore) $2 ;; x$lt_dlunknown|x*) $3 ;; esac else : # compilation failed $3 fi fi rm -fr conftest* ])# _LT_TRY_DLOPEN_SELF # LT_SYS_DLOPEN_SELF # ------------------ AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl],[ lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ]) ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) AC_CHECK_FUNC([shl_load], [lt_cv_dlopen=shl_load], [AC_CHECK_LIB([dld], [shl_load], [lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld], [AC_CHECK_FUNC([dlopen], [lt_cv_dlopen=dlopen], [AC_CHECK_LIB([dl], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl], [AC_CHECK_LIB([svld], [dlopen], [lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld], [AC_CHECK_LIB([dld], [dld_link], [lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld]) ]) ]) ]) ]) ]) ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" AC_CACHE_CHECK([whether a program can dlopen itself], lt_cv_dlopen_self, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) ]) if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" AC_CACHE_CHECK([whether a statically linked program can dlopen itself], lt_cv_dlopen_self_static, [dnl _LT_TRY_DLOPEN_SELF( lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) ]) fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi _LT_DECL([dlopen_support], [enable_dlopen], [0], [Whether dlopen is supported]) _LT_DECL([dlopen_self], [enable_dlopen_self], [0], [Whether dlopen of programs is supported]) _LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], [Whether dlopen of statically linked programs is supported]) ])# LT_SYS_DLOPEN_SELF # Old name: AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) # _LT_COMPILER_C_O([TAGNAME]) # --------------------------- # Check to see if options -c and -o are simultaneously supported by compiler. # This macro does not hard code the compiler like AC_PROG_CC_C_O. m4_defun([_LT_COMPILER_C_O], [m4_require([_LT_DECL_SED])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes fi fi chmod u+w . 2>&AS_MESSAGE_LOG_FD $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* ]) _LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], [Does compiler simultaneously support -c and -o options?]) ])# _LT_COMPILER_C_O # _LT_COMPILER_FILE_LOCKS([TAGNAME]) # ---------------------------------- # Check to see if we can do hard links to lock some files if needed m4_defun([_LT_COMPILER_FILE_LOCKS], [m4_require([_LT_ENABLE_LOCK])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl _LT_COMPILER_C_O([$1]) hard_links=nottested if test no = "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user AC_MSG_CHECKING([if we can lock with hard links]) hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no AC_MSG_RESULT([$hard_links]) if test no = "$hard_links"; then AC_MSG_WARN(['$CC' does not support '-c -o', so 'make -j' may be unsafe]) need_locks=warn fi else need_locks=no fi _LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) ])# _LT_COMPILER_FILE_LOCKS # _LT_CHECK_OBJDIR # ---------------- m4_defun([_LT_CHECK_OBJDIR], [AC_CACHE_CHECK([for objdir], [lt_cv_objdir], [rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null]) objdir=$lt_cv_objdir _LT_DECL([], [objdir], [0], [The name of the directory that contains temporary libtool files])dnl m4_pattern_allow([LT_OBJDIR])dnl AC_DEFINE_UNQUOTED([LT_OBJDIR], "$lt_cv_objdir/", [Define to the sub-directory where libtool stores uninstalled libraries.]) ])# _LT_CHECK_OBJDIR # _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) # -------------------------------------- # Check hardcoding attributes. m4_defun([_LT_LINKER_HARDCODE_LIBPATH], [AC_MSG_CHECKING([how to hardcode library paths into programs]) _LT_TAGVAR(hardcode_action, $1)= if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || test -n "$_LT_TAGVAR(runpath_var, $1)" || test yes = "$_LT_TAGVAR(hardcode_automatic, $1)"; then # We can hardcode non-existent directories. if test no != "$_LT_TAGVAR(hardcode_direct, $1)" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" && test no != "$_LT_TAGVAR(hardcode_minus_L, $1)"; then # Linking always hardcodes the temporary library directory. _LT_TAGVAR(hardcode_action, $1)=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. _LT_TAGVAR(hardcode_action, $1)=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. _LT_TAGVAR(hardcode_action, $1)=unsupported fi AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) if test relink = "$_LT_TAGVAR(hardcode_action, $1)" || test yes = "$_LT_TAGVAR(inherit_rpath, $1)"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi _LT_TAGDECL([], [hardcode_action], [0], [How to hardcode a shared library path into an executable]) ])# _LT_LINKER_HARDCODE_LIBPATH # _LT_CMD_STRIPLIB # ---------------- m4_defun([_LT_CMD_STRIPLIB], [m4_require([_LT_DECL_EGREP]) striplib= old_striplib= AC_MSG_CHECKING([whether stripping libraries is possible]) if test -z "$STRIP"; then AC_MSG_RESULT([no]) else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _LT_PREPARE_MUNGE_PATH_LIST # --------------------------- # Make sure func_munge_path_list() is defined correctly. m4_defun([_LT_PREPARE_MUNGE_PATH_LIST], [[# func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x@S|@2 in x) ;; *:) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'` \@S|@@S|@1\" ;; x:*) eval @S|@1=\"\@S|@@S|@1 `$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; *::*) eval @S|@1=\"\@S|@@S|@1\ `$ECHO @S|@2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval @S|@1=\"`$ECHO @S|@2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \@S|@@S|@1\" ;; *) eval @S|@1=\"`$ECHO @S|@2 | $SED 's/:/ /g'`\" ;; esac } ]])# _LT_PREPARE_PATH_LIST # _LT_SYS_DYNAMIC_LINKER([TAG]) # ----------------------------- # PORTME Fill in your ld.so characteristics m4_defun([_LT_SYS_DYNAMIC_LINKER], [AC_REQUIRE([AC_CANONICAL_HOST])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_OBJDUMP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CHECK_SHELL_FEATURES])dnl m4_require([_LT_PREPARE_MUNGE_PATH_LIST])dnl AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([[A-Za-z]]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[[lt_foo]]++; } if (lt_freq[[lt_foo]] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([[A-Za-z]]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi]) library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown AC_ARG_VAR([LT_SYS_LIBRARY_PATH], [User-defined run-time library search path.]) case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[[4-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[[01]] | aix4.[[01]].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a[(]lib.so.V[)]' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V[(]$shared_archive_member_spec.o[)], lib.a[(]lib.so.V[)]" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a[(]lib.so.V[)], lib.so.V[(]$shared_archive_member_spec.o[)]" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[[45]]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[[.]]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' m4_if([$1], [],[ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[[23]].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[[01]]* | freebsdelf3.[[01]]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[[3-9]]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], [lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], [lt_cv_shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir ]) shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac AC_MSG_RESULT([$dynamic_linker]) test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH _LT_DECL([], [variables_saved_for_relink], [1], [Variables whose values should be saved in libtool wrapper scripts and restored at link time]) _LT_DECL([], [need_lib_prefix], [0], [Do we need the "lib" prefix for modules?]) _LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) _LT_DECL([], [version_type], [0], [Library versioning type]) _LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) _LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) _LT_DECL([], [shlibpath_overrides_runpath], [0], [Is shlibpath searched before the hard-coded library search path?]) _LT_DECL([], [libname_spec], [1], [Format of library name prefix]) _LT_DECL([], [library_names_spec], [1], [[List of archive names. First name is the real one, the rest are links. The last name is the one that the linker finds with -lNAME]]) _LT_DECL([], [soname_spec], [1], [[The coded name of the library, if different from the real name]]) _LT_DECL([], [install_override_mode], [1], [Permission mode override for installation of shared libraries]) _LT_DECL([], [postinstall_cmds], [2], [Command to use after installation of a shared archive]) _LT_DECL([], [postuninstall_cmds], [2], [Command to use after uninstallation of a shared archive]) _LT_DECL([], [finish_cmds], [2], [Commands used to finish a libtool library installation in a directory]) _LT_DECL([], [finish_eval], [1], [[As "finish_cmds", except a single script fragment to be evaled but not shown]]) _LT_DECL([], [hardcode_into_libs], [0], [Whether we should hardcode library paths into libraries]) _LT_DECL([], [sys_lib_search_path_spec], [2], [Compile-time system search path for libraries]) _LT_DECL([sys_lib_dlsearch_path_spec], [configure_time_dlsearch_path], [2], [Detected run-time system search path for libraries]) _LT_DECL([], [configure_time_lt_sys_library_path], [2], [Explicit LT_SYS_LIBRARY_PATH set during ./configure time]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program that can recognize shared library AC_DEFUN([_LT_PATH_TOOL_PREFIX], [m4_require([_LT_DECL_EGREP])dnl AC_MSG_CHECKING([for $1]) AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, [case $MAGIC_CMD in [[\\/*] | ?:[\\/]*]) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR dnl $ac_dummy forces splitting on constant user-supplied paths. dnl POSIX.2 word splitting is done only on the output of word expansions, dnl not every word. This closes a longstanding sh security hole. ac_dummy="m4_if([$2], , $PATH, [$2])" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$1"; then lt_cv_path_MAGIC_CMD=$ac_dir/"$1" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac]) MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then AC_MSG_RESULT($MAGIC_CMD) else AC_MSG_RESULT(no) fi _LT_DECL([], [MAGIC_CMD], [0], [Used to examine libraries when file_magic_cmd begins with "file"])dnl ])# _LT_PATH_TOOL_PREFIX # Old name: AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) # _LT_PATH_MAGIC # -------------- # find a file program that can recognize a shared library m4_defun([_LT_PATH_MAGIC], [_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) else MAGIC_CMD=: fi fi ])# _LT_PATH_MAGIC # LT_PATH_LD # ---------- # find the pathname to the GNU or non-GNU linker AC_DEFUN([LT_PATH_LD], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PROG_ECHO_BACKSLASH])dnl AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test no = "$withval" || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. AC_MSG_CHECKING([for ld used by $CC]) case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [[\\/]]* | ?:[[\\/]]*) re_direlt='/[[^/]][[^/]]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then AC_MSG_CHECKING([for GNU ld]) else AC_MSG_CHECKING([for non-GNU ld]) fi AC_CACHE_VAL(lt_cv_path_LD, [if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &1 conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} AC_PATH_PROGS_FEATURE_CHECK([lt_DD], [dd], [if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi]) rm -f conftest.i conftest2.i conftest.out]) ])# _LT_PATH_DD # _LT_CMD_TRUNCATE # ---------------- # find command to truncate a binary pipe m4_defun([_LT_CMD_TRUNCATE], [m4_require([_LT_PATH_DD]) AC_CACHE_CHECK([how to truncate binary pipes], [lt_cv_truncate_bin], [printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q"]) _LT_DECL([lt_truncate_bin], [lt_cv_truncate_bin], [1], [Command to truncate a binary pipe]) ])# _LT_CMD_TRUNCATE # _LT_CHECK_MAGIC_METHOD # ---------------------- # how to check for library dependencies # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_MAGIC_METHOD], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) AC_CACHE_CHECK([how to recognize dependent libraries], lt_cv_deplibs_check_method, [lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[[4-9]]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[[45]]*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[[3-9]]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac ]) file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown _LT_DECL([], [deplibs_check_method], [1], [Method to check whether dependent libraries are shared objects]) _LT_DECL([], [file_magic_cmd], [1], [Command to use when deplibs_check_method = "file_magic"]) _LT_DECL([], [file_magic_glob], [1], [How to find potential files when deplibs_check_method = "file_magic"]) _LT_DECL([], [want_nocaseglob], [1], [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) ])# _LT_CHECK_MAGIC_METHOD # LT_PATH_NM # ---------- # find the pathname to a BSD- or MS-compatible name lister AC_DEFUN([LT_PATH_NM], [AC_REQUIRE([AC_PROG_CC])dnl AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, [if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi]) if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi AC_SUBST([DUMPBIN]) if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm AC_SUBST([NM]) _LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], [lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) cat conftest.out >&AS_MESSAGE_LOG_FD if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest*]) ])# LT_PATH_NM # Old names: AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_PROG_NM], []) dnl AC_DEFUN([AC_PROG_NM], []) # _LT_CHECK_SHAREDLIB_FROM_LINKLIB # -------------------------------- # how to determine the name of the shared library # associated with a specific link library. # -- PORTME fill in with the dynamic library characteristics m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], [m4_require([_LT_DECL_EGREP]) m4_require([_LT_DECL_OBJDUMP]) m4_require([_LT_DECL_DLLTOOL]) AC_CACHE_CHECK([how to associate runtime and link libraries], lt_cv_sharedlib_from_linklib_cmd, [lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac ]) sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO _LT_DECL([], [sharedlib_from_linklib_cmd], [1], [Command to associate shared and link libraries]) ])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB # _LT_PATH_MANIFEST_TOOL # ---------------------- # locate the manifest tool m4_defun([_LT_PATH_MANIFEST_TOOL], [AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], [lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&AS_MESSAGE_LOG_FD if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest*]) if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi _LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl ])# _LT_PATH_MANIFEST_TOOL # _LT_DLL_DEF_P([FILE]) # --------------------- # True iff FILE is a Windows DLL '.def' file. # Keep in sync with func_dll_def_p in the libtool script AC_DEFUN([_LT_DLL_DEF_P], [dnl test DEF = "`$SED -n dnl -e '\''s/^[[ ]]*//'\'' dnl Strip leading whitespace -e '\''/^\(;.*\)*$/d'\'' dnl Delete empty lines and comments -e '\''s/^\(EXPORTS\|LIBRARY\)\([[ ]].*\)*$/DEF/p'\'' dnl -e q dnl Only consider the first "real" line $1`" dnl ])# _LT_DLL_DEF_P # LT_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) # These system don't have libm, or don't need it ;; *-ncr-sysv4.3*) AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM=-lmw) AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") ;; *) AC_CHECK_LIB(m, cos, LIBM=-lm) ;; esac AC_SUBST([LIBM]) ])# LT_LIB_M # Old name: AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_CHECK_LIBM], []) # _LT_COMPILER_NO_RTTI([TAGNAME]) # ------------------------------- m4_defun([_LT_COMPILER_NO_RTTI], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= if test yes = "$GCC"; then case $cc_basename in nvcc*) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; *) _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; esac _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], lt_cv_prog_compiler_rtti_exceptions, [-fno-rtti -fno-exceptions], [], [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) fi _LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], [Compiler flag to turn off builtin functions]) ])# _LT_COMPILER_NO_RTTI # _LT_CMD_GLOBAL_SYMBOLS # ---------------------- m4_defun([_LT_CMD_GLOBAL_SYMBOLS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([LT_PATH_NM])dnl AC_REQUIRE([LT_PATH_LD])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_TAG_COMPILER])dnl # Check for command to grab the raw symbol name followed by C symbol from nm. AC_MSG_CHECKING([command to parse $NM output from $compiler object]) AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], [ # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[[BCDEGRST]]' # Regexp to match symbols that can be accessed directly from C. sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[[BCDT]]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[[ABCDGISTW]]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[[ABCDEGRST]]' fi ;; irix* | nonstopux*) symcode='[[BCDEGRST]]' ;; osf*) symcode='[[BCDEGQRST]]' ;; solaris*) symcode='[[BDRT]]' ;; sco3.2v5*) symcode='[[DT]]' ;; sysv4.2uw2*) symcode='[[DT]]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[[ABDT]]' ;; sysv4) symcode='[[DFNSTU]]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[[ABCDGIRSTW]]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK ['"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx]" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT@&t@_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT@&t@_DLSYM_CONST #else # define LT@&t@_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT@&t@_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" if AC_TRY_EVAL(ac_link) && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done ]) if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then AC_MSG_RESULT(failed) else AC_MSG_RESULT(ok) fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then nm_file_list_spec='@' fi _LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], [Take the output of nm and produce a listing of raw symbols and C names]) _LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], [Transform the output of nm in a proper C declaration]) _LT_DECL([global_symbol_to_import], [lt_cv_sys_global_symbol_to_import], [1], [Transform the output of nm into a list of symbols to manually relocate]) _LT_DECL([global_symbol_to_c_name_address], [lt_cv_sys_global_symbol_to_c_name_address], [1], [Transform the output of nm in a C name address pair]) _LT_DECL([global_symbol_to_c_name_address_lib_prefix], [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], [Transform the output of nm in a C name address pair when lib prefix is needed]) _LT_DECL([nm_interface], [lt_cv_nm_interface], [1], [The name lister interface]) _LT_DECL([], [nm_file_list_spec], [1], [Specify filename containing input files for $NM]) ]) # _LT_CMD_GLOBAL_SYMBOLS # _LT_COMPILER_PIC([TAGNAME]) # --------------------------- m4_defun([_LT_COMPILER_PIC], [m4_require([_LT_TAG_COMPILER])dnl _LT_TAGVAR(lt_prog_compiler_wl, $1)= _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)= m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; *djgpp*) # DJGPP does not support shared libraries at all _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac else case $host_os in aix[[4-9]]*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; chorus*) case $cc_basename in cxch68*) # Green Hills C++ Compiler # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" ;; esac ;; mingw* | cygwin* | os2* | pw32* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) ;; dgux*) case $cc_basename in ec++*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; ghcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; freebsd* | dragonfly*) # FreeBSD uses GNU C++ ;; hpux9* | hpux10* | hpux11*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' if test ia64 != "$host_cpu"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' fi ;; aCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac ;; *) ;; esac ;; interix*) # This is c89, which is MS Visual C++ (no shared libs) # Anyone wants to do a port? ;; irix5* | irix6* | nonstopux*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' # CC pic flag -KPIC is the default. ;; *) ;; esac ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # KAI C++ Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; ecpc* ) # old Intel C++ for x86_64, which still supported -KPIC. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; icpc* ) # Intel C++, used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgCC* | pgcpp*) # Portland Group C++ compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; cxx*) # Compaq C++ # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL 8.0, 9.0 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; esac ;; esac ;; lynxos*) ;; m88k*) ;; mvs*) case $cc_basename in cxx*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' ;; *) ;; esac ;; netbsd*) ;; *qnx* | *nto*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' ;; RCC*) # Rational C++ 2.4.1 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; cxx*) # Digital/Compaq C++ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # Make sure the PIC flag is empty. It appears that all Alpha # Linux and Compaq Tru64 Unix objects are PIC. _LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; *) ;; esac ;; psos*) ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' ;; *) ;; esac ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; lcc*) # Lucid _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' ;; *) ;; esac ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) case $cc_basename in CC*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' ;; *) ;; esac ;; vxworks*) ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ], [ if test yes = "$GCC"; then _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. _LT_TAGVAR(lt_prog_compiler_static, $1)= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac ;; interix[[3-9]]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic fi ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' else _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). m4_if([$1], [GCJ], [], [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) case $host_os in os2*) _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? _LT_TAGVAR(lt_prog_compiler_static, $1)='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # PIC (with -KPIC) is the default. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; # Lahey Fortran 8.1. lf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' ;; nagfor*) # NAG Fortran compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; ccc*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All Alpha code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='' ;; *Sun\ F* | *Sun*Fortran*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' ;; *Intel*\ [[CF]]*Compiler*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' ;; *Portland\ Group*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; esac ;; esac ;; newsos6) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' ;; osf3* | osf4* | osf5*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' # All OSF/1 code is PIC. _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; rdos*) _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' ;; solaris*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; *) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; esac ;; sunos4*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; unicos*) _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; uts4*) _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' ;; *) _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no ;; esac fi ]) case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) _LT_TAGVAR(lt_prog_compiler_pic, $1)= ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" ;; esac AC_CACHE_CHECK([for $compiler option to produce PIC], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) # # Check to make sure the PIC flag actually works. # if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, $1)= _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) fi _LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], [Additional compiler flags for building library objects]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # Check to make sure the static flag actually works. # wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), $lt_tmp_static_flag, [], [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) _LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], [Compiler flag to prevent dynamic linking]) ])# _LT_COMPILER_PIC # _LT_LINKER_SHLIBS([TAGNAME]) # ---------------------------- # See if the linker supports building shared libraries. m4_defun([_LT_LINKER_SHLIBS], [AC_REQUIRE([LT_PATH_LD])dnl AC_REQUIRE([LT_PATH_NM])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_DECL_SED])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl m4_require([_LT_TAG_COMPILER])dnl AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) m4_if([$1], [CXX], [ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] case $host_os in aix[[4-9]]*) # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)=$ltdll_cmds ;; cygwin* | mingw* | cegcc*) case $cc_basename in cl*) _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] ;; esac ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac ], [ runpath_var= _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_cmds, $1)= _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(old_archive_from_new_cmds, $1)= _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= _LT_TAGVAR(thread_safe_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list _LT_TAGVAR(include_expsyms, $1)= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. dnl Note also adjust exclude_expsyms for C++ above. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/([^)]\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[[3-9]]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 _LT_TAGVAR(whole_archive_flag_spec, $1)= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; sunos4*) _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac if test no = "$_LT_TAGVAR(ld_shlibs, $1)"; then runpath_var= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. _LT_TAGVAR(hardcode_minus_L, $1)=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. _LT_TAGVAR(hardcode_direct, $1)=unsupported fi ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='`func_echo_all $NM | $SED -e '\''s/B\([[^B]]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && ([substr](\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. _LT_TAGVAR(allow_undefined_flag, $1)='-berok' # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='' ;; m68k) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac ;; bsdi[[45]]*) _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' # FIXME: Should let the user specify the lib program. _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; dgux*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; hpux9*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) m4_if($1, [], [ # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) _LT_LINKER_OPTION([if $CC understands -b], _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], [_LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) ;; esac fi if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. _LT_TAGVAR(hardcode_minus_L, $1)=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], [lt_cv_irix_exported_symbol], [save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" AC_LINK_IFELSE( [AC_LANG_SOURCE( [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], [C++], [[int foo (void) { return 0; }]], [Fortran 77], [[ subroutine foo end]], [Fortran], [[ subroutine foo end]])])], [lt_cv_irix_exported_symbol=yes], [lt_cv_irix_exported_symbol=no]) LDFLAGS=$save_LDFLAGS]) if test yes = "$lt_cv_irix_exported_symbol"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes _LT_TAGVAR(link_all_deplibs, $1)=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler _LT_TAGVAR(ld_shlibs, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; newsos6) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' fi else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; osf3*) if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' else _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' fi _LT_TAGVAR(archive_cmds_need_lc, $1)='no' _LT_TAGVAR(hardcode_libdir_separator, $1)=: ;; solaris*) _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' if test yes = "$GCC"; then wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' _LT_TAGVAR(archive_cmds, $1)='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' fi ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4) case $host_vendor in sni) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' _LT_TAGVAR(hardcode_direct, $1)=no ;; motorola) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; sysv4.3*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes _LT_TAGVAR(ld_shlibs, $1)=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(ld_shlibs, $1)=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Blargedynsym' ;; esac fi fi ]) AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld _LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl _LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl _LT_DECL([], [extract_expsyms_cmds], [2], [The commands to extract the exported symbol list from a shared archive]) # # Do we need to explicitly link libc? # case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in x|xyes) # Assume -lc should be added _LT_TAGVAR(archive_cmds_need_lc, $1)=yes if test yes,yes = "$GCC,$enable_shared"; then case $_LT_TAGVAR(archive_cmds, $1) in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. AC_CACHE_CHECK([whether -lc should be explicitly linked in], [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), [$RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if AC_TRY_EVAL(ac_compile) 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) _LT_TAGVAR(allow_undefined_flag, $1)= if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) then lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no else lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes fi _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* ]) _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) ;; esac fi ;; esac _LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], [Whether or not to add -lc for building shared libraries]) _LT_TAGDECL([allow_libtool_libs_with_static_runtimes], [enable_shared_with_static_runtimes], [0], [Whether or not to disallow shared libs when runtime libs are static]) _LT_TAGDECL([], [export_dynamic_flag_spec], [1], [Compiler flag to allow reflexive dlopens]) _LT_TAGDECL([], [whole_archive_flag_spec], [1], [Compiler flag to generate shared objects directly from archives]) _LT_TAGDECL([], [compiler_needs_object], [1], [Whether the compiler copes with passing no objects directly]) _LT_TAGDECL([], [old_archive_from_new_cmds], [2], [Create an old-style archive from a shared archive]) _LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], [Create a temporary old-style archive to link instead of a shared archive]) _LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) _LT_TAGDECL([], [archive_expsym_cmds], [2]) _LT_TAGDECL([], [module_cmds], [2], [Commands used to build a loadable module if different from building a shared archive.]) _LT_TAGDECL([], [module_expsym_cmds], [2]) _LT_TAGDECL([], [with_gnu_ld], [1], [Whether we are building with GNU ld or not]) _LT_TAGDECL([], [allow_undefined_flag], [1], [Flag that allows shared libraries with undefined symbols to be built]) _LT_TAGDECL([], [no_undefined_flag], [1], [Flag that enforces no undefined symbols]) _LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], [Flag to hardcode $libdir into a binary during linking. This must work even if $libdir does not exist]) _LT_TAGDECL([], [hardcode_libdir_separator], [1], [Whether we need a single "-rpath" flag with a separated argument]) _LT_TAGDECL([], [hardcode_direct], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_direct_absolute], [0], [Set to "yes" if using DIR/libNAME$shared_ext during linking hardcodes DIR into the resulting binary and the resulting library dependency is "absolute", i.e impossible to change by setting $shlibpath_var if the library is relocated]) _LT_TAGDECL([], [hardcode_minus_L], [0], [Set to "yes" if using the -LDIR flag during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_shlibpath_var], [0], [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into the resulting binary]) _LT_TAGDECL([], [hardcode_automatic], [0], [Set to "yes" if building a shared library automatically hardcodes DIR into the library and all subsequent libraries and executables linked against it]) _LT_TAGDECL([], [inherit_rpath], [0], [Set to yes if linker adds runtime paths of dependent libraries to runtime path list]) _LT_TAGDECL([], [link_all_deplibs], [0], [Whether libtool must link a program against all its dependency libraries]) _LT_TAGDECL([], [always_export_symbols], [0], [Set to "yes" if exported symbols are required]) _LT_TAGDECL([], [export_symbols_cmds], [2], [The commands to list exported symbols]) _LT_TAGDECL([], [exclude_expsyms], [1], [Symbols that should not be listed in the preloaded symbols]) _LT_TAGDECL([], [include_expsyms], [1], [Symbols that must always be exported]) _LT_TAGDECL([], [prelink_cmds], [2], [Commands necessary for linking programs (against libraries) with templates]) _LT_TAGDECL([], [postlink_cmds], [2], [Commands necessary for finishing linking programs]) _LT_TAGDECL([], [file_list_spec], [1], [Specify filename containing input files]) dnl FIXME: Not yet implemented dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], dnl [Compiler flag to generate thread safe objects]) ])# _LT_LINKER_SHLIBS # _LT_LANG_C_CONFIG([TAG]) # ------------------------ # Ensure that the configuration variables for a C compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_C_CONFIG], [m4_require([_LT_DECL_EGREP])dnl lt_save_CC=$CC AC_LANG_PUSH(C) # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' _LT_TAG_COMPILER # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) LT_SYS_DLOPEN_SELF _LT_CMD_STRIPLIB # Report what library types will actually be built AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC=$lt_save_CC ])# _LT_LANG_C_CONFIG # _LT_LANG_CXX_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a C++ compiler are suitably # defined. These variables are subsequently used by _LT_CONFIG to write # the compiler configuration to 'libtool'. m4_defun([_LT_LANG_CXX_CONFIG], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl m4_require([_LT_PATH_MANIFEST_TOOL])dnl if test -n "$CXX" && ( test no != "$CXX" && ( (test g++ = "$CXX" && `g++ -v >/dev/null 2>&1` ) || (test g++ != "$CXX"))); then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi AC_LANG_PUSH(C++) _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(compiler_needs_object, $1)=no _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for C++ test sources. ac_ext=cpp # Object file extension for compiled C++ test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the CXX compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_caught_CXX_error"; then # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_LD=$LD lt_save_GCC=$GCC GCC=$GXX lt_save_with_gnu_ld=$with_gnu_ld lt_save_path_LD=$lt_cv_path_LD if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx else $as_unset lt_cv_prog_gnu_ld fi if test -n "${lt_cv_path_LDCXX+set}"; then lt_cv_path_LD=$lt_cv_path_LDCXX else $as_unset lt_cv_path_LD fi test -z "${LDCXX+set}" || LD=$LDCXX CC=${CXX-"c++"} CFLAGS=$CXXFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then # We don't want -fno-exception when compiling C++ code, so set the # no_builtin_flag separately if test yes = "$GXX"; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' else _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= fi if test yes = "$GXX"; then # Set up default GNU C++ configuration LT_PATH_LD # Check if GNU C++ uses GNU ld as the underlying linker, since the # archiving commands below assume that GNU ld is being used. if test yes = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # If archive_cmds runs LD, not CC, wlarc should be empty # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to # investigate it a little bit more. (MM) wlarc='$wl' # ancient GNU ld didn't support --whole-archive et. al. if eval "`$CC -print-prog-name=ld` --help 2>&1" | $GREP 'no-whole-archive' > /dev/null; then _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else _LT_TAGVAR(whole_archive_flag_spec, $1)= fi else with_gnu_ld=no wlarc= # A generic and very simple default shared library creation # command for GNU C++ for the case where it uses the native # linker, instead of GNU ld. If possible, this setting should # overridden to take advantage of the native linker features on # the platform it is being used on. _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' fi # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else GXX=no with_gnu_ld=no wlarc= fi # PORTME: fill in a description of your system's C++ link characteristics AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) _LT_TAGVAR(ld_shlibs, $1)=yes case $host_os in aix3*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aix[[4-9]]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do case $ld_flag in *-brtl*) aix_use_runtimelinking=yes break ;; esac done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. _LT_TAGVAR(archive_cmds, $1)='' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(file_list_spec, $1)='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no ;; esac if test yes = "$GXX"; then case $host_os in aix4.[[012]]|aix4.[[012]].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 _LT_TAGVAR(hardcode_direct, $1)=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)= fi esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag=$shared_flag' $wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to # export. _LT_TAGVAR(always_export_symbols, $1)=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. # The "-G" linker flag allows undefined symbols. _LT_TAGVAR(no_undefined_flag, $1)='-bernotok' # Determine the default libpath from the value encoded in an empty # executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $libdir:/usr/lib:/lib' _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. _LT_SYS_MODULE_PATH_AIX([$1]) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. _LT_TAGVAR(no_undefined_flag, $1)=' $wl-bernotok' _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' fi _LT_TAGVAR(archive_cmds_need_lc, $1)=yes _LT_TAGVAR(archive_expsym_cmds, $1)='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([[, ]]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared # libraries. Need -bnortl late, we may have -brtl in LDFLAGS. _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi _LT_TAGVAR(archive_expsym_cmds, $1)="$_LT_TAGVAR(archive_expsym_cmds, $1)"'~$RM -r $output_objdir/$realname.d' fi fi ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then _LT_TAGVAR(allow_undefined_flag, $1)=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; chorus*) case $cc_basename in *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; cygwin* | mingw* | pw32* | cegcc*) case $GXX,$cc_basename in ,cl* | no,cl*) # Native MSVC # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes # Don't use ranlib _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ func_to_tool_file "$lt_outputfile"~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # g++ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, # as there is no search path for DLLs. _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-all-symbols' _LT_TAGVAR(allow_undefined_flag, $1)=unsupported _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... _LT_TAGVAR(archive_expsym_cmds, $1)='if _LT_DLL_DEF_P([$export_symbols]); then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($1) ;; os2*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' _LT_TAGVAR(hardcode_minus_L, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)=unsupported shrext_cmds=.dll _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(archive_expsym_cmds, $1)='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' _LT_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes _LT_TAGVAR(file_list_spec, $1)='@' ;; dgux*) case $cc_basename in ec++*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; ghcx*) # Green Hills C++ Compiler # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; freebsd2.*) # C++ shared libraries reported to be fairly broken before # switch to ELF _LT_TAGVAR(ld_shlibs, $1)=no ;; freebsd-elf*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; freebsd* | dragonfly*) # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF # conventions _LT_TAGVAR(ld_shlibs, $1)=yes ;; haiku*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(link_all_deplibs, $1)=yes ;; hpux9*) _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; hpux10*|hpux11*) if test no = "$with_gnu_ld"; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl+b $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: case $host_cpu in hppa*64*|ia64*) ;; *) _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' ;; esac fi case $host_cpu in hppa*64*|ia64*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no ;; *) _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, # but as the default # location of the library. ;; esac case $cc_basename in CC*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; aCC*) case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then case $host_cpu in hppa*64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC $wl+h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; ia64*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; esac fi else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; interix[[3-9]]*) _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; irix5* | irix6*) case $cc_basename in CC*) # SGI C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' # Archives containing C++ object files must be created using # "CC -ar", where "CC" is the IRIX C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' ;; *) if test yes = "$GXX"; then if test no = "$with_gnu_ld"; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` -o $lib' fi fi _LT_TAGVAR(link_all_deplibs, $1)=yes ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: _LT_TAGVAR(inherit_rpath, $1)=yes ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib $wl-retain-symbols-file,$export_symbols; mv \$templib $lib' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' # Archives containing C++ object files must be created using # "CC -Bstatic", where "CC" is the KAI C++ compiler. _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; icpc* | ecpc* ) # Intel C++ with_gnu_ld=yes # version 8.0 and above of icpc choke on multiply defined symbols # if we add $predep_objects and $postdep_objects, however 7.1 and # earlier do not add the objects themselves. case `$CC -V 2>&1` in *"Version 7."*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 8.0 or newer tmp_idyn= case $host_cpu in ia64*) tmp_idyn=' -i_dynamic';; esac _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive$convenience $wl--no-whole-archive' ;; pgCC* | pgcpp*) # Portland Group C++ compiler case `$CC -V` in *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ $RANLIB $oldlib' _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ rm -rf $tpldir~ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; *) # Version 6 and above use weak symbols _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl--rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' ;; cxx*) # Compaq C++ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname -o $lib $wl-retain-symbols-file $wl$export_symbols' runpath_var=LD_RUN_PATH _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' ;; xl* | mpixl* | bgxl*) # IBM XL 8.0 on PPC, with GNU ld _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl--export-dynamic' _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC -qmkshrobj $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file $wl$export_symbols' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' _LT_TAGVAR(compiler_needs_object, $1)=yes # Not sure whether something based on # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 # would be better. output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; esac ;; esac ;; lynxos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; m88k*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; mvs*) case $cc_basename in cxx*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' wlarc= _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no fi # Workaround some broken pre-1.5 toolchains output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' ;; *nto* | *qnx*) _LT_TAGVAR(ld_shlibs, $1)=yes ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then _LT_TAGVAR(hardcode_direct, $1)=yes _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=yes _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`"; then _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-retain-symbols-file,$export_symbols -o $lib' _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-E' _LT_TAGVAR(whole_archive_flag_spec, $1)=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' fi output_verbose_link_cmd=func_echo_all else _LT_TAGVAR(ld_shlibs, $1)=no fi ;; osf3* | osf4* | osf5*) case $cc_basename in KCC*) # Kuck and Associates, Inc. (KAI) C++ Compiler # KCC will only create a shared library if the output file # ends with ".so" (or ".sl" for HP-UX), so rename the library # to its proper name (with version) after linking. _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\$tempext\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Archives containing C++ object files must be created using # the KAI C++ compiler. case $host in osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; esac ;; RCC*) # Rational C++ 2.4.1 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; cxx*) case $host in osf3*) _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $soname `test -n "$verstring" && func_echo_all "$wl-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' ;; *) _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' _LT_TAGVAR(archive_cmds, $1)='$CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ echo "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname $wl-input $wl$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~ $RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' ;; esac _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. # # There doesn't appear to be a way to prevent this compiler from # explicitly linking system object files so we need to strip them # from the output so that they don't get included in the library # dependencies. output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list= ; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' ;; *) if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(allow_undefined_flag, $1)=' $wl-expect_unresolved $wl\*' case $host in osf3*) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' ;; esac _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-rpath $wl$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=: # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no fi ;; esac ;; psos*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; sunos4*) case $cc_basename in CC*) # Sun C++ 4.x # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; lcc*) # Lucid # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; solaris*) case $cc_basename in CC* | sunCC*) # Sun C++ 4.2, 5.x and Centerline C++ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' _LT_TAGVAR(archive_cmds, $1)='$CC -G$allow_undefined_flag -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag $wl-M $wl$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' _LT_TAGVAR(hardcode_shlibpath_var, $1)=no case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. # Supported since Solaris 2.6 (maybe 2.5.1?) _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;; esac _LT_TAGVAR(link_all_deplibs, $1)=yes output_verbose_link_cmd='func_echo_all' # Archives containing C++ object files must be created using # "CC -xar", where "CC" is the Sun C++ compiler. This is # necessary to make sure instantiated templates are included # in the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' ;; gcx*) # Green Hills C++ Compiler _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' # The C++ compiler must be used to create the archive. _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' ;; *) # GNU C++ compiler with Solaris linker if test yes,no = "$GXX,$with_gnu_ld"; then _LT_TAGVAR(no_undefined_flag, $1)=' $wl-z ${wl}defs' if $CC --version | $GREP -v '^2\.7' > /dev/null; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' else # g++ 2.7 appears to require '-G' NOT '-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags $wl-h $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G -nostdlib $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' # Commands to make compiler produce verbose output that lists # what "hidden" libraries, object files and flags are used when # linking a shared library. output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' fi _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R $wl$libdir' case $host_os in solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; *) _LT_TAGVAR(whole_archive_flag_spec, $1)='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' ;; esac fi ;; esac ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. _LT_TAGVAR(no_undefined_flag, $1)='$wl-z,text' _LT_TAGVAR(allow_undefined_flag, $1)='$wl-z,nodefs' _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(hardcode_shlibpath_var, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='$wl-R,$libdir' _LT_TAGVAR(hardcode_libdir_separator, $1)=':' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(export_dynamic_flag_spec, $1)='$wl-Bexport' runpath_var='LD_RUN_PATH' case $cc_basename in CC*) _LT_TAGVAR(archive_cmds, $1)='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ '"$_LT_TAGVAR(old_archive_cmds, $1)" _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ '"$_LT_TAGVAR(reload_cmds, $1)" ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; tandem*) case $cc_basename in NCC*) # NonStop-UX NCC 3.20 # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac ;; vxworks*) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; *) # FIXME: insert proper C++ library support _LT_TAGVAR(ld_shlibs, $1)=no ;; esac AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) test no = "$_LT_TAGVAR(ld_shlibs, $1)" && can_build_shared=no _LT_TAGVAR(GCC, $1)=$GXX _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS LDCXX=$LD LD=$lt_save_LD GCC=$lt_save_GCC with_gnu_ld=$lt_save_with_gnu_ld lt_cv_path_LDCXX=$lt_cv_path_LD lt_cv_path_LD=$lt_save_path_LD lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld fi # test yes != "$_lt_caught_CXX_error" AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _LT_FUNC_STRIPNAME_CNF # ---------------------- # func_stripname_cnf prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). # # This function is identical to the (non-XSI) version of func_stripname, # except this one can be used by m4 code that may be executed by configure, # rather than the libtool script. m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl AC_REQUIRE([_LT_DECL_SED]) AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) func_stripname_cnf () { case @S|@2 in .*) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%\\\\@S|@2\$%%"`;; *) func_stripname_result=`$ECHO "@S|@3" | $SED "s%^@S|@1%%; s%@S|@2\$%%"`;; esac } # func_stripname_cnf ])# _LT_FUNC_STRIPNAME_CNF # _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) # --------------------------------- # Figure out "hidden" library dependencies from verbose # compiler output when linking a shared library. # Parse the compiler output and extract the necessary # objects, libraries and library flags. m4_defun([_LT_SYS_HIDDEN_LIBDEPS], [m4_require([_LT_FILEUTILS_DEFAULTS])dnl AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl # Dependencies to place before and after the object being linked: _LT_TAGVAR(predep_objects, $1)= _LT_TAGVAR(postdep_objects, $1)= _LT_TAGVAR(predeps, $1)= _LT_TAGVAR(postdeps, $1)= _LT_TAGVAR(compiler_lib_search_path, $1)= dnl we can't use the lt_simple_compile_test_code here, dnl because it contains code intended for an executable, dnl not a library. It's possible we should let each dnl tag define a new lt_????_link_test_code variable, dnl but it's only used here... m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF int a; void foo (void) { a = 0; } _LT_EOF ], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF class Foo { public: Foo (void) { a = 0; } private: int a; }; _LT_EOF ], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer*4 a a=0 return end _LT_EOF ], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF subroutine foo implicit none integer a a=0 return end _LT_EOF ], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF public class foo { private int a; public void bar (void) { a = 0; } }; _LT_EOF ], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF package foo func foo() { } _LT_EOF ]) _lt_libdeps_save_CFLAGS=$CFLAGS case "$CC $CFLAGS " in #( *\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; *\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; *\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; esac dnl Parse the compiler output and extract the necessary dnl objects, libraries and library flags. if AC_TRY_EVAL(ac_compile); then # Parse the compiler output and extract the necessary # objects, libraries and library flags. # Sentinel used to keep track of whether or not we are before # the conftest object file. pre_test_object_deps_done=no for p in `eval "$output_verbose_link_cmd"`; do case $prev$p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test x-L = "$p" || test x-R = "$p"; then prev=$p continue fi # Expand the sysroot to ease extracting the directories later. if test -z "$prev"; then case $p in -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; esac fi case $p in =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; esac if test no = "$pre_test_object_deps_done"; then case $prev in -L | -R) # Internal compiler library paths should come after those # provided the user. The postdeps already come after the # user supplied libs so there is no need to process them. if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then _LT_TAGVAR(compiler_lib_search_path, $1)=$prev$p else _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} $prev$p" fi ;; # The "-l" case would never come before the object being # linked, so don't bother handling this case. esac else if test -z "$_LT_TAGVAR(postdeps, $1)"; then _LT_TAGVAR(postdeps, $1)=$prev$p else _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} $prev$p" fi fi prev= ;; *.lto.$objext) ;; # Ignore GCC LTO objects *.$objext) # This assumes that the test object file only shows up # once in the compiler output. if test "$p" = "conftest.$objext"; then pre_test_object_deps_done=yes continue fi if test no = "$pre_test_object_deps_done"; then if test -z "$_LT_TAGVAR(predep_objects, $1)"; then _LT_TAGVAR(predep_objects, $1)=$p else _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" fi else if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then _LT_TAGVAR(postdep_objects, $1)=$p else _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" fi fi ;; *) ;; # Ignore the rest. esac done # Clean up. rm -f a.out a.exe else echo "libtool.m4: error: problem compiling $1 test program" fi $RM -f confest.$objext CFLAGS=$_lt_libdeps_save_CFLAGS # PORTME: override above test on systems where it is broken m4_if([$1], [CXX], [case $host_os in interix[[3-9]]*) # Interix 3.5 installs completely hosed .la files for C++, so rather than # hack all around it, let's just trust "g++" to DTRT. _LT_TAGVAR(predep_objects,$1)= _LT_TAGVAR(postdep_objects,$1)= _LT_TAGVAR(postdeps,$1)= ;; esac ]) case " $_LT_TAGVAR(postdeps, $1) " in *" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; esac _LT_TAGVAR(compiler_lib_search_dirs, $1)= if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | $SED -e 's! -L! !g' -e 's!^ !!'` fi _LT_TAGDECL([], [compiler_lib_search_dirs], [1], [The directories searched by this compiler when creating a shared library]) _LT_TAGDECL([], [predep_objects], [1], [Dependencies to place before and after the objects being linked to create a shared library]) _LT_TAGDECL([], [postdep_objects], [1]) _LT_TAGDECL([], [predeps], [1]) _LT_TAGDECL([], [postdeps], [1]) _LT_TAGDECL([], [compiler_lib_search_path], [1], [The library search path used internally by the compiler when linking a shared library]) ])# _LT_SYS_HIDDEN_LIBDEPS # _LT_LANG_F77_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for a Fortran 77 compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_F77_CONFIG], [AC_LANG_PUSH(Fortran 77) if test -z "$F77" || test no = "$F77"; then _lt_disable_F77=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for f77 test sources. ac_ext=f # Object file extension for compiled f77 test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the F77 compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_F77"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${F77-"f77"} CFLAGS=$FFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) GCC=$G77 if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$G77 _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_F77" AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_LANG_FC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for a Fortran compiler are # suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_FC_CONFIG], [AC_LANG_PUSH(Fortran) if test -z "$FC" || test no = "$FC"; then _lt_disable_FC=yes fi _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(allow_undefined_flag, $1)= _LT_TAGVAR(always_export_symbols, $1)=no _LT_TAGVAR(archive_expsym_cmds, $1)= _LT_TAGVAR(export_dynamic_flag_spec, $1)= _LT_TAGVAR(hardcode_direct, $1)=no _LT_TAGVAR(hardcode_direct_absolute, $1)=no _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= _LT_TAGVAR(hardcode_libdir_separator, $1)= _LT_TAGVAR(hardcode_minus_L, $1)=no _LT_TAGVAR(hardcode_automatic, $1)=no _LT_TAGVAR(inherit_rpath, $1)=no _LT_TAGVAR(module_cmds, $1)= _LT_TAGVAR(module_expsym_cmds, $1)= _LT_TAGVAR(link_all_deplibs, $1)=unknown _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds _LT_TAGVAR(no_undefined_flag, $1)= _LT_TAGVAR(whole_archive_flag_spec, $1)= _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no # Source file extension for fc test sources. ac_ext=${ac_fc_srcext-f} # Object file extension for compiled fc test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # No sense in running all these tests if we already determined that # the FC compiler isn't working. Some variables (like enable_shared) # are currently assumed to apply to all compilers on this platform, # and will be corrupted by setting them based on a non-working compiler. if test yes != "$_lt_disable_FC"; then # Code to be used in simple compile tests lt_simple_compile_test_code="\ subroutine t return end " # Code to be used in simple link tests lt_simple_link_test_code="\ program t end " # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_GCC=$GCC lt_save_CFLAGS=$CFLAGS CC=${FC-"f95"} CFLAGS=$FCFLAGS compiler=$CC GCC=$ac_cv_fc_compiler_gnu _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) if test -n "$compiler"; then AC_MSG_CHECKING([if libtool supports shared libraries]) AC_MSG_RESULT([$can_build_shared]) AC_MSG_CHECKING([whether to build shared libraries]) test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac AC_MSG_RESULT([$enable_shared]) AC_MSG_CHECKING([whether to build static libraries]) # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_TAGVAR(GCC, $1)=$ac_cv_fc_compiler_gnu _LT_TAGVAR(LD, $1)=$LD ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... _LT_SYS_HIDDEN_LIBDEPS($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_SYS_DYNAMIC_LINKER($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi # test -n "$compiler" GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS fi # test yes != "$_lt_disable_FC" AC_LANG_POP ])# _LT_LANG_FC_CONFIG # _LT_LANG_GCJ_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Java Compiler compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GCJ_CONFIG], [AC_REQUIRE([LT_PROG_GCJ])dnl AC_LANG_SAVE # Source file extension for Java test sources. ac_ext=java # Object file extension for compiled Java test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="class foo {}" # Code to be used in simple link tests lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} CFLAGS=$GCJFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # GCJ did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GCJ_CONFIG # _LT_LANG_GO_CONFIG([TAG]) # -------------------------- # Ensure that the configuration variables for the GNU Go compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_GO_CONFIG], [AC_REQUIRE([LT_PROG_GO])dnl AC_LANG_SAVE # Source file extension for Go test sources. ac_ext=go # Object file extension for compiled Go test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="package main; func main() { }" # Code to be used in simple link tests lt_simple_link_test_code='package main; func main() { }' # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC=yes CC=${GOC-"gccgo"} CFLAGS=$GOFLAGS compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_TAGVAR(LD, $1)=$LD _LT_CC_BASENAME([$compiler]) # Go did not exist at the time GCC didn't implicitly link libc in. _LT_TAGVAR(archive_cmds_need_lc, $1)=no _LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds _LT_TAGVAR(reload_flag, $1)=$reload_flag _LT_TAGVAR(reload_cmds, $1)=$reload_cmds ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then _LT_COMPILER_NO_RTTI($1) _LT_COMPILER_PIC($1) _LT_COMPILER_C_O($1) _LT_COMPILER_FILE_LOCKS($1) _LT_LINKER_SHLIBS($1) _LT_LINKER_HARDCODE_LIBPATH($1) _LT_CONFIG($1) fi AC_LANG_RESTORE GCC=$lt_save_GCC CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_GO_CONFIG # _LT_LANG_RC_CONFIG([TAG]) # ------------------------- # Ensure that the configuration variables for the Windows resource compiler # are suitably defined. These variables are subsequently used by _LT_CONFIG # to write the compiler configuration to 'libtool'. m4_defun([_LT_LANG_RC_CONFIG], [AC_REQUIRE([LT_PROG_RC])dnl AC_LANG_SAVE # Source file extension for RC test sources. ac_ext=rc # Object file extension for compiled RC test sources. objext=o _LT_TAGVAR(objext, $1)=$objext # Code to be used in simple compile tests lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' # Code to be used in simple link tests lt_simple_link_test_code=$lt_simple_compile_test_code # ltmain only uses $CC for tagged configurations so make sure $CC is set. _LT_TAG_COMPILER # save warnings/boilerplate of simple test code _LT_COMPILER_BOILERPLATE _LT_LINKER_BOILERPLATE # Allow CC to be a program name with arguments. lt_save_CC=$CC lt_save_CFLAGS=$CFLAGS lt_save_GCC=$GCC GCC= CC=${RC-"windres"} CFLAGS= compiler=$CC _LT_TAGVAR(compiler, $1)=$CC _LT_CC_BASENAME([$compiler]) _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes if test -n "$compiler"; then : _LT_CONFIG($1) fi GCC=$lt_save_GCC AC_LANG_RESTORE CC=$lt_save_CC CFLAGS=$lt_save_CFLAGS ])# _LT_LANG_RC_CONFIG # LT_PROG_GCJ # ----------- AC_DEFUN([LT_PROG_GCJ], [m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], [AC_CHECK_TOOL(GCJ, gcj,) test set = "${GCJFLAGS+set}" || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) # Old name: AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_GCJ], []) # LT_PROG_GO # ---------- AC_DEFUN([LT_PROG_GO], [AC_CHECK_TOOL(GOC, gccgo,) ]) # LT_PROG_RC # ---------- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) # Old name: AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_RC], []) # _LT_DECL_EGREP # -------------- # If we don't have a new enough Autoconf to choose the best grep # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_EGREP], [AC_REQUIRE([AC_PROG_EGREP])dnl AC_REQUIRE([AC_PROG_FGREP])dnl test -z "$GREP" && GREP=grep _LT_DECL([], [GREP], [1], [A grep program that handles long lines]) _LT_DECL([], [EGREP], [1], [An ERE matcher]) _LT_DECL([], [FGREP], [1], [A literal string matcher]) dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too AC_SUBST([GREP]) ]) # _LT_DECL_OBJDUMP # -------------- # If we don't have a new enough Autoconf to choose the best objdump # available, choose the one first in the user's PATH. m4_defun([_LT_DECL_OBJDUMP], [AC_CHECK_TOOL(OBJDUMP, objdump, false) test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) AC_SUBST([OBJDUMP]) ]) # _LT_DECL_DLLTOOL # ---------------- # Ensure DLLTOOL variable is set. m4_defun([_LT_DECL_DLLTOOL], [AC_CHECK_TOOL(DLLTOOL, dlltool, false) test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program]) AC_SUBST([DLLTOOL]) ]) # _LT_DECL_SED # ------------ # Check for a fully-functional sed program, that truncates # as few characters as possible. Prefer GNU sed if found. m4_defun([_LT_DECL_SED], [AC_PROG_SED test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" _LT_DECL([], [SED], [1], [A sed program that does not truncate output]) _LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], [Sed that helps us avoid accidentally triggering echo(1) options like -n]) ])# _LT_DECL_SED m4_ifndef([AC_PROG_SED], [ ############################################################ # NOTE: This macro has been submitted for inclusion into # # GNU Autoconf as AC_PROG_SED. When it is available in # # a released version of Autoconf we should remove this # # macro and use it instead. # ############################################################ m4_defun([AC_PROG_SED], [AC_MSG_CHECKING([for a sed that does not truncate output]) AC_CACHE_VAL(lt_cv_path_SED, [# Loop through the user's path and test for sed and gsed. # Then use that list of sed's as ones to test for truncation. as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for lt_ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" fi done done done IFS=$as_save_IFS lt_ac_max=0 lt_ac_count=0 # Add /usr/xpg4/bin/sed as it is typically found on Solaris # along with /bin/sed that truncates output. for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do test ! -f "$lt_ac_sed" && continue cat /dev/null > conftest.in lt_ac_count=0 echo $ECHO_N "0123456789$ECHO_C" >conftest.in # Check for GNU sed and select it if it is found. if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then lt_cv_path_SED=$lt_ac_sed break fi while true; do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo >>conftest.nl $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break cmp -s conftest.out conftest.nl || break # 10000 chars as input seems more than enough test 10 -lt "$lt_ac_count" && break lt_ac_count=`expr $lt_ac_count + 1` if test "$lt_ac_count" -gt "$lt_ac_max"; then lt_ac_max=$lt_ac_count lt_cv_path_SED=$lt_ac_sed fi done done ]) SED=$lt_cv_path_SED AC_SUBST([SED]) AC_MSG_RESULT([$SED]) ])#AC_PROG_SED ])#m4_ifndef # Old name: AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([LT_AC_PROG_SED], []) # _LT_CHECK_SHELL_FEATURES # ------------------------ # Find out whether the shell is Bourne or XSI compatible, # or has some other useful features. m4_defun([_LT_CHECK_SHELL_FEATURES], [if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi _LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac _LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl _LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl ])# _LT_CHECK_SHELL_FEATURES # _LT_PATH_CONVERSION_FUNCTIONS # ----------------------------- # Determine what file name conversion functions should be used by # func_to_host_file (and, implicitly, by func_to_host_path). These are needed # for certain cross-compile configurations and native mingw. m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_REQUIRE([AC_CANONICAL_BUILD])dnl AC_MSG_CHECKING([how to convert $build file names to $host format]) AC_CACHE_VAL(lt_cv_to_host_file_cmd, [case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac ]) to_host_file_cmd=$lt_cv_to_host_file_cmd AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) _LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], [0], [convert $build file names to $host format])dnl AC_MSG_CHECKING([how to convert $build file names to toolchain format]) AC_CACHE_VAL(lt_cv_to_tool_file_cmd, [#assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac ]) to_tool_file_cmd=$lt_cv_to_tool_file_cmd AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) _LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], [0], [convert $build files to toolchain format])dnl ])# _LT_PATH_CONVERSION_FUNCTIONS cddlib-0.94j/m4/ltoptions.m40000644000175000017500000003426213300566262012611 00000000000000# Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004-2005, 2007-2009, 2011-2017 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 8 ltoptions.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) # _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) # ------------------------------------------ m4_define([_LT_MANGLE_OPTION], [[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) # _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) # --------------------------------------- # Set option OPTION-NAME for macro MACRO-NAME, and if there is a # matching handler defined, dispatch to it. Other OPTION-NAMEs are # saved as a flag. m4_define([_LT_SET_OPTION], [m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), _LT_MANGLE_DEFUN([$1], [$2]), [m4_warning([Unknown $1 option '$2'])])[]dnl ]) # _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) # ------------------------------------------------------------ # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. m4_define([_LT_IF_OPTION], [m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) # _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) # ------------------------------------------------------- # Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME # are set. m4_define([_LT_UNLESS_OPTIONS], [m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), [m4_define([$0_found])])])[]dnl m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 ])[]dnl ]) # _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) # ---------------------------------------- # OPTION-LIST is a space-separated list of Libtool options associated # with MACRO-NAME. If any OPTION has a matching handler declared with # LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about # the unknown option and exit. m4_defun([_LT_SET_OPTIONS], [# Set options m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), [_LT_SET_OPTION([$1], _LT_Option)]) m4_if([$1],[LT_INIT],[ dnl dnl Simply set some default values (i.e off) if boolean options were not dnl specified: _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no ]) _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no ]) dnl dnl If no reference was made to various pairs of opposing options, then dnl we run the default mode handler for the pair. For example, if neither dnl 'shared' nor 'disable-shared' was passed, we enable building of shared dnl archives by default: _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], [_LT_ENABLE_FAST_INSTALL]) _LT_UNLESS_OPTIONS([LT_INIT], [aix-soname=aix aix-soname=both aix-soname=svr4], [_LT_WITH_AIX_SONAME([aix])]) ]) ])# _LT_SET_OPTIONS ## --------------------------------- ## ## Macros to handle LT_INIT options. ## ## --------------------------------- ## # _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) # ----------------------------------------- m4_define([_LT_MANGLE_DEFUN], [[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) # LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) # ----------------------------------------------- m4_define([LT_OPTION_DEFINE], [m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl ])# LT_OPTION_DEFINE # dlopen # ------ LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes ]) AU_DEFUN([AC_LIBTOOL_DLOPEN], [_LT_SET_OPTION([LT_INIT], [dlopen]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'dlopen' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) # win32-dll # --------- # Declare package support for building win32 dll's. LT_OPTION_DEFINE([LT_INIT], [win32-dll], [enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) AC_CHECK_TOOL(AS, as, false) AC_CHECK_TOOL(DLLTOOL, dlltool, false) AC_CHECK_TOOL(OBJDUMP, objdump, false) ;; esac test -z "$AS" && AS=as _LT_DECL([], [AS], [1], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl ])# win32-dll AU_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_REQUIRE([AC_CANONICAL_HOST])dnl _LT_SET_OPTION([LT_INIT], [win32-dll]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'win32-dll' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) # _LT_ENABLE_SHARED([DEFAULT]) # ---------------------------- # implement the --enable-shared flag, and supports the 'shared' and # 'disable-shared' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_SHARED], [m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([shared], [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac], [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) _LT_DECL([build_libtool_libs], [enable_shared], [0], [Whether or not to build shared libraries]) ])# _LT_ENABLE_SHARED LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) # Old names: AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_SHARED], []) dnl AC_DEFUN([AM_DISABLE_SHARED], []) # _LT_ENABLE_STATIC([DEFAULT]) # ---------------------------- # implement the --enable-static flag, and support the 'static' and # 'disable-static' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_STATIC], [m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([static], [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac], [enable_static=]_LT_ENABLE_STATIC_DEFAULT) _LT_DECL([build_old_libs], [enable_static], [0], [Whether or not to build static libraries]) ])# _LT_ENABLE_STATIC LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) # Old names: AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AM_ENABLE_STATIC], []) dnl AC_DEFUN([AM_DISABLE_STATIC], []) # _LT_ENABLE_FAST_INSTALL([DEFAULT]) # ---------------------------------- # implement the --enable-fast-install flag, and support the 'fast-install' # and 'disable-fast-install' LT_INIT options. # DEFAULT is either 'yes' or 'no'. If omitted, it defaults to 'yes'. m4_define([_LT_ENABLE_FAST_INSTALL], [m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl AC_ARG_ENABLE([fast-install], [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], [p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac], [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) _LT_DECL([fast_install], [enable_fast_install], [0], [Whether or not to optimize for fast installation])dnl ])# _LT_ENABLE_FAST_INSTALL LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) # Old names: AU_DEFUN([AC_ENABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'fast-install' option into LT_INIT's first parameter.]) ]) AU_DEFUN([AC_DISABLE_FAST_INSTALL], [_LT_SET_OPTION([LT_INIT], [disable-fast-install]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'disable-fast-install' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) # _LT_WITH_AIX_SONAME([DEFAULT]) # ---------------------------------- # implement the --with-aix-soname flag, and support the `aix-soname=aix' # and `aix-soname=both' and `aix-soname=svr4' LT_INIT options. DEFAULT # is either `aix', `both' or `svr4'. If omitted, it defaults to `aix'. m4_define([_LT_WITH_AIX_SONAME], [m4_define([_LT_WITH_AIX_SONAME_DEFAULT], [m4_if($1, svr4, svr4, m4_if($1, both, both, aix))])dnl shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[[5-9]]*,yes) AC_MSG_CHECKING([which variant of shared library versioning to provide]) AC_ARG_WITH([aix-soname], [AS_HELP_STRING([--with-aix-soname=aix|svr4|both], [shared library versioning (aka "SONAME") variant to provide on AIX, @<:@default=]_LT_WITH_AIX_SONAME_DEFAULT[@:>@.])], [case $withval in aix|svr4|both) ;; *) AC_MSG_ERROR([Unknown argument to --with-aix-soname]) ;; esac lt_cv_with_aix_soname=$with_aix_soname], [AC_CACHE_VAL([lt_cv_with_aix_soname], [lt_cv_with_aix_soname=]_LT_WITH_AIX_SONAME_DEFAULT) with_aix_soname=$lt_cv_with_aix_soname]) AC_MSG_RESULT([$with_aix_soname]) if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac _LT_DECL([], [shared_archive_member_spec], [0], [Shared archive member basename, for filename based shared library versioning on AIX])dnl ])# _LT_WITH_AIX_SONAME LT_OPTION_DEFINE([LT_INIT], [aix-soname=aix], [_LT_WITH_AIX_SONAME([aix])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=both], [_LT_WITH_AIX_SONAME([both])]) LT_OPTION_DEFINE([LT_INIT], [aix-soname=svr4], [_LT_WITH_AIX_SONAME([svr4])]) # _LT_WITH_PIC([MODE]) # -------------------- # implement the --with-pic flag, and support the 'pic-only' and 'no-pic' # LT_INIT options. # MODE is either 'yes' or 'no'. If omitted, it defaults to 'both'. m4_define([_LT_WITH_PIC], [AC_ARG_WITH([pic], [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac], [pic_mode=m4_default([$1], [default])]) _LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl ])# _LT_WITH_PIC LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) # Old name: AU_DEFUN([AC_LIBTOOL_PICMODE], [_LT_SET_OPTION([LT_INIT], [pic-only]) AC_DIAGNOSE([obsolete], [$0: Remove this warning and the call to _LT_SET_OPTION when you put the 'pic-only' option into LT_INIT's first parameter.]) ]) dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) ## ----------------- ## ## LTDL_INIT Options ## ## ----------------- ## m4_define([_LTDL_MODE], []) LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], [m4_define([_LTDL_MODE], [nonrecursive])]) LT_OPTION_DEFINE([LTDL_INIT], [recursive], [m4_define([_LTDL_MODE], [recursive])]) LT_OPTION_DEFINE([LTDL_INIT], [subproject], [m4_define([_LTDL_MODE], [subproject])]) m4_define([_LTDL_TYPE], []) LT_OPTION_DEFINE([LTDL_INIT], [installable], [m4_define([_LTDL_TYPE], [installable])]) LT_OPTION_DEFINE([LTDL_INIT], [convenience], [m4_define([_LTDL_TYPE], [convenience])]) cddlib-0.94j/m4/ltsugar.m40000644000175000017500000001044013300566262012227 00000000000000# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007-2008, 2011-2017 Free Software # Foundation, Inc. # Written by Gary V. Vaughan, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 6 ltsugar.m4 # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) # lt_join(SEP, ARG1, [ARG2...]) # ----------------------------- # Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their # associated separator. # Needed until we can rely on m4_join from Autoconf 2.62, since all earlier # versions in m4sugar had bugs. m4_define([lt_join], [m4_if([$#], [1], [], [$#], [2], [[$2]], [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) m4_define([_lt_join], [m4_if([$#$2], [2], [], [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) # lt_car(LIST) # lt_cdr(LIST) # ------------ # Manipulate m4 lists. # These macros are necessary as long as will still need to support # Autoconf-2.59, which quotes differently. m4_define([lt_car], [[$1]]) m4_define([lt_cdr], [m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], [$#], 1, [], [m4_dquote(m4_shift($@))])]) m4_define([lt_unquote], $1) # lt_append(MACRO-NAME, STRING, [SEPARATOR]) # ------------------------------------------ # Redefine MACRO-NAME to hold its former content plus 'SEPARATOR''STRING'. # Note that neither SEPARATOR nor STRING are expanded; they are appended # to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). # No SEPARATOR is output if MACRO-NAME was previously undefined (different # than defined and empty). # # This macro is needed until we can rely on Autoconf 2.62, since earlier # versions of m4sugar mistakenly expanded SEPARATOR but not STRING. m4_define([lt_append], [m4_define([$1], m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) # lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) # ---------------------------------------------------------- # Produce a SEP delimited list of all paired combinations of elements of # PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list # has the form PREFIXmINFIXSUFFIXn. # Needed until we can rely on m4_combine added in Autoconf 2.62. m4_define([lt_combine], [m4_if(m4_eval([$# > 3]), [1], [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl [[m4_foreach([_Lt_prefix], [$2], [m4_foreach([_Lt_suffix], ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) # lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) # ----------------------------------------------------------------------- # Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited # by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. m4_define([lt_if_append_uniq], [m4_ifdef([$1], [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], [lt_append([$1], [$2], [$3])$4], [$5])], [lt_append([$1], [$2], [$3])$4])]) # lt_dict_add(DICT, KEY, VALUE) # ----------------------------- m4_define([lt_dict_add], [m4_define([$1($2)], [$3])]) # lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) # -------------------------------------------- m4_define([lt_dict_add_subkey], [m4_define([$1($2:$3)], [$4])]) # lt_dict_fetch(DICT, KEY, [SUBKEY]) # ---------------------------------- m4_define([lt_dict_fetch], [m4_ifval([$3], m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) # lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) # ----------------------------------------------------------------- m4_define([lt_if_dict_fetch], [m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], [$5], [$6])]) # lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) # -------------------------------------------------------------- m4_define([lt_dict_filter], [m4_if([$5], [], [], [lt_join(m4_quote(m4_default([$4], [[, ]])), lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl ]) cddlib-0.94j/m4/ltversion.m40000644000175000017500000000133513300566262012576 00000000000000# ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004, 2011-2017 Free Software Foundation, Inc. # Written by Scott James Remnant, 2004 # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # @configure_input@ # serial 4219 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.4.6.40-6ca5-dirty]) m4_define([LT_PACKAGE_REVISION], [2.4.6.40]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.4.6.40-6ca5-dirty' macro_revision='2.4.6.40' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) cddlib-0.94j/m4/lt~obsolete.m40000644000175000017500000001377413300566262013135 00000000000000# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004-2005, 2007, 2009, 2011-2017 Free Software # Foundation, Inc. # Written by Scott James Remnant, 2004. # # This file is free software; the Free Software Foundation gives # unlimited permission to copy and/or distribute it, with or without # modifications, as long as this notice is preserved. # serial 5 lt~obsolete.m4 # These exist entirely to fool aclocal when bootstrapping libtool. # # In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN), # which have later been changed to m4_define as they aren't part of the # exported API, or moved to Autoconf or Automake where they belong. # # The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN # in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us # using a macro with the same name in our local m4/libtool.m4 it'll # pull the old libtool.m4 in (it doesn't see our shiny new m4_define # and doesn't know about Autoconf macros at all.) # # So we provide this file, which has a silly filename so it's always # included after everything else. This provides aclocal with the # AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything # because those macros already exist, or will be overwritten later. # We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. # # Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. # Yes, that means every name once taken will need to remain here until # we give up compatibility with versions before 1.7, at which point # we need to keep only those names which we still refer to. # This is to help aclocal find these macros, as it can't see m4_define. AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) cddlib-0.94j/Makefile.am0000644000175000017500000000113013300566366012021 00000000000000# Directories where we can build something. SUBDIRS = doc lib-src src # Install the examples into /usr/share/doc/cddlib/examples* nobase_doc_DATA = $(srcdir)/examples/* $(srcdir)/examples-ine/* $(srcdir)/examples-ine3d/* $(srcdir)/examples-ext/* # Additional bits that should be part of the released tarball. EXTRA_DIST = $(nobase_doc_DATA) $(srcdir)/README.core2processor $(srcdir)/bootstrap ACLOCAL_AMFLAGS = -I m4 # All localdebug should be disabled before we package a releasable tarball distcheck-hook: ! find $(srcdir) -type f -print0 | xargs -0 $(EGREP) 'localdebug *= *dd_TRUE' cddlib-0.94j/configure0000755000175000017500000152457313307421344011713 00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.69 for cddlib 0.94j. # # # Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # Use a proper internal environment variable to ensure we don't fall # into an infinite loop, continuously re-executing ourselves. if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then _as_can_reexec=no; export _as_can_reexec; # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 as_fn_exit 255 fi # We don't want this to propagate to other subprocesses. { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi " as_required="as_fn_return () { (exit \$1); } as_fn_success () { as_fn_return 0; } as_fn_failure () { as_fn_return 1; } as_fn_ret_success () { return 0; } as_fn_ret_failure () { return 1; } exitcode=0 as_fn_success || { exitcode=1; echo as_fn_success failed.; } as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : else exitcode=1; echo positional parameters were not saved. fi test x\$exitcode = x0 || exit 1 test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 test \$(( 1 + 1 )) = 2 || exit 1 test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO PATH=/empty FPATH=/empty; export PATH FPATH test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" if (eval "$as_required") 2>/dev/null; then : as_have_required=yes else as_have_required=no fi if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR as_found=false for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. as_found=: case $as_dir in #( /*) for as_base in sh bash ksh sh5; do # Try only shells that exist, to save several forks. as_shell=$as_dir/$as_base if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : CONFIG_SHELL=$as_shell as_have_required=yes if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : break 2 fi fi done;; esac as_found=false done $as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : CONFIG_SHELL=$SHELL as_have_required=yes fi; } IFS=$as_save_IFS if test "x$CONFIG_SHELL" != x; then : export CONFIG_SHELL # We cannot yet assume a decent shell, so we have to provide a # neutralization value for shells without unset; and this also # works around shells that cannot unset nonexistent variables. # Preserve -v and -x to the replacement shell. BASH_ENV=/dev/null ENV=/dev/null (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV case $- in # (((( *v*x* | *x*v* ) as_opts=-vx ;; *v* ) as_opts=-v ;; *x* ) as_opts=-x ;; * ) as_opts= ;; esac exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} # Admittedly, this is quite paranoid, since all the known shells bail # out after a failed `exec'. $as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 exit 255 fi if test x$as_have_required = xno; then : $as_echo "$0: This script requires a shell more modern than all" $as_echo "$0: the shells that I found on your system." if test x${ZSH_VERSION+set} = xset ; then $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" $as_echo "$0: be upgraded to zsh 4.3.4 or later." else $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, $0: including any error possibly output before this $0: message. Then install a modern shell, or manually run $0: the script under such a shell if you do have one." fi exit 1 fi fi fi SHELL=${CONFIG_SHELL-/bin/sh} export SHELL # Unset more variables known to interfere with behavior of common tools. CLICOLOR_FORCE= GREP_OPTIONS= unset CLICOLOR_FORCE GREP_OPTIONS ## --------------------- ## ## M4sh Shell Functions. ## ## --------------------- ## # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits as_lineno_1=$LINENO as_lineno_1a=$LINENO as_lineno_2=$LINENO as_lineno_2a=$LINENO eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) sed -n ' p /[$]LINENO/= ' <$as_myself | sed ' s/[$]LINENO.*/&-/ t lineno b :lineno N :loop s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ t loop s/-\n.*// ' >$as_me.lineno && chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } # If we had to re-execute with $CONFIG_SHELL, we're ensured to have # already done that, so ensure we don't try to do so again and fall # in an infinite loop. This has already happened in practice. _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). . "./$as_me.lineno" # Exit status is that of the last command. exit } ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" SHELL=${CONFIG_SHELL-/bin/sh} test -n "$DJDIR" || exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, # so uname gets run too. ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` # # Initializations. # ac_default_prefix=/usr/local ac_clean_files= ac_config_libobj_dir=. LIBOBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= # Identity of this package. PACKAGE_NAME='cddlib' PACKAGE_TARNAME='cddlib' PACKAGE_VERSION='0.94j' PACKAGE_STRING='cddlib 0.94j' PACKAGE_BUGREPORT='' PACKAGE_URL='' # Factoring default headers for most tests. ac_includes_default="\ #include #ifdef HAVE_SYS_TYPES_H # include #endif #ifdef HAVE_SYS_STAT_H # include #endif #ifdef STDC_HEADERS # include # include #else # ifdef HAVE_STDLIB_H # include # endif #endif #ifdef HAVE_STRING_H # if !defined STDC_HEADERS && defined HAVE_MEMORY_H # include # endif # include #endif #ifdef HAVE_STRINGS_H # include #endif #ifdef HAVE_INTTYPES_H # include #endif #ifdef HAVE_STDINT_H # include #endif #ifdef HAVE_UNISTD_H # include #endif" ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS PS_FALSE PS_TRUE dvips HTML_FALSE HTML_TRUE latex2html PDF_FALSE PDF_TRUE pdflatex LATEX_FALSE LATEX_TRUE latex GMP_FALSE GMP_TRUE CDD_LDFLAGS CPP LT_SYS_LIBRARY_PATH OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL MANIFEST_TOOL RANLIB ac_ct_AR AR LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL OBJDUMP DLLTOOL AS EGREP GREP am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC AM_BACKSLASH AM_DEFAULT_VERBOSITY AM_DEFAULT_V AM_V am__untar am__tar AMTAR am__leading_dot SET_MAKE AWK mkdir_p MKDIR_P INSTALL_STRIP_PROGRAM STRIP install_sh MAKEINFO AUTOHEADER AUTOMAKE AUTOCONF ACLOCAL VERSION PACKAGE CYGPATH_W am__isrc INSTALL_DATA INSTALL_SCRIPT INSTALL_PROGRAM libcdd_version_info target_alias host_alias build_alias LIBS ECHO_T ECHO_N ECHO_C DEFS mandir localedir libdir psdir pdfdir dvidir htmldir infodir docdir oldincludedir includedir localstatedir sharedstatedir sysconfdir datadir datarootdir libexecdir sbindir bindir program_transform_name prefix exec_prefix PACKAGE_URL PACKAGE_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_silent_rules enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_aix_soname with_gnu_ld with_sysroot enable_libtool_lock ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS LT_SYS_LIBRARY_PATH CPP' # Initialize some variables set by options. ac_init_help= ac_init_version=false ac_unrecognized_opts= ac_unrecognized_sep= # The variables have the same names as the options, with # dashes changed to underlines. cache_file=/dev/null exec_prefix=NONE no_create= no_recursion= prefix=NONE program_prefix=NONE program_suffix=NONE program_transform_name=s,x,x, silent= site= srcdir= verbose= x_includes=NONE x_libraries=NONE # Installation directory options. # These are left unexpanded so users can "make install exec_prefix=/foo" # and all the variables that are supposed to be based on exec_prefix # by default will actually change. # Use braces instead of parens because sh, perl, etc. also accept them. # (The list follows the same order as the GNU Coding Standards.) bindir='${exec_prefix}/bin' sbindir='${exec_prefix}/sbin' libexecdir='${exec_prefix}/libexec' datarootdir='${prefix}/share' datadir='${datarootdir}' sysconfdir='${prefix}/etc' sharedstatedir='${prefix}/com' localstatedir='${prefix}/var' includedir='${prefix}/include' oldincludedir='/usr/include' docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' infodir='${datarootdir}/info' htmldir='${docdir}' dvidir='${docdir}' pdfdir='${docdir}' psdir='${docdir}' libdir='${exec_prefix}/lib' localedir='${datarootdir}/locale' mandir='${datarootdir}/man' ac_prev= ac_dashdash= for ac_option do # If the previous option needs an argument, assign it. if test -n "$ac_prev"; then eval $ac_prev=\$ac_option ac_prev= continue fi case $ac_option in *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; *=) ac_optarg= ;; *) ac_optarg=yes ;; esac # Accept the important Cygnus configure options, so we can diagnose typos. case $ac_dashdash$ac_option in --) ac_dashdash=yes ;; -bindir | --bindir | --bindi | --bind | --bin | --bi) ac_prev=bindir ;; -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) bindir=$ac_optarg ;; -build | --build | --buil | --bui | --bu) ac_prev=build_alias ;; -build=* | --build=* | --buil=* | --bui=* | --bu=*) build_alias=$ac_optarg ;; -cache-file | --cache-file | --cache-fil | --cache-fi \ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) ac_prev=cache_file ;; -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) cache_file=$ac_optarg ;; --config-cache | -C) cache_file=config.cache ;; -datadir | --datadir | --datadi | --datad) ac_prev=datadir ;; -datadir=* | --datadir=* | --datadi=* | --datad=*) datadir=$ac_optarg ;; -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ | --dataroo | --dataro | --datar) ac_prev=datarootdir ;; -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) datarootdir=$ac_optarg ;; -disable-* | --disable-*) ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=no ;; -docdir | --docdir | --docdi | --doc | --do) ac_prev=docdir ;; -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) docdir=$ac_optarg ;; -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) ac_prev=dvidir ;; -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) dvidir=$ac_optarg ;; -enable-* | --enable-*) ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid feature name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "enable_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval enable_$ac_useropt=\$ac_optarg ;; -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ | --exec | --exe | --ex) ac_prev=exec_prefix ;; -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ | --exec=* | --exe=* | --ex=*) exec_prefix=$ac_optarg ;; -gas | --gas | --ga | --g) # Obsolete; use --with-gas. with_gas=yes ;; -help | --help | --hel | --he | -h) ac_init_help=long ;; -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) ac_init_help=recursive ;; -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) ac_init_help=short ;; -host | --host | --hos | --ho) ac_prev=host_alias ;; -host=* | --host=* | --hos=* | --ho=*) host_alias=$ac_optarg ;; -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) ac_prev=htmldir ;; -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ | --ht=*) htmldir=$ac_optarg ;; -includedir | --includedir | --includedi | --included | --include \ | --includ | --inclu | --incl | --inc) ac_prev=includedir ;; -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ | --includ=* | --inclu=* | --incl=* | --inc=*) includedir=$ac_optarg ;; -infodir | --infodir | --infodi | --infod | --info | --inf) ac_prev=infodir ;; -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) infodir=$ac_optarg ;; -libdir | --libdir | --libdi | --libd) ac_prev=libdir ;; -libdir=* | --libdir=* | --libdi=* | --libd=*) libdir=$ac_optarg ;; -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ | --libexe | --libex | --libe) ac_prev=libexecdir ;; -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ | --libexe=* | --libex=* | --libe=*) libexecdir=$ac_optarg ;; -localedir | --localedir | --localedi | --localed | --locale) ac_prev=localedir ;; -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) localedir=$ac_optarg ;; -localstatedir | --localstatedir | --localstatedi | --localstated \ | --localstate | --localstat | --localsta | --localst | --locals) ac_prev=localstatedir ;; -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) localstatedir=$ac_optarg ;; -mandir | --mandir | --mandi | --mand | --man | --ma | --m) ac_prev=mandir ;; -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) mandir=$ac_optarg ;; -nfp | --nfp | --nf) # Obsolete; use --without-fp. with_fp=no ;; -no-create | --no-create | --no-creat | --no-crea | --no-cre \ | --no-cr | --no-c | -n) no_create=yes ;; -no-recursion | --no-recursion | --no-recursio | --no-recursi \ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) no_recursion=yes ;; -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ | --oldin | --oldi | --old | --ol | --o) ac_prev=oldincludedir ;; -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) oldincludedir=$ac_optarg ;; -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) ac_prev=prefix ;; -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) prefix=$ac_optarg ;; -program-prefix | --program-prefix | --program-prefi | --program-pref \ | --program-pre | --program-pr | --program-p) ac_prev=program_prefix ;; -program-prefix=* | --program-prefix=* | --program-prefi=* \ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) program_prefix=$ac_optarg ;; -program-suffix | --program-suffix | --program-suffi | --program-suff \ | --program-suf | --program-su | --program-s) ac_prev=program_suffix ;; -program-suffix=* | --program-suffix=* | --program-suffi=* \ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) program_suffix=$ac_optarg ;; -program-transform-name | --program-transform-name \ | --program-transform-nam | --program-transform-na \ | --program-transform-n | --program-transform- \ | --program-transform | --program-transfor \ | --program-transfo | --program-transf \ | --program-trans | --program-tran \ | --progr-tra | --program-tr | --program-t) ac_prev=program_transform_name ;; -program-transform-name=* | --program-transform-name=* \ | --program-transform-nam=* | --program-transform-na=* \ | --program-transform-n=* | --program-transform-=* \ | --program-transform=* | --program-transfor=* \ | --program-transfo=* | --program-transf=* \ | --program-trans=* | --program-tran=* \ | --progr-tra=* | --program-tr=* | --program-t=*) program_transform_name=$ac_optarg ;; -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) ac_prev=pdfdir ;; -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) pdfdir=$ac_optarg ;; -psdir | --psdir | --psdi | --psd | --ps) ac_prev=psdir ;; -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) psdir=$ac_optarg ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) silent=yes ;; -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) ac_prev=sbindir ;; -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ | --sbi=* | --sb=*) sbindir=$ac_optarg ;; -sharedstatedir | --sharedstatedir | --sharedstatedi \ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ | --sharedst | --shareds | --shared | --share | --shar \ | --sha | --sh) ac_prev=sharedstatedir ;; -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ | --sha=* | --sh=*) sharedstatedir=$ac_optarg ;; -site | --site | --sit) ac_prev=site ;; -site=* | --site=* | --sit=*) site=$ac_optarg ;; -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) ac_prev=srcdir ;; -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) srcdir=$ac_optarg ;; -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ | --syscon | --sysco | --sysc | --sys | --sy) ac_prev=sysconfdir ;; -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) sysconfdir=$ac_optarg ;; -target | --target | --targe | --targ | --tar | --ta | --t) ac_prev=target_alias ;; -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) target_alias=$ac_optarg ;; -v | -verbose | --verbose | --verbos | --verbo | --verb) verbose=yes ;; -version | --version | --versio | --versi | --vers | -V) ac_init_version=: ;; -with-* | --with-*) ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=\$ac_optarg ;; -without-* | --without-*) ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` # Reject names that are not valid shell variable names. expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && as_fn_error $? "invalid package name: $ac_useropt" ac_useropt_orig=$ac_useropt ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` case $ac_user_opts in *" "with_$ac_useropt" "*) ;; *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" ac_unrecognized_sep=', ';; esac eval with_$ac_useropt=no ;; --x) # Obsolete; use --with-x. with_x=yes ;; -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ | --x-incl | --x-inc | --x-in | --x-i) ac_prev=x_includes ;; -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) x_includes=$ac_optarg ;; -x-libraries | --x-libraries | --x-librarie | --x-librari \ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) ac_prev=x_libraries ;; -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) x_libraries=$ac_optarg ;; -*) as_fn_error $? "unrecognized option: \`$ac_option' Try \`$0 --help' for more information" ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. case $ac_envvar in #( '' | [0-9]* | *[!_$as_cr_alnum]* ) as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; esac eval $ac_envvar=\$ac_optarg export $ac_envvar ;; *) # FIXME: should be removed in autoconf 3.0. $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" ;; esac done if test -n "$ac_prev"; then ac_option=--`echo $ac_prev | sed 's/_/-/g'` as_fn_error $? "missing argument to $ac_option" fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; esac fi # Check all directory arguments for consistency. for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ datadir sysconfdir sharedstatedir localstatedir includedir \ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ libdir localedir mandir do eval ac_val=\$$ac_var # Remove trailing slashes. case $ac_val in */ ) ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` eval $ac_var=\$ac_val;; esac # Be sure to have absolute directory names. case $ac_val in [\\/$]* | ?:[\\/]* ) continue;; NONE | '' ) case $ac_var in *prefix ) continue;; esac;; esac as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" done # There might be people who depend on the old broken behavior: `$host' # used to hold the argument of --host etc. # FIXME: To remove some day. build=$build_alias host=$host_alias target=$target_alias # FIXME: To remove some day. if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi fi ac_tool_prefix= test -n "$host_alias" && ac_tool_prefix=$host_alias- test "$silent" = yes && exec 6>/dev/null ac_pwd=`pwd` && test -n "$ac_pwd" && ac_ls_di=`ls -di .` && ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || as_fn_error $? "working directory cannot be determined" test "X$ac_ls_di" = "X$ac_pwd_ls_di" || as_fn_error $? "pwd does not report name of working directory" # Find the source files, if location was not specified. if test -z "$srcdir"; then ac_srcdir_defaulted=yes # Try the directory containing this script, then the parent directory. ac_confdir=`$as_dirname -- "$as_myself" || $as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_myself" : 'X\(//\)[^/]' \| \ X"$as_myself" : 'X\(//\)$' \| \ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_myself" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` srcdir=$ac_confdir if test ! -r "$srcdir/$ac_unique_file"; then srcdir=.. fi else ac_srcdir_defaulted=no fi if test ! -r "$srcdir/$ac_unique_file"; then test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" pwd)` # When building in place, set srcdir=. if test "$ac_abs_confdir" = "$ac_pwd"; then srcdir=. fi # Remove unnecessary trailing slashes from srcdir. # Double slashes in file names in object file debugging info # mess up M-x gdb in Emacs. case $srcdir in */) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; esac for ac_var in $ac_precious_vars; do eval ac_env_${ac_var}_set=\${${ac_var}+set} eval ac_env_${ac_var}_value=\$${ac_var} eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} eval ac_cv_env_${ac_var}_value=\$${ac_var} done # # Report the --help message. # if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF \`configure' configures cddlib 0.94j to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print \`checking ...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for \`--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or \`..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [$ac_default_prefix] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, \`make install' will install all the files in \`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify an installation prefix other than \`$ac_default_prefix' using \`--prefix', for instance \`--prefix=\$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/cddlib] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] _ACEOF cat <<\_ACEOF Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] _ACEOF fi if test -n "$ac_init_help"; then case $ac_init_help in short | recursive ) echo "Configuration of cddlib 0.94j:";; esac cat <<\_ACEOF Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --disable-libtool-lock avoid locking (might break parallel builds) Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot[=DIR] Search for dependent libraries within DIR (or the compiler's sysroot if not specified). Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if you have headers in a nonstandard directory LT_SYS_LIBRARY_PATH User-defined run-time library search path. CPP C preprocessor Use these variables to override the choices made by `configure' or to help it to find libraries and programs with nonstandard names/locations. Report bugs to the package provider. _ACEOF ac_status=$? fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue test -d "$ac_dir" || { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || continue ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. if test -f "$ac_srcdir/configure.gnu"; then echo && $SHELL "$ac_srcdir/configure.gnu" --help=recursive elif test -f "$ac_srcdir/configure"; then echo && $SHELL "$ac_srcdir/configure" --help=recursive else $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? cd "$ac_pwd" || { ac_status=$?; break; } done fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF cddlib configure 0.94j generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF exit fi ## ------------------------ ## ## Autoconf initialization. ## ## ------------------------ ## # ac_fn_c_try_compile LINENO # -------------------------- # Try to compile conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_compile # ac_fn_c_try_link LINENO # ----------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_link () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack rm -f conftest.$ac_objext conftest$ac_exeext if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || test -x conftest$ac_exeext }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would # interfere with the next link command; also delete a directory that is # left behind by Apple's compiler. We do this before executing the actions. rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_link # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES # ------------------------------------------------------- # Tests whether HEADER exists and can be compiled using the include files in # INCLUDES, setting the cache variable VAR accordingly. ac_fn_c_check_header_compile () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ $4 #include <$2> _ACEOF if ac_fn_c_try_compile "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_header_compile # ac_fn_c_try_cpp LINENO # ---------------------- # Try to preprocess conftest.$ac_ext, and return whether this succeeded. ac_fn_c_try_cpp () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_cpp conftest.$ac_ext" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err ac_status=$? if test -s conftest.err; then grep -v '^ *+' conftest.err >conftest.er1 cat conftest.er1 >&5 mv -f conftest.er1 conftest.err fi $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } > conftest.i && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : ac_retval=0 else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=1 fi eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_cpp # ac_fn_c_try_run LINENO # ---------------------- # Try to link conftest.$ac_ext, and return whether this succeeded. Assumes # that executables *can* be run. ac_fn_c_try_run () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then : ac_retval=0 else $as_echo "$as_me: program exited with status $ac_status" >&5 $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_retval=$ac_status fi rm -rf conftest.dSYM conftest_ipa8_conftest.oo eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno as_fn_set_status $ac_retval } # ac_fn_c_try_run # ac_fn_c_check_func LINENO FUNC VAR # ---------------------------------- # Tests whether FUNC exists, setting the cache variable VAR accordingly ac_fn_c_check_func () { as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 $as_echo_n "checking for $2... " >&6; } if eval \${$3+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Define $2 to an innocuous variant, in case declares $2. For example, HP-UX 11i declares gettimeofday. */ #define $2 innocuous_$2 /* System header to define __stub macros and hopefully few prototypes, which can conflict with char $2 (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef $2 /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char $2 (); /* The GNU C library defines this for functions which it implements to always fail with ENOSYS. Some functions are actually named something starting with __ and the normal name is an alias. */ #if defined __stub_$2 || defined __stub___$2 choke me #endif int main () { return $2 (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : eval "$3=yes" else eval "$3=no" fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi eval ac_res=\$$3 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno } # ac_fn_c_check_func cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by cddlib $as_me 0.94j, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ _ACEOF exec 5>>config.log { cat <<_ASUNAME ## --------- ## ## Platform. ## ## --------- ## hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` uname -m = `(uname -m) 2>/dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` /bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` /bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` /usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` /bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` /bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` _ASUNAME as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. $as_echo "PATH: $as_dir" done IFS=$as_save_IFS } >&5 cat >&5 <<_ACEOF ## ----------- ## ## Core tests. ## ## ----------- ## _ACEOF # Keep a trace of the command line. # Strip out --no-create and --no-recursion so they do not pile up. # Strip out --silent because we don't want to record it for future runs. # Also quote any args containing shell meta-characters. # Make two passes to allow for proper duplicate-argument suppression. ac_configure_args= ac_configure_args0= ac_configure_args1= ac_must_keep_next=false for ac_pass in 1 2 do for ac_arg do case $ac_arg in -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil) continue ;; *\'*) ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; esac case $ac_pass in 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; 2) as_fn_append ac_configure_args1 " '$ac_arg'" if test $ac_must_keep_next = true; then ac_must_keep_next=false # Got value, back to normal. else case $ac_arg in *=* | --config-cache | -C | -disable-* | --disable-* \ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ | -with-* | --with-* | -without-* | --without-* | --x) case "$ac_configure_args0 " in "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; esac ;; -* ) ac_must_keep_next=true ;; esac fi as_fn_append ac_configure_args " '$ac_arg'" ;; esac done done { ac_configure_args0=; unset ac_configure_args0;} { ac_configure_args1=; unset ac_configure_args1;} # When interrupted or exit'd, cleanup temporary files, and complete # config.log. We remove comments because anyway the quotes in there # would cause problems or look ugly. # WARNING: Use '\'' to represent an apostrophe within the trap. # WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. trap 'exit_status=$? # Save into config.log some information that might help in debugging. { echo $as_echo "## ---------------- ## ## Cache variables. ## ## ---------------- ##" echo # The following way of writing the cache mishandles newlines in values, ( for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( *${as_nl}ac_space=\ *) sed -n \ "s/'\''/'\''\\\\'\'''\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" ;; #( *) sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) echo $as_echo "## ----------------- ## ## Output variables. ## ## ----------------- ##" echo for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo if test -n "$ac_subst_files"; then $as_echo "## ------------------- ## ## File substitutions. ## ## ------------------- ##" echo for ac_var in $ac_subst_files do eval ac_val=\$$ac_var case $ac_val in *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; esac $as_echo "$ac_var='\''$ac_val'\''" done | sort echo fi if test -s confdefs.h; then $as_echo "## ----------- ## ## confdefs.h. ## ## ----------- ##" echo cat confdefs.h echo fi test "$ac_signal" != 0 && $as_echo "$as_me: caught signal $ac_signal" $as_echo "$as_me: exit $exit_status" } >&5 rm -f core *.core core.conftest.* && rm -f -r conftest* confdefs* conf$$* $ac_clean_files && exit $exit_status ' 0 for ac_signal in 1 2 13 15; do trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal done ac_signal=0 # confdefs.h avoids OS command line length limits that DEFS can exceed. rm -f -r conftest* confdefs.h $as_echo "/* confdefs.h */" > confdefs.h # Predefined preprocessor variables. cat >>confdefs.h <<_ACEOF #define PACKAGE_NAME "$PACKAGE_NAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_TARNAME "$PACKAGE_TARNAME" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_VERSION "$PACKAGE_VERSION" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_STRING "$PACKAGE_STRING" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" _ACEOF cat >>confdefs.h <<_ACEOF #define PACKAGE_URL "$PACKAGE_URL" _ACEOF # Let the site file select an alternate cache file if it wants to. # Prefer an explicitly selected file to automatically selected ones. ac_site_file1=NONE ac_site_file2=NONE if test -n "$CONFIG_SITE"; then # We do not want a PATH search for config.site. case $CONFIG_SITE in #(( -*) ac_site_file1=./$CONFIG_SITE;; */*) ac_site_file1=$CONFIG_SITE;; *) ac_site_file1=./$CONFIG_SITE;; esac elif test "x$prefix" != xNONE; then ac_site_file1=$prefix/share/config.site ac_site_file2=$prefix/etc/config.site else ac_site_file1=$ac_default_prefix/share/config.site ac_site_file2=$ac_default_prefix/etc/config.site fi for ac_site_file in "$ac_site_file1" "$ac_site_file2" do test "x$ac_site_file" = xNONE && continue if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 $as_echo "$as_me: loading site script $ac_site_file" >&6;} sed 's/^/| /' "$ac_site_file" >&5 . "$ac_site_file" \ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "failed to load site script $ac_site_file See \`config.log' for more details" "$LINENO" 5; } fi done if test -r "$cache_file"; then # Some versions of bash will fail to source /dev/null (special files # actually), so we avoid doing that. DJGPP emulates it as a regular file. if test /dev/null != "$cache_file" && test -f "$cache_file"; then { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 $as_echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in [\\/]* | ?:[\\/]* ) . "$cache_file";; *) . "./$cache_file";; esac fi else { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 $as_echo "$as_me: creating cache $cache_file" >&6;} >$cache_file fi # Check that the precious variables saved in the cache have kept the same # value. ac_cache_corrupted=false for ac_var in $ac_precious_vars; do eval ac_old_set=\$ac_cv_env_${ac_var}_set eval ac_new_set=\$ac_env_${ac_var}_set eval ac_old_val=\$ac_cv_env_${ac_var}_value eval ac_new_val=\$ac_env_${ac_var}_value case $ac_old_set,$ac_new_set in set,) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} ac_cache_corrupted=: ;; ,set) { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 $as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} ac_cache_corrupted=: ;; ,);; *) if test "x$ac_old_val" != "x$ac_new_val"; then # differences in whitespace do not lead to failure. ac_old_val_w=`echo x $ac_old_val` ac_new_val_w=`echo x $ac_new_val` if test "$ac_old_val_w" != "$ac_new_val_w"; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 $as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} ac_cache_corrupted=: else { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 $as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} eval $ac_var=\$ac_old_val fi { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 $as_echo "$as_me: current value: \`$ac_new_val'" >&2;} fi;; esac # Pass precious variables to config.status. if test "$ac_new_set" = set; then case $ac_new_val in *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; *) ac_arg=$ac_var=$ac_new_val ;; esac case " $ac_configure_args " in *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. *) as_fn_append ac_configure_args " '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 $as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 fi ## -------------------- ## ## Main body of script. ## ## -------------------- ## ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu libcdd_version_info=0:0:0 am__api_version='1.15' ac_aux_dir= for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do if test -f "$ac_dir/install-sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install-sh -c" break elif test -f "$ac_dir/install.sh"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/install.sh -c" break elif test -f "$ac_dir/shtool"; then ac_aux_dir=$ac_dir ac_install_sh="$ac_aux_dir/shtool install -c" break fi done if test -z "$ac_aux_dir"; then as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 fi # These three variables are undocumented and unsupported, # and are intended to be withdrawn in a future Autoconf release. # They can cause serious problems if a builder's source tree is in a directory # whose full name contains unusual characters. ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: # SysV /etc/install, /usr/sbin/install # SunOS /usr/etc/install # IRIX /sbin/install # AIX /bin/install # AmigaOS /C/install, which installs bootblocks on floppy discs # AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag # AFS /usr/afsws/bin/install, which mishandles nonexistent args # SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" # OS/2's system install, which has a completely different semantic # ./install, which can be erroneously created by make from ./install.sh. # Reject install programs that cannot install multiple files. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if ${ac_cv_path_install+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. # Account for people who put trailing slashes in PATH elements. case $as_dir/ in #(( ./ | .// | /[cC]/* | \ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ /usr/ucb/* ) ;; *) # OSF1 and SCO ODT 3.0 have their own names for install. # Don't use installbsd from OSF since it installs stuff as root # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. : elif test $ac_prog = install && grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # program-specific install script used by HP pwplus--don't use. : else rm -rf conftest.one conftest.two conftest.dir echo one > conftest.one echo two > conftest.two mkdir conftest.dir if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && test -s conftest.one && test -s conftest.two && test -s conftest.dir/conftest.one && test -s conftest.dir/conftest.two then ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" break 3 fi fi fi done done ;; esac done IFS=$as_save_IFS rm -rf conftest.one conftest.two conftest.dir fi if test "${ac_cv_path_install+set}" = set; then INSTALL=$ac_cv_path_install else # As a last resort, use the slow shell script. Don't cache a # value for INSTALL within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. INSTALL=$ac_install_sh fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 $as_echo "$INSTALL" >&6; } # Use test -z because SunOS4 sh mishandles braces in ${var-val}. # It thinks the first close brace ends the variable substitution. test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[\\\"\#\$\&\'\`$am_lf]*) as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$*" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$*" != "X $srcdir/configure conftest.file" \ && test "$*" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". as_fn_error $? "ls -t appears to fail. Make sure there is not a broken alias in your environment" "$LINENO" 5 fi if test "$2" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$2" = conftest.file ) then # Ok. : else as_fn_error $? "newly created file is older than distributed files! Check your system clock" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi rm -f conftest.file test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. test "$program_suffix" != NONE && program_transform_name="s&\$&$program_suffix&;$program_transform_name" # Double any \ or $. # By default was `s,x,x', remove it if useless. ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 $as_echo_n "checking for a thread-safe mkdir -p... " >&6; } if test -z "$MKDIR_P"; then if ${ac_cv_path_mkdir+:} false; then : $as_echo_n "(cached) " >&6 else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ 'mkdir (fileutils) '4.1*) ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext break 3;; esac done done done IFS=$as_save_IFS fi test -d ./--version && rmdir ./--version if test "${ac_cv_path_mkdir+set}" = set; then MKDIR_P="$ac_cv_path_mkdir -p" else # As a last resort, use the slow shell script. Don't cache a # value for MKDIR_P within a source directory, because that will # break other packages using the cache if that directory is # removed, or if the value is a relative name. MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AWK+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AWK"; then ac_cv_prog_AWK="$AWK" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AWK=$ac_cv_prog_AWK if test -n "$AWK"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 $as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } set x ${MAKE-make} ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : $as_echo_n "(cached) " >&6 else cat >conftest.make <<\_ACEOF SHELL = /bin/sh all: @echo '@@@%%%=$(MAKE)=@@@%%%' _ACEOF # GNU make sometimes prints "make[1]: Entering ...", which would confuse us. case `${MAKE-make} -f conftest.make 2>/dev/null` in *@@@%%%=?*=@@@%%%*) eval ac_cv_prog_make_${ac_make}_set=yes;; *) eval ac_cv_prog_make_${ac_make}_set=no;; esac rm -f conftest.make fi if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } SET_MAKE="MAKE=${MAKE-make}" fi rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi case $enable_silent_rules in # ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=1;; esac am_make=${MAKE-make} { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 $as_echo_n "checking whether $am_make supports nested variables... " >&6; } if ${am_cv_make_support_nested_variables+:} false; then : $as_echo_n "(cached) " >&6 else if $as_echo 'TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 $as_echo "$am_cv_make_support_nested_variables" >&6; } if test $am_cv_make_support_nested_variables = yes; then AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." am__isrc=' -I$(srcdir)' # test to see if srcdir already configured if test -f $srcdir/config.status; then as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi # Define the identity of the package. PACKAGE='cddlib' VERSION='0.94j' cat >>confdefs.h <<_ACEOF #define PACKAGE "$PACKAGE" _ACEOF cat >>confdefs.h <<_ACEOF #define VERSION "$VERSION" _ACEOF # Some tools Automake needs. ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # mkdir_p='$(MKDIR_P)' # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar pax cpio none' am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 fi fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. set dummy ${ac_tool_prefix}gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_CC"; then ac_ct_CC=$CC # Extract the first word of "gcc", so it can be a program name with args. set dummy gcc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi else CC="$ac_cv_prog_CC" fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. set dummy ${ac_tool_prefix}cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi fi if test -z "$CC"; then # Extract the first word of "cc", so it can be a program name with args. set dummy cc; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else ac_prog_rejected=no as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue fi ac_cv_prog_CC="cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS if test $ac_prog_rejected = yes; then # We found a bogon in the path, so make sure we never use it. set dummy $ac_cv_prog_CC shift if test $# != 0; then # We chose a different compiler from the bogus one. # However, it has the same basename, so the bogon will be chosen # first if we set CC to just the basename; use the full file name. shift ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" fi fi fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$CC"; then if test -n "$ac_tool_prefix"; then for ac_prog in cl.exe do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$CC"; then ac_cv_prog_CC="$CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi CC=$ac_cv_prog_CC if test -n "$CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$CC" && break done fi if test -z "$CC"; then ac_ct_CC=$CC for ac_prog in cl.exe do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_CC+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_CC"; then ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_CC=$ac_cv_prog_ac_ct_CC if test -n "$ac_ct_CC"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_CC" && break done if test "x$ac_ct_CC" = x; then CC="" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac CC=$ac_ct_CC fi fi fi test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "no acceptable C compiler found in \$PATH See \`config.log' for more details" "$LINENO" 5; } # Provide some information about the compiler. $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 for ac_option in --version -v -V -qversion; do { { ac_try="$ac_compiler $ac_option >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compiler $ac_option >&5") 2>conftest.err ac_status=$? if test -s conftest.err; then sed '10a\ ... rest of stderr output deleted ... 10q' conftest.err >conftest.er1 cat conftest.er1 >&5 fi rm -f conftest.er1 conftest.err $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } done cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` # The possible output files: ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" ac_rmfiles= for ac_file in $ac_files do case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; * ) ac_rmfiles="$ac_rmfiles $ac_file";; esac done rm -f $ac_rmfiles if { { ac_try="$ac_link_default" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. # So ignore a value of `no', otherwise this would lead to `EXEEXT = no' # in a Makefile. We should not override ac_cv_exeext if it was cached, # so that the user can short-circuit this test for compilers unknown to # Autoconf. for ac_file in $ac_files '' do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; [ab].out ) # We found the default executable, but exeext='' is most # certainly right. break;; *.* ) if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; then :; else ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` fi # We set ac_cv_exeext here because the later test for it is not # safe: cross compilers may not add the suffix if given an `-o' # argument, so we may need to know it at that point already. # Even if this section looks crufty: it has the advantage of # actually working. break;; * ) break;; esac done test "$ac_cv_exeext" = no && ac_cv_exeext= else ac_file='' fi if test -z "$ac_file"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error 77 "C compiler cannot create executables See \`config.log' for more details" "$LINENO" 5; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } ac_exeext=$ac_cv_exeext rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 $as_echo_n "checking for suffix of executables... " >&6; } if { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : # If both `conftest.exe' and `conftest' are `present' (well, observable) # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will # work properly (i.e., refer to `conftest.exe'), while it won't with # `rm'. for ac_file in conftest.exe conftest conftest.*; do test -f "$ac_file" || continue case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` break;; * ) break;; esac done else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of executables: cannot compile and link See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest conftest$ac_cv_exeext { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include int main () { FILE *f = fopen ("conftest.out", "w"); return ferror (f) || fclose (f) != 0; ; return 0; } _ACEOF ac_clean_files="$ac_clean_files conftest.out" # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } if test "$cross_compiling" != yes; then { { ac_try="$ac_link" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if { ac_try='./conftest$ac_cv_exeext' { { case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details" "$LINENO" 5; } fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out ac_clean_files=$ac_clean_files_save { $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if ${ac_cv_objext+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF rm -f conftest.o conftest.obj if { { ac_try="$ac_compile" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" $as_echo "$ac_try_echo"; } >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then : for ac_file in conftest.o conftest.obj conftest.*; do test -f "$ac_file" || continue; case $ac_file in *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` break;; esac done else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "cannot compute suffix of object files: cannot compile See \`config.log' for more details" "$LINENO" 5; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 $as_echo_n "checking whether we are using the GNU C compiler... " >&6; } if ${ac_cv_c_compiler_gnu+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_compiler_gnu=yes else ac_compiler_gnu=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 $as_echo "$ac_cv_c_compiler_gnu" >&6; } if test $ac_compiler_gnu = yes; then GCC=yes else GCC= fi ac_test_CFLAGS=${CFLAGS+set} ac_save_CFLAGS=$CFLAGS { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if ${ac_cv_prog_cc_g+:} false; then : $as_echo_n "(cached) " >&6 else ac_save_c_werror_flag=$ac_c_werror_flag ac_c_werror_flag=yes ac_cv_prog_cc_g=no CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes else CFLAGS="" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : else ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_g=yes fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 $as_echo "$ac_cv_prog_cc_g" >&6; } if test "$ac_test_CFLAGS" = set; then CFLAGS=$ac_save_CFLAGS elif test $ac_cv_prog_cc_g = yes; then if test "$GCC" = yes; then CFLAGS="-g -O2" else CFLAGS="-g" fi else if test "$GCC" = yes; then CFLAGS="-O2" else CFLAGS= fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if ${ac_cv_prog_cc_c89+:} false; then : $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); static char *e (p, i) char **p; int i; { return p[i]; } static char *f (char * (*g) (char **, int), char **p, ...) { char *s; va_list v; va_start (v,p); s = g (p, va_arg (v,int)); va_end (v); return s; } /* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has function prototypes and stuff, but not '\xHH' hex character constants. These don't provoke an error unfortunately, instead are silently treated as 'x'. The following induces an error, until -std is added to get proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an array size at least. It's necessary to write '\x00'==0 to get something that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; /* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters inside strings and character constants. */ #define FOO(x) 'x' int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); int argc; char **argv; int main () { return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; ; return 0; } _ACEOF for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" do CC="$ac_save_CC $ac_arg" if ac_fn_c_try_compile "$LINENO"; then : ac_cv_prog_cc_c89=$ac_arg fi rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext CC=$ac_save_CC fi # AC_CACHE_VAL case "x$ac_cv_prog_cc_c89" in x) { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; esac if test "x$ac_cv_prog_cc_c89" != xno; then : fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 $as_echo_n "checking whether $CC understands -c and -o together... " >&6; } if ${am_cv_prog_cc_c_o+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 $as_echo "$am_cv_prog_cc_c_o" >&6; } if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 $as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 $as_echo "$_am_result" >&6; } rm -f confinc confmf # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : enableval=$enable_dependency_tracking; fi if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= AMDEP_FALSE='#' else AMDEP_TRUE='#' AMDEP_FALSE= fi depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if ${am_cv_CC_dependencies_compiler_type+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_CC_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` fi am__universal=false case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_CC_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_CC_dependencies_compiler_type=none fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 $as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type if test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then am__fastdepCC_TRUE= am__fastdepCC_FALSE='#' else am__fastdepCC_TRUE='#' am__fastdepCC_FALSE= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$GREP"; then ac_path_GREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in *GNU*) ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'GREP' >> "conftest.nl" "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_GREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_GREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_GREP"; then as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if ${ac_cv_path_EGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 then ac_cv_path_EGREP="$GREP -E" else if test -z "$EGREP"; then ac_path_EGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in *GNU*) ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'EGREP' >> "conftest.nl" "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_EGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_EGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_EGREP"; then as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" case `pwd` in *\ * | *\ *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 $as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; esac macro_version='2.4.6.40-6ca5-dirty' macro_revision='2.4.6.40' ltmain=$ac_aux_dir/ltmain.sh # Make sure we can run config.sub. $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if ${ac_cv_build+:} false; then : $as_echo_n "(cached) " >&6 else ac_build_alias=$build_alias test "x$ac_build_alias" = x && ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` test "x$ac_build_alias" = x && as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; esac build=$ac_cv_build ac_save_IFS=$IFS; IFS='-' set x $ac_cv_build shift build_cpu=$1 build_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: build_os=$* IFS=$ac_save_IFS case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if ${ac_cv_host+:} false; then : $as_echo_n "(cached) " >&6 else if test "x$host_alias" = x; then ac_cv_host=$ac_cv_build else ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; esac host=$ac_cv_host ac_save_IFS=$IFS; IFS='-' set x $ac_cv_host shift host_cpu=$1 host_vendor=$2 shift; shift # Remember, the first character of IFS is used to create $*, # except with old shells: host_os=$* IFS=$ac_save_IFS case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac # Backslashify metacharacters that are still active within # double-quoted strings. sed_quote_subst='s/\(["`$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution to delay expansion of an escaped shell variable in a # double_quote_subst'ed string. delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' # Sed substitution to delay expansion of an escaped single quote. delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' # Sed substitution to avoid accidental globbing in evaled expressions no_glob_subst='s/\*/\\\*/g' ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 $as_echo_n "checking how to print strings... " >&6; } # Test print first, because it will be a builtin if present. if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='print -r --' elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then ECHO='printf %s\n' else # Use this function as a fallback that always works. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } ECHO='func_fallback_echo' fi # func_echo_all arg... # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "" } case $ECHO in printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 $as_echo "printf" >&6; } ;; print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 $as_echo "print -r" >&6; } ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 $as_echo "cat" >&6; } ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 $as_echo_n "checking for a sed that does not truncate output... " >&6; } if ${ac_cv_path_SED+:} false; then : $as_echo_n "(cached) " >&6 else ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for ac_i in 1 2 3 4 5 6 7; do ac_script="$ac_script$as_nl$ac_script" done echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed { ac_script=; unset ac_script;} if test -z "$SED"; then ac_path_SED_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in sed gsed; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_SED" || continue # Check for GNU ac_path_SED and select it if it is found. # Check for GNU $ac_path_SED case `"$ac_path_SED" --version 2>&1` in *GNU*) ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo '' >> "conftest.nl" "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_SED_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_SED="$ac_path_SED" ac_path_SED_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_SED_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_SED"; then as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 $as_echo "$ac_cv_path_SED" >&6; } SED="$ac_cv_path_SED" rm -f conftest.sed test -z "$SED" && SED=sed Xsed="$SED -e 1s/^X//" { $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if ${ac_cv_path_FGREP+:} false; then : $as_echo_n "(cached) " >&6 else if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 then ac_cv_path_FGREP="$GREP -F" else if test -z "$FGREP"; then ac_path_FGREP_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in fgrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_FGREP" || continue # Check for GNU ac_path_FGREP and select it if it is found. # Check for GNU $ac_path_FGREP case `"$ac_path_FGREP" --version 2>&1` in *GNU*) ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; *) ac_count=0 $as_echo_n 0123456789 >"conftest.in" while : do cat "conftest.in" "conftest.in" >"conftest.tmp" mv "conftest.tmp" "conftest.in" cp "conftest.in" "conftest.nl" $as_echo 'FGREP' >> "conftest.nl" "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break as_fn_arith $ac_count + 1 && ac_count=$as_val if test $ac_count -gt ${ac_path_FGREP_max-0}; then # Best one so far, save it but keep looking for a better one ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_max=$ac_count fi # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac $ac_path_FGREP_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_FGREP"; then as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 $as_echo "$ac_cv_path_FGREP" >&6; } FGREP="$ac_cv_path_FGREP" test -z "$GREP" && GREP=grep # Check whether --with-gnu-ld was given. if test "${with_gnu_ld+set}" = set; then : withval=$with_gnu_ld; test no = "$withval" || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test yes = "$GCC"; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 $as_echo_n "checking for ld used by $CC... " >&6; } case $host in *-*-mingw*) # gcc leaves a trailing carriage return, which upsets mingw ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; *) ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; esac case $ac_prog in # Accept absolute paths. [\\/]* | ?:[\\/]*) re_direlt='/[^/][^/]*/\.\./' # Canonicalize the pathname of ld ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` done test -z "$LD" && LD=$ac_prog ;; "") # If it fails, then pretend we aren't using GCC. ac_prog=ld ;; *) # If it is relative, then search for the first ld in PATH. with_gnu_ld=unknown ;; esac elif test yes = "$with_gnu_ld"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if ${lt_cv_path_LD+:} false; then : $as_echo_n "(cached) " >&6 else if test -z "$LD"; then lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then lt_cv_path_LD=$ac_dir/$ac_prog # Check to see if the program is GNU ld. I'd rather use --version, # but apparently some variants of GNU ld only accept -v. # Break only if it was the GNU/non-GNU ld that we prefer. case `"$lt_cv_path_LD" -v 2>&1 &5 $as_echo "$LD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 { $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if ${lt_cv_prog_gnu_ld+:} false; then : $as_echo_n "(cached) " >&6 else # I'd rather use --version here, but apparently some GNU lds only accept -v. case `$LD -v 2>&1 &5 $as_echo "$lt_cv_prog_gnu_ld" >&6; } with_gnu_ld=$lt_cv_prog_gnu_ld { $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 $as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } if ${lt_cv_path_NM+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NM"; then # Let the user override the test. lt_cv_path_NM=$NM else lt_nm_to_check=${ac_tool_prefix}nm if test -n "$ac_tool_prefix" && test "$build" = "$host"; then lt_nm_to_check="$lt_nm_to_check nm" fi for lt_tmp_nm in $lt_nm_to_check; do lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. tmp_nm=$ac_dir/$lt_tmp_nm if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext"; then # Check to see if the nm accepts a BSD-compat flag. # Adding the 'sed 1q' prevents false positives on HP-UX, which says: # nm: unknown option "B" ignored # Tru64's nm complains that /dev/null is an invalid object file # MSYS converts /dev/null to NUL, MinGW nm treats NUL as empty case $build_os in mingw*) lt_bad_file=conftest.nm/nofile ;; *) lt_bad_file=/dev/null ;; esac case `"$tmp_nm" -B $lt_bad_file 2>&1 | sed '1q'` in *$lt_bad_file* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break 2 ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break 2 ;; *) lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but continue # so that we can try to find one that supports BSD flags ;; esac ;; esac fi done IFS=$lt_save_ifs done : ${lt_cv_path_NM=no} fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test no != "$lt_cv_path_NM"; then NM=$lt_cv_path_NM else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$DUMPBIN"; then : # Let the user override the test. else if test -n "$ac_tool_prefix"; then for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DUMPBIN"; then ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DUMPBIN=$ac_cv_prog_DUMPBIN if test -n "$DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$DUMPBIN" && break done fi if test -z "$DUMPBIN"; then ac_ct_DUMPBIN=$DUMPBIN for ac_prog in dumpbin "link -dump" do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DUMPBIN"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN if test -n "$ac_ct_DUMPBIN"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_DUMPBIN" && break done if test "x$ac_ct_DUMPBIN" = x; then DUMPBIN=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DUMPBIN=$ac_ct_DUMPBIN fi fi case `$DUMPBIN -symbols -headers /dev/null 2>&1 | sed '1q'` in *COFF*) DUMPBIN="$DUMPBIN -symbols -headers" ;; *) DUMPBIN=: ;; esac fi if test : != "$DUMPBIN"; then NM=$DUMPBIN fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if ${lt_cv_nm_interface+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:$LINENO: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 $as_echo_n "checking whether ln -s works... " >&6; } LN_S=$as_ln_s if test "$LN_S" = "ln -s"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 $as_echo "no, using $LN_S" >&6; } fi # find the maximum length of command line arguments { $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if ${lt_cv_sys_max_cmd_len+:} false; then : $as_echo_n "(cached) " >&6 else i=0 teststring=ABCD case $build_os in msdosdjgpp*) # On DJGPP, this test can blow up pretty badly due to problems in libc # (any single argument exceeding 2000 bytes causes a buffer overrun # during glob expansion). Even if it were fixed, the result of this # check would be larger than it should be. lt_cv_sys_max_cmd_len=12288; # 12K is about right ;; gnu*) # Under GNU Hurd, this test is not required because there is # no limit to the length of command line arguments. # Libtool will interpret -1 as no limit whatsoever lt_cv_sys_max_cmd_len=-1; ;; cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, # you end up with a "frozen" computer, even though with patience # the test eventually succeeds (with a max line length of 256k). # Instead, let's just punt: use the minimum linelength reported by # all of the supported platforms: 8192 (on NT/2K/XP). lt_cv_sys_max_cmd_len=8192; ;; mint*) # On MiNT this can take a long time and run out of memory. lt_cv_sys_max_cmd_len=8192; ;; amigaos*) # On AmigaOS with pdksh, this test takes hours, literally. # So we just punt and use a minimum line length of 8192. lt_cv_sys_max_cmd_len=8192; ;; bitrig* | darwin* | dragonfly* | freebsd* | netbsd* | openbsd*) # This has been around since 386BSD, at least. Likely further. if test -x /sbin/sysctl; then lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` elif test -x /usr/sbin/sysctl; then lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` else lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs fi # And add a safety zone lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` ;; interix*) # We know the value 262144 and hardcode it with a safety zone (like BSD) lt_cv_sys_max_cmd_len=196608 ;; os2*) # The test takes a long time on OS/2. lt_cv_sys_max_cmd_len=8192 ;; osf*) # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not # nice to cause kernel panics so lets avoid the loop below. # First set a reasonable default. lt_cv_sys_max_cmd_len=16384 # if test -x /sbin/sysconfig; then case `/sbin/sysconfig -q proc exec_disable_arg_limit` in *1*) lt_cv_sys_max_cmd_len=-1 ;; esac fi ;; sco3.2v5*) lt_cv_sys_max_cmd_len=102400 ;; sysv5* | sco5v6* | sysv4.2uw2*) kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` if test -n "$kargmax"; then lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` else lt_cv_sys_max_cmd_len=32768 fi ;; *) lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` if test -n "$lt_cv_sys_max_cmd_len" && \ test undefined != "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else # Make teststring a little bigger before we do anything with it. # a 1K string should be a reasonable start. for i in 1 2 3 4 5 6 7 8; do teststring=$teststring$teststring done SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} # If test is not a shell built-in, we'll probably end up computing a # maximum length that is only half of the actual maximum length, but # we can't tell. while { test X`env echo "$teststring$teststring" 2>/dev/null` \ = "X$teststring$teststring"; } >/dev/null 2>&1 && test 17 != "$i" # 1/2 MB should be enough do i=`expr $i + 1` teststring=$teststring$teststring done # Only check the string length outside the loop. lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` teststring= # Add a significant safety factor because C++ compilers can tack on # massive amounts of additional arguments before passing them to the # linker. It appears as though 1/2 is a usable value. lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` fi ;; esac fi if test -n "$lt_cv_sys_max_cmd_len"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 $as_echo "none" >&6; } fi max_cmd_len=$lt_cv_sys_max_cmd_len : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then lt_unset=unset else lt_unset=false fi # test EBCDIC or ASCII case `echo X|tr X '\101'` in A) # ASCII based system # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr lt_SP2NL='tr \040 \012' lt_NL2SP='tr \015\012 \040\040' ;; *) # EBCDIC based system lt_SP2NL='tr \100 \n' lt_NL2SP='tr \r\n \100\100' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 $as_echo_n "checking how to convert $build file names to $host format... " >&6; } if ${lt_cv_to_host_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 ;; esac ;; *-*-cygwin* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin ;; *-*-cygwin* ) lt_cv_to_host_file_cmd=func_convert_file_noop ;; * ) # otherwise, assume *nix lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin ;; esac ;; * ) # unhandled hosts (and "normal" native builds) lt_cv_to_host_file_cmd=func_convert_file_noop ;; esac fi to_host_file_cmd=$lt_cv_to_host_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 $as_echo "$lt_cv_to_host_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 $as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } if ${lt_cv_to_tool_file_cmd+:} false; then : $as_echo_n "(cached) " >&6 else #assume ordinary cross tools, or native build. lt_cv_to_tool_file_cmd=func_convert_file_noop case $host in *-*-mingw* ) case $build in *-*-mingw* ) # actually msys lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 ;; esac ;; esac fi to_tool_file_cmd=$lt_cv_to_tool_file_cmd { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 $as_echo "$lt_cv_to_tool_file_cmd" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if ${lt_cv_ld_reload_flag+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 $as_echo "$lt_cv_ld_reload_flag" >&6; } reload_flag=$lt_cv_ld_reload_flag case $reload_flag in "" | " "*) ;; *) reload_flag=" $reload_flag" ;; esac reload_cmds='$LD$reload_flag -o $output$reload_objs' case $host_os in cygwin* | mingw* | pw32* | cegcc*) if test yes != "$GCC"; then reload_cmds=false fi ;; darwin*) if test yes = "$GCC"; then reload_cmds='$LTCC $LTCFLAGS -nostdlib $wl-r -o $output$reload_objs' else reload_cmds='$LD$reload_flag -o $output$reload_objs' fi ;; esac if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi test -z "$OBJDUMP" && OBJDUMP=objdump { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if ${lt_cv_deplibs_check_method+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_file_magic_cmd='$MAGIC_CMD' lt_cv_file_magic_test_file= lt_cv_deplibs_check_method='unknown' # Need to set the preceding variable on all platforms that support # interlibrary dependencies. # 'none' -- dependencies not supported. # 'unknown' -- same as none, but documents that we really don't know. # 'pass_all' -- all dependencies passed with no checks. # 'test_compile' -- check by making test program. # 'file_magic [[regex]]' -- check by looking for files in library path # that responds to the $file_magic_cmd with a given extended regex. # If you have 'file' or equivalent on your system and you're not sure # whether 'pass_all' will *always* work, you probably want this one. case $host_os in aix[4-9]*) lt_cv_deplibs_check_method=pass_all ;; beos*) lt_cv_deplibs_check_method=pass_all ;; bsdi[45]*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' lt_cv_file_magic_cmd='/usr/bin/file -L' lt_cv_file_magic_test_file=/shlib/libc.so ;; cygwin*) # func_win32_libid is a shell function defined in ltmain.sh lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' ;; mingw* | pw32*) # Base MSYS/MinGW do not provide the 'file' command needed by # func_win32_libid shell function, so use a weaker test based on 'objdump', # unless we find 'file', for example because we are cross-compiling. if ( file / ) >/dev/null 2>&1; then lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' lt_cv_file_magic_cmd='func_win32_libid' else # Keep this pattern in sync with the one in func_win32_libid. lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' lt_cv_file_magic_cmd='$OBJDUMP -f' fi ;; cegcc*) # use the weaker test based on 'objdump'. See mingw*. lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' lt_cv_file_magic_cmd='$OBJDUMP -f' ;; darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; freebsd* | dragonfly*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then case $host_cpu in i*86 ) # Not sure whether the presence of OpenBSD here was a mistake. # Let's accept both of them until this is cleared up. lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` ;; esac else lt_cv_deplibs_check_method=pass_all fi ;; haiku*) lt_cv_deplibs_check_method=pass_all ;; hpux10.20* | hpux11*) lt_cv_file_magic_cmd=/usr/bin/file case $host_cpu in ia64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so ;; hppa*64*) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl ;; *) lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' lt_cv_file_magic_test_file=/usr/lib/libc.sl ;; esac ;; interix[3-9]*) # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' ;; irix5* | irix6* | nonstopux*) case $LD in *-32|*"-32 ") libmagic=32-bit;; *-n32|*"-n32 ") libmagic=N32;; *-64|*"-64 ") libmagic=64-bit;; *) libmagic=never-match;; esac lt_cv_deplibs_check_method=pass_all ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) lt_cv_deplibs_check_method=pass_all ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' fi ;; newos6*) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' lt_cv_file_magic_cmd=/usr/bin/file lt_cv_file_magic_test_file=/usr/lib/libnls.so ;; *nto* | *qnx*) lt_cv_deplibs_check_method=pass_all ;; openbsd* | bitrig*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' else lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' fi ;; osf3* | osf4* | osf5*) lt_cv_deplibs_check_method=pass_all ;; rdos*) lt_cv_deplibs_check_method=pass_all ;; solaris*) lt_cv_deplibs_check_method=pass_all ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) lt_cv_deplibs_check_method=pass_all ;; sysv4 | sysv4.3*) case $host_vendor in motorola) lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` ;; ncr) lt_cv_deplibs_check_method=pass_all ;; sequent) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' ;; sni) lt_cv_file_magic_cmd='/bin/file' lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" lt_cv_file_magic_test_file=/lib/libc.so ;; siemens) lt_cv_deplibs_check_method=pass_all ;; pc) lt_cv_deplibs_check_method=pass_all ;; esac ;; tpf*) lt_cv_deplibs_check_method=pass_all ;; os2*) lt_cv_deplibs_check_method=pass_all ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } file_magic_glob= want_nocaseglob=no if test "$build" = "$host"; then case $host_os in mingw* | pw32*) if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then want_nocaseglob=yes else file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` fi ;; esac fi file_magic_cmd=$lt_cv_file_magic_cmd deplibs_check_method=$lt_cv_deplibs_check_method test -z "$deplibs_check_method" && deplibs_check_method=unknown if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi test -z "$DLLTOOL" && DLLTOOL=dlltool { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 $as_echo_n "checking how to associate runtime and link libraries... " >&6; } if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_sharedlib_from_linklib_cmd='unknown' case $host_os in cygwin* | mingw* | pw32* | cegcc*) # two different shell functions defined in ltmain.sh; # decide which one to use based on capabilities of $DLLTOOL case `$DLLTOOL --help 2>&1` in *--identify-strict*) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib ;; *) lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback ;; esac ;; *) # fallback: assume linklib IS sharedlib lt_cv_sharedlib_from_linklib_cmd=$ECHO ;; esac fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 $as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO if test -n "$ac_tool_prefix"; then for ac_prog in ar do # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. set dummy $ac_tool_prefix$ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AR"; then ac_cv_prog_AR="$AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AR="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AR=$ac_cv_prog_AR if test -n "$AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AR" && break done fi if test -z "$AR"; then ac_ct_AR=$AR for ac_prog in ar do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AR+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AR"; then ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AR="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AR=$ac_cv_prog_ac_ct_AR if test -n "$ac_ct_AR"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$ac_ct_AR" && break done if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AR=$ac_ct_AR fi fi : ${AR=ar} # Use ARFLAGS variable as AR's operation code to sync the variable naming with # Automake. If both AR_FLAGS and ARFLAGS are specified, AR_FLAGS should have # higher priority because thats what people were doing historically (setting # ARFLAGS for automake and AR_FLAGS for libtool). FIXME: Make the AR_FLAGS # variable obsoleted/removed. test ${AR_FLAGS+y} || AR_FLAGS=${ARFLAGS-cr} lt_ar_flags=$AR_FLAGS # Make AR_FLAGS overridable by 'make ARFLAGS='. Don't try to run-time override # by AR_FLAGS because that was never working and AR_FLAGS is about to die. { $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 $as_echo_n "checking for archiver @FILE support... " >&6; } if ${lt_cv_ar_at_file+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ar_at_file=no cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : echo conftest.$ac_objext > conftest.lst lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -eq "$ac_status"; then # Ensure the archiver fails upon bogus file names. rm -f conftest.$ac_objext libconftest.a { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 (eval $lt_ar_try) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } if test 0 -ne "$ac_status"; then lt_cv_ar_at_file=@ fi fi rm -f conftest.* libconftest.a fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 $as_echo "$lt_cv_ar_at_file" >&6; } if test no = "$lt_cv_ar_at_file"; then archiver_list_spec= else archiver_list_spec=$lt_cv_ar_at_file fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. set dummy ${ac_tool_prefix}strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$STRIP"; then ac_cv_prog_STRIP="$STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi STRIP=$ac_cv_prog_STRIP if test -n "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_STRIP"; then ac_ct_STRIP=$STRIP # Extract the first word of "strip", so it can be a program name with args. set dummy strip; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_STRIP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_STRIP"; then ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP if test -n "$ac_ct_STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_STRIP" = x; then STRIP=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac STRIP=$ac_ct_STRIP fi else STRIP="$ac_cv_prog_STRIP" fi test -z "$STRIP" && STRIP=: if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. set dummy ${ac_tool_prefix}ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$RANLIB"; then ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi RANLIB=$ac_cv_prog_RANLIB if test -n "$RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_RANLIB"; then ac_ct_RANLIB=$RANLIB # Extract the first word of "ranlib", so it can be a program name with args. set dummy ranlib; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_RANLIB"; then ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB if test -n "$ac_ct_RANLIB"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_RANLIB" = x; then RANLIB=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac RANLIB=$ac_ct_RANLIB fi else RANLIB="$ac_cv_prog_RANLIB" fi test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= if test -n "$RANLIB"; then case $host_os in bitrig* | openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" fi case $host_os in darwin*) lock_old_archive_extraction=yes ;; *) lock_old_archive_extraction=no ;; esac # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Check for command to grab the raw symbol name followed by C symbol from nm. { $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 $as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } if ${lt_cv_sys_global_symbol_pipe+:} false; then : $as_echo_n "(cached) " >&6 else # These are sane defaults that work on at least a few old systems. # [They come from Ultrix. What could be older than Ultrix?!! ;)] # Character class describing NM global symbol codes. symcode='[BCDEGRST]' # Regexp to match symbols that can be accessed directly from C. sympat='\([_A-Za-z][_A-Za-z0-9]*\)' # Define system-specific variables. case $host_os in aix*) symcode='[BCDT]' ;; cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) if test ia64 = "$host_cpu"; then symcode='[ABCDEGRST]' fi ;; irix* | nonstopux*) symcode='[BCDEGRST]' ;; osf*) symcode='[BCDEGQRST]' ;; solaris*) symcode='[BDRT]' ;; sco3.2v5*) symcode='[DT]' ;; sysv4.2uw2*) symcode='[DT]' ;; sysv5* | sco5v6* | unixware* | OpenUNIX*) symcode='[ABDT]' ;; sysv4) symcode='[DFNSTU]' ;; esac # If we're using GNU nm, then use its standard symbol codes. case `$NM -V 2>&1` in *GNU* | *'with BFD'*) symcode='[ABCDGIRSTW]' ;; esac if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Gets list of data symbols to import. lt_cv_sys_global_symbol_to_import="sed -n -e 's/^I .* \(.*\)$/\1/p'" # Adjust the below global symbol transforms to fixup imported variables. lt_cdecl_hook=" -e 's/^I .* \(.*\)$/extern __declspec(dllimport) char \1;/p'" lt_c_name_hook=" -e 's/^I .* \(.*\)$/ {\"\1\", (void *) 0},/p'" lt_c_name_lib_hook="\ -e 's/^I .* \(lib.*\)$/ {\"\1\", (void *) 0},/p'\ -e 's/^I .* \(.*\)$/ {\"lib\1\", (void *) 0},/p'" else # Disable hooks by default. lt_cv_sys_global_symbol_to_import= lt_cdecl_hook= lt_c_name_hook= lt_c_name_lib_hook= fi # Transform an extracted symbol line into a proper C declaration. # Some systems (esp. on ia64) link data and code symbols differently, # so use this general approach. lt_cv_sys_global_symbol_to_cdecl="sed -n"\ $lt_cdecl_hook\ " -e 's/^T .* \(.*\)$/extern int \1();/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/extern char \1;/p'" # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n"\ $lt_c_name_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/p'" # Transform an extracted symbol line into symbol name with lib prefix and # symbol address. lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n"\ $lt_c_name_lib_hook\ " -e 's/^: \(.*\) .*$/ {\"\1\", (void *) 0},/p'"\ " -e 's/^$symcode$symcode* .* \(lib.*\)$/ {\"\1\", (void *) \&\1},/p'"\ " -e 's/^$symcode$symcode* .* \(.*\)$/ {\"lib\1\", (void *) \&\1},/p'" # Handle CRLF in mingw tool chain opt_cr= case $build_os in mingw*) opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp ;; esac # Try without a prefix underscore, then with it. for ac_symprfx in "" "_"; do # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. symxfrm="\\1 $ac_symprfx\\2 \\2" # Write the raw and C identifiers. if test "$lt_cv_nm_interface" = "MS dumpbin"; then # Fake it for dumpbin and say T for any non-static function, # D for any global variable and I for any imported variable. # Also find C++ and __fastcall symbols from MSVC++, # which start with @ or ?. lt_cv_sys_global_symbol_pipe="$AWK '"\ " {last_section=section; section=\$ 3};"\ " /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " /^ *Symbol name *: /{split(\$ 0,sn,\":\"); si=substr(sn[2],2)};"\ " /^ *Type *: code/{print \"T\",si,substr(si,length(prfx))};"\ " /^ *Type *: data/{print \"I\",si,substr(si,length(prfx))};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=\"D\"}; \$ 0~/\(\).*\|/{f=\"T\"};"\ " {split(\$ 0,a,/\||\r/); split(a[2],s)};"\ " s[1]~/^[@?]/{print f,s[1],s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print f,t[1],substr(t[1],length(prfx))}"\ " ' prfx=^$ac_symprfx" else lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" fi lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" # Check to see that the pipe works correctly. pipe_works=no rm -f conftest* cat > conftest.$ac_ext <<_LT_EOF #ifdef __cplusplus extern "C" { #endif char nm_test_var; void nm_test_func(void); void nm_test_func(void){} #ifdef __cplusplus } #endif int main(){nm_test_var='a';nm_test_func();return(0);} _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then # Now try to grab the symbols. nlist=conftest.nm if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "$nlist"; then # Try sorting and uniquifying the output. if sort "$nlist" | uniq > "$nlist"T; then mv -f "$nlist"T "$nlist" else rm -f "$nlist"T fi # Make sure that we snagged all the symbols we need. if $GREP ' nm_test_var$' "$nlist" >/dev/null; then if $GREP ' nm_test_func$' "$nlist" >/dev/null; then cat <<_LT_EOF > conftest.$ac_ext /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #ifdef __cplusplus extern "C" { #endif _LT_EOF # Now generate the symbol file. eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' cat <<_LT_EOF >> conftest.$ac_ext /* The mapping between symbol names and symbols. */ LT_DLSYM_CONST struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* .* \(.*\)$/ {\"\1\", (void *) \&\1},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext cat <<\_LT_EOF >> conftest.$ac_ext {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt__PROGRAM__LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif _LT_EOF # Now try linking the two files. mv conftest.$ac_objext conftstm.$ac_objext lt_globsym_save_LIBS=$LIBS lt_globsym_save_CFLAGS=$CFLAGS LIBS=conftstm.$ac_objext CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s conftest$ac_exeext; then pipe_works=yes fi LIBS=$lt_globsym_save_LIBS CFLAGS=$lt_globsym_save_CFLAGS else echo "cannot find nm_test_func in $nlist" >&5 fi else echo "cannot find nm_test_var in $nlist" >&5 fi else echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 fi else echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test yes = "$pipe_works"; then break else lt_cv_sys_global_symbol_pipe= fi done fi if test -z "$lt_cv_sys_global_symbol_pipe"; then lt_cv_sys_global_symbol_to_cdecl= fi if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } fi # Response file support. if test "$lt_cv_nm_interface" = "MS dumpbin"; then nm_file_list_spec='@' elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then nm_file_list_spec='@' fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 $as_echo_n "checking for sysroot... " >&6; } # Check whether --with-sysroot was given. if test "${with_sysroot+set}" = set; then : withval=$with_sysroot; else with_sysroot=no fi lt_sysroot= case $with_sysroot in #( yes) if test yes = "$GCC"; then lt_sysroot=`$CC --print-sysroot 2>/dev/null` fi ;; #( /*) lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` ;; #( no|'') ;; #( *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_sysroot" >&5 $as_echo "$with_sysroot" >&6; } as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 $as_echo "${lt_sysroot:-no}" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a working dd" >&5 $as_echo_n "checking for a working dd... " >&6; } if ${ac_cv_path_lt_DD+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i : ${lt_DD:=$DD} if test -z "$lt_DD"; then ac_path_lt_DD_found=false # Loop through the user's path and test for each of PROGNAME-LIST as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_prog in dd; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_lt_DD="$as_dir/$ac_prog$ac_exec_ext" as_fn_executable_p "$ac_path_lt_DD" || continue if "$ac_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && ac_cv_path_lt_DD="$ac_path_lt_DD" ac_path_lt_DD_found=: fi $ac_path_lt_DD_found && break 3 done done done IFS=$as_save_IFS if test -z "$ac_cv_path_lt_DD"; then : fi else ac_cv_path_lt_DD=$lt_DD fi rm -f conftest.i conftest2.i conftest.out fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_lt_DD" >&5 $as_echo "$ac_cv_path_lt_DD" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to truncate binary pipes" >&5 $as_echo_n "checking how to truncate binary pipes... " >&6; } if ${lt_cv_truncate_bin+:} false; then : $as_echo_n "(cached) " >&6 else printf 0123456789abcdef0123456789abcdef >conftest.i cat conftest.i conftest.i >conftest2.i lt_cv_truncate_bin= if "$ac_cv_path_lt_DD" bs=32 count=1 conftest.out 2>/dev/null; then cmp -s conftest.i conftest.out \ && lt_cv_truncate_bin="$ac_cv_path_lt_DD bs=4096 count=1" fi rm -f conftest.i conftest2.i conftest.out test -z "$lt_cv_truncate_bin" && lt_cv_truncate_bin="$SED -e 4q" fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_truncate_bin" >&5 $as_echo "$lt_cv_truncate_bin" >&6; } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then : enableval=$enable_libtool_lock; fi test no = "$enable_libtool_lock" || enable_libtool_lock=yes # Some flags need to be propagated to the compiler or linker for good # libtool support. case $host in ia64-*-hpux*) # Find out what ABI is being produced by ac_compile, and set mode # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.$ac_objext` in *ELF-32*) HPUX_IA64_MODE=32 ;; *ELF-64*) HPUX_IA64_MODE=64 ;; esac fi rm -rf conftest* ;; *-*-irix6*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then if test yes = "$lt_cv_prog_gnu_ld"; then case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -melf32bsmip" ;; *N32*) LD="${LD-ld} -melf32bmipn32" ;; *64-bit*) LD="${LD-ld} -melf64bmip" ;; esac else case `/usr/bin/file conftest.$ac_objext` in *32-bit*) LD="${LD-ld} -32" ;; *N32*) LD="${LD-ld} -n32" ;; *64-bit*) LD="${LD-ld} -64" ;; esac fi fi rm -rf conftest* ;; mips64*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo '#line '$LINENO' "configure"' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then emul=elf case `/usr/bin/file conftest.$ac_objext` in *32-bit*) emul="${emul}32" ;; *64-bit*) emul="${emul}64" ;; esac case `/usr/bin/file conftest.$ac_objext` in *MSB*) emul="${emul}btsmip" ;; *LSB*) emul="${emul}ltsmip" ;; esac case `/usr/bin/file conftest.$ac_objext` in *N32*) emul="${emul}n32" ;; esac LD="${LD-ld} -m $emul" fi rm -rf conftest* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. Note that the listed cases only cover the # situations where additional linker options are needed (such as when # doing 32-bit compilation for a host where ld defaults to 64-bit, or # vice versa); the common cases where no linker options are needed do # not appear in the list. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *32-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_i386_fbsd" ;; x86_64-*linux*) case `/usr/bin/file conftest.o` in *x86-64*) LD="${LD-ld} -m elf32_x86_64" ;; *) LD="${LD-ld} -m elf_i386" ;; esac ;; powerpc64le-*linux*) LD="${LD-ld} -m elf32lppclinux" ;; powerpc64-*linux*) LD="${LD-ld} -m elf32ppclinux" ;; s390x-*linux*) LD="${LD-ld} -m elf_s390" ;; sparc64-*linux*) LD="${LD-ld} -m elf32_sparc" ;; esac ;; *64-bit*) case $host in x86_64-*kfreebsd*-gnu) LD="${LD-ld} -m elf_x86_64_fbsd" ;; x86_64-*linux*) LD="${LD-ld} -m elf_x86_64" ;; powerpcle-*linux*) LD="${LD-ld} -m elf64lppc" ;; powerpc-*linux*) LD="${LD-ld} -m elf64ppc" ;; s390*-*linux*|s390*-*tpf*) LD="${LD-ld} -m elf64_s390" ;; sparc*-*linux*) LD="${LD-ld} -m elf64_sparc" ;; esac ;; esac fi rm -rf conftest* ;; *-*-sco3.2v5*) # On SCO OpenServer 5, we need -belf to get full-featured binaries. SAVE_CFLAGS=$CFLAGS CFLAGS="$CFLAGS -belf" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if ${lt_cv_cc_needs_belf+:} false; then : $as_echo_n "(cached) " >&6 else ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_cc_needs_belf=yes else lt_cv_cc_needs_belf=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test yes != "$lt_cv_cc_needs_belf"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS=$SAVE_CFLAGS fi ;; *-*solaris*) # Find out what ABI is being produced by ac_compile, and set linker # options accordingly. echo 'int i;' > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) case $host in i?86-*-solaris*|x86_64-*-solaris*) LD="${LD-ld} -m elf_x86_64" ;; sparc*-*-solaris*) LD="${LD-ld} -m elf64_sparc" ;; esac # GNU ld 2.21 introduced _sol2 emulations. Use them if available. if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then LD=${LD-ld}_sol2 fi ;; *) if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then LD="${LD-ld} -64" fi ;; esac ;; esac fi rm -rf conftest* ;; esac need_locks=$enable_libtool_lock if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. set dummy ${ac_tool_prefix}mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$MANIFEST_TOOL"; then ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL if test -n "$MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 $as_echo "$MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_MANIFEST_TOOL"; then ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL # Extract the first word of "mt", so it can be a program name with args. set dummy mt; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_MANIFEST_TOOL"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL if test -n "$ac_ct_MANIFEST_TOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 $as_echo "$ac_ct_MANIFEST_TOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_MANIFEST_TOOL" = x; then MANIFEST_TOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL fi else MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" fi test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 $as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } if ${lt_cv_path_mainfest_tool+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_path_mainfest_tool=no echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out cat conftest.err >&5 if $GREP 'Manifest Tool' conftest.out > /dev/null; then lt_cv_path_mainfest_tool=yes fi rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 $as_echo "$lt_cv_path_mainfest_tool" >&6; } if test yes != "$lt_cv_path_mainfest_tool"; then MANIFEST_TOOL=: fi case $host_os in rhapsody* | darwin*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DSYMUTIL"; then ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DSYMUTIL=$ac_cv_prog_DSYMUTIL if test -n "$DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DSYMUTIL"; then ac_ct_DSYMUTIL=$DSYMUTIL # Extract the first word of "dsymutil", so it can be a program name with args. set dummy dsymutil; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DSYMUTIL"; then ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL if test -n "$ac_ct_DSYMUTIL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DSYMUTIL" = x; then DSYMUTIL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DSYMUTIL=$ac_ct_DSYMUTIL fi else DSYMUTIL="$ac_cv_prog_DSYMUTIL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. set dummy ${ac_tool_prefix}nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$NMEDIT"; then ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi NMEDIT=$ac_cv_prog_NMEDIT if test -n "$NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_NMEDIT"; then ac_ct_NMEDIT=$NMEDIT # Extract the first word of "nmedit", so it can be a program name with args. set dummy nmedit; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_NMEDIT"; then ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT if test -n "$ac_ct_NMEDIT"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_NMEDIT" = x; then NMEDIT=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac NMEDIT=$ac_ct_NMEDIT fi else NMEDIT="$ac_cv_prog_NMEDIT" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. set dummy ${ac_tool_prefix}lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$LIPO"; then ac_cv_prog_LIPO="$LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi LIPO=$ac_cv_prog_LIPO if test -n "$LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_LIPO"; then ac_ct_LIPO=$LIPO # Extract the first word of "lipo", so it can be a program name with args. set dummy lipo; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_LIPO+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_LIPO"; then ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO if test -n "$ac_ct_LIPO"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_LIPO" = x; then LIPO=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac LIPO=$ac_ct_LIPO fi else LIPO="$ac_cv_prog_LIPO" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. set dummy ${ac_tool_prefix}otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL"; then ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL=$ac_cv_prog_OTOOL if test -n "$OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL"; then ac_ct_OTOOL=$OTOOL # Extract the first word of "otool", so it can be a program name with args. set dummy otool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL"; then ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL if test -n "$ac_ct_OTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL" = x; then OTOOL=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL=$ac_ct_OTOOL fi else OTOOL="$ac_cv_prog_OTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. set dummy ${ac_tool_prefix}otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OTOOL64"; then ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OTOOL64=$ac_cv_prog_OTOOL64 if test -n "$OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OTOOL64"; then ac_ct_OTOOL64=$OTOOL64 # Extract the first word of "otool64", so it can be a program name with args. set dummy otool64; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OTOOL64"; then ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 if test -n "$ac_ct_OTOOL64"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OTOOL64" = x; then OTOOL64=":" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OTOOL64=$ac_ct_OTOOL64 fi else OTOOL64="$ac_cv_prog_OTOOL64" fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if ${lt_cv_apple_cc_single_mod+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_apple_cc_single_mod=no if test -z "$LT_MULTI_MODULE"; then # By default we will add the -single_module flag. You can override # by either setting the environment variable LT_MULTI_MODULE # non-empty at configure time, or by adding -multi_module to the # link flags. rm -rf libconftest.dylib* echo "int foo(void){return 1;}" > conftest.c echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c" >&5 $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err _lt_result=$? # If there is a non-empty error log, and "single_module" # appears in it, assume the flag caused a linker warning if test -s conftest.err && $GREP single_module conftest.err; then cat conftest.err >&5 # Otherwise, if the output was created with a 0 exit code from # the compiler, it worked. elif test -f libconftest.dylib && test 0 = "$_lt_result"; then lt_cv_apple_cc_single_mod=yes else cat conftest.err >&5 fi rm -rf libconftest.dylib* rm -f conftest.* fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if ${lt_cv_ld_exported_symbols_list+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_exported_symbols_list=no save_LDFLAGS=$LDFLAGS echo "_main" > conftest.sym LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_ld_exported_symbols_list=yes else lt_cv_ld_exported_symbols_list=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 $as_echo_n "checking for -force_load linker flag... " >&6; } if ${lt_cv_ld_force_load+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_ld_force_load=no cat > conftest.c << _LT_EOF int forced_loaded() { return 2;} _LT_EOF echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 echo "$AR $AR_FLAGS libconftest.a conftest.o" >&5 $AR $AR_FLAGS libconftest.a conftest.o 2>&5 echo "$RANLIB libconftest.a" >&5 $RANLIB libconftest.a 2>&5 cat > conftest.c << _LT_EOF int main() { return 0;} _LT_EOF echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err _lt_result=$? if test -s conftest.err && $GREP force_load conftest.err; then cat conftest.err >&5 elif test -f conftest && test 0 = "$_lt_result" && $GREP forced_load conftest >/dev/null 2>&1; then lt_cv_ld_force_load=yes else cat conftest.err >&5 fi rm -f conftest.err libconftest.a conftest conftest.c rm -rf conftest.dSYM fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 $as_echo "$lt_cv_ld_force_load" >&6; } case $host_os in rhapsody* | darwin1.[012]) _lt_dar_allow_undefined='$wl-undefined ${wl}suppress' ;; darwin1.*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; darwin*) # darwin 5.x on # if running on 10.5 or later, the deployment target defaults # to the OS version, if on x86, and 10.4, the deployment # target defaults to 10.4. Don't you love it? case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in 10.0,*86*-darwin8*|10.0,*-darwin[91]*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; 10.[012][,.]*) _lt_dar_allow_undefined='$wl-flat_namespace $wl-undefined ${wl}suppress' ;; 10.*) _lt_dar_allow_undefined='$wl-undefined ${wl}dynamic_lookup' ;; esac ;; esac if test yes = "$lt_cv_apple_cc_single_mod"; then _lt_dar_single_mod='$single_module' fi if test yes = "$lt_cv_ld_exported_symbols_list"; then _lt_dar_export_syms=' $wl-exported_symbols_list,$output_objdir/$libname-symbols.expsym' else _lt_dar_export_syms='~$NMEDIT -s $output_objdir/$libname-symbols.expsym $lib' fi if test : != "$DSYMUTIL" && test no = "$lt_cv_ld_force_load"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 $as_echo_n "checking how to run the C preprocessor... " >&6; } # On Suns, sometimes $CPP names a directory. if test -n "$CPP" && test -d "$CPP"; then CPP= fi if test -z "$CPP"; then if ${ac_cv_prog_CPP+:} false; then : $as_echo_n "(cached) " >&6 else # Double quotes because CPP needs to be expanded for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" do ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : break fi done ac_cv_prog_CPP=$CPP fi CPP=$ac_cv_prog_CPP else ac_cv_prog_CPP=$CPP fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 $as_echo "$CPP" >&6; } ac_preproc_ok=false for ac_c_preproc_warn_flag in '' yes do # Use a header file that comes with gcc, so configuring glibc # with a fresh cross-compiler works. # Prefer to if __STDC__ is defined, since # exists even on freestanding compilers. # On the NeXT, cc -E runs the code through the compiler's parser, # not just through cpp. "Syntax error" is here to catch this case. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : else # Broken: fails on valid input. continue fi rm -f conftest.err conftest.i conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if ac_fn_c_try_cpp "$LINENO"; then : # Broken: success on invalid input. continue else # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.i conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.i conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} as_fn_error $? "C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details" "$LINENO" 5; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if ${ac_cv_header_stdc+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF if ac_fn_c_try_compile "$LINENO"; then : ac_cv_header_stdc=yes else ac_cv_header_stdc=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "memchr" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP "free" >/dev/null 2>&1; then : else ac_cv_header_stdc=no fi rm -f conftest* fi if test $ac_cv_header_stdc = yes; then # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. if test "$cross_compiling" = yes; then : : else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ #include #include #if ((' ' & 0x0FF) == 0x020) # define ISLOWER(c) ('a' <= (c) && (c) <= 'z') # define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) #else # define ISLOWER(c) \ (('a' <= (c) && (c) <= 'i') \ || ('j' <= (c) && (c) <= 'r') \ || ('s' <= (c) && (c) <= 'z')) # define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) #endif #define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) int main () { int i; for (i = 0; i < 256; i++) if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) return 2; return 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : else ac_cv_header_stdc=no fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ conftest.$ac_objext conftest.beam conftest.$ac_ext fi fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then $as_echo "#define STDC_HEADERS 1" >>confdefs.h fi # On IRIX 5.3, sys/types and inttypes.h are conflicting. for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ inttypes.h stdint.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default " if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done for ac_header in dlfcn.h do : ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default " if test "x$ac_cv_header_dlfcn_h" = xyes; then : cat >>confdefs.h <<_ACEOF #define HAVE_DLFCN_H 1 _ACEOF fi done # Set options enable_win32_dll=yes case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. set dummy ${ac_tool_prefix}as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$AS"; then ac_cv_prog_AS="$AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AS="${ac_tool_prefix}as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi AS=$ac_cv_prog_AS if test -n "$AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 $as_echo "$AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AS"; then ac_ct_AS=$AS # Extract the first word of "as", so it can be a program name with args. set dummy as; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_AS+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_AS"; then ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_AS="as" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_AS=$ac_cv_prog_ac_ct_AS if test -n "$ac_ct_AS"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 $as_echo "$ac_ct_AS" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AS" = x; then AS="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac AS=$ac_ct_AS fi else AS="$ac_cv_prog_AS" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. set dummy ${ac_tool_prefix}dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$DLLTOOL"; then ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi DLLTOOL=$ac_cv_prog_DLLTOOL if test -n "$DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 $as_echo "$DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_DLLTOOL"; then ac_ct_DLLTOOL=$DLLTOOL # Extract the first word of "dlltool", so it can be a program name with args. set dummy dlltool; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_DLLTOOL"; then ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_DLLTOOL="dlltool" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL if test -n "$ac_ct_DLLTOOL"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 $as_echo "$ac_ct_DLLTOOL" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_DLLTOOL" = x; then DLLTOOL="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac DLLTOOL=$ac_ct_DLLTOOL fi else DLLTOOL="$ac_cv_prog_DLLTOOL" fi if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. set dummy ${ac_tool_prefix}objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$OBJDUMP"; then ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi OBJDUMP=$ac_cv_prog_OBJDUMP if test -n "$OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_OBJDUMP"; then ac_ct_OBJDUMP=$OBJDUMP # Extract the first word of "objdump", so it can be a program name with args. set dummy objdump; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$ac_ct_OBJDUMP"; then ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP if test -n "$ac_ct_OBJDUMP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_OBJDUMP" = x; then OBJDUMP="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 $as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} ac_tool_warned=yes ;; esac OBJDUMP=$ac_ct_OBJDUMP fi else OBJDUMP="$ac_cv_prog_OBJDUMP" fi ;; esac test -z "$AS" && AS=as test -z "$DLLTOOL" && DLLTOOL=dlltool test -z "$OBJDUMP" && OBJDUMP=objdump enable_dlopen=no # Check whether --enable-shared was given. if test "${enable_shared+set}" = set; then : enableval=$enable_shared; p=${PACKAGE-default} case $enableval in yes) enable_shared=yes ;; no) enable_shared=no ;; *) enable_shared=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_shared=yes fi done IFS=$lt_save_ifs ;; esac else enable_shared=yes fi # Check whether --enable-static was given. if test "${enable_static+set}" = set; then : enableval=$enable_static; p=${PACKAGE-default} case $enableval in yes) enable_static=yes ;; no) enable_static=no ;; *) enable_static=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_static=yes fi done IFS=$lt_save_ifs ;; esac else enable_static=yes fi # Check whether --with-pic was given. if test "${with_pic+set}" = set; then : withval=$with_pic; lt_p=${PACKAGE-default} case $withval in yes|no) pic_mode=$withval ;; *) pic_mode=default # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for lt_pkg in $withval; do IFS=$lt_save_ifs if test "X$lt_pkg" = "X$lt_p"; then pic_mode=yes fi done IFS=$lt_save_ifs ;; esac else pic_mode=default fi # Check whether --enable-fast-install was given. if test "${enable_fast_install+set}" = set; then : enableval=$enable_fast_install; p=${PACKAGE-default} case $enableval in yes) enable_fast_install=yes ;; no) enable_fast_install=no ;; *) enable_fast_install=no # Look at the argument we got. We use all the common list separators. lt_save_ifs=$IFS; IFS=$IFS$PATH_SEPARATOR, for pkg in $enableval; do IFS=$lt_save_ifs if test "X$pkg" = "X$p"; then enable_fast_install=yes fi done IFS=$lt_save_ifs ;; esac else enable_fast_install=yes fi shared_archive_member_spec= case $host,$enable_shared in power*-*-aix[5-9]*,yes) { $as_echo "$as_me:${as_lineno-$LINENO}: checking which variant of shared library versioning to provide" >&5 $as_echo_n "checking which variant of shared library versioning to provide... " >&6; } # Check whether --with-aix-soname was given. if test "${with_aix_soname+set}" = set; then : withval=$with_aix_soname; case $withval in aix|svr4|both) ;; *) as_fn_error $? "Unknown argument to --with-aix-soname" "$LINENO" 5 ;; esac lt_cv_with_aix_soname=$with_aix_soname else if ${lt_cv_with_aix_soname+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_with_aix_soname=aix fi with_aix_soname=$lt_cv_with_aix_soname fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $with_aix_soname" >&5 $as_echo "$with_aix_soname" >&6; } if test aix != "$with_aix_soname"; then # For the AIX way of multilib, we name the shared archive member # based on the bitwidth used, traditionally 'shr.o' or 'shr_64.o', # and 'shr.imp' or 'shr_64.imp', respectively, for the Import File. # Even when GNU compilers ignore OBJECT_MODE but need '-maix64' flag, # the AIX toolchain works better with OBJECT_MODE set (default 32). if test 64 = "${OBJECT_MODE-32}"; then shared_archive_member_spec=shr_64 else shared_archive_member_spec=shr fi fi ;; *) with_aix_soname=aix ;; esac # This can be used to rebuild libtool when needed LIBTOOL_DEPS=$ltmain # Always use our own libtool. LIBTOOL='$(SHELL) $(top_builddir)/libtool' test -z "$LN_S" && LN_S="ln -s" if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if ${lt_cv_objdir+:} false; then : $as_echo_n "(cached) " >&6 else rm -f .libs 2>/dev/null mkdir .libs 2>/dev/null if test -d .libs; then lt_cv_objdir=.libs else # MS-DOS does not allow filenames that begin with a dot. lt_cv_objdir=_libs fi rmdir .libs 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 $as_echo "$lt_cv_objdir" >&6; } objdir=$lt_cv_objdir cat >>confdefs.h <<_ACEOF #define LT_OBJDIR "$lt_cv_objdir/" _ACEOF case $host_os in aix3*) # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # Global variables: ofile=libtool can_build_shared=yes # All known linkers require a '.a' archive for static linking (except MSVC, # which needs '.lib'). libext=a with_gnu_ld=$lt_cv_prog_gnu_ld old_CC=$CC old_CFLAGS=$CFLAGS # Set sane defaults for various variables test -z "$CC" && CC=cc test -z "$LTCC" && LTCC=$CC test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS test -z "$LD" && LD=ld test -z "$ac_objext" && ac_objext=o func_cc_basename $compiler cc_basename=$func_cc_basename_result # Only perform the check for file, if the check method requires it test -z "$MAGIC_CMD" && MAGIC_CMD=file case $deplibs_check_method in file_magic*) if test "$file_magic_cmd" = '$MAGIC_CMD'; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/${ac_tool_prefix}file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"${ac_tool_prefix}file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi if test -z "$lt_cv_path_MAGIC_CMD"; then if test -n "$ac_tool_prefix"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if ${lt_cv_path_MAGIC_CMD+:} false; then : $as_echo_n "(cached) " >&6 else case $MAGIC_CMD in [\\/*] | ?:[\\/]*) lt_cv_path_MAGIC_CMD=$MAGIC_CMD # Let the user override the test with a path. ;; *) lt_save_MAGIC_CMD=$MAGIC_CMD lt_save_ifs=$IFS; IFS=$PATH_SEPARATOR ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" for ac_dir in $ac_dummy; do IFS=$lt_save_ifs test -z "$ac_dir" && ac_dir=. if test -f "$ac_dir/file"; then lt_cv_path_MAGIC_CMD=$ac_dir/"file" if test -n "$file_magic_test_file"; then case $deplibs_check_method in "file_magic "*) file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` MAGIC_CMD=$lt_cv_path_MAGIC_CMD if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | $EGREP "$file_magic_regex" > /dev/null; then : else cat <<_LT_EOF 1>&2 *** Warning: the command libtool uses to detect shared libraries, *** $file_magic_cmd, produces output that libtool cannot recognize. *** The result is that libtool may fail to recognize shared libraries *** as such. This will affect the creation of libtool libraries that *** depend on shared libraries, but programs linked with such libtool *** libraries will work regardless of this problem. Nevertheless, you *** may want to report the problem to your system manager and/or to *** bug-libtool@gnu.org _LT_EOF fi ;; esac fi break fi done IFS=$lt_save_ifs MAGIC_CMD=$lt_save_MAGIC_CMD ;; esac fi MAGIC_CMD=$lt_cv_path_MAGIC_CMD if test -n "$MAGIC_CMD"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi else MAGIC_CMD=: fi fi fi ;; esac # Use C for the default configuration in the libtool script lt_save_CC=$CC ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu # Source file extension for C test sources. ac_ext=c # Object file extension for compiled C test sources. objext=o objext=$objext # Code to be used in simple compile tests lt_simple_compile_test_code="int some_variable = 0;" # Code to be used in simple link tests lt_simple_link_test_code='int main(){return(0);}' # If no C compiler was specified, use CC. LTCC=${LTCC-"$CC"} # If no C compiler flags were specified, use CFLAGS. LTCFLAGS=${LTCFLAGS-"$CFLAGS"} # Allow CC to be a program name with arguments. compiler=$CC # Save the default compiler, since it gets overwritten when the other # tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. compiler_DEFAULT=$CC # save warnings/boilerplate of simple test code ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" >conftest.$ac_ext eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_compiler_boilerplate=`cat conftest.err` $RM conftest* ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` $RM -r conftest* ## CAVEAT EMPTOR: ## There is no encapsulation within the following macros, do not change ## the running order or otherwise move them around unless you know exactly ## what you are doing... if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test yes = "$GCC"; then case $cc_basename in nvcc*) lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; *) lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_rtti_exceptions=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-fno-rtti -fno-exceptions" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_rtti_exceptions=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test yes = "$lt_cv_prog_compiler_rtti_exceptions"; then lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" else : fi fi lt_prog_compiler_wl= lt_prog_compiler_pic= lt_prog_compiler_static= if test yes = "$GCC"; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi lt_prog_compiler_pic='-fPIC' ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support lt_prog_compiler_pic='-fPIC' ;; m68k) # FIXME: we need at least 68020 code to build shared libraries, but # adding the '-m68020' flag to GCC prevents building anything better, # like '-m68040'. lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' ;; esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style # (--disable-auto-import) libraries lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; haiku*) # PIC is the default for Haiku. # The "-static" flag exists, but is broken. lt_prog_compiler_static= ;; hpux*) # PIC is the default for 64-bit PA HP-UX, but not for 32-bit # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag # sets the default TLS model and affects inlining. case $host_cpu in hppa*64*) # +Z the default ;; *) lt_prog_compiler_pic='-fPIC' ;; esac ;; interix[3-9]*) # Interix 3.x gcc -fpic/-fPIC options generate broken code. # Instead, we relocate shared libraries at runtime. ;; msdosdjgpp*) # Just because we use GCC doesn't mean we suddenly get shared libraries # on systems that don't support them. lt_prog_compiler_can_build_shared=no enable_shared=no ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic=-Kconform_pic fi ;; *) lt_prog_compiler_pic='-fPIC' ;; esac case $cc_basename in nvcc*) # Cuda Compiler Driver 2.2 lt_prog_compiler_wl='-Xlinker ' if test -n "$lt_prog_compiler_pic"; then lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" fi ;; esac else # PORTME Check for flag to pass linker flags through the system compiler. case $host_os in aix*) lt_prog_compiler_wl='-Wl,' if test ia64 = "$host_cpu"; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' case $cc_basename in nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; esac ;; mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' case $host_os in os2*) lt_prog_compiler_static='$wl-static' ;; esac ;; hpux9* | hpux10* | hpux11*) lt_prog_compiler_wl='-Wl,' # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but # not for PA HP-UX. case $host_cpu in hppa*64*|ia64*) # +Z the default ;; *) lt_prog_compiler_pic='+Z' ;; esac # Is there a better lt_prog_compiler_static that works with the bundled CC? lt_prog_compiler_static='$wl-a ${wl}archive' ;; irix5* | irix6* | nonstopux*) lt_prog_compiler_wl='-Wl,' # PIC (with -KPIC) is the default. lt_prog_compiler_static='-non_shared' ;; linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) case $cc_basename in # old Intel for x86_64, which still supported -KPIC. ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; # icc used to be incompatible with GCC. # ICC 10 doesn't accept -KPIC any more. icc* | ifort*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; # Lahey Fortran 8.1. lf95*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='--shared' lt_prog_compiler_static='--static' ;; nagfor*) # NAG Fortran compiler lt_prog_compiler_wl='-Wl,-Wl,,' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; tcc*) # Fabrice Bellard et al's Tiny C Compiler lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; ccc*) lt_prog_compiler_wl='-Wl,' # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; xl* | bgxl* | bgf* | mpixl*) # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) # Sun Fortran 8.3 passes all unrecognized flags to the linker lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='' ;; *Sun\ F* | *Sun*Fortran*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Qoption ld ' ;; *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Intel*\ [CF]*Compiler*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fPIC' lt_prog_compiler_static='-static' ;; *Portland\ Group*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-fpic' lt_prog_compiler_static='-Bstatic' ;; esac ;; esac ;; newsos6) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; *nto* | *qnx*) # QNX uses GNU C++, but need to define -shared option too, otherwise # it will coredump. lt_prog_compiler_pic='-fPIC -shared' ;; osf3* | osf4* | osf5*) lt_prog_compiler_wl='-Wl,' # All OSF/1 code is PIC. lt_prog_compiler_static='-non_shared' ;; rdos*) lt_prog_compiler_static='-non_shared' ;; solaris*) lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' case $cc_basename in f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) lt_prog_compiler_wl='-Qoption ld ';; *) lt_prog_compiler_wl='-Wl,';; esac ;; sunos4*) lt_prog_compiler_wl='-Qoption ld ' lt_prog_compiler_pic='-PIC' lt_prog_compiler_static='-Bstatic' ;; sysv4 | sysv4.2uw2* | sysv4.3*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; sysv4*MP*) if test -d /usr/nec; then lt_prog_compiler_pic='-Kconform_pic' lt_prog_compiler_static='-Bstatic' fi ;; sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' ;; unicos*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_can_build_shared=no ;; uts4*) lt_prog_compiler_pic='-pic' lt_prog_compiler_static='-Bstatic' ;; *) lt_prog_compiler_can_build_shared=no ;; esac fi case $host_os in # For platforms that do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if ${lt_cv_prog_compiler_pic+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic=$lt_prog_compiler_pic fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 $as_echo "$lt_cv_prog_compiler_pic" >&6; } lt_prog_compiler_pic=$lt_cv_prog_compiler_pic # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 $as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } if ${lt_cv_prog_compiler_pic_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" ## exclude from sc_useless_quotes_in_assignment # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. # The option is referenced via a variable to avoid confusing sed. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test yes = "$lt_cv_prog_compiler_pic_works"; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; esac else lt_prog_compiler_pic= lt_prog_compiler_can_build_shared=no fi fi # # Check to make sure the static flag actually works. # wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 $as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } if ${lt_cv_prog_compiler_static_works+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_static_works=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler_static_works=yes fi else lt_cv_prog_compiler_static_works=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test yes = "$lt_cv_prog_compiler_static_works"; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 $as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } if ${lt_cv_prog_compiler_c_o+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler_c_o=no $RM -r conftest 2>/dev/null mkdir conftest cd conftest mkdir out echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="-o out/conftest2.$ac_objext" # Insert the option either (1) after the last *FLAGS variable, or # (2) before a word containing "conftest.", or (3) at the end. # Note that $ac_compile itself does not contain backslashes and begins # with a dollar sign (not a hyphen), so the echo should work correctly. lt_compile=`echo "$ac_compile" | $SED \ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then lt_cv_prog_compiler_c_o=yes fi fi chmod u+w . 2>&5 $RM conftest* # SGI C++ compiler will create directory out/ii_files/ for # template instantiation test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files $RM out/* && rmdir out cd .. $RM -r conftest $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links=nottested if test no = "$lt_cv_prog_compiler_c_o" && test no != "$need_locks"; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 $as_echo_n "checking if we can lock with hard links... " >&6; } hard_links=yes $RM conftest* ln conftest.a conftest.b 2>/dev/null && hard_links=no touch conftest.a ln conftest.a conftest.b 2>&5 || hard_links=no ln conftest.a conftest.b 2>/dev/null && hard_links=no { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test no = "$hard_links"; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&5 $as_echo "$as_me: WARNING: '$CC' does not support '-c -o', so 'make -j' may be unsafe" >&2;} need_locks=warn fi else need_locks=no fi { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 $as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } runpath_var= allow_undefined_flag= always_export_symbols=no archive_cmds= archive_expsym_cmds= compiler_needs_object=no enable_shared_with_static_runtimes=no export_dynamic_flag_spec= export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' hardcode_automatic=no hardcode_direct=no hardcode_direct_absolute=no hardcode_libdir_flag_spec= hardcode_libdir_separator= hardcode_minus_L=no hardcode_shlibpath_var=unsupported inherit_rpath=no link_all_deplibs=unknown module_cmds= module_expsym_cmds= old_archive_from_new_cmds= old_archive_from_expsyms_cmds= thread_safe_flag_spec= whole_archive_flag_spec= # include_expsyms should be a list of space-separated symbols to be *always* # included in the symbol list include_expsyms= # exclude_expsyms can be an extended regexp of symbols to exclude # it will be wrapped by ' (' and ')$', so one must not match beginning or # end of line. Example: 'a|bc|.*d.*' will exclude the symbols 'a' and 'bc', # as well as any symbol that contains 'd'. exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. if test yes != "$GCC"; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd* | bitrig*) with_gnu_ld=no ;; esac ld_shlibs=yes # On some targets, GNU ld is compatible enough with the native linker # that we're better off using the native interface for both. lt_use_gnu_ld_interface=no if test yes = "$with_gnu_ld"; then case $host_os in aix*) # The AIX port of GNU ld has always aspired to compatibility # with the native linker. However, as the warning in the GNU ld # block says, versions before 2.19.5* couldn't really create working # shared libraries, regardless of the interface used. case `$LD -v 2>&1` in *\ \(GNU\ Binutils\)\ 2.19.5*) ;; *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; *\ \(GNU\ Binutils\)\ [3-9]*) ;; *) lt_use_gnu_ld_interface=yes ;; esac ;; *) lt_use_gnu_ld_interface=yes ;; esac fi if test yes = "$lt_use_gnu_ld_interface"; then # If archive_cmds runs LD, not CC, wlarc should be empty wlarc='$wl' # Set some defaults for GNU ld with shared library support. These # are reset later if shared libraries are not supported. Putting them # here allows them to be overridden if necessary. runpath_var=LD_RUN_PATH hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' export_dynamic_flag_spec='$wl--export-dynamic' # ancient GNU ld didn't support --whole-archive et. al. if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then whole_archive_flag_spec=$wlarc'--whole-archive$convenience '$wlarc'--no-whole-archive' else whole_archive_flag_spec= fi supports_anon_versioning=no case `$LD -v | $SED -e 's/(^)\+)\s\+//' 2>&1` in *GNU\ gold*) supports_anon_versioning=yes ;; *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... *\ 2.11.*) ;; # other 2.11 versions *) supports_anon_versioning=yes ;; esac # See if GNU ld supports shared libraries. case $host_os in aix[3-9]*) # On AIX/PPC, the GNU linker is very broken if test ia64 != "$host_cpu"; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.19, is reported *** to be unable to reliably create shared libraries on AIX. *** Therefore, libtool is disabling shared libraries support. If you *** really care for shared libraries, you may want to install binutils *** 2.20 or above, or modify your PATH so that a non-GNU linker is found. *** You will then need to restart the configuration process. _LT_EOF fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; beos*) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then allow_undefined_flag=unsupported # Joseph Beckenbach says some releases of gcc # support --undefined. This deserves some investigation. FIXME archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' else ld_shlibs=no fi ;; cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' export_dynamic_flag_spec='$wl--export-all-symbols' allow_undefined_flag=unsupported always_export_symbols=no enable_shared_with_static_runtimes=yes export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' # If the export-symbols file already is a .def file, use it as # is; otherwise, prepend EXPORTS... archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp $export_symbols $output_objdir/$soname.def; else echo EXPORTS > $output_objdir/$soname.def; cat $export_symbols >> $output_objdir/$soname.def; fi~ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname $wl--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' else ld_shlibs=no fi ;; haiku*) archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' link_all_deplibs=yes ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; interix[3-9]*) hardcode_direct=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. # Instead, shared libraries are loaded at an image base (0x10000000 by # default) and relocated if they conflict, which is a slow very memory # consuming and fragmenting process. To avoid this, we pick a random, # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link # time. Moving up from 0x10000000 also allows more sbrk(2) space. archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' archive_expsym_cmds='sed "s|^|_|" $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-h,$soname $wl--retain-symbols-file,$output_objdir/$soname.expsym $wl--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' ;; gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) tmp_diet=no if test linux-dietlibc = "$host_os"; then case $cc_basename in diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) esac fi if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ && test no = "$tmp_diet" then tmp_addflag=' $pic_flag' tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95* | pgfortran*) # Portland Group f77 and f90 compilers whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' tmp_addflag=' $pic_flag -Mnomain' ;; ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 tmp_addflag=' -i_dynamic' ;; efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; lf95*) # Lahey Fortran 8.1 whole_archive_flag_spec= tmp_sharedflag='--shared' ;; nagfor*) # NAGFOR 5.3 tmp_sharedflag='-Wl,-shared' ;; xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; nvcc*) # Cuda Compiler Driver 2.2 whole_archive_flag_spec='$wl--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 whole_archive_flag_spec='$wl--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` $wl--no-whole-archive' compiler_needs_object=yes tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-version-script $wl$output_objdir/$libname.ver -o $lib' fi case $cc_basename in tcc*) export_dynamic_flag_spec='-rdynamic' ;; xlf* | bgf* | bgxlf* | mpixlf*) # IBM XL Fortran 10.1 on PPC cannot create shared libs itself whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' if test yes = "$supports_anon_versioning"; then archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ echo "local: *; };" >> $output_objdir/$libname.ver~ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' fi ;; esac else ld_shlibs=no fi ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' wlarc= else archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' fi ;; solaris*) if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: The releases 2.8.* of the GNU linker cannot reliably *** create shared libraries on Solaris systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.9.1 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) case `$LD -v 2>&1` in *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: Releases of the GNU linker prior to 2.16.91.0.3 cannot *** reliably create shared libraries on SCO systems. Therefore, libtool *** is disabling shared libraries support. We urge you to upgrade GNU *** binutils to release 2.16.91.0.3 or newer. Another option is to modify *** your PATH or compiler configuration so that the native linker is *** used, and then restart. _LT_EOF ;; *) # For security reasons, it is highly recommended that you always # use absolute paths for naming shared libraries, and exclude the # DT_RUNPATH tag from executables and libraries. But doing so # requires that you compile everything twice, which is a pain. if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac ;; sunos4*) archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' wlarc= hardcode_direct=yes hardcode_shlibpath_var=no ;; *) if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname $wl-retain-symbols-file $wl$export_symbols -o $lib' else ld_shlibs=no fi ;; esac if test no = "$ld_shlibs"; then runpath_var= hardcode_libdir_flag_spec= export_dynamic_flag_spec= whole_archive_flag_spec= fi else # PORTME fill in a description of your system's linker (not GNU ld) case $host_os in aix3*) allow_undefined_flag=unsupported always_export_symbols=yes archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' # Note: this linker hardcodes the directories in LIBPATH if there # are no directories specified by -L. hardcode_minus_L=yes if test yes = "$GCC" && test -z "$lt_prog_compiler_static"; then # Neither direct hardcoding nor static linking is supported with a # broken collect2. hardcode_direct=unsupported fi ;; aix[4-9]*) if test ia64 = "$host_cpu"; then # On IA64, the linker does run time linking by default, so we don't # have to do anything special. aix_use_runtimelinking=no exp_sym_flag='-Bexport' no_entry_flag= else # If we're using GNU nm, then we don't want the "-C" option. # -C means demangle to GNU nm, but means don't demangle to AIX nm. # Without the "-l" option, or with the "-B" option, AIX nm treats # weak defined symbols like other global defined symbols, whereas # GNU nm marks them as "W". # While the 'weak' keyword is ignored in the Export File, we need # it in the Import File for the 'aix-soname' feature, so we have # to replace the "-B" option with "-P" for AIX nm. if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { if (\$ 2 == "W") { print \$ 3 " weak" } else { print \$ 3 } } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='`func_echo_all $NM | $SED -e '\''s/B\([^B]*\)$/P\1/'\''` -PCpgl $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L") || (\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) && (substr(\$ 1,1,1) != ".")) { if ((\$ 2 == "W") || (\$ 2 == "V") || (\$ 2 == "Z")) { print \$ 1 " weak" } else { print \$ 1 } } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no # Test if we are trying to use run time linking or normal # AIX style linking. If -brtl is somewhere in LDFLAGS, we # have runtime linking enabled, and use it for executables. # For shared libraries, we enable/disable runtime linking # depending on the kind of the shared library created - # when "with_aix_soname,aix_use_runtimelinking" is: # "aix,no" lib.a(lib.so.V) shared, rtl:no, for executables # "aix,yes" lib.so shared, rtl:yes, for executables # lib.a static archive # "both,no" lib.so.V(shr.o) shared, rtl:yes # lib.a(lib.so.V) shared, rtl:no, for executables # "both,yes" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a(lib.so.V) shared, rtl:no # "svr4,*" lib.so.V(shr.o) shared, rtl:yes, for executables # lib.a static archive case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test x-brtl = "x$ld_flag" || test x-Wl,-brtl = "x$ld_flag"); then aix_use_runtimelinking=yes break fi done if test svr4,no = "$with_aix_soname,$aix_use_runtimelinking"; then # With aix-soname=svr4, we create the lib.so.V shared archives only, # so we don't have lib.a shared libs to link our executables. # We have to force runtime linking in this case. aix_use_runtimelinking=yes LDFLAGS="$LDFLAGS -Wl,-brtl" fi ;; esac exp_sym_flag='-bexport' no_entry_flag='-bnoentry' fi # When large executables or shared objects are built, AIX ld can # have problems creating the table of contents. If linking a library # or program results in "error TOC overflow" add -mminimal-toc to # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. archive_cmds='' hardcode_direct=yes hardcode_direct_absolute=yes hardcode_libdir_separator=':' link_all_deplibs=yes file_list_spec='$wl-f,' case $with_aix_soname,$aix_use_runtimelinking in aix,*) ;; # traditional, no import file svr4,* | *,yes) # use import file # The Import File defines what to hardcode. hardcode_direct=no hardcode_direct_absolute=no ;; esac if test yes = "$GCC"; then case $host_os in aix4.[012]|aix4.[012].*) # We only want to do this on AIX 4.2 and lower, the check # below for broken collect2 doesn't work under 4.3+ collect2name=`$CC -print-prog-name=collect2` if test -f "$collect2name" && strings "$collect2name" | $GREP resolve_lib_name >/dev/null then # We have reworked collect2 : else # We have old collect2 hardcode_direct=unsupported # It fails to find uninstalled libraries when the uninstalled # path is not listed in the libpath. Setting hardcode_minus_L # to unsupported forces relinking hardcode_minus_L=yes hardcode_libdir_flag_spec='-L$libdir' hardcode_libdir_separator= fi ;; esac shared_flag='-shared' if test yes = "$aix_use_runtimelinking"; then shared_flag="$shared_flag "'$wl-G' fi # Need to ensure runtime linking is disabled for the traditional # shared library, or the linker may eventually find shared libraries # /with/ Import File - we do not want to mix them. shared_flag_aix='-shared' shared_flag_svr4='-shared $wl-G' else # not using gcc if test ia64 = "$host_cpu"; then # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release # chokes on -Wl,-G. The following line is correct: shared_flag='-G' else if test yes = "$aix_use_runtimelinking"; then shared_flag='$wl-G' else shared_flag='$wl-bM:SRE' fi shared_flag_aix='$wl-bM:SRE' shared_flag_svr4='$wl-G' fi fi export_dynamic_flag_spec='$wl-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes if test aix,yes = "$with_aix_soname,$aix_use_runtimelinking"; then # Warning - without using the other runtime loading flags (-brtl), # -berok will link without error, but may produce a broken library. allow_undefined_flag='-berok' # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs $wl'$no_entry_flag' $compiler_flags `if test -n "$allow_undefined_flag"; then func_echo_all "$wl$allow_undefined_flag"; else :; fi` $wl'$exp_sym_flag:\$export_symbols' '$shared_flag else if test ia64 = "$host_cpu"; then hardcode_libdir_flag_spec='$wl-R $libdir:/usr/lib:/lib' allow_undefined_flag="-z nodefs" archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\$wl$no_entry_flag"' $compiler_flags $wl$allow_undefined_flag '"\$wl$exp_sym_flag:\$export_symbols" else # Determine the default libpath from the value encoded in an # empty executable. if test set = "${lt_cv_aix_libpath+set}"; then aix_libpath=$lt_cv_aix_libpath else if ${lt_cv_aix_libpath_+:} false; then : $as_echo_n "(cached) " >&6 else cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\([^ ]*\) *$/\1/ p } }' lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` # Check for a 64-bit object if we didn't find anything. if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext if test -z "$lt_cv_aix_libpath_"; then lt_cv_aix_libpath_=/usr/lib:/lib fi fi aix_libpath=$lt_cv_aix_libpath_ fi hardcode_libdir_flag_spec='$wl-blibpath:$libdir:'"$aix_libpath" # Warning - without using the other run time loading flags, # -berok will link without error, but may produce a broken library. no_undefined_flag=' $wl-bernotok' allow_undefined_flag=' $wl-berok' if test yes = "$with_gnu_ld"; then # We only use this code for GNU lds that support --whole-archive. whole_archive_flag_spec='$wl--whole-archive$convenience $wl--no-whole-archive' else # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' fi archive_cmds_need_lc=yes archive_expsym_cmds='$RM -r $output_objdir/$realname.d~$MKDIR $output_objdir/$realname.d' # -brtl affects multiple linker settings, -berok does not and is overridden later compiler_flags_filtered='`func_echo_all "$compiler_flags " | $SED -e "s%-brtl\\([, ]\\)%-berok\\1%g"`' if test svr4 != "$with_aix_soname"; then # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_aix' -o $output_objdir/$realname.d/$soname $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$realname.d/$soname' fi if test aix != "$with_aix_soname"; then archive_expsym_cmds="$archive_expsym_cmds"'~$CC '$shared_flag_svr4' -o $output_objdir/$realname.d/$shared_archive_member_spec.o $libobjs $deplibs $wl-bnoentry '$compiler_flags_filtered'$wl-bE:$export_symbols$allow_undefined_flag~$STRIP -e $output_objdir/$realname.d/$shared_archive_member_spec.o~( func_echo_all "#! $soname($shared_archive_member_spec.o)"; if test shr_64 = "$shared_archive_member_spec"; then func_echo_all "# 64"; else func_echo_all "# 32"; fi; cat $export_symbols ) > $output_objdir/$realname.d/$shared_archive_member_spec.imp~$AR $AR_FLAGS $output_objdir/$soname $output_objdir/$realname.d/$shared_archive_member_spec.o $output_objdir/$realname.d/$shared_archive_member_spec.imp' else # used by -dlpreopen to get the symbols archive_expsym_cmds="$archive_expsym_cmds"'~$MV $output_objdir/$realname.d/$soname $output_objdir' fi archive_expsym_cmds="$archive_expsym_cmds"'~$RM -r $output_objdir/$realname.d' fi fi ;; amigaos*) case $host_cpu in powerpc) # see comment about AmigaOS4 .so support archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags $wl-soname $wl$soname -o $lib' archive_expsym_cmds='' ;; m68k) archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes ;; esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is # no search path for DLLs. case $cc_basename in cl*) # Native MSVC hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported always_export_symbols=yes file_list_spec='@' # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~linknames=' archive_expsym_cmds='if test DEF = "`$SED -n -e '\''s/^[ ]*//'\'' -e '\''/^\(;.*\)*$/d'\'' -e '\''s/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p'\'' -e q $export_symbols`" ; then cp "$export_symbols" "$output_objdir/$soname.def"; echo "$tool_output_objdir$soname.def" > "$output_objdir/$soname.exp"; else $SED -e '\''s/^/-link -EXPORT:/'\'' < $export_symbols > $output_objdir/$soname.exp; fi~ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ linknames=' # The linker will not automatically build a static lib if we build a DLL. # _LT_TAGVAR(old_archive_from_new_cmds, )='true' enable_shared_with_static_runtimes=yes exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' # Don't use ranlib old_postinstall_cmds='chmod 644 $oldlib' postlink_cmds='lt_outputfile="@OUTPUT@"~ lt_tool_outputfile="@TOOL_OUTPUT@"~ case $lt_outputfile in *.exe|*.EXE) ;; *) lt_outputfile=$lt_outputfile.exe lt_tool_outputfile=$lt_tool_outputfile.exe ;; esac~ if test : != "$MANIFEST_TOOL" && test -f "$lt_outputfile.manifest"; then $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; $RM "$lt_outputfile.manifest"; fi' ;; *) # Assume MSVC wrapper hardcode_libdir_flag_spec=' ' allow_undefined_flag=unsupported # Tell ltmain to make .lib files, not .a files. libext=lib # Tell ltmain to make .dll files, not .so files. shrext_cmds=.dll # FIXME: Setting linknames here is a bad hack. archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' # The linker will automatically build a .lib file if we build a DLL. old_archive_from_new_cmds='true' # FIXME: Should let the user specify the lib program. old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' enable_shared_with_static_runtimes=yes ;; esac ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported if test yes = "$lt_cv_ld_force_load"; then whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience $wl-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' else whole_archive_flag_spec='' fi link_all_deplibs=yes allow_undefined_flag=$_lt_dar_allow_undefined case $cc_basename in ifort*|nagfor*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test yes = "$_lt_dar_can_shared"; then output_verbose_link_cmd=func_echo_all archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dsymutil" module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dsymutil" archive_expsym_cmds="sed 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod$_lt_dar_export_syms$_lt_dsymutil" module_expsym_cmds="sed -e 's|^|_|' < \$export_symbols > \$output_objdir/\$libname-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags$_lt_dar_export_syms$_lt_dsymutil" else ld_shlibs=no fi ;; dgux*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor # support. Future versions do this automatically, but an explicit c++rt0.o # does not break anything, and helps significantly (at the cost of a little # extra space). freebsd2.2*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; # Unfortunately, older versions of FreeBSD 2 do not have this feature. freebsd2.*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; # FreeBSD 3 and greater uses gcc -shared to do shared libraries. freebsd* | dragonfly*) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test yes = "$GCC"; then archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag $wl+b $wl$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' else archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test "x$output_objdir/$soname" = "x$lib" || mv $output_objdir/$soname $lib' fi hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes export_dynamic_flag_spec='$wl-E' ;; hpux10*) if test yes,no = "$GCC,$with_gnu_ld"; then archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes fi ;; hpux11*) if test yes,no = "$GCC,$with_gnu_ld"; then case $host_cpu in hppa*64*) archive_cmds='$CC -shared $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared $pic_flag $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac else case $host_cpu in hppa*64*) archive_cmds='$CC -b $wl+h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) archive_cmds='$CC -b $wl+h $wl$soname $wl+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) # Older versions of the 11.00 compiler do not understand -b yet # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 $as_echo_n "checking if $CC understands -b... " >&6; } if ${lt_cv_prog_compiler__b+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_prog_compiler__b=no save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -b" echo "$lt_simple_link_test_code" > conftest.$ac_ext if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then # The linker can only warn and ignore the option if not recognized # So say no if there are warnings if test -s conftest.err; then # Append any errors to the config.log. cat conftest.err 1>&5 $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then lt_cv_prog_compiler__b=yes fi else lt_cv_prog_compiler__b=yes fi fi $RM -r conftest* LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 $as_echo "$lt_cv_prog_compiler__b" >&6; } if test yes = "$lt_cv_prog_compiler__b"; then archive_cmds='$CC -b $wl+h $wl$soname $wl+b $wl$install_libdir -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' fi ;; esac fi if test no = "$with_gnu_ld"; then hardcode_libdir_flag_spec='$wl+b $wl$libdir' hardcode_libdir_separator=: case $host_cpu in hppa*64*|ia64*) hardcode_direct=no hardcode_shlibpath_var=no ;; *) hardcode_direct=yes hardcode_direct_absolute=yes export_dynamic_flag_spec='$wl-E' # hardcode_minus_L: Not really in the search PATH, # but as the default location of the library. hardcode_minus_L=yes ;; esac fi ;; irix5* | irix6* | nonstopux*) if test yes = "$GCC"; then archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' # Try to use the -exported_symbol ld option, if it does not # work, assume that -exports_file does not work either and # implicitly export all symbols. # This should be the same for all languages, so no per-tag cache variable. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 $as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } if ${lt_cv_irix_exported_symbol+:} false; then : $as_echo_n "(cached) " >&6 else save_LDFLAGS=$LDFLAGS LDFLAGS="$LDFLAGS -shared $wl-exported_symbol ${wl}foo $wl-update_registry $wl/dev/null" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int foo (void) { return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : lt_cv_irix_exported_symbol=yes else lt_cv_irix_exported_symbol=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 $as_echo "$lt_cv_irix_exported_symbol" >&6; } if test yes = "$lt_cv_irix_exported_symbol"; then archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations $wl-exports_file $wl$export_symbols -o $lib' fi else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -exports_file $export_symbols -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: inherit_rpath=yes link_all_deplibs=yes ;; linux*) case $cc_basename in tcc*) # Fabrice Bellard et al's Tiny C Compiler ld_shlibs=yes archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' ;; esac ;; netbsd*) if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out else archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF fi hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; newsos6) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: hardcode_shlibpath_var=no ;; *nto* | *qnx*) ;; openbsd* | bitrig*) if test -f /usr/libexec/ld.so; then hardcode_direct=yes hardcode_shlibpath_var=no hardcode_direct_absolute=yes if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags $wl-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='$wl-rpath,$libdir' export_dynamic_flag_spec='$wl-E' else archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='$wl-rpath,$libdir' fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported shrext_cmds=.dll archive_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ emxexp $libobjs | $SED /"_DLL_InitTerm"/d >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' archive_expsym_cmds='$ECHO "LIBRARY ${soname%$shared_ext} INITINSTANCE TERMINSTANCE" > $output_objdir/$libname.def~ $ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~ $ECHO "DATA MULTIPLE NONSHARED" >> $output_objdir/$libname.def~ $ECHO EXPORTS >> $output_objdir/$libname.def~ prefix_cmds="$SED"~ if test EXPORTS = "`$SED 1q $export_symbols`"; then prefix_cmds="$prefix_cmds -e 1d"; fi~ prefix_cmds="$prefix_cmds -e \"s/^\(.*\)$/_\1/g\""~ cat $export_symbols | $prefix_cmds >> $output_objdir/$libname.def~ $CC -Zdll -Zcrtdll -o $output_objdir/$soname $libobjs $deplibs $compiler_flags $output_objdir/$libname.def~ emximp -o $lib $output_objdir/$libname.def' old_archive_From_new_cmds='emximp -o $output_objdir/${libname}_dll.a $output_objdir/$libname.def' enable_shared_with_static_runtimes=yes file_list_spec='@' ;; osf3*) if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' fi archive_cmds_need_lc='no' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' hardcode_libdir_separator=: ;; osf4* | osf5*) # as osf3* with the addition of -msym flag if test yes = "$GCC"; then allow_undefined_flag=' $wl-expect_unresolved $wl\*' archive_cmds='$CC -shared$allow_undefined_flag $pic_flag $libobjs $deplibs $compiler_flags $wl-msym $wl-soname $wl$soname `test -n "$verstring" && func_echo_all "$wl-set_version $wl$verstring"` $wl-update_registry $wl$output_objdir/so_locations -o $lib' hardcode_libdir_flag_spec='$wl-rpath $wl$libdir' else allow_undefined_flag=' -expect_unresolved \*' archive_cmds='$CC -shared$allow_undefined_flag $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib' archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ $CC -shared$allow_undefined_flag $wl-input $wl$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry $output_objdir/so_locations -o $lib~$RM $lib.exp' # Both c and cxx compiler support -rpath directly hardcode_libdir_flag_spec='-rpath $libdir' fi archive_cmds_need_lc='no' hardcode_libdir_separator=: ;; solaris*) no_undefined_flag=' -z defs' if test yes = "$GCC"; then wlarc='$wl' archive_cmds='$CC -shared $pic_flag $wl-z ${wl}text $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -shared $pic_flag $wl-z ${wl}text $wl-M $wl$lib.exp $wl-h $wl$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' else case `$CC -V 2>&1` in *"Compilers 5.0"*) wlarc='' archive_cmds='$LD -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $linker_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $LD -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' ;; *) wlarc='$wl' archive_cmds='$CC -G$allow_undefined_flag -h $soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ $CC -G$allow_undefined_flag -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' ;; esac fi hardcode_libdir_flag_spec='-R$libdir' hardcode_shlibpath_var=no case $host_os in solaris2.[0-5] | solaris2.[0-5].*) ;; *) # The compiler driver will combine and reorder linker options, # but understands '-z linker_flag'. GCC discards it without '$wl', # but is careful enough not to reorder. # Supported since Solaris 2.6 (maybe 2.5.1?) if test yes = "$GCC"; then whole_archive_flag_spec='$wl-z ${wl}allextract$convenience $wl-z ${wl}defaultextract' else whole_archive_flag_spec='-z allextract$convenience -z defaultextract' fi ;; esac link_all_deplibs=yes ;; sunos4*) if test sequent = "$host_vendor"; then # Use $CC to link under sequent, because it throws in some extra .o # files that make .init and .fini sections work. archive_cmds='$CC -G $wl-h $soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' fi hardcode_libdir_flag_spec='-L$libdir' hardcode_direct=yes hardcode_minus_L=yes hardcode_shlibpath_var=no ;; sysv4) case $host_vendor in sni) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=yes # is this really true??? ;; siemens) ## LD is ld it makes a PLAMLIB ## CC just makes a GrossModule. archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' reload_cmds='$CC -r -o $output$reload_objs' hardcode_direct=no ;; motorola) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_direct=no #Motorola manual says yes, but my tests say they lie ;; esac runpath_var='LD_RUN_PATH' hardcode_shlibpath_var=no ;; sysv4.3*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no export_dynamic_flag_spec='-Bexport' ;; sysv4*MP*) if test -d /usr/nec; then archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_shlibpath_var=no runpath_var=LD_RUN_PATH hardcode_runpath_var=yes ld_shlibs=yes fi ;; sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) no_undefined_flag='$wl-z,text' archive_cmds_need_lc=no hardcode_shlibpath_var=no runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; sysv5* | sco3.2v5* | sco5v6*) # Note: We CANNOT use -z defs as we might desire, because we do not # link with -lc, and that would cause any symbols used from libc to # always be unresolved, which means just about no library would # ever link correctly. If we're not using GNU ld we use -z text # though, which does catch some bad symbols but isn't as heavy-handed # as -z defs. no_undefined_flag='$wl-z,text' allow_undefined_flag='$wl-z,nodefs' archive_cmds_need_lc=no hardcode_shlibpath_var=no hardcode_libdir_flag_spec='$wl-R,$libdir' hardcode_libdir_separator=':' link_all_deplibs=yes export_dynamic_flag_spec='$wl-Bexport' runpath_var='LD_RUN_PATH' if test yes = "$GCC"; then archive_cmds='$CC -shared $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -shared $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' else archive_cmds='$CC -G $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' archive_expsym_cmds='$CC -G $wl-Bexport:$export_symbols $wl-h,$soname -o $lib $libobjs $deplibs $compiler_flags' fi ;; uts4*) archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-L$libdir' hardcode_shlibpath_var=no ;; *) ld_shlibs=no ;; esac if test sni = "$host_vendor"; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='$wl-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test no = "$ld_shlibs" && can_build_shared=no with_gnu_ld=$with_gnu_ld # # Do we need to explicitly link libc? # case "x$archive_cmds_need_lc" in x|xyes) # Assume -lc should be added archive_cmds_need_lc=yes if test yes,yes = "$GCC,$enable_shared"; then case $archive_cmds in *'~'*) # FIXME: we may have to deal with multi-command sequences. ;; '$CC '*) # Test whether the compiler implicitly links with -lc since on some # systems, -lgcc has to come before -lc. If gcc already passes -lc # to ld, don't add -lc before -lgcc. { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } if ${lt_cv_archive_cmds_need_lc+:} false; then : $as_echo_n "(cached) " >&6 else $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } 2>conftest.err; then soname=conftest lib=conftest libobjs=conftest.$ac_objext deplibs= wl=$lt_prog_compiler_wl pic_flag=$lt_prog_compiler_pic compiler_flags=-v linker_flags=-v verstring= output_objdir=. libname=conftest lt_save_allow_undefined_flag=$allow_undefined_flag allow_undefined_flag= if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } then lt_cv_archive_cmds_need_lc=no else lt_cv_archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 $as_echo "$lt_cv_archive_cmds_need_lc" >&6; } archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc ;; esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test yes = "$GCC"; then case $host_os in darwin*) lt_awk_arg='/^libraries:/,/LR/' ;; *) lt_awk_arg='/^libraries:/' ;; esac case $host_os in mingw* | cegcc*) lt_sed_strip_eq='s|=\([A-Za-z]:\)|\1|g' ;; *) lt_sed_strip_eq='s|=/|/|g' ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` case $lt_search_path_spec in *\;*) # if the path contains ";" then we assume it to be the separator # otherwise default to the standard path separator (i.e. ":") - it is # assumed that no part of a normal pathname contains ";" but that should # okay in the real world where ";" in dirpaths is itself problematic. lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` ;; *) lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` ;; esac # Ok, now we have the path, separated by spaces, we can step through it # and add multilib dir if necessary... lt_tmp_lt_search_path_spec= lt_multi_os_dir=/`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` # ...but if some path component already ends with the multilib dir we assume # that all is fine and trust -print-search-dirs as is (GCC 4.2? or newer). case "$lt_multi_os_dir; $lt_search_path_spec " in "/; "* | "/.; "* | "/./; "* | *"$lt_multi_os_dir "* | *"$lt_multi_os_dir/ "*) lt_multi_os_dir= ;; esac for lt_sys_path in $lt_search_path_spec; do if test -d "$lt_sys_path$lt_multi_os_dir"; then lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path$lt_multi_os_dir" elif test -n "$lt_multi_os_dir"; then test -d "$lt_sys_path" && \ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" fi done lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' BEGIN {RS = " "; FS = "/|\n";} { lt_foo = ""; lt_count = 0; for (lt_i = NF; lt_i > 0; lt_i--) { if ($lt_i != "" && $lt_i != ".") { if ($lt_i == "..") { lt_count++; } else { if (lt_count == 0) { lt_foo = "/" $lt_i lt_foo; } else { lt_count--; } } } } if (lt_foo != "") { lt_freq[lt_foo]++; } if (lt_freq[lt_foo] == 1) { print lt_foo; } }'` # AWK program above erroneously prepends '/' to C:/dos/paths # for these hosts. case $host_os in mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ $SED 's|/\([A-Za-z]:\)|\1|g'` ;; esac sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` else sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" fi library_names_spec= libname_spec='lib$name' soname_spec= shrext_cmds=.so postinstall_cmds= postuninstall_cmds= finish_cmds= finish_eval= shlibpath_var= shlibpath_overrides_runpath=unknown version_type=none dynamic_linker="$host_os ld.so" sys_lib_dlsearch_path_spec="/lib /usr/lib" need_lib_prefix=unknown hardcode_into_libs=no # when you set need_version to no, make sure it does not cause -set_version # flags to be left without arguments need_version=unknown case $host_os in aix3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname.a' shlibpath_var=LIBPATH # AIX 3 has no versioning support, so we append a major version to the name. soname_spec='$libname$release$shared_ext$major' ;; aix[4-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no hardcode_into_libs=yes if test ia64 = "$host_cpu"; then # AIX 5 supports IA64 library_names_spec='$libname$release$shared_ext$major $libname$release$shared_ext$versuffix $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH else # With GCC up to 2.95.x, collect2 would create an import file # for dependence libraries. The import file would start with # the line '#! .'. This would cause the generated library to # depend on '.', always an invalid library. This was fixed in # development snapshots of GCC prior to 3.0. case $host_os in aix4 | aix4.[01] | aix4.[01].*) if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' echo ' yes ' echo '#endif'; } | $CC -E - | $GREP yes > /dev/null; then : else can_build_shared=no fi ;; esac # Using Import Files as archive members, it is possible to support # filename-based versioning of shared library archives on AIX. While # this would work for both with and without runtime linking, it will # prevent static linking of such archives. So we do filename-based # shared library versioning with .so extension only, which is used # when both runtime linking and shared linking is enabled. # Unfortunately, runtime linking may impact performance, so we do # not want this to be the default eventually. Also, we use the # versioned .so libs for executables only if there is the -brtl # linker flag in LDFLAGS as well, or --with-aix-soname=svr4 only. # To allow for filename-based versioning support, we need to create # libNAME.so.V as an archive file, containing: # *) an Import File, referring to the versioned filename of the # archive as well as the shared archive member, telling the # bitwidth (32 or 64) of that shared object, and providing the # list of exported symbols of that shared object, eventually # decorated with the 'weak' keyword # *) the shared object with the F_LOADONLY flag set, to really avoid # it being seen by the linker. # At run time we better use the real file rather than another symlink, # but for link time we create the symlink libNAME.so -> libNAME.so.V case $with_aix_soname,$aix_use_runtimelinking in # AIX (on Power*) has no versioning support, so currently we cannot hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. aix,yes) # traditional libtool dynamic_linker='AIX unversionable lib.so' # If using run time linking (on AIX 4.2 or later) use lib.so # instead of lib.a to let people know that these are not # typical AIX shared libraries. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; aix,no) # traditional AIX only dynamic_linker='AIX lib.a(lib.so.V)' # We preserve .a as extension for shared libraries through AIX4.2 # and later when we are not doing run time linking. library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' ;; svr4,*) # full svr4 only dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,yes) # both, prefer svr4 dynamic_linker="AIX lib.so.V($shared_archive_member_spec.o), lib.a(lib.so.V)" library_names_spec='$libname$release$shared_ext$major $libname$shared_ext' # unpreferred sharedlib libNAME.a needs extra handling postinstall_cmds='test -n "$linkname" || linkname="$realname"~func_stripname "" ".so" "$linkname"~$install_shared_prog "$dir/$func_stripname_result.$libext" "$destdir/$func_stripname_result.$libext"~test -z "$tstripme" || test -z "$striplib" || $striplib "$destdir/$func_stripname_result.$libext"' postuninstall_cmds='for n in $library_names $old_library; do :; done~func_stripname "" ".so" "$n"~test "$func_stripname_result" = "$n" || func_append rmfiles " $odir/$func_stripname_result.$libext"' # We do not specify a path in Import Files, so LIBPATH fires. shlibpath_overrides_runpath=yes ;; *,no) # both, prefer aix dynamic_linker="AIX lib.a(lib.so.V), lib.so.V($shared_archive_member_spec.o)" library_names_spec='$libname$release.a $libname.a' soname_spec='$libname$release$shared_ext$major' # unpreferred sharedlib libNAME.so.V and symlink libNAME.so need extra handling postinstall_cmds='test -z "$dlname" || $install_shared_prog $dir/$dlname $destdir/$dlname~test -z "$tstripme" || test -z "$striplib" || $striplib $destdir/$dlname~test -n "$linkname" || linkname=$realname~func_stripname "" ".a" "$linkname"~(cd "$destdir" && $LN_S -f $dlname $func_stripname_result.so)' postuninstall_cmds='test -z "$dlname" || func_append rmfiles " $odir/$dlname"~for n in $old_library $library_names; do :; done~func_stripname "" ".a" "$n"~func_append rmfiles " $odir/$func_stripname_result.so"' ;; esac shlibpath_var=LIBPATH fi ;; amigaos*) case $host_cpu in powerpc) # Since July 2007 AmigaOS4 officially supports .so libraries. # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' ;; m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' ;; esac ;; beos*) library_names_spec='$libname$shared_ext' dynamic_linker="$host_os ld.so" shlibpath_var=LIBRARY_PATH ;; bsdi[45]*) version_type=linux # correct to gnu/linux during the next big refactor need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" # the default ld.so.conf also contains /usr/contrib/lib and # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow # libtool to hard-code these into programs ;; cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no case $GCC,$cc_basename in yes,*) # gcc library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes case $host_os in cygwin*) # Cygwin DLLs use 'cyg' prefix rather than 'lib' soname_spec='`echo $libname | sed -e 's/^lib/cyg/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; pw32*) # pw32 DLLs use 'pw' prefix rather than 'lib' library_names_spec='`echo $libname | sed -e 's/^lib/pw/'``echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' ;; esac dynamic_linker='Win32 ld.exe' ;; *,cl*) # Native MSVC libname_spec='$name' soname_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext' library_names_spec='$libname.dll.lib' case $build_os in mingw*) sys_lib_search_path_spec= lt_save_ifs=$IFS IFS=';' for lt_path in $LIB do IFS=$lt_save_ifs # Let DOS variable expansion print the short 8.3 style file name. lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" done IFS=$lt_save_ifs # Convert to MSYS style. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` ;; cygwin*) # Convert to unix form, then to dos form, then back to unix form # but this time dos style (no spaces!) so that the unix form looks # like /cygdrive/c/PROGRA~1:/cygdr... sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` ;; *) sys_lib_search_path_spec=$LIB if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH. sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` else sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # FIXME: find the short name or the path components, as spaces are # common. (e.g. "Program Files" -> "PROGRA~1") ;; esac # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; echo \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' shlibpath_overrides_runpath=yes dynamic_linker='Win32 link.exe' ;; *) # Assume MSVC wrapper library_names_spec='$libname`echo $release | $SED -e 's/[.]/-/g'`$versuffix$shared_ext $libname.lib' dynamic_linker='Win32 ld.exe' ;; esac # FIXME: first we should search . and the directory the executable is in shlibpath_var=PATH ;; darwin* | rhapsody*) dynamic_linker="$host_os dyld" version_type=darwin need_lib_prefix=no need_version=no library_names_spec='$libname$release$major$shared_ext $libname$shared_ext' soname_spec='$libname$release$major$shared_ext' shlibpath_overrides_runpath=yes shlibpath_var=DYLD_LIBRARY_PATH shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' ;; dgux*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; freebsd* | dragonfly*) # DragonFly does not have aout. When/if they implement a new # versioning mechanism, adjust this. if test -x /usr/bin/objformat; then objformat=`/usr/bin/objformat` else case $host_os in freebsd[23].*) objformat=aout ;; *) objformat=elf ;; esac fi version_type=freebsd-$objformat case $version_type in freebsd-elf*) library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' need_version=no need_lib_prefix=no ;; freebsd-*) library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' need_version=yes ;; esac shlibpath_var=LD_LIBRARY_PATH case $host_os in freebsd2.*) shlibpath_overrides_runpath=yes ;; freebsd3.[01]* | freebsdelf3.[01]*) shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; *) # from 4.6 on, and DragonFly shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; esac ;; haiku*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no dynamic_linker="$host_os runtime_loader" library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LIBRARY_PATH shlibpath_overrides_runpath=no sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' hardcode_into_libs=yes ;; hpux9* | hpux10* | hpux11*) # Give a soname corresponding to the major version so that dld.sl refuses to # link against other versions. version_type=sunos need_lib_prefix=no need_version=no case $host_cpu in ia64*) shrext_cmds='.so' hardcode_into_libs=yes dynamic_linker="$host_os dld.so" shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' if test 32 = "$HPUX_IA64_MODE"; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" sys_lib_dlsearch_path_spec=/usr/lib/hpux32 else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" sys_lib_dlsearch_path_spec=/usr/lib/hpux64 fi ;; hppa*64*) shrext_cmds='.sl' hardcode_into_libs=yes dynamic_linker="$host_os dld.sl" shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; *) shrext_cmds='.sl' dynamic_linker="$host_os dld.sl" shlibpath_var=SHLIB_PATH shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' ;; esac # HP-UX runs *really* slowly unless shared libraries are mode 555, ... postinstall_cmds='chmod 555 $lib' # or fails outright, so override atomically: install_override_mode=555 ;; interix[3-9]*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; irix5* | irix6* | nonstopux*) case $host_os in nonstopux*) version_type=nonstopux ;; *) if test yes = "$lt_cv_prog_gnu_ld"; then version_type=linux # correct to gnu/linux during the next big refactor else version_type=irix fi ;; esac need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$release$shared_ext $libname$shared_ext' case $host_os in irix5* | nonstopux*) libsuff= shlibsuff= ;; *) case $LD in # libtool.m4 will add one of these switches to LD *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") libsuff= shlibsuff= libmagic=32-bit;; *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") libsuff=32 shlibsuff=N32 libmagic=N32;; *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") libsuff=64 shlibsuff=64 libmagic=64-bit;; *) libsuff= shlibsuff= libmagic=never-match;; esac ;; esac shlibpath_var=LD_LIBRARY${shlibsuff}_PATH shlibpath_overrides_runpath=no sys_lib_search_path_spec="/usr/lib$libsuff /lib$libsuff /usr/local/lib$libsuff" sys_lib_dlsearch_path_spec="/usr/lib$libsuff /lib$libsuff" hardcode_into_libs=yes ;; # No shared lib support for Linux oldld, aout, or coff. linux*oldld* | linux*aout* | linux*coff*) dynamic_linker=no ;; linux*android*) version_type=none # Android doesn't support versioned libraries. need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext' soname_spec='$libname$release$shared_ext' finish_cmds= shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes dynamic_linker='Android linker' # Don't embed -rpath directories since the linker doesn't support them. hardcode_libdir_flag_spec='-L$libdir' ;; # This must be glibc/ELF. linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no # Some binutils ld are patched to set DT_RUNPATH if ${lt_cv_shlibpath_overrides_runpath+:} false; then : $as_echo_n "(cached) " >&6 else lt_cv_shlibpath_overrides_runpath=no save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ int main () { ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : lt_cv_shlibpath_overrides_runpath=yes fi fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir fi shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath # This implies no fast_install, which is unacceptable. # Some rework will be needed to allow for fast_install # before this can be enabled. hardcode_into_libs=yes # Ideally, we could use ldconfig to report *all* directores which are # searched for libraries, however this is still not possible. Aside from not # being certain /sbin/ldconfig is available, command # 'ldconfig -N -X -v | grep ^/' on 64bit Fedora does not report /usr/lib64, # even though it is searched at run-time. Try to do the best guess by # appending ld.so.conf contents (and includes) to the search path. if test -f /etc/ld.so.conf; then lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi # We used to test for /lib/ld.so.1 and disable shared libraries on # powerpc, because MkLinux only supported shared libraries with the # GNU dynamic linker. Since this was broken with cross compilers, # most powerpc-linux boxes support dynamic linking these days and # people can always --disable-shared, the test was removed, and we # assume the GNU/Linux dynamic linker is in use. dynamic_linker='GNU/Linux ld.so' ;; netbsd*) version_type=sunos need_lib_prefix=no need_version=no if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' dynamic_linker='NetBSD (a.out) ld.so' else library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' dynamic_linker='NetBSD ld.elf_so' fi shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes ;; newsos6) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; *nto* | *qnx*) version_type=qnx need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes dynamic_linker='ldqnx.so' ;; openbsd* | bitrig*) version_type=sunos sys_lib_dlsearch_path_spec=/usr/lib need_lib_prefix=no if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`"; then need_version=no else need_version=yes fi library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes ;; os2*) libname_spec='$name' version_type=windows shrext_cmds=.dll need_version=no need_lib_prefix=no # OS/2 can only load a DLL with a base name of 8 characters or less. soname_spec='`test -n "$os2dllname" && libname="$os2dllname"; v=$($ECHO $release$versuffix | tr -d .-); n=$($ECHO $libname | cut -b -$((8 - ${#v})) | tr . _); $ECHO $n$v`$shared_ext' library_names_spec='${libname}_dll.$libext' dynamic_linker='OS/2 ld.exe' shlibpath_var=BEGINLIBPATH sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec postinstall_cmds='base_file=`basename \$file`~ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\$base_file'\''i; $ECHO \$dlname'\''`~ dldir=$destdir/`dirname \$dlpath`~ test -d \$dldir || mkdir -p \$dldir~ $install_prog $dir/$dlname \$dldir/$dlname~ chmod a+x \$dldir/$dlname~ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; fi' postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; $ECHO \$dlname'\''`~ dlpath=$dir/\$dldll~ $RM \$dlpath' ;; osf3* | osf4* | osf5*) version_type=osf need_lib_prefix=no need_version=no soname_spec='$libname$release$shared_ext$major' library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; rdos*) dynamic_linker=no ;; solaris*) version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes # ldd complains unless libraries are executable postinstall_cmds='chmod +x $lib' ;; sunos4*) version_type=sunos library_names_spec='$libname$release$shared_ext$versuffix $libname$shared_ext$versuffix' finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes if test yes = "$with_gnu_ld"; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH case $host_vendor in sni) shlibpath_overrides_runpath=no need_lib_prefix=no runpath_var=LD_RUN_PATH ;; siemens) need_lib_prefix=no ;; motorola) need_lib_prefix=no need_version=no shlibpath_overrides_runpath=no sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' ;; esac ;; sysv4*MP*) if test -d /usr/nec; then version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$shared_ext.$versuffix $libname$shared_ext.$major $libname$shared_ext' soname_spec='$libname$shared_ext.$major' shlibpath_var=LD_LIBRARY_PATH fi ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) version_type=sco need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=yes hardcode_into_libs=yes if test yes = "$with_gnu_ld"; then sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' else sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' case $host_os in sco3.2v5*) sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" ;; esac fi sys_lib_dlsearch_path_spec='/usr/lib' ;; tpf*) # TPF is a cross-target only. Preferred cross-host = GNU/Linux. version_type=linux # correct to gnu/linux during the next big refactor need_lib_prefix=no need_version=no library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes ;; uts4*) version_type=linux # correct to gnu/linux during the next big refactor library_names_spec='$libname$release$shared_ext$versuffix $libname$release$shared_ext$major $libname$shared_ext' soname_spec='$libname$release$shared_ext$major' shlibpath_var=LD_LIBRARY_PATH ;; *) dynamic_linker=no ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test no = "$dynamic_linker" && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test yes = "$GCC"; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test set = "${lt_cv_sys_lib_search_path_spec+set}"; then sys_lib_search_path_spec=$lt_cv_sys_lib_search_path_spec fi if test set = "${lt_cv_sys_lib_dlsearch_path_spec+set}"; then sys_lib_dlsearch_path_spec=$lt_cv_sys_lib_dlsearch_path_spec fi # remember unaugmented sys_lib_dlsearch_path content for libtool script decls... configure_time_dlsearch_path=$sys_lib_dlsearch_path_spec # ... but it needs LT_SYS_LIBRARY_PATH munging for other configure-time code func_munge_path_list sys_lib_dlsearch_path_spec "$LT_SYS_LIBRARY_PATH" # to be used as default LT_SYS_LIBRARY_PATH value in generated libtool configure_time_lt_sys_library_path=$LT_SYS_LIBRARY_PATH { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 $as_echo_n "checking how to hardcode library paths into programs... " >&6; } hardcode_action= if test -n "$hardcode_libdir_flag_spec" || test -n "$runpath_var" || test yes = "$hardcode_automatic"; then # We can hardcode non-existent directories. if test no != "$hardcode_direct" && # If the only mechanism to avoid hardcoding is shlibpath_var, we # have to relink, otherwise we might link with an installed library # when we should be linking with a yet-to-be-installed one ## test no != "$_LT_TAGVAR(hardcode_shlibpath_var, )" && test no != "$hardcode_minus_L"; then # Linking always hardcodes the temporary library directory. hardcode_action=relink else # We can link without hardcoding, and we can hardcode nonexisting dirs. hardcode_action=immediate fi else # We cannot hardcode anything, or else we can only hardcode existing # directories. hardcode_action=unsupported fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test relink = "$hardcode_action" || test yes = "$inherit_rpath"; then # Fast installation is not supported enable_fast_install=no elif test yes = "$shlibpath_overrides_runpath" || test no = "$enable_shared"; then # Fast installation is not necessary enable_fast_install=needless fi if test yes != "$enable_dlopen"; then enable_dlopen=unknown enable_dlopen_self=unknown enable_dlopen_self_static=unknown else lt_cv_dlopen=no lt_cv_dlopen_libs= case $host_os in beos*) lt_cv_dlopen=load_add_on lt_cv_dlopen_libs= lt_cv_dlopen_self=yes ;; mingw* | pw32* | cegcc*) lt_cv_dlopen=LoadLibrary lt_cv_dlopen_libs= ;; cygwin*) lt_cv_dlopen=dlopen lt_cv_dlopen_libs= ;; darwin*) # if libdl is installed we need to link against it { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else lt_cv_dlopen=dyld lt_cv_dlopen_libs= lt_cv_dlopen_self=yes fi ;; tpf*) # Don't try to run any link tests for TPF. We know it's impossible # because TPF is a cross-compiler, and we know how we open DSOs. lt_cv_dlopen=dlopen lt_cv_dlopen_libs= lt_cv_dlopen_self=no ;; *) ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" if test "x$ac_cv_func_shl_load" = xyes; then : lt_cv_dlopen=shl_load else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if ${ac_cv_lib_dld_shl_load+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char shl_load (); int main () { return shl_load (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_shl_load=yes else ac_cv_lib_dld_shl_load=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 $as_echo "$ac_cv_lib_dld_shl_load" >&6; } if test "x$ac_cv_lib_dld_shl_load" = xyes; then : lt_cv_dlopen=shl_load lt_cv_dlopen_libs=-ldld else ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" if test "x$ac_cv_func_dlopen" = xyes; then : lt_cv_dlopen=dlopen else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if ${ac_cv_lib_dl_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dl_dlopen=yes else ac_cv_lib_dl_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-ldl else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if ${ac_cv_lib_svld_dlopen+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dlopen (); int main () { return dlopen (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_svld_dlopen=yes else ac_cv_lib_svld_dlopen=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = xyes; then : lt_cv_dlopen=dlopen lt_cv_dlopen_libs=-lsvld else { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if ${ac_cv_lib_dld_dld_link+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char dld_link (); int main () { return dld_link (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_dld_dld_link=yes else ac_cv_lib_dld_dld_link=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 $as_echo "$ac_cv_lib_dld_dld_link" >&6; } if test "x$ac_cv_lib_dld_dld_link" = xyes; then : lt_cv_dlopen=dld_link lt_cv_dlopen_libs=-ldld fi fi fi fi fi fi ;; esac if test no = "$lt_cv_dlopen"; then enable_dlopen=no else enable_dlopen=yes fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS=$CPPFLAGS test yes = "$ac_cv_header_dlfcn_h" && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" save_LDFLAGS=$LDFLAGS wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" save_LIBS=$LIBS LIBS="$lt_cv_dlopen_libs $LIBS" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; esac else : # compilation failed lt_cv_dlopen_self=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test yes = "$lt_cv_dlopen_self"; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 $as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } if ${lt_cv_dlopen_self_static+:} false; then : $as_echo_n "(cached) " >&6 else if test yes = "$cross_compiling"; then : lt_cv_dlopen_self_static=cross else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF #line $LINENO "configure" #include "confdefs.h" #if HAVE_DLFCN_H #include #endif #include #ifdef RTLD_GLOBAL # define LT_DLGLOBAL RTLD_GLOBAL #else # ifdef DL_GLOBAL # define LT_DLGLOBAL DL_GLOBAL # else # define LT_DLGLOBAL 0 # endif #endif /* We may have to define LT_DLLAZY_OR_NOW in the command line if we find out it does not work in some platform. */ #ifndef LT_DLLAZY_OR_NOW # ifdef RTLD_LAZY # define LT_DLLAZY_OR_NOW RTLD_LAZY # else # ifdef DL_LAZY # define LT_DLLAZY_OR_NOW DL_LAZY # else # ifdef RTLD_NOW # define LT_DLLAZY_OR_NOW RTLD_NOW # else # ifdef DL_NOW # define LT_DLLAZY_OR_NOW DL_NOW # else # define LT_DLLAZY_OR_NOW 0 # endif # endif # endif # endif #endif /* When -fvisibility=hidden is used, assume the code has been annotated correspondingly for the symbols needed. */ #if defined __GNUC__ && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) int fnord () __attribute__((visibility("default"))); #endif int fnord () { return 42; } int main () { void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); int status = $lt_dlunknown; if (self) { if (dlsym (self,"fnord")) status = $lt_dlno_uscore; else { if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; else puts (dlerror ()); } /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; } && test -s "conftest$ac_exeext" 2>/dev/null; then (./conftest; exit; ) >&5 2>/dev/null lt_status=$? case x$lt_status in x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; esac else : # compilation failed lt_cv_dlopen_self_static=no fi fi rm -fr conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 $as_echo "$lt_cv_dlopen_self_static" >&6; } fi CPPFLAGS=$save_CPPFLAGS LDFLAGS=$save_LDFLAGS LIBS=$save_LIBS ;; esac case $lt_cv_dlopen_self in yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; *) enable_dlopen_self=unknown ;; esac case $lt_cv_dlopen_self_static in yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; *) enable_dlopen_self_static=unknown ;; esac fi striplib= old_striplib= { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -z "$STRIP"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } else if $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else case $host_os in darwin*) # FIXME - insert some real tests, host_os isn't really good enough striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } ;; freebsd*) if $STRIP -V 2>&1 | $GREP "elftoolchain" >/dev/null; then old_striplib="$STRIP --strip-debug" striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } ;; esac fi fi # Report what library types will actually be built { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test no = "$can_build_shared" && enable_shared=no # On AIX, shared libraries and static libraries use the same namespace, and # are all built from PIC. case $host_os in aix3*) test yes = "$enable_shared" && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test ia64 != "$host_cpu"; then case $enable_shared,$with_aix_soname,$aix_use_runtimelinking in yes,aix,yes) ;; # shared object as lib.so file only yes,svr4,*) ;; # shared object as lib.so archive member only yes,*) enable_static=no ;; # shared object in lib.a archive as well esac fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 $as_echo_n "checking whether to build static libraries... " >&6; } # Make sure either enable_shared or enable_static is yes. test yes = "$enable_shared" || enable_static=yes { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 $as_echo "$enable_static" >&6; } fi ac_ext=c ac_cpp='$CPP $CPPFLAGS' ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu CC=$lt_save_CC ac_config_commands="$ac_config_commands libtool" # Only expand once: case $host_os in *cygwin*|*mingw*) if test x"$enable_shared" = "xyes"; then CDD_LDFLAGS="$CDD_LDFLAGS -no-undefined" fi ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: checking for __gmpz_init in -lgmp" >&5 $as_echo_n "checking for __gmpz_init in -lgmp... " >&6; } if ${ac_cv_lib_gmp___gmpz_init+:} false; then : $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgmp $LIBS" cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ /* Override any GCC internal prototype to avoid an error. Use char because int might match the return type of a GCC builtin and then its argument prototype would still apply. */ #ifdef __cplusplus extern "C" #endif char __gmpz_init (); int main () { return __gmpz_init (); ; return 0; } _ACEOF if ac_fn_c_try_link "$LINENO"; then : ac_cv_lib_gmp___gmpz_init=yes else ac_cv_lib_gmp___gmpz_init=no fi rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_gmp___gmpz_init" >&5 $as_echo "$ac_cv_lib_gmp___gmpz_init" >&6; } if test "x$ac_cv_lib_gmp___gmpz_init" = xyes; then : true fi if test "x$ac_cv_lib_gmp___gmpz_init" = "xyes"; then GMP_TRUE= GMP_FALSE='#' else GMP_TRUE='#' GMP_FALSE= fi for ac_prog in latex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_latex+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$latex"; then ac_cv_prog_latex="$latex" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_latex="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi latex=$ac_cv_prog_latex if test -n "$latex"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $latex" >&5 $as_echo "$latex" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$latex" && break done if test "x$ac_cv_prog_latex" != "x"; then LATEX_TRUE= LATEX_FALSE='#' else LATEX_TRUE='#' LATEX_FALSE= fi for ac_prog in pdflatex do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_pdflatex+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$pdflatex"; then ac_cv_prog_pdflatex="$pdflatex" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_pdflatex="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi pdflatex=$ac_cv_prog_pdflatex if test -n "$pdflatex"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pdflatex" >&5 $as_echo "$pdflatex" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$pdflatex" && break done if test "x$ac_cv_prog_pdflatex" != "x"; then PDF_TRUE= PDF_FALSE='#' else PDF_TRUE='#' PDF_FALSE= fi for ac_prog in latex2html do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_latex2html+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$latex2html"; then ac_cv_prog_latex2html="$latex2html" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_latex2html="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi latex2html=$ac_cv_prog_latex2html if test -n "$latex2html"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $latex2html" >&5 $as_echo "$latex2html" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$latex2html" && break done if test "x$ac_cv_prog_latex2html" != "x"; then HTML_TRUE= HTML_FALSE='#' else HTML_TRUE='#' HTML_FALSE= fi for ac_prog in dvips do # Extract the first word of "$ac_prog", so it can be a program name with args. set dummy $ac_prog; ac_word=$2 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if ${ac_cv_prog_dvips+:} false; then : $as_echo_n "(cached) " >&6 else if test -n "$dvips"; then ac_cv_prog_dvips="$dvips" # Let the user override the test. else as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_dvips="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 fi done done IFS=$as_save_IFS fi fi dvips=$ac_cv_prog_dvips if test -n "$dvips"; then { $as_echo "$as_me:${as_lineno-$LINENO}: result: $dvips" >&5 $as_echo "$dvips" >&6; } else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } fi test -n "$dvips" && break done if test "x$ac_cv_prog_dvips" != "x"; then PS_TRUE= PS_FALSE='#' else PS_TRUE='#' PS_FALSE= fi ac_config_files="$ac_config_files doc/Makefile lib-src/Makefile src/Makefile Makefile" cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure # scripts and configure runs, see configure's option --config-cache. # It is not useful on other systems. If it contains results you don't # want to keep, you may remove or edit it. # # config.status only pays attention to the cache file if you give it # the --recheck option to rerun configure. # # `ac_cv_env_foo' variables (set or unset) will be overridden when # loading this file, other *unset* `ac_cv_foo' will be assigned the # following values. _ACEOF # The following way of writing the cache mishandles newlines in values, # but we know of no workaround that is simple, portable, and efficient. # So, we kill variables containing newlines. # Ultrix sh set writes to stderr and can't be redirected directly, # and sets the high bit in the cache file unless we assign to the vars. ( for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do eval ac_val=\$$ac_var case $ac_val in #( *${as_nl}*) case $ac_var in #( *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; esac case $ac_var in #( _ | IFS | as_nl) ;; #( BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( *) { eval $ac_var=; unset $ac_var;} ;; esac ;; esac done (set) 2>&1 | case $as_nl`(ac_space=' '; set) 2>&1` in #( *${as_nl}ac_space=\ *) # `set' does not quote correctly, so add quotes: double-quote # substitution turns \\\\ into \\, and sed turns \\ into \. sed -n \ "s/'/'\\\\''/g; s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" ;; #( *) # `set' quotes correctly as required by POSIX, so do not add quotes. sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" ;; esac | sort ) | sed ' /^ac_cv_env_/b end t clear :clear s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache if diff "$cache_file" confcache >/dev/null 2>&1; then :; else if test -w "$cache_file"; then if test "x$cache_file" != "x/dev/null"; then { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} if test ! -f "$cache_file" || test -h "$cache_file"; then cat confcache >"$cache_file" else case $cache_file in #( */* | ?:*) mv -f confcache "$cache_file"$$ && mv -f "$cache_file"$$ "$cache_file" ;; #( *) mv -f confcache "$cache_file" ;; esac fi fi else { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 $as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} fi fi rm -f confcache test "x$prefix" = xNONE && prefix=$ac_default_prefix # Let make expand exec_prefix. test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' # Transform confdefs.h into DEFS. # Protect against shell expansion while executing Makefile rules. # Protect against Makefile macro expansion. # # If the first sed substitution is executed (which looks for macros that # take arguments), then branch to the quote section. Otherwise, # look for a macro that doesn't take arguments. ac_script=' :mline /\\$/{ N s,\\\n,, b mline } t clear :clear s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g t quote s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g t quote b any :quote s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g s/\[/\\&/g s/\]/\\&/g s/\$/$$/g H :any ${ g s/^\n// s/\n/ /g p } ' DEFS=`sed -n "$ac_script" confdefs.h` ac_libobjs= ac_ltlibobjs= U= for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue # 1. Remove the extension, and $U if already installed. ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' ac_i=`$as_echo "$ac_i" | sed "$ac_script"` # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR # will be set to the directory where LIBOBJS objects are built. as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs { $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 $as_echo_n "checking that generated files are newer than configure... " >&6; } if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 $as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' else am__EXEEXT_TRUE='#' am__EXEEXT_FALSE= fi if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then as_fn_error $? "conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then as_fn_error $? "conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${GMP_TRUE}" && test -z "${GMP_FALSE}"; then as_fn_error $? "conditional \"GMP\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${LATEX_TRUE}" && test -z "${LATEX_FALSE}"; then as_fn_error $? "conditional \"LATEX\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PDF_TRUE}" && test -z "${PDF_FALSE}"; then as_fn_error $? "conditional \"PDF\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${HTML_TRUE}" && test -z "${HTML_FALSE}"; then as_fn_error $? "conditional \"HTML\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi if test -z "${PS_TRUE}" && test -z "${PS_FALSE}"; then as_fn_error $? "conditional \"PS\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 ac_clean_files_save=$ac_clean_files ac_clean_files="$ac_clean_files $CONFIG_STATUS" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} as_write_fail=0 cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 #! $SHELL # Generated by $as_me. # Run this file to recreate the current configuration. # Compiler output produced by configure, useful for debugging # configure, is in config.log if it exists. debug=false ac_cs_recheck=false ac_cs_silent=false SHELL=\${CONFIG_SHELL-$SHELL} export SHELL _ASEOF cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 ## -------------------- ## ## M4sh Initialization. ## ## -------------------- ## # Be more Bourne compatible DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in #( *posix*) : set -o posix ;; #( *) : ;; esac fi as_nl=' ' export as_nl # Printing a long string crashes Solaris 7 /usr/bin/printf. as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo # Prefer a ksh shell builtin over an external printf program on Solaris, # but without wasting forks for bash or zsh. if test -z "$BASH_VERSION$ZSH_VERSION" \ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='print -r --' as_echo_n='print -rn --' elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then as_echo='printf %s\n' as_echo_n='printf %s' else if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' as_echo_n='/usr/ucb/echo -n' else as_echo_body='eval expr "X$1" : "X\\(.*\\)"' as_echo_n_body='eval arg=$1; case $arg in #( *"$as_nl"*) expr "X$arg" : "X\\(.*\\)$as_nl"; arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; esac; expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" ' export as_echo_n_body as_echo_n='sh -c $as_echo_n_body as_echo' fi export as_echo_body as_echo='sh -c $as_echo_body as_echo' fi # The user is always right. if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # IFS # We need space, tab and new line, in precisely that order. Quoting is # there to prevent editors from complaining about space-tab. # (If _AS_PATH_WALK were called with IFS unset, it would disable word # splitting by setting IFS to empty value.) IFS=" "" $as_nl" # Find who we are. Look in the path if we contain no directory separator. as_myself= case $0 in #(( *[\\/]* ) as_myself=$0 ;; *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in $PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break done IFS=$as_save_IFS ;; esac # We did not find ourselves, most probably we were run as `sh COMMAND' # in which case we are not to be found in the path. if test "x$as_myself" = x; then as_myself=$0 fi if test ! -f "$as_myself"; then $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 exit 1 fi # Unset variables that we do not need and which cause bugs (e.g. in # pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" # suppresses any "Segmentation fault" message there. '((' could # trigger a bug in pdksh 5.2.14. for as_var in BASH_ENV ENV MAIL MAILPATH do eval test x\${$as_var+set} = xset \ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH # as_fn_error STATUS ERROR [LINENO LOG_FD] # ---------------------------------------- # Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are # provided, also output the error to LOG_FD, referencing LINENO. Then exit the # script with STATUS, using 1 if that was 0. as_fn_error () { as_status=$1; test $as_status -eq 0 && as_status=1 if test "$4"; then as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 fi $as_echo "$as_me: error: $2" >&2 as_fn_exit $as_status } # as_fn_error # as_fn_set_status STATUS # ----------------------- # Set $? to STATUS, without forking. as_fn_set_status () { return $1 } # as_fn_set_status # as_fn_exit STATUS # ----------------- # Exit the shell with STATUS, even in a "trap 0" or "set -e" context. as_fn_exit () { set +e as_fn_set_status $1 exit $1 } # as_fn_exit # as_fn_unset VAR # --------------- # Portably unset VAR. as_fn_unset () { { eval $1=; unset $1;} } as_unset=as_fn_unset # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take # advantage of any shell optimizations that allow amortized linear growth over # repeated appends, instead of the typical quadratic growth present in naive # implementations. if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : eval 'as_fn_append () { eval $1+=\$2 }' else as_fn_append () { eval $1=\$$1\$2 } fi # as_fn_append # as_fn_arith ARG... # ------------------ # Perform arithmetic evaluation on the ARGs, and store the result in the # global $as_val. Take advantage of shells that can avoid forks. The arguments # must be portable across $(()) and expr. if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : eval 'as_fn_arith () { as_val=$(( $* )) }' else as_fn_arith () { as_val=`expr "$@" || test $? -eq 1` } fi # as_fn_arith if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then as_basename=basename else as_basename=false fi if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi as_me=`$as_basename -- "$0" || $as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ X"$0" : 'X\(//\)$' \| \ X"$0" : 'X\(/\)' \| . 2>/dev/null || $as_echo X/"$0" | sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } /^X\/\(\/\/\)$/{ s//\1/ q } /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` # Avoid depending upon Character Ranges. as_cr_letters='abcdefghijklmnopqrstuvwxyz' as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' as_cr_Letters=$as_cr_letters$as_cr_LETTERS as_cr_digits='0123456789' as_cr_alnum=$as_cr_Letters$as_cr_digits ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in #((((( -n*) case `echo 'xy\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. xy) ECHO_C='\c';; *) echo `echo ksh88 bug on AIX 6.1` > /dev/null ECHO_T=' ';; esac;; *) ECHO_N='-n';; esac rm -f conf$$ conf$$.exe conf$$.file if test -d conf$$.dir; then rm -f conf$$.dir/conf$$.file else rm -f conf$$.dir mkdir conf$$.dir 2>/dev/null fi if (echo >conf$$.file) 2>/dev/null; then if ln -s conf$$.file conf$$ 2>/dev/null; then as_ln_s='ln -s' # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -pR' fi else as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null # as_fn_mkdir_p # ------------- # Create "$as_dir" as a directory, including parents if necessary. as_fn_mkdir_p () { case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || eval $as_mkdir_p || { as_dirs= while :; do case $as_dir in #( *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( *) as_qdir=$as_dir;; esac as_dirs="'$as_qdir' $as_dirs" as_dir=`$as_dirname -- "$as_dir" || $as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$as_dir" : 'X\(//\)[^/]' \| \ X"$as_dir" : 'X\(//\)$' \| \ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$as_dir" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` test -d "$as_dir" && break done test -z "$as_dirs" || eval "mkdir $as_dirs" } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" } # as_fn_mkdir_p if mkdir -p . 2>/dev/null; then as_mkdir_p='mkdir -p "$as_dir"' else test -d ./-p && rmdir ./-p as_mkdir_p=false fi # as_fn_executable_p FILE # ----------------------- # Test if FILE is an executable regular file. as_fn_executable_p () { test -f "$1" && test -x "$1" } # as_fn_executable_p as_test_x='test -x' as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" # Sed expression to map a string onto a valid variable name. as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" exec 6>&1 ## ----------------------------------- ## ## Main body of $CONFIG_STATUS script. ## ## ----------------------------------- ## _ASEOF test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Save the log message, to keep $0 and so on meaningful, and to # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" This file was extended by cddlib $as_me 0.94j, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS CONFIG_LINKS = $CONFIG_LINKS CONFIG_COMMANDS = $CONFIG_COMMANDS $ $0 $@ on `(hostname || uname -n) 2>/dev/null | sed 1q` " _ACEOF case $ac_config_files in *" "*) set x $ac_config_files; shift; ac_config_files=$*;; esac cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # Files that config.status was made for. config_files="$ac_config_files" config_commands="$ac_config_commands" _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 ac_cs_usage="\ \`$as_me' instantiates files and other configuration actions from templates according to the current configuration. Unless the files and actions are specified as TAGs, all are instantiated by default. Usage: $0 [OPTION]... [TAG]... -h, --help print this help, then exit -V, --version print version number and configuration settings, then exit --config print configuration, then exit -q, --quiet, --silent do not print progress messages -d, --debug don't remove temporary files --recheck update $as_me by reconfiguring in the same conditions --file=FILE[:TEMPLATE] instantiate the configuration file FILE Configuration files: $config_files Configuration commands: $config_commands Report bugs to the package provider." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ cddlib config.status 0.94j configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." ac_pwd='$ac_pwd' srcdir='$srcdir' INSTALL='$INSTALL' MKDIR_P='$MKDIR_P' AWK='$AWK' test -n "\$AWK" || AWK=awk _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # The default lists apply if the user does not specify any file. ac_need_defaults=: while test $# != 0 do case $1 in --*=?*) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` ac_shift=: ;; --*=) ac_option=`expr "X$1" : 'X\([^=]*\)='` ac_optarg= ac_shift=: ;; *) ac_option=$1 ac_optarg=$2 ac_shift=shift ;; esac case $ac_option in # Handling of the options. -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) ac_cs_recheck=: ;; --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) $as_echo "$ac_cs_version"; exit ;; --config | --confi | --conf | --con | --co | --c ) $as_echo "$ac_cs_config"; exit ;; --debug | --debu | --deb | --de | --d | -d ) debug=: ;; --file | --fil | --fi | --f ) $ac_shift case $ac_optarg in *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; '') as_fn_error $? "missing file argument" ;; esac as_fn_append CONFIG_FILES " '$ac_optarg'" ac_need_defaults=false;; --he | --h | --help | --hel | -h ) $as_echo "$ac_cs_usage"; exit ;; -q | -quiet | --quiet | --quie | --qui | --qu | --q \ | -silent | --silent | --silen | --sile | --sil | --si | --s) ac_cs_silent=: ;; # This is an error. -*) as_fn_error $? "unrecognized option: \`$1' Try \`$0 --help' for more information." ;; *) as_fn_append ac_config_targets " $1" ac_need_defaults=false ;; esac shift done ac_configure_extra_args= if $ac_cs_silent; then exec 6>/dev/null ac_configure_extra_args="$ac_configure_extra_args --silent" fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' export CONFIG_SHELL exec "\$@" fi _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 exec 5>>config.log { echo sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX ## Running $as_me. ## _ASBOX $as_echo "$ac_log" } >&5 _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH sed_quote_subst='$sed_quote_subst' double_quote_subst='$double_quote_subst' delay_variable_subst='$delay_variable_subst' macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' shared_archive_member_spec='`$ECHO "$shared_archive_member_spec" | $SED "$delay_single_quote_subst"`' SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' lt_ar_flags='`$ECHO "$lt_ar_flags" | $SED "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_import='`$ECHO "$lt_cv_sys_global_symbol_to_import" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' lt_cv_nm_interface='`$ECHO "$lt_cv_nm_interface" | $SED "$delay_single_quote_subst"`' nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' lt_cv_truncate_bin='`$ECHO "$lt_cv_truncate_bin" | $SED "$delay_single_quote_subst"`' objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' configure_time_dlsearch_path='`$ECHO "$configure_time_dlsearch_path" | $SED "$delay_single_quote_subst"`' configure_time_lt_sys_library_path='`$ECHO "$configure_time_lt_sys_library_path" | $SED "$delay_single_quote_subst"`' hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } # Quote evaled strings. for var in AS \ DLLTOOL \ OBJDUMP \ SHELL \ ECHO \ PATH_SEPARATOR \ SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ deplibs_check_method \ file_magic_cmd \ file_magic_glob \ want_nocaseglob \ sharedlib_from_linklib_cmd \ AR \ archiver_list_spec \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_import \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ lt_cv_nm_interface \ nm_file_list_spec \ lt_cv_truncate_bin \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_pic \ lt_prog_compiler_wl \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ MANIFEST_TOOL \ DSYMUTIL \ NMEDIT \ LIPO \ OTOOL \ OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ compiler_needs_object \ with_gnu_ld \ allow_undefined_flag \ no_undefined_flag \ hardcode_libdir_flag_spec \ hardcode_libdir_separator \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ install_override_mode \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Double-quote double-evaled strings. for var in reload_cmds \ old_postinstall_cmds \ old_postuninstall_cmds \ old_archive_cmds \ extract_expsyms_cmds \ old_archive_from_new_cmds \ old_archive_from_expsyms_cmds \ archive_cmds \ archive_expsym_cmds \ module_cmds \ module_expsym_cmds \ export_symbols_cmds \ prelink_cmds \ postlink_cmds \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ configure_time_dlsearch_path \ configure_time_lt_sys_library_path; do case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ## exclude from sc_prohibit_nested_quotes ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done ac_aux_dir='$ac_aux_dir' # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes INIT. if test -n "\${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi PACKAGE='$PACKAGE' VERSION='$VERSION' RM='$RM' ofile='$ofile' _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # Handling of arguments. for ac_config_target in $ac_config_targets do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; "lib-src/Makefile") CONFIG_FILES="$CONFIG_FILES lib-src/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac done # If the user did not use the arguments to specify the items to instantiate, # then the envvar interface is used. Set only those that are not. # We use the long form for the default assignment because of an extremely # bizarre bug on SunOS 4.1.3. if $ac_need_defaults; then test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands fi # Have a temporary directory for convenience. Make it in the build tree # simply because there is no reason against having it here, and in addition, # creating and moving files from /tmp can sometimes cause problems. # Hook for its removal unless debugging. # Note that there is a small window in which the directory will not be cleaned: # after its creation but before its name has been assigned to `$tmp'. $debug || { tmp= ac_tmp= trap 'exit_status=$? : "${ac_tmp:=$tmp}" { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status ' 0 trap 'as_fn_exit 1' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 ac_tmp=$tmp # Set up the scripts for CONFIG_FILES section. # No need to generate them if there are no CONFIG_FILES. # This happens for instance with `./config.status config.h'. if test -n "$CONFIG_FILES"; then ac_cr=`echo X | tr X '\015'` # On cygwin, bash can eat \r inside `` if the user requested igncr. # But we know of no other shell where ac_cr would be empty at this # point, so we can use a bashism as a fallback. if test "x$ac_cr" = x; then eval ac_cr=\$\'\\r\' fi ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then ac_cs_awk_cr='\\r' else ac_cs_awk_cr=$ac_cr fi echo 'BEGIN {' >"$ac_tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` ac_delim='%!_!# ' for ac_last_try in false false false false false :; do . ./conf$$subs.sh || as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` if test $ac_delim_n = $ac_delim_num; then break elif $ac_last_try; then as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 else ac_delim="$ac_delim!$ac_delim _$ac_delim!! " fi done rm -f conf$$subs.sh cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && _ACEOF sed -n ' h s/^/S["/; s/!.*/"]=/ p g s/^[^!]*!// :repl t repl s/'"$ac_delim"'$// t delim :nl h s/\(.\{148\}\)..*/\1/ t more1 s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ p n b repl :more1 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t nl :delim h s/\(.\{148\}\)..*/\1/ t more2 s/["\\]/\\&/g; s/^/"/; s/$/"/ p b :more2 s/["\\]/\\&/g; s/^/"/; s/$/"\\/ p g s/.\{148\}// t delim ' >$CONFIG_STATUS || ac_write_fail=1 rm -f conf$$subs.awk cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 _ACAWK cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && for (key in S) S_is_set[key] = 1 FS = "" } { line = $ 0 nfields = split(line, field, "@") substed = 0 len = length(field[1]) for (i = 2; i < nfields; i++) { key = field[i] keylen = length(key) if (S_is_set[key]) { value = S[key] line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) len += length(value) + length(field[++i]) substed = 1 } else len += 1 + keylen } print line } _ACAWK _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" else cat fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 _ACEOF # VPATH may cause trouble with some makes, so we remove sole $(srcdir), # ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and # trailing colons and then remove the whole line if VPATH becomes empty # (actually we leave an empty line to preserve line numbers). if test "x$srcdir" = x.; then ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ h s/// s/^/:/ s/[ ]*$/:/ s/:\$(srcdir):/:/g s/:\${srcdir}:/:/g s/:@srcdir@:/:/g s/^:*// s/:*$// x s/\(=[ ]*\).*/\1/ G s/\n// s/^[^=]*=[ ]*$// }' fi cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 fi # test -n "$CONFIG_FILES" eval set X " :F $CONFIG_FILES :C $CONFIG_COMMANDS" shift for ac_tag do case $ac_tag in :[FHLC]) ac_mode=$ac_tag; continue;; esac case $ac_mode$ac_tag in :[FHL]*:*);; :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; :[FH]-) ac_tag=-:-;; :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; esac ac_save_IFS=$IFS IFS=: set x $ac_tag IFS=$ac_save_IFS shift ac_file=$1 shift case $ac_mode in :L) ac_source=$1;; :[FH]) ac_file_inputs= for ac_f do case $ac_f in -) ac_f="$ac_tmp/stdin";; *) # Look for the file first in the build tree, then in the source tree # (if the path is not absolute). The absolute path cannot be DOS-style, # because $ac_f cannot contain `:'. test -f "$ac_f" || case $ac_f in [\\/$]*) false;; *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; esac || as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac as_fn_append ac_file_inputs " '$ac_f'" done # Let's still pretend it is `configure' which instantiates (i.e., don't # use $as_me), people would be surprised to read: # /* config.h. Generated by config.status. */ configure_input='Generated from '` $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' `' by configure.' if test x"$ac_file" != x-; then configure_input="$ac_file. $configure_input" { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 $as_echo "$as_me: creating $ac_file" >&6;} fi # Neutralize special characters interpreted by sed in replacement strings. case $configure_input in #( *\&* | *\|* | *\\* ) ac_sed_conf_input=`$as_echo "$configure_input" | sed 's/[\\\\&|]/\\\\&/g'`;; #( *) ac_sed_conf_input=$configure_input;; esac case $ac_tag in *:-:* | *:-) cat >"$ac_tmp/stdin" \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; esac ;; esac ac_dir=`$as_dirname -- "$ac_file" || $as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$ac_file" : 'X\(//\)[^/]' \| \ X"$ac_file" : 'X\(//\)$' \| \ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$ac_file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir="$ac_dir"; as_fn_mkdir_p ac_builddir=. case "$ac_dir" in .) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` # A ".." for each directory in $ac_dir_suffix. ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` case $ac_top_builddir_sub in "") ac_top_builddir_sub=. ac_top_build_prefix= ;; *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; esac ;; esac ac_abs_top_builddir=$ac_pwd ac_abs_builddir=$ac_pwd$ac_dir_suffix # for backward compatibility: ac_top_builddir=$ac_top_build_prefix case $srcdir in .) # We are building in place. ac_srcdir=. ac_top_srcdir=$ac_top_builddir_sub ac_abs_top_srcdir=$ac_pwd ;; [\\/]* | ?:[\\/]* ) # Absolute name. ac_srcdir=$srcdir$ac_dir_suffix; ac_top_srcdir=$srcdir ac_abs_top_srcdir=$srcdir ;; *) # Relative name. ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix ac_top_srcdir=$ac_top_build_prefix$srcdir ac_abs_top_srcdir=$ac_pwd/$srcdir ;; esac ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix case $ac_mode in :F) # # CONFIG_FILE # case $INSTALL in [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; esac ac_MKDIR_P=$MKDIR_P case $MKDIR_P in [\\/$]* | ?:[\\/]* ) ;; */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; esac _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. ac_datarootdir_hack=; ac_datarootdir_seen= ac_sed_dataroot=' /datarootdir/ { p q } /@datadir@/p /@docdir@/p /@infodir@/p /@localedir@/p /@mandir@/p' case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in *datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 $as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_datarootdir_hack=' s&@datadir@&$datadir&g s&@docdir@&$docdir&g s&@infodir@&$infodir&g s&@localedir@&$localedir&g s&@mandir@&$mandir&g s&\\\${datarootdir}&$datarootdir&g' ;; esac _ACEOF # Neutralize VPATH when `$srcdir' = `.'. # Shell code in configure.ac might set extrasub. # FIXME: do we really want to maintain this feature? cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_sed_extra="$ac_vpsub $extrasub _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 :t /@[a-zA-Z_][a-zA-Z_0-9]*@/!b s|@configure_input@|$ac_sed_conf_input|;t t s&@top_builddir@&$ac_top_builddir_sub&;t t s&@top_build_prefix@&$ac_top_build_prefix&;t t s&@srcdir@&$ac_srcdir&;t t s&@abs_srcdir@&$ac_abs_srcdir&;t t s&@top_srcdir@&$ac_top_srcdir&;t t s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t s&@builddir@&$ac_builddir&;t t s&@abs_builddir@&$ac_abs_builddir&;t t s&@abs_top_builddir@&$ac_abs_top_builddir&;t t s&@INSTALL@&$ac_INSTALL&;t t s&@MKDIR_P@&$ac_MKDIR_P&;t t $ac_datarootdir_hack " eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ "$ac_tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&5 $as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' which seems to be undefined. Please make sure it is defined" >&2;} rm -f "$ac_tmp/stdin" case $ac_file in -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; esac \ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 $as_echo "$as_me: executing $ac_file commands" >&6;} ;; esac case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`$as_dirname -- "$mf" || $as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$mf" : 'X\(//\)[^/]' \| \ X"$mf" : 'X\(//\)$' \| \ X"$mf" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || $as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$file" : 'X\(//\)[^/]' \| \ X"$file" : 'X\(//\)$' \| \ X"$file" : 'X\(/\)' \| . 2>/dev/null || $as_echo X"$file" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q'` as_dir=$dirpart/$fdir; as_fn_mkdir_p # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ;; "libtool":C) # See if we are running on zsh, and set the options that allow our # commands through without removal of \ escapes. if test -n "${ZSH_VERSION+set}"; then setopt NO_GLOB_SUBST fi cfgfile=${ofile}T trap "$RM \"$cfgfile\"; exit 1" 1 2 15 $RM "$cfgfile" cat <<_LT_EOF >> "$cfgfile" #! $SHELL # Generated automatically by $as_me ($PACKAGE) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # Provide generalized library-building support services. # Written by Gordon Matzigkeit, 1996 # Copyright (C) 2014 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program or library that is built # using GNU Libtool, you may include this file under the same # distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # The names of the tagged configurations supported by this script. available_tags='' # Configured defaults for sys_lib_dlsearch_path munging. : \${LT_SYS_LIBRARY_PATH="$configure_time_lt_sys_library_path"} # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # Assembler program. AS=$lt_AS # DLL creation program. DLLTOOL=$lt_DLLTOOL # Object dumper program. OBJDUMP=$lt_OBJDUMP # Whether or not to build shared libraries. build_libtool_libs=$enable_shared # Whether or not to build static libraries. build_old_libs=$enable_static # What type of objects to build. pic_mode=$pic_mode # Whether or not to optimize for fast installation. fast_install=$enable_fast_install # Shared archive member basename,for filename based shared library versioning on AIX. shared_archive_member_spec=$shared_archive_member_spec # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that protects backslashes. ECHO=$lt_ECHO # The PATH separator for the build system. PATH_SEPARATOR=$lt_PATH_SEPARATOR # The host system. host_alias=$host_alias host=$host host_os=$host_os # The build system. build_alias=$build_alias build=$build build_os=$build_os # A sed program that does not truncate output. SED=$lt_SED # Sed that helps us avoid accidentally triggering echo(1) options like -n. Xsed="\$SED -e 1s/^X//" # A grep program that handles long lines. GREP=$lt_GREP # An ERE matcher. EGREP=$lt_EGREP # A literal string matcher. FGREP=$lt_FGREP # A BSD- or MS-compatible name lister. NM=$lt_NM # Whether we need soft or hard links. LN_S=$lt_LN_S # What is the maximum length of a command? max_cmd_len=$max_cmd_len # Object file suffix (normally "o"). objext=$ac_objext # Executable file suffix (normally ""). exeext=$exeext # whether the shell understands "unset". lt_unset=$lt_unset # turn spaces into newlines. SP2NL=$lt_lt_SP2NL # turn newlines into spaces. NL2SP=$lt_lt_NL2SP # convert \$build file names to \$host format. to_host_file_cmd=$lt_cv_to_host_file_cmd # convert \$build files to toolchain format. to_tool_file_cmd=$lt_cv_to_tool_file_cmd # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method # Command to use when deplibs_check_method = "file_magic". file_magic_cmd=$lt_file_magic_cmd # How to find potential files when deplibs_check_method = "file_magic". file_magic_glob=$lt_file_magic_glob # Find potential files using nocaseglob when deplibs_check_method = "file_magic". want_nocaseglob=$lt_want_nocaseglob # Command to associate shared and link libraries. sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd # The archiver. AR=$lt_AR # Flags to create an archive (by configure). lt_ar_flags=$lt_ar_flags # Flags to create an archive. AR_FLAGS=\${ARFLAGS-"\$lt_ar_flags"} # How to feed a file listing to the archiver. archiver_list_spec=$lt_archiver_list_spec # A symbol stripping program. STRIP=$lt_STRIP # Commands used to install an old-style archive. RANLIB=$lt_RANLIB old_postinstall_cmds=$lt_old_postinstall_cmds old_postuninstall_cmds=$lt_old_postuninstall_cmds # Whether to use a lock for old archive extraction. lock_old_archive_extraction=$lock_old_archive_extraction # A C compiler. LTCC=$lt_CC # LTCC compiler flags. LTCFLAGS=$lt_CFLAGS # Take the output of nm and produce a listing of raw symbols and C names. global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe # Transform the output of nm in a proper C declaration. global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm into a list of symbols to manually relocate. global_symbol_to_import=$lt_lt_cv_sys_global_symbol_to_import # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address # Transform the output of nm in a C name address pair when lib prefix is needed. global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix # The name lister interface. nm_interface=$lt_lt_cv_nm_interface # Specify filename containing input files for \$NM. nm_file_list_spec=$lt_nm_file_list_spec # The root where to search for dependent libraries,and where our libraries should be installed. lt_sysroot=$lt_sysroot # Command to truncate a binary pipe. lt_truncate_bin=$lt_lt_cv_truncate_bin # The name of the directory that contains temporary libtool files. objdir=$objdir # Used to examine libraries when file_magic_cmd begins with "file". MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks # Manifest tool. MANIFEST_TOOL=$lt_MANIFEST_TOOL # Tool to manipulate archived DWARF debug symbol files on Mac OS X. DSYMUTIL=$lt_DSYMUTIL # Tool to change global to local symbols on Mac OS X. NMEDIT=$lt_NMEDIT # Tool to manipulate fat objects and archives on Mac OS X. LIPO=$lt_LIPO # ldd/readelf like tool for Mach-O binaries on Mac OS X. OTOOL=$lt_OTOOL # ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. OTOOL64=$lt_OTOOL64 # Old archive suffix (normally "a"). libext=$libext # Shared library suffix (normally ".so"). shrext_cmds=$lt_shrext_cmds # The commands to extract the exported symbol list from a shared archive. extract_expsyms_cmds=$lt_extract_expsyms_cmds # Variables whose values should be saved in libtool wrapper scripts and # restored at link time. variables_saved_for_relink=$lt_variables_saved_for_relink # Do we need the "lib" prefix for modules? need_lib_prefix=$need_lib_prefix # Do we need a version for libraries? need_version=$need_version # Library versioning type. version_type=$version_type # Shared library runtime path variable. runpath_var=$runpath_var # Shared library path variable. shlibpath_var=$shlibpath_var # Is shlibpath searched before the hard-coded library search path? shlibpath_overrides_runpath=$shlibpath_overrides_runpath # Format of library name prefix. libname_spec=$lt_libname_spec # List of archive names. First name is the real one, the rest are links. # The last name is the one that the linker finds with -lNAME library_names_spec=$lt_library_names_spec # The coded name of the library, if different from the real name. soname_spec=$lt_soname_spec # Permission mode override for installation of shared libraries. install_override_mode=$lt_install_override_mode # Command to use after installation of a shared archive. postinstall_cmds=$lt_postinstall_cmds # Command to use after uninstallation of a shared archive. postuninstall_cmds=$lt_postuninstall_cmds # Commands used to finish a libtool library installation in a directory. finish_cmds=$lt_finish_cmds # As "finish_cmds", except a single script fragment to be evaled but # not shown. finish_eval=$lt_finish_eval # Whether we should hardcode library paths into libraries. hardcode_into_libs=$hardcode_into_libs # Compile-time system search path for libraries. sys_lib_search_path_spec=$lt_sys_lib_search_path_spec # Detected run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_configure_time_dlsearch_path # Explicit LT_SYS_LIBRARY_PATH set during ./configure time. configure_time_lt_sys_library_path=$lt_configure_time_lt_sys_library_path # Whether dlopen is supported. dlopen_support=$enable_dlopen # Whether dlopen of programs is supported. dlopen_self=$enable_dlopen_self # Whether dlopen of statically linked programs is supported. dlopen_self_static=$enable_dlopen_self_static # Commands to strip libraries. old_striplib=$lt_old_striplib striplib=$lt_striplib # The linker used to build libraries. LD=$lt_LD # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # Commands used to build an old-style archive. old_archive_cmds=$lt_old_archive_cmds # A language specific compiler. CC=$lt_compiler # Is the compiler the GNU compiler? with_gcc=$GCC # Compiler flag to turn off builtin functions. no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Compiler flag to prevent dynamic linking. link_static_flag=$lt_lt_prog_compiler_static # Does compiler simultaneously support -c and -o options? compiler_c_o=$lt_lt_cv_prog_compiler_c_o # Whether or not to add -lc for building shared libraries. build_libtool_need_lc=$archive_cmds_need_lc # Whether or not to disallow shared libs when runtime libs are static. allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes # Compiler flag to allow reflexive dlopens. export_dynamic_flag_spec=$lt_export_dynamic_flag_spec # Compiler flag to generate shared objects directly from archives. whole_archive_flag_spec=$lt_whole_archive_flag_spec # Whether the compiler copes with passing no objects directly. compiler_needs_object=$lt_compiler_needs_object # Create an old-style archive from a shared archive. old_archive_from_new_cmds=$lt_old_archive_from_new_cmds # Create a temporary old-style archive to link instead of a shared archive. old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds # Commands used to build a shared archive. archive_cmds=$lt_archive_cmds archive_expsym_cmds=$lt_archive_expsym_cmds # Commands used to build a loadable module if different from building # a shared archive. module_cmds=$lt_module_cmds module_expsym_cmds=$lt_module_expsym_cmds # Whether we are building with GNU ld or not. with_gnu_ld=$lt_with_gnu_ld # Flag that allows shared libraries with undefined symbols to be built. allow_undefined_flag=$lt_allow_undefined_flag # Flag that enforces no undefined symbols. no_undefined_flag=$lt_no_undefined_flag # Flag to hardcode \$libdir into a binary during linking. # This must work even if \$libdir does not exist hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec # Whether we need a single "-rpath" flag with a separated argument. hardcode_libdir_separator=$lt_hardcode_libdir_separator # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary. hardcode_direct=$hardcode_direct # Set to "yes" if using DIR/libNAME\$shared_ext during linking hardcodes # DIR into the resulting binary and the resulting library dependency is # "absolute",i.e impossible to change by setting \$shlibpath_var if the # library is relocated. hardcode_direct_absolute=$hardcode_direct_absolute # Set to "yes" if using the -LDIR flag during linking hardcodes DIR # into the resulting binary. hardcode_minus_L=$hardcode_minus_L # Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR # into the resulting binary. hardcode_shlibpath_var=$hardcode_shlibpath_var # Set to "yes" if building a shared library automatically hardcodes DIR # into the library and all subsequent libraries and executables linked # against it. hardcode_automatic=$hardcode_automatic # Set to yes if linker adds runtime paths of dependent libraries # to runtime path list. inherit_rpath=$inherit_rpath # Whether libtool must link a program against all its dependency libraries. link_all_deplibs=$link_all_deplibs # Set to "yes" if exported symbols are required. always_export_symbols=$always_export_symbols # The commands to list exported symbols. export_symbols_cmds=$lt_export_symbols_cmds # Symbols that should not be listed in the preloaded symbols. exclude_expsyms=$lt_exclude_expsyms # Symbols that must always be exported. include_expsyms=$lt_include_expsyms # Commands necessary for linking programs (against libraries) with templates. prelink_cmds=$lt_prelink_cmds # Commands necessary for finishing linking programs. postlink_cmds=$lt_postlink_cmds # Specify filename containing input files. file_list_spec=$lt_file_list_spec # How to hardcode a shared library path into an executable. hardcode_action=$hardcode_action # ### END LIBTOOL CONFIG _LT_EOF cat <<'_LT_EOF' >> "$cfgfile" # ### BEGIN FUNCTIONS SHARED WITH CONFIGURE # func_munge_path_list VARIABLE PATH # ----------------------------------- # VARIABLE is name of variable containing _space_ separated list of # directories to be munged by the contents of PATH, which is string # having a format: # "DIR[:DIR]:" # string "DIR[ DIR]" will be prepended to VARIABLE # ":DIR[:DIR]" # string "DIR[ DIR]" will be appended to VARIABLE # "DIRP[:DIRP]::[DIRA:]DIRA" # string "DIRP[ DIRP]" will be prepended to VARIABLE and string # "DIRA[ DIRA]" will be appended to VARIABLE # "DIR[:DIR]" # VARIABLE will be replaced by "DIR[ DIR]" func_munge_path_list () { case x$2 in x) ;; *:) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'` \$$1\" ;; x:*) eval $1=\"\$$1 `$ECHO $2 | $SED 's/:/ /g'`\" ;; *::*) eval $1=\"\$$1\ `$ECHO $2 | $SED -e 's/.*:://' -e 's/:/ /g'`\" eval $1=\"`$ECHO $2 | $SED -e 's/::.*//' -e 's/:/ /g'`\ \$$1\" ;; *) eval $1=\"`$ECHO $2 | $SED 's/:/ /g'`\" ;; esac } # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. func_cc_basename () { for cc_temp in $*""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done func_cc_basename_result=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` } # ### END FUNCTIONS SHARED WITH CONFIGURE _LT_EOF case $host_os in aix3*) cat <<\_LT_EOF >> "$cfgfile" # AIX sometimes has problems with the GCC collect2 program. For some # reason, if we set the COLLECT_NAMES environment variable, the problems # vanish in a puff of smoke. if test set != "${COLLECT_NAMES+set}"; then COLLECT_NAMES= export COLLECT_NAMES fi _LT_EOF ;; esac ltmain=$ac_aux_dir/ltmain.sh # We use sed instead of cat because bash on DJGPP gets confused if # if finds mixed CR/LF and LF-only lines. Since sed operates in # text mode, it properly converts lines to CR/LF. This bash problem # is reportedly fixed, but why not run on old versions too? sed '$q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) mv -f "$cfgfile" "$ofile" || (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") chmod +x "$ofile" ;; esac done # for ac_tag as_fn_exit 0 _ACEOF ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 # configure is writing to config.log, and then calls config.status. # config.status does its own redirection, appending to config.log. # Unfortunately, on DOS this fails, as config.log is still kept open # by configure, so config.status won't be able to write to it; its # output is simply discarded. So we exec the FD to /dev/null, # effectively closing config.log, so it can be properly (re)opened and # appended to by config.status. When coming back to configure, we # need to make the FD available again. if test "$no_create" != yes; then ac_cs_success=: ac_config_status_args= test "$silent" = yes && ac_config_status_args="$ac_config_status_args --quiet" exec 5>/dev/null $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false exec 5>>config.log # Use ||, not &&, to avoid exiting from the if with $? = 1, which # would make configure fail if this is the last instruction. $ac_cs_success || as_fn_exit 1 fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi cddlib-0.94j/configure.ac0000644000175000017500000000356213307421337012261 00000000000000dnl Process this file with autoconf to produce a configure script, e.g., by running ./bootstrap. dnl We need at least autoconf 2.69 for this configure.ac to work. AC_PREREQ([2.69]) AC_INIT([cddlib], [0.94j]) dnl Version number of the library c:r:a. dnl Set to c+1:0:0 on a non-backwards-compatible change. dnl Set to c+1:0:a+1 on a backwards-compatible change. dnl Set to c:r+1:a if the interface is unchanged. AC_SUBST([libcdd_version_info], [0:0:0]) AC_CONFIG_MACRO_DIR([m4]) AM_INIT_AUTOMAKE([1.14.1]) dnl Find C compiler. AC_PROG_CC dnl Set INSTALL or use install-sh. AC_PROG_INSTALL dnl Our "make distcheck" needs egrep. AC_PROG_EGREP dnl Configure libtool. LT_INIT([win32-dll]) AC_CANONICAL_HOST dnl libtool requires "-no-undefined" for win32 dll AC_SUBST(CDD_LDFLAGS) case $host_os in *cygwin*|*mingw*) if test x"$enable_shared" = "xyes"; then CDD_LDFLAGS="$CDD_LDFLAGS -no-undefined" fi ;; esac dnl Look for gmp. But do not prepend -lgmp to LIBS as we do not want to link everything against gmp. AC_CHECK_LIB([gmp], [__gmpz_init], [true]) dnl We do not build the gmp enabled library if we don't have gmp. AM_CONDITIONAL([GMP], [test "x$ac_cv_lib_gmp___gmpz_init" = "xyes"]) dnl Check for latex to build the documentation dvi AC_CHECK_PROGS([latex], [latex]) AM_CONDITIONAL([LATEX], [test "x$ac_cv_prog_latex" != "x"]) dnl Check for pdflatex to build the documentation pdf AC_CHECK_PROGS([pdflatex], [pdflatex]) AM_CONDITIONAL([PDF], [test "x$ac_cv_prog_pdflatex" != "x"]) dnl Check for latex2html to build the documentation in HTML format AC_CHECK_PROGS([latex2html], [latex2html]) AM_CONDITIONAL([HTML], [test "x$ac_cv_prog_latex2html" != "x"]) dnl Check for dvips to build the documentation ps AC_CHECK_PROGS([dvips], [dvips]) AM_CONDITIONAL([PS], [test "x$ac_cv_prog_dvips" != "x"]) AC_CONFIG_FILES([doc/Makefile lib-src/Makefile src/Makefile Makefile]) AC_OUTPUT cddlib-0.94j/aclocal.m40000644000175000017500000012246713307421343011636 00000000000000# generated automatically by aclocal 1.15.1 -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, [m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. To do so, use the procedure documented by the package, typically 'autoreconf'.])]) # Copyright (C) 2002-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_AUTOMAKE_VERSION(VERSION) # ---------------------------- # Automake X.Y traces this macro to ensure aclocal.m4 has been # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.15' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. m4_if([$1], [1.15.1], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) # _AM_AUTOCONF_VERSION(VERSION) # ----------------------------- # aclocal traces this macro to find the Autoconf version. # This is a private macro too. Using m4_define simplifies # the logic in aclocal, which can simply ignore this definition. m4_define([_AM_AUTOCONF_VERSION], []) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.15.1])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets # $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to # '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and # therefore $ac_aux_dir as well) can be either absolute or relative, # depending on how configure is run. This is pretty annoying, since # it makes $ac_aux_dir quite unusable in subdirectories: in the top # source directory, any form will work fine, but in subdirectories a # relative path needs to be adjusted first. # # $ac_aux_dir/missing # fails when called from a subdirectory if $ac_aux_dir is relative # $top_srcdir/$ac_aux_dir/missing # fails if $ac_aux_dir is absolute, # fails when called from a subdirectory in a VPATH build with # a relative $ac_aux_dir # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually # harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, # iff we strip the leading $srcdir from $ac_aux_dir. That would be: # am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` # and then we would define $MISSING as # MISSING="\${SHELL} $am_aux_dir/missing" # This will work as long as MISSING is not called from configure, because # unfortunately $(top_srcdir) has no meaning in configure. # However there are other variables, like CC, which are often used in # configure, and could therefore not use this "fixed" $ac_aux_dir. # # Another solution, used here, is to always expand $ac_aux_dir to an # absolute PATH. The drawback is that using absolute paths prevent a # configured tree to be moved without reconfiguration. AC_DEFUN([AM_AUX_DIR_EXPAND], [AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl # Expand $ac_aux_dir to an absolute path. am_aux_dir=`cd "$ac_aux_dir" && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ([2.52])dnl m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl _AM_SUBST_NOTMAKE([$1_FALSE])dnl m4_define([_AM_COND_VALUE_$1], [$2])dnl if $2; then $1_TRUE= $1_FALSE='#' else $1_TRUE='#' $1_FALSE= fi AC_CONFIG_COMMANDS_PRE( [if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then AC_MSG_ERROR([[conditional "$1" was never defined. Usually this means the macro was only invoked conditionally.]]) fi])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing # CC etc. in the Makefile, will ask for an AC_PROG_CC use... # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. # NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was # modified to invoke _AM_DEPENDENCIES(CC); we would have a circular # dependency, and given that the user is not expected to run this macro, # just rely on AC_PROG_CC. AC_DEFUN([_AM_DEPENDENCIES], [AC_REQUIRE([AM_SET_DEPDIR])dnl AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], [$1], [CXX], [depcc="$CXX" am_compiler_list=], [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], [$1], [UPC], [depcc="$UPC" am_compiler_list=], [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], [if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up # making a dummy file named 'D' -- because '-MD' means "put the output # in D". rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. cp "$am_depcomp" conftest.dir cd conftest.dir # We will build objects and dependencies in a subdirectory because # it helps to detect inapplicable dependency modes. For instance # both Tru64's cc and ICC support -MD to output dependencies as a # side effect of compilation, but ICC will put the dependencies in # the current directory while Tru64 will put them in the object # directory. mkdir sub am_cv_$1_dependencies_compiler_type=none if test "$am_compiler_list" = ""; then am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` fi am__universal=false m4_case([$1], [CC], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac], [CXX], [case " $depcc " in #( *\ -arch\ *\ -arch\ *) am__universal=true ;; esac]) for depmode in $am_compiler_list; do # Setup a source with many dependencies, because some compilers # like to wrap large dependency lists on column 80 (with \), and # we should not choose a depcomp mode which is confused by this. # # We need to recreate these files for each test, as the compiler may # overwrite some of them when testing with obscure command lines. # This happens at least with the AIX C compiler. : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with # Solaris 10 /bin/sh. echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly # handle '-M -o', and we need to detect this. Also, some Intel # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in gcc) # This depmode causes a compiler race in universal mode. test "$am__universal" = false || continue ;; nosideeffect) # After this tag, mechanisms are not by side-effect, so they'll # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; msvc7 | msvc7msys | msvisualcpp | msvcmsys) # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} am__minus_obj= ;; none) break ;; esac if depmode=$depmode \ source=sub/conftest.c object=$am__obj \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ >/dev/null 2>conftest.err && grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && grep $am__obj sub/conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then # icc doesn't choke on unknown options, it will just issue warnings # or remarks (even with -Werror). So we grep stderr for any message # that says an option was ignored or not supported. # When given -MP, icc 7.0 and 7.1 complain thusly: # icc: Command line warning: ignoring option '-M'; no argument required # The diagnosis changed in icc 8.0: # icc: Command line remark: option '-MP' not supported if (grep 'ignoring option' conftest.err || grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else am_cv_$1_dependencies_compiler_type=$depmode break fi fi done cd .. rm -rf conftest.dir else am_cv_$1_dependencies_compiler_type=none fi ]) AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) AM_CONDITIONAL([am__fastdep$1], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) ]) # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE([dependency-tracking], [dnl AS_HELP_STRING( [--enable-dependency-tracking], [do not reject slow dependency extractors]) AS_HELP_STRING( [--disable-dependency-tracking], [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl AC_SUBST([am__nodep])dnl _AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in *\'*) eval set x "$CONFIG_FILES" ;; *) set x $CONFIG_FILES ;; esac shift for mf do # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. # Grep'ing the whole file is not good either: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi # Extract the definition of DEPDIR, am__include, and am__quote # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` AS_MKDIR_P([$dirpart/$fdir]) # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done } ])# _AM_OUTPUT_DEPENDENCY_COMMANDS # AM_OUTPUT_DEPENDENCY_COMMANDS # ----------------------------- # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking # is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) ]) # Do all the work for Automake. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC]) [_AM_PROG_CC_C_O ]) # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- # The call with PACKAGE and VERSION arguments is the old style # call (pre autoconf-2.50), which is being phased out. PACKAGE # and VERSION should now be passed to AC_INIT and removed from # the call to AM_INIT_AUTOMAKE. # We support both call styles for the transition. After # the next Automake release, Autoconf can make the AC_INIT # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl if test "`cd $srcdir && pwd`" != "`pwd`"; then # Use -I$(srcdir) only when $(srcdir) != ., so that make's output # is not polluted with repeated "-I." AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl # test to see if srcdir already configured if test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi fi # test whether we have cygpath if test -z "$CYGPATH_W"; then if (cygpath --version) >/dev/null 2>/dev/null; then CYGPATH_W='cygpath -w' else CYGPATH_W=echo fi fi AC_SUBST([CYGPATH_W]) # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [AC_DIAGNOSE([obsolete], [$0: two- and three-arguments forms are deprecated.]) m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. m4_if( m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, [AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) AM_MISSING_PROG([AUTOCONF], [autoconf]) AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) AM_MISSING_PROG([AUTOHEADER], [autoheader]) AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: # # AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target (and possibly the TAP driver). The # system "awk" is bad on some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl AC_REQUIRE([AM_SET_LEADING_DOT])dnl _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES([CC])], [m4_define([AC_PROG_CC], m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES([CXX])], [m4_define([AC_PROG_CXX], m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES([OBJC])], [m4_define([AC_PROG_OBJC], m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], [_AM_DEPENDENCIES([OBJCXX])], [m4_define([AC_PROG_OBJCXX], m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) AC_REQUIRE([AM_SILENT_RULES])dnl dnl The testsuite driver may need to know about EXEEXT, so add the dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl # POSIX will say in a future version that running "rm -f" with no argument # is OK; and we want to be able to make that assumption in our Makefile # recipes. So use an aggressive probe to check that the usage we want is # actually supported "in the wild" to an acceptable degree. # See automake bug#10828. # To make any issue more visible, cause the running configure to be aborted # by default if the 'rm' program in use doesn't match our expectations; the # user can still override this though. if rm -f && rm -fr && rm -rf; then : OK; else cat >&2 <<'END' Oops! Your 'rm' program seems unable to run without file operands specified on the command line, even when the '-f' option is present. This is contrary to the behaviour of most rm programs out there, and not conforming with the upcoming POSIX standard: Please tell bug-automake@gnu.org about your system, including the value of your $PATH and any error possibly output before this message. This can help us improve future automake versions. END if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then echo 'Configuration will proceed anyway, since you have set the' >&2 echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 echo >&2 else cat >&2 <<'END' Aborting the configuration process, to ensure you take notice of the issue. You can download and install GNU coreutils to get an 'rm' implementation that behaves properly: . If you want to complete the configuration process using your problematic 'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM to "yes", and re-run configure. END AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) fi fi dnl The trailing newline in this macro's definition is deliberate, for dnl backward compatibility and to allow trailing 'dnl'-style comments dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. ]) dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. # Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the # loop where config.status creates the headers, so we can generate # our stamp files there. AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], [# Compute $1's index in $config_headers. _am_arg=$1 _am_stamp_count=1 for _am_header in $config_headers :; do case $_am_header in $_am_arg | $_am_arg:* ) break ;; * ) _am_stamp_count=`expr $_am_stamp_count + 1` ;; esac done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; *) install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi AC_SUBST([install_sh])]) # Copyright (C) 2003-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], [rm -rf .tst 2>/dev/null mkdir .tst 2>/dev/null if test -d .tst; then am__leading_dot=. else am__leading_dot=_ fi rmdir .tst 2>/dev/null AC_SUBST([am__leading_dot])]) # Check to see how 'make' treats includes. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo this is the am__doit target .PHONY: am__doit END # If we don't find an include directive, just comment out the code. AC_MSG_CHECKING([for style of include used by $am_make]) am__include="#" am__quote= _am_result=none # First try GNU make style include. echo "include confinc" > confmf # Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include am__quote= _am_result=GNU ;; esac # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=.include am__quote="\"" _am_result=BSD ;; esac fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- # Copyright (C) 1997-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) # AM_MISSING_HAS_RUN # ------------------ # Define MISSING if not defined so far and test if it is modern enough. # If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; *) MISSING="\${SHELL} $am_aux_dir/missing" ;; esac fi # Use eval to expand $SHELL if eval "$MISSING --is-lightweight"; then am_missing_run="$MISSING " else am_missing_run= AC_MSG_WARN(['missing' script is too old or missing]) fi ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) # -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) # ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) # _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) # ------------------------------------------- # Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) # Copyright (C) 1999-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_CC_C_O # --------------- # Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC # to automatically call this. AC_DEFUN([_AM_PROG_CC_C_O], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([compile])dnl AC_LANG_PUSH([C])dnl AC_CACHE_CHECK( [whether $CC understands -c and -o together], [am_cv_prog_cc_c_o], [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) # Make sure it works both with $CC and with simple cc. # Following AC_PROG_CC_C_O, we do the test twice because some # compilers refuse to overwrite an existing .o file with -o, # though they will create one. am_cv_prog_cc_c_o=yes for am_i in 1 2; do if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ && test -f conftest2.$ac_objext; then : OK else am_cv_prog_cc_c_o=no break fi done rm -f core conftest* unset am_i]) if test "$am_cv_prog_cc_c_o" != yes; then # Losing compiler, so override with the script. # FIXME: It is wrong to rewrite CC. # But if we don't then we get into trouble of one sort or another. # A longer-term fix would be to have automake use am__CC in this case, # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" CC="$am_aux_dir/compile $CC" fi AC_LANG_POP([C])]) # For backward compatibility. AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_RUN_LOG(COMMAND) # ------------------- # Run COMMAND, save the exit status in ac_status, and log it. # (This has been adapted from Autoconf's _AC_RUN_LOG macro.) AC_DEFUN([AM_RUN_LOG], [{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD (exit $ac_status); }]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' ' case `pwd` in *[[\\\"\#\$\&\'\`$am_lf]]*) AC_MSG_ERROR([unsafe absolute working directory name]);; esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac # Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( am_has_slept=no for am_try in 1 2; do echo "timestamp, slept: $am_has_slept" > conftest.file set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` if test "$[*]" = "X"; then # -L didn't work. set X `ls -t "$srcdir/configure" conftest.file` fi if test "$[*]" != "X $srcdir/configure conftest.file" \ && test "$[*]" != "X conftest.file $srcdir/configure"; then # If neither matched, then we have a broken ls. This can happen # if, for instance, CONFIG_SHELL is bash and it inherits a # broken ls alias from the environment. This has actually # happened. Such a system could not be considered "sane". AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken alias in your environment]) fi if test "$[2]" = conftest.file || test $am_try -eq 2; then break fi # Just in case. sleep 1 am_has_slept=yes done test "$[2]" = conftest.file ) then # Ok. : else AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi AC_MSG_RESULT([yes]) # If we didn't sleep, we still need to ensure time stamps of config.status and # generated files are strictly newer. am_sleep_pid= if grep 'slept: no' conftest.file >/dev/null 2>&1; then ( sleep 1 ) & am_sleep_pid=$! fi AC_CONFIG_COMMANDS_PRE( [AC_MSG_CHECKING([that generated files are newer than configure]) if test -n "$am_sleep_pid"; then # Hide warnings about reused PIDs. wait $am_sleep_pid 2>/dev/null fi AC_MSG_RESULT([done])]) rm -f conftest.file ]) # Copyright (C) 2009-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT # ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], [AC_ARG_ENABLE([silent-rules], [dnl AS_HELP_STRING( [--enable-silent-rules], [less verbose build output (undo: "make V=1")]) AS_HELP_STRING( [--disable-silent-rules], [verbose build output (undo: "make V=0")])dnl ]) case $enable_silent_rules in @%:@ ((( yes) AM_DEFAULT_VERBOSITY=0;; no) AM_DEFAULT_VERBOSITY=1;; *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac dnl dnl A few 'make' implementations (e.g., NonStop OS and NextStep) dnl do not support nested variable expansions. dnl See automake bug#9928 and bug#10237. am_make=${MAKE-make} AC_CACHE_CHECK([whether $am_make supports nested variables], [am_cv_make_support_nested_variables], [if AS_ECHO([['TRUE=$(BAR$(V)) BAR0=false BAR1=true V=1 am__doit: @$(TRUE) .PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then am_cv_make_support_nested_variables=yes else am_cv_make_support_nested_variables=no fi]) if test $am_cv_make_support_nested_variables = yes; then dnl Using '$V' instead of '$(V)' breaks IRIX make. AM_V='$(V)' AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' else AM_V=$AM_DEFAULT_VERBOSITY AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY fi AC_SUBST([AM_V])dnl AM_SUBST_NOTMAKE([AM_V])dnl AC_SUBST([AM_DEFAULT_V])dnl AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) # Copyright (C) 2001-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # AM_PROG_INSTALL_STRIP # --------------------- # One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we # always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl # Installed binaries are usually stripped using 'strip' when the user # run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake # will honor the 'STRIP' environment variable to overrule this program. dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # Copyright (C) 2006-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. # This macro is traced by Automake. AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) # -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004-2017 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. # FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory # $tardir. # tardir=directory && $(am__tar) > result.tar # # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar # AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AC_SUBST([AMTAR], ['$${TAR-tar}']) # We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' m4_if([$1], [v7], [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], [m4_case([$1], [ustar], [# The POSIX 1988 'ustar' format is defined with fixed-size fields. # There is notably a 21 bits limit for the UID and the GID. In fact, # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 # and bug#13588). am_max_uid=2097151 # 2^21 - 1 am_max_gid=$am_max_uid # The $UID and $GID variables are not portable, so we need to resort # to the POSIX-mandated id(1) utility. Errors in the 'id' calls # below are definitely unexpected, so allow the users to see them # (that is, avoid stderr redirection). am_uid=`id -u || echo unknown` am_gid=`id -g || echo unknown` AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) if test $am_uid -le $am_max_uid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) if test $am_gid -le $am_max_gid; then AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) _am_tools=none fi], [pax], [], [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Go ahead even if we have the value already cached. We do so because we # need to set the values for the 'am__tar' and 'am__untar' variables. _am_tools=${am_cv_prog_tar_$1-$_am_tools} for _am_tool in $_am_tools; do case $_am_tool in gnutar) for _am_tar in tar gnutar gtar; do AM_RUN_LOG([$_am_tar --version]) && break done am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' am__untar="$_am_tar -xf -" ;; plaintar) # Must skip GNU tar: if it does not support --format= it doesn't create # ustar tarball either. (tar --version) >/dev/null 2>&1 && continue am__tar='tar chf - "$$tardir"' am__tar_='tar chf - "$tardir"' am__untar='tar xf -' ;; pax) am__tar='pax -L -x $1 -w "$$tardir"' am__tar_='pax -L -x $1 -w "$tardir"' am__untar='pax -r' ;; cpio) am__tar='find "$$tardir" -print | cpio -o -H $1 -L' am__tar_='find "$tardir" -print | cpio -o -H $1 -L' am__untar='cpio -i -H $1 -d' ;; none) am__tar=false am__tar_=false am__untar=false ;; esac # If the value was cached, stop now. We just wanted to have am__tar # and am__untar set. test -n "${am_cv_prog_tar_$1}" && break # tar/untar a dummy directory, and stop if the command works. rm -rf conftest.dir mkdir conftest.dir echo GrepMe > conftest.dir/file AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) rm -rf conftest.dir if test -s conftest.tar; then AM_RUN_LOG([$am__untar /dev/null 2>&1 && break fi done rm -rf conftest.dir AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) AC_MSG_RESULT([$am_cv_prog_tar_$1])]) AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/libtool.m4]) m4_include([m4/ltoptions.m4]) m4_include([m4/ltsugar.m4]) m4_include([m4/ltversion.m4]) m4_include([m4/lt~obsolete.m4]) cddlib-0.94j/Makefile.in0000644000175000017500000006653513307421344012047 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ $(am__configure_deps) $(am__DIST_COMMON) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ ctags-recursive dvi-recursive html-recursive info-recursive \ install-data-recursive install-dvi-recursive \ install-exec-recursive install-html-recursive \ install-info-recursive install-pdf-recursive \ install-ps-recursive install-recursive installcheck-recursive \ installdirs-recursive pdf-recursive ps-recursive \ tags-recursive uninstall-recursive am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(docdir)" DATA = $(nobase_doc_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive am__recursive_targets = \ $(RECURSIVE_TARGETS) \ $(RECURSIVE_CLEAN_TARGETS) \ $(am__extra_recursive_targets) AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ cscope distdir dist dist-all distcheck am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) am__DIST_COMMON = $(srcdir)/Makefile.in AUTHORS COPYING ChangeLog \ INSTALL NEWS README compile config.guess config.sub depcomp \ install-sh ltmain.sh missing DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ if test -d "$(distdir)"; then \ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -rf "$(distdir)" \ || { sleep 5 && rm -rf "$(distdir)"; }; \ else :; fi am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ sed_rest='s,^[^/]*/*,,'; \ sed_last='s,^.*/\([^/]*\)$$,\1,'; \ sed_butlast='s,/*[^/]*$$,,'; \ while test -n "$$dir1"; do \ first=`echo "$$dir1" | sed -e "$$sed_first"`; \ if test "$$first" != "."; then \ if test "$$first" = ".."; then \ dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ else \ first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ if test "$$first2" = "$$first"; then \ dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ else \ dir2="../$$dir2"; \ fi; \ dir0="$$dir0"/"$$first"; \ fi; \ fi; \ dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ done; \ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CDD_LDFLAGS = @CDD_LDFLAGS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ dvips = @dvips@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ latex = @latex@ latex2html = @latex2html@ libcdd_version_info = @libcdd_version_info@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pdflatex = @pdflatex@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ # Directories where we can build something. SUBDIRS = doc lib-src src # Install the examples into /usr/share/doc/cddlib/examples* nobase_doc_DATA = $(srcdir)/examples/* $(srcdir)/examples-ine/* $(srcdir)/examples-ine3d/* $(srcdir)/examples-ext/* # Additional bits that should be part of the released tarball. EXTRA_DIST = $(nobase_doc_DATA) $(srcdir)/README.core2processor $(srcdir)/bootstrap ACLOCAL_AMFLAGS = -I m4 all: all-recursive .SUFFIXES: am--refresh: Makefile @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ echo ' $(SHELL) ./config.status'; \ $(SHELL) ./config.status;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck $(top_srcdir)/configure: $(am__configure_deps) $(am__cd) $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt install-nobase_docDATA: $(nobase_doc_DATA) @$(NORMAL_INSTALL) @list='$(nobase_doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ $(am__nobase_list) | while read dir files; do \ xfiles=; for file in $$files; do \ if test -f "$$file"; then xfiles="$$xfiles $$file"; \ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ test -z "$$xfiles" || { \ test "x$$dir" = x. || { \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)/$$dir'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)/$$dir"; }; \ echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(docdir)/$$dir'"; \ $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(docdir)/$$dir" || exit $$?; }; \ done uninstall-nobase_docDATA: @$(NORMAL_UNINSTALL) @list='$(nobase_doc_DATA)'; test -n "$(docdir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd # into them and run 'make' without going through this Makefile. # To change the values of 'make' variables: instead of editing Makefiles, # (1) if the variable is set in 'config.status', edit 'config.status' # (which will cause the Makefiles to be regenerated when you run 'make'); # (2) otherwise, pass the desired values on the 'make' command line. $(am__recursive_targets): @fail=; \ if $(am__make_keepgoing); then \ failcom='fail=yes'; \ else \ failcom='exit 1'; \ fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done; \ if test "$$dot_seen" = "no"; then \ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-recursive TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ include_option=--etags-include; \ empty_fix=.; \ else \ include_option=--include; \ empty_fix=; \ fi; \ list='$(SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ test ! -f $$subdir/TAGS || \ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-recursive CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscope: cscope.files test ! -s cscope.files \ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) clean-cscope: -rm -f cscope.files cscope.files: clean-cscope cscopelist cscopelist: cscopelist-recursive cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) test -d "$(distdir)" || mkdir "$(distdir)" @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ $(am__make_dryrun) \ || test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ dir1=$$subdir; dir2="$(top_distdir)"; \ $(am__relativize); \ new_top_distdir=$$reldir; \ echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ ($(am__cd) $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$new_top_distdir" \ distdir="$$new_distdir" \ am__remove_distdir=: \ am__skip_length_check=: \ am__skip_mode_fix=: \ distdir) \ || exit 1; \ fi; \ done -test -n "$(am__skip_mode_fix)" \ || find "$(distdir)" -type d ! -perm -755 \ -exec chmod u+rwx,go+rx {} \; -o \ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).tar.gz $(am__post_remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 $(am__post_remove_distdir) dist-lzip: distdir tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz $(am__post_remove_distdir) dist-xz: distdir tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz $(am__post_remove_distdir) dist-tarZ: distdir @echo WARNING: "Support for distribution archives compressed with" \ "legacy program 'compress' is deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__post_remove_distdir) dist-shar: distdir @echo WARNING: "Support for shar distribution archives is" \ "deprecated." >&2 @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | eval GZIP= gzip $(GZIP_ENV) -c >$(distdir).shar.gz $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__post_remove_distdir) dist dist-all: $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another # tarfile. distcheck: dist case '$(DIST_ARCHIVES)' in \ *.tar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lz*) \ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ eval GZIP= gzip $(GZIP_ENV) -dc $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir) chmod u+w $(distdir) mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build/sub \ && ../../configure \ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ --srcdir=../.. --prefix="$$dc_install_base" \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ && $(MAKE) $(AM_MAKEFLAGS) check \ && $(MAKE) $(AM_MAKEFLAGS) install \ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ distuninstallcheck \ && chmod -R a-w "$$dc_install_base" \ && ({ \ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ } || { rm -rf "$$dc_destdir"; exit 1; }) \ && rm -rf "$$dc_destdir" \ && $(MAKE) $(AM_MAKEFLAGS) dist \ && rm -rf $(DIST_ARCHIVES) \ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: @test -n '$(distuninstallcheck_dir)' || { \ echo 'ERROR: trying to run $@ with an empty' \ '$$(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ $(am__cd) '$(distuninstallcheck_dir)' || { \ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ exit 1; \ }; \ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ fi ; \ $(distuninstallcheck_listfiles) ; \ exit 1; } >&2 distcleancheck: distclean @if test '$(srcdir)' = . ; then \ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ exit 1 ; \ fi @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left in build directory after distclean:" ; \ $(distcleancheck_listfiles) ; \ exit 1; } >&2 check-am: all-am check: check-recursive all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: for dir in "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive install-exec: install-exec-recursive install-data: install-data-recursive uninstall: uninstall-recursive install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-recursive install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-recursive clean-am: clean-generic clean-libtool mostlyclean-am distclean: distclean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -f Makefile distclean-am: clean-am distclean-generic distclean-libtool \ distclean-tags dvi: dvi-recursive dvi-am: html: html-recursive html-am: info: info-recursive info-am: install-data-am: install-nobase_docDATA install-dvi: install-dvi-recursive install-dvi-am: install-exec-am: install-html: install-html-recursive install-html-am: install-info: install-info-recursive install-info-am: install-man: install-pdf: install-pdf-recursive install-pdf-am: install-ps: install-ps-recursive install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-recursive -rm -f $(am__CONFIG_DISTCLEAN_FILES) -rm -rf $(top_srcdir)/autom4te.cache -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-recursive mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-recursive pdf-am: ps: ps-recursive ps-am: uninstall-am: uninstall-nobase_docDATA .MAKE: $(am__recursive_targets) install-am install-strip .PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ am--refresh check check-am clean clean-cscope clean-generic \ clean-libtool cscope cscopelist-am ctags ctags-am dist \ dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ dist-xz dist-zip distcheck distclean distclean-generic \ distclean-libtool distclean-tags distcleancheck distdir \ distuninstallcheck dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ install-nobase_docDATA install-pdf install-pdf-am install-ps \ install-ps-am install-strip installcheck installcheck-am \ installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ uninstall-am uninstall-nobase_docDATA .PRECIOUS: Makefile # All localdebug should be disabled before we package a releasable tarball distcheck-hook: ! find $(srcdir) -type f -print0 | xargs -0 $(EGREP) 'localdebug *= *dd_TRUE' # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: cddlib-0.94j/AUTHORS0000644000175000017500000000041013307420663011031 00000000000000Komei Fukuda Department of Mathematics, and Institute of Theoretical Computer Science ETH Zurich (CAB G 33.3) Universitaetstrasse 6 CH-8092 Zurich, Switzerland Tel +41-44-632-4023, Fax +41-44-632-1063 http://www.inf.ethz.ch/personal/fukudak/ cddlib-0.94j/COPYING0000644000175000017500000004307613267167546011050 00000000000000 GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS Appendix: How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) 19yy This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) 19yy name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License. cddlib-0.94j/ChangeLog0000644000175000017500000006460013312731134011540 00000000000000libcdd, cdd & cdd+ HISTORY file *** libcdd version (date) / changes *** Version 094j (June 21, 2018) / - Thanks to Julian Rüth, modernized autotooling, mirrored code on GitHub, introduced cddexec as a replacement of cdd_both_reps that many distributions packaged, made randomization portable. Thanks to Matthias C. M. Troffaes, fixed representation type in dd_MatrixAppendTo. Version 094i (March 9, 2018) / - The missing definition of dd_set_d function in the case of -DGMPRATIONAL flag is used. The only change is in cddmp.h. The use of this function is explained in testcdd2.c program. This function is useful when input is mostly float (real). Even such a case, running on the rational exact arithmetic might be helpful to debug the floating point computation. Version 094h (April 30, 2015) / - Thanks to Mathieu Dutour, one minor bug has been fixed. Version 094g (March 23, 2012) / - Thanks to both Anders Jensen and Mathieu Dutour a few memory leaks in cddlib.c and cddlp.c have been fixed. Also, some patches sent by Jerry James have been applied. These were for making the library shared and more compatible for C++ compilers. Version 094f (February 7, 2008) / - Thanks to Sven Verdoolaege's fixes, the "configure" script now uses "gcc" as the default compiler, rather than "g++" in earlier releases, and the libraries can be linked properly with both C and C++ programs. Version 094e (January 27, 2008) / - A bug of reporting a wrong (sign) certificate of an infeasible LP is fixed. This bug reported by Charles Geyer, occurs if the exact GMP version of the dd_LPSolve is used with minimization. A bug of reporting infeasibility of a feasible LP with column non-full rank LP is fixed. This bug was reported by Sven Verdoolaege. Version 094d (February 12, 2007) / - A bug of reporting a wrong unbounded direction vector of a dual inconsistent LP is fixed. This bug occurs only if the exact GMP version of the dd_LPSolve is used. For example, this error may occur in scdd_gmp. This error was reported by Lars Schewe. Version 094c (April 23, 2006) / - A bug for reading a rational number of length longer than 255 characters have been fixed. This was reported by Ruriko Yoshida. Now the longest number is controlled by dd_wordlenmax defined in cddtypes.h . The longest line is also controlled by dd_linelenmax . These are currently fixed to 1024 and 4096. Larger numbers and lines can be handled by modifying these numbers and recompilation. Version 094b (August 25, 2005) / - A bug for the representation conversion, reported by Michal Kvasnica, was fixed. The earlier 094* versions prematurely terminate the conversion when the number of rows is equal to the number of columns in the input. This means the earlier 094* do not compute correctly for simplices, for example. Version 094a (August 24, 2005) / - A bug of dd_LPSolve is fixed. This bug, reported by Dima Pasechnik, due to a mishandling of cycling of LP algorithms, is fixed. Version 094 (August 4, 2005) / - dd_MatrixCanonicalize has been added. This reduces matrix M to a minimal representation by computing all implicit linearity rows and all redundant rows. It applies lexicographic sorting of rows to remove duplicates before applying redundancy removal. This function combines the two computations together in more efficient manner than before. See the new redcheck.c for its use. Several basic operations for matrices have been added, such as dd_MatrixRowsRemove and dd_MatrixRowsRemove2. The representation conversion dd_DDMatrix2Poly now handles the empty H-polyhedra properly, by calling an LP-based emptiness checker before running the double description algorithm. New functions finding specific points in H-polyhedra are added. dd_ExistsRestrictedFace is a general inequality system solver with specified equations, inequalities and strict inequalities. dd_FindRelativeInterior finds a point in the relative interior of a polyhedron. Version 093d (February 27, 2005) / - The problem of outputting the running log has been corrected. This problem and a solution was communicated by Charles Geyer. Now, a new global dd_boolean variable dd_log (= dd_FALSE by default) controls log output. An scdd/lcdd bug of terminating with segmentation fault when an input polyhedron is numerically delicate has been corrected. This bug was reported by Stefan Volkwein. Version 093c (December 26, 2003) / - A bug of Phase I of the dual simplex method in floating-point arithmetics is fixed. The problem (bus error) occurred when input data is not appropriate for floating-point arithmetics. The problem occurrs even for the GMP executables as the exact LP solver first tries to detect the terminal basis with float-point arithmetics. Version 093b (November 10, 2003) / - The nonterminating problem of the LP solver has been fixed. This was due to a cycling of the criss-cross method in floating-point arithmetics, that is extremely rare. Also, the phase I of the dual simplex method has been modified. The auxiliary LP is perhaps less likely to be degenerate. Version 093a (Augst 11, 2003) / - The LP basis finding procedure dd_FindLPBasis2 has been updated. The functions dd_Matrix2WeakAdjacency, dd_SRedundant and dd_SRedundantRows are added. The manual has been updated. Version 093 (July 18, 2003) / - dd_LPSolve with GMP now runs fisrt with floating point arithmetics and checks with GMP the correctness of the result. New functions dd_Matrix2Adjacency, dd_FourierElimination, dd_BlockElimination, dd_DDMatrix2Poly2 are added. Some minor memory leak problems are fixed. (Thanks to the excellent memory debugger valgrind on linux.) Version 092b (October 19, 2002) / - An illegal memory access for EqualityIndex reported by Thao Dang is fixed. Another bug of lcdd_gmp which takes "real" data and return a false result is fixed. It now warns that input is not correct for the exact arithmetic lcdd_gmp. This error was reported by Andras Salamon. Version 092a (December 19, 2001) / - Joerg Rambau kindly created an autoconf distribution of cddlib-092. This version 092a is made from Rambau's version with a slight modification. For the momoment, the Mathematica cdd interface, cddmathlink (in src-mathlink), still needs to be handled in the conventional manner by editing Makefile. Version 092 (December 12, 2001) / - the default value of dd_almostzero is now set to 1.0E-7 instead of 1.0E-6. New functions are added for checking redundancy of H- and V- representations such as dd_Redundant, dd_RedundantRows, dd_ImplicitLinearity, dd_ImplicitLinearityRows, and dd_RayShooting. Also some basic operations on dd_MatrixPtr have been added such as dd_MatrixAppendTo, dd_MatrixRowRemove, dd_MatrixSubmatrix. The names of enumeration type variables have been modified. Now all names have prefix "dd_", e.g. Rational, Integer are now dd_Rational and dd_Integer. This applies to TRUE and FALSE, which are now dd_TRUE and dd_FALSE. Version 091d (March 9, 2001) / - Memory leak in dd_FreeLPData and dd_FreeLPSolution are fixed. Version 091c (February 27, 2001) / - Bug to terminate before the completion of computation (to produce a segmentation fault) is fixed. This bug was reported by Hugh Anderson. Version 091b (February 26, 2001) / - Numerous memory leak bugs with GMP exact arithmetic, reported by Marc Pfetsch, are fixed. Also, a minor bug of cddlib to terminate with core dump, reported by Hugh Anderson, is fixed. The messages printed to the standard output "stdout" are now sent to "stderr". This was suggested by Ingo Schurr. Version 091a (February 16, 2001) / - Memory leak problems when GMP is used are fixed for dd_InitializeAmatrix, dd_CreateMatrix and dd_Larger. These bugs, reported by Marc Pfetsch, can be fatal if GMP is used and the functions are called many times. It has no effect for floating-point arithmetic computation. Version 091 (Sept. 25, 2000) / - Memory leak in FreeDDMemory (cddcore.c) is fixed. This bug, which might cause a serious problem, was reported by Shawn Rusaw. Also, a bug reported by Istvan Csabai on dynamic row ordering is fixed. This problem is most likely not affecting anyone, since the dynamic row ordering option is not available via the publicly released documentations. David Avis contributed a sample cddlib code, lcdd.c, which runs like his convex hull code, lrs. In particular, it is useful to generate standard output stream for piping in unix. Version 090e (July 12, 2000) / - A bug of reading very large integer values incorrectly is fixed. The previous versions were truncating very large integer values to a number representable by long integer. Version 090d (June 25, 2000) / - Serious bugs of dd_CopyOutput, dd_CopyInequalities are fixed. This bug is found by Istvan Csabai. Earlier versions 090* output wrong H-representations whenever the RHS constants are not nonnegative, even though the computation runs correctly internally. Version 090c (June 12, 2000) / - set_intialize is modified so that it allocates a smallest space even when a nonpositive length is requested. The bug of not outputting the origin is fixed when input is homogeneous inequality system and the cone contains no extreme rays. Note that cddlib does not output this vertex when the homogeneous cone has extreme rays, since cddlib outputs a minimal representation. - A new function dd_DDInputAppend is added. - dd_DDMatrix2Poly replaces (and combines) the two old functions dd_Matrix2Poly and dd_DoubleDescription. - dd_LPSolutionLoad is renamed as dd_CopyLPSolution. Version 090b (June 2, 2000) / - Thanks to Shawn Rusaw's great help, I could detect and fix many memory related problems (memory leak, out-of-bounds, etc). Also, when input is not regular (nonfull or containing line), cddlib did not generate adjacency/incidence properly and this version should work more correctly. Version 090a (May 30, 2000) / - a small bug fix in cddarith.c. The bug is reported by Shawn Rusaw. Version 090 (May 28, 2000) / - Major revision over the previous versions. It can be now compiled with GMP rational (-DGMPRATIONAL) as well as the standard C double. cdd and lp codes are merged and easily called together. Many functions and data types are modified and renamed. It comes with a simple cdd/cdd+-type standalne program scdd which does the standard representation conversion (*.ine <-> *.ext) and outputs all four types of auxiliary files (*.icd, *.iad, *.ecd, *ead). Although it lacks some functions such as preprojection of cdd+, scdd is potentially the most powerful cdd ever since it runs in the two arithmetics and it can handle any input. Because of the better readability and the overhead of employing function calls to do GMP arithmetic, the speed is little slower than cdd+-076 on both arithmetics C double and GMP rational. Version 086 (Jan 22, 2000) / - A bug fixed in dd_LexSmaller that affercted the lexicographic ordering of input data. This fix is essential for efficiency. Also several memory leaks have been fixed. Many of these bugs were found by Mr. Masanori Sato of Tokyo Institute of Technology. Never released. Version 085 (October 4, 1999) / - It can read rational data. Several minor bugs have been fixed. The new makefile creates cdd and dplex library archives libcdd.a and libdplex.a for unix systems. Version 080 (March 24, 1999) / - The first C-library version of cdd. It is stilll very primitive and has no documentation. See README.libcdd. Unlike the existing versions of cdd/cdd+, cddlib can deal with essentially any input, namely, non-full-dimensional convex hull problems and vertex-free extreme point (i.e. generator) listing problems. Also it comes with MathLink program cddmathlink that can be called from Mathematica to perform cdd operations. *** cdd version (date) / changes *** Version 0.61a (December, 1997) / Few minor corrections over 0.61. Version 0.61 (December 1, 1997) / It accepts "H-representation" and "V-representation" statements which are added to a Polyhedra format (1997). dp_FindInteriorPoint is added to dplex. Some small bugs are fixed in dplex. Version 0.60 (August 27, 1996) / The following changes are equivalent to ones that had been made for cdd+-074. The default output file names have been changed to be consistent with the transformation. To avoid confusion, *.ine file should be used only for a system of linear inequalities, and *.ext file only for a set of extreme points and rays. Accordingly, the files *.ead (previously *.adj) and *.ecd (previously *.icd) are reserved for the adjacency and incidence files for the extremal vertices/rays. Similarly, *.iad (previously *.iad) and *.icd (previously none) are reserved for the adjacency and incidence files for the inequality data. The LP code is now independent of cdd, and rewritten as a C library. This library is called dplex, and contains two algorithms, the dual simplex and the criss-cross method. Version C0.56 (August 7, 1995) / Some compilation problem associated with incompatible set_type variables in setoper.c is fixed. Various minor bugs are fixed. The output format of incidence file is slightly modified. (See the Reference Manual cddman.tex). Version C0.55a (December 18, 1994) / The broken "preprojection" option in Version 0.55 is fixed. Version C0.55 (December 5, 1994) / Set operation library setoper has been modified to use the optimized set_card function by David Bremner. It is expected that cdd runs much faster for problems with large row sizes. The package organization has been changed. Now the package consists of four C-programs, cdd.c, cddio.c, cddarith.c and setoper.c. New options verify_input, equality and strict_inequality are added. Also new options, lineshelling and row_decomposition are added but these options are still not in very reliable form and not recommended to use. Some newly found (minor) bugs are fixed. Version C0.54 (October 30, 1994) / The partial_enumeration option is renamed as "equality" option. A new option of "strict_inequality" is added to enumerate those vertices/rays satisfying some specified inequalities with strict inequality. Some bugs in reporting progress of iteration is fixed. Version C0.53 (July 29, 1994) / - Some imcompatibility of cdd and domcheck has been fixed. Namely, one can write any comments after each inequality data as long as it is written in the same line as the last number (i.e., a_{id}, for each i) of each ith inequality data. Anything written after the last number will be ignored. Also, random ordering option is added for specifying the ordering of rows (inequalities). Version C0.52b (March 28, 1994) / - The slowness problem of Version C0.52(a) is fixed. Version C0.51d (March 28, 1994) / - Because of the slowness of Version 0.52* due to unknown reasons, this version has been produced for a temporary replacement. This version fixes the bug mentioned in Version C0.52 release. Version C0.52a (March 28, 1994) / - A bug of Version C0.52 generating unnecessary information when maximize, minimize and find_interior are chosen is fixed. Version C0.52 (March 21, 1994) / - A bug of Version C0.51c generating segmentation fault when the option preprojection is used is fixed. This bug was reported by Alexander Bockmayr of Max-Planck Institute. - Some structural changes in the programs, cdd.c and cddarith.c, have been made mainly for a future planning of adding an option to decompose a problem into smaller subproblems. Version C0.51c (March 15, 1994) / - A bug of Version C0.51b (mishandling of homogeneous inputs, i.e. zero RHS) is fixed. This bug was reported by Alexander Bockmayr of Max-Planck Institute. Version C0.51b (March 9, 1994) / - A bug of Version C0.51a (mishandling of non full-dimensional polyhedron) is fixed. The bug was reported by Alexander Bockmayr of Max-Planck Institute. Version C0.51a (Feb. 16, 1994) / - A bug of Version C0.51 (mishandling of empty polyhedron) is fixed. Version C0.51 (Feb. 12, 1994) / - Some bugs of Version C0.50 has been fixed. - The option "algebraic" for selecting the algebraic adjacency computation is deleted. The reason is the combinatorial adjacency computation is almost always faster. - The option "minimize" is implemented to minimize a linear function over the polytope. Previously, only "maximize" was supported. - The option "find_interior" has been added to compute an interior point of the input polyhedron. Version C0.50 (Feb. 7, 1994) / - Major upgrade to implement a new data structure to store adjacencies of rays. The adjacency record lists, Edges(iteration), are used to store only necessary adjacencies for each iteration. This version runs much faster unless a dynamic ordering of rows (i.e. maxcutoff or mincutoff) is chosen. The users are strongly discouraged to use these dynamic ordering options. Version C0.38(Jan. 31, 1994) / - Bmatrix struct has been modified to store only the row pointers. Thus the program does not use any 2-dim arrays, and uses mainly dynamic allocation memory as much as necessary irrespective of the declared maximum size MMAX times NMAX. Thus, even in Macintosh computers large problems can be solved. - CrissCrossSolve LP solver has been updated to output dual solutions as well. Version C0.37(Jan. 25, 1994) / - Amatrix struct has been modified to store only the row pointers. Version C0.36(Jan. 23, 1994) / - RayRecord struct has been modified to store only a pointer for a ZeroSet so that the necessary space for the set is allocated each time. This saves a space for storing each RayRecord ZeroSet. For this modification, the setoper library must have been changed so that set_initialize allocates the minimum space. Note that this new version (Jan. 23, 1994) does not work with the older cdd programs. Version C0.35(Jan. 23, 1994) / - RayRecord struct has been modified to store only a pointer for a Ray vector so that the necessary space for the vector is allocated each time. This saves a space for storing each RayRecord. Version C0.34(Jan. 22, 1994) / - adjacency option has been added to output the adjacency list of output. Version C0.33(Jan. 16, 1994) / - partial_enumeration option has been added. By this option, one can enumerate all vertices and rays which are lying on a selected set of inequalities. The input ------------- begin m n Type b -A1 -A2 end partial_enumeration 4 1 4 6 7 ------------- restricts the enumeration for those lying on the 1st, 4th, 6th & 7th hyperplanes. Version C0.32(Jan. 11, 1994) / - "preprojection" option has been added. This option can be considered as a preprocessing of orthogonal projection of the polyhedon to a subset of variables. That is, if the inequality inequality system is of form A1 x1 + A2 x2 <= b, and the variable indices for x2, say 1, 4, 6, 7, are listed in the input file as ------------- begin m n Type b -A1 -A2 end preprojection 4 1 4 6 7 ------------- Then, cdd will output the inequality system, A1 x1 <= b, together with the list R of extremal rays of the homogeneous cone {z: z >=0 and z A2 = 0 }. Consequently, the inequality system {r A1 x1 <= r b for each r in R} represents the projection of the original polyhedron onto x1-space with possible redundancy. The supplementary C program (written by F. Margot) will be used to obtain a minimal system from these two outputs. Version C0.31(December 20, 1993) / - The main program cdd.c has been divided into two parts, cdd.c and cddarith.c, the latter contains all the procedures dealing with floating point numbers and operations. - LP solver CrissCrossSolve has been added. Now the option "maximize" can be used to optimize any linear function over the polyhedron. - The setoper library has been updated to accomodate set_card(set) function. Version C0.27(December 8, 1993) / - It uses a new versions of setoper.h and setoper.c (Dec 8, 1993 version) which have set complemen procedure set_compl. Version C0.26b(December 8, 1993) / - FindBasis and ComputeRank have been replaced with new programs which do not copy Amatrix (for save storage and time). Accordingly, the procedure CopyAmarix has been removed. Version C0.26 (November 29, 1993) / - FindBasis has been modified to be faster when the number of inequalities is large. - addition of #incidence option for outputting the cardinality of active hyperplanes instead of the set of all active hyperplanes at each vertex. - InitBasisAtBottom option has been added to select the last set of rows as the initial basis (determining a simplex cone/polytope). This option is {\em not\/} default. See User's manual. Version C0.25 (November 28, 1993) - The bug for mishandling the empty polyhedra input is fixed. Accordingly, the new variable CompStatus (Completion Status) has been added. - The procedure AddNewHyperplane and EvaluateARay have been completely changed. EvaluateARay computes A(hnew) * Ray for each Rays, and sort the linked list of rays so that the hnew-infeasible rays will be put consecutively from FirstRay. Version C0.24 (November 27, 1993) / - Modified to be able to deal with column size (nn) larger than 32. - Bugs of LexMin, LexMax ordering options are fixed. Version C0.23a, b (November 23, 1993) / - Few small bugs of C0.23 have been fixed. - Up to this version, the program can deal with column size at most 32. Version C0.23 (November 22, 1993) / - First release of cdd. Version C0.22 (November 21, 1993) / - File open procedures have been updated. Version C0.21 (November 10, 1993) / - The first version of cdd created by translating pdd.p (0.21) with Dave Gillespie's p2c translator and by modifying the c-code. The set operation libraries setoper.c, setoper.h (Nov.14, 1993) were created to make the code run without any p2c libraries. *** cdd+ version (date) / changes *** cdd+ Version 0.77beta (April 20, 2003) / This version is made so that it can be compiled with newer gcc. such as gcc 3.1.*. cdd+ Version 0.76 (March 17, 1999) / This is functionally the same as Ver. 075. This version can be compiled to run with GNU's GMP rational arithmetic library using Polymake's GMP-wrappers. cddr+ with GMP runs much faster than the previous versions of cddr+ (with g++ Rational library). cdd+ Version 0.75 (November 30, 1997) / This is a maintenance update of the previous version to employ the new 1997 Polyhedra format (introducing H-representation and V-representation statements). Three options for accuracy control is added: "zero_tolerance", "round_output_off" and "output_digits". cdd+ Version 0.74 (June 17, 1996) / Few minor bug fixes were made. cdd+ Version 0.74beta2 (June 5, 1996) / Also "vertex_listing_external" and "facet_listing_external" are added. These options do "vertex_listing" and "facet_listing" against the external file which can be huge. These options are useful when one has a small candidate set of vertices (or inequalities) and a large set of perhaps-redundant points (or inequalities). The external file must be named as "test.ext.external" (test.ine.external) if the candidate input file is test.ext (test.ine). cdd+ Version 0.74beta (June 4, 1996) / The option "vertex_listing" is added. The dual simplex method uses the standard Phase I instead of the criss-cross method. Consequently the LP code is faster. cdd+ Version 0.74alpha (March 30, 1996) / The default output file names have been changed to be consistent with the transformation. To avoid confusion, *.ine file should be used only for a system of linear inequalities, and *.ext file only for a set of extreme points and rays. Accordingly, the files *.ead (previously *.adj) and *.ecd (previously *.icd) are reserved for the adjacency and incidence files for the extremal vertices/rays. Similarly, *.iad (previously *.iad) and *.icd (previously none) are reserved for the adjacency and incidence files for the inequality data. Also, when a file with default file name exists in the current directory, the default extension name will be doubled. For instance, if test.ine is input and test.ext exists, then the extreme points and rays will be written in the file test.ext.ext. The program does not check "test.ext.ext" exists, and thus such a file will be overwritten if exists. cdd+ Version 0.73 (Septembe 6, 1995) / A new option "input_adjacency" has been added. The output format of incidence file is slightly modified. (See the Reference Manual cddman.tex). This incidence file format is compatible with cdd-056 and we will try not to change the format any more. cdd+ Version 0.72a (April 16, 1995) / Cycling bug of Version 072 of LP maximize and minimize has been fixed. cdd+ Version 0.72 (April 16, 1995) / The option "postanalysis" is added. This option is to be used after *.ext file is obtained. When this option is set with adjacency and/or incidence options, one can get adjacency and incidence files from both *.ine and *.ext files. Thus it is not necessary to generate *.adj and *.icd files together with *.ext file. cdd+ Version 0.71 (April 15, 1995) / Two new functions (through options) are added. The option "facet_listing" checks whether each input inequality determines a facet or not. The second option "tope_listing" generates all full-dimensional regions (topes) of the associated arrangement of hyperplanes by reverse search algorithm. Also, the option "show_tableau" is added to illustrate how the criss-cross method works in the tableau (dictornary) form. Criss-cross LP solver is now sensitive to ordering options, lexmin, minindex, radom, etc. cdd+ Version 0.70 (April 3, 1995) / The first C++ version of cdd which can run on both floating-point and rational (exact) arithmetics. The basic functions are identical to cdd-055. This version requires GNU gcc compilers (2.6.0 or higher) and a compatible g++lib. --- end of file: cddHISTORY --- cddlib-0.94j/INSTALL0000644000175000017500000003661413300566265011033 00000000000000Installation Instructions ************************* Copyright (C) 1994-1996, 1999-2002, 2004-2016 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. This file is offered as-is, without warranty of any kind. Basic Installation ================== Briefly, the shell command './configure && make && make install' should configure, build, and install this package. The following more-detailed instructions are generic; see the 'README' file for instructions specific to this package. Some packages provide this 'INSTALL' file but do not implement all of the features documented below. The lack of an optional feature in a given package is not necessarily a bug. More recommendations for GNU packages can be found in *note Makefile Conventions: (standards)Makefile Conventions. The 'configure' shell script attempts to guess correct values for various system-dependent variables used during compilation. It uses those values to create a 'Makefile' in each directory of the package. It may also create one or more '.h' files containing system-dependent definitions. Finally, it creates a shell script 'config.status' that you can run in the future to recreate the current configuration, and a file 'config.log' containing compiler output (useful mainly for debugging 'configure'). It can also use an optional file (typically called 'config.cache' and enabled with '--cache-file=config.cache' or simply '-C') that saves the results of its tests to speed up reconfiguring. Caching is disabled by default to prevent problems with accidental use of stale cache files. If you need to do unusual things to compile the package, please try to figure out how 'configure' could check whether to do them, and mail diffs or instructions to the address given in the 'README' so they can be considered for the next release. If you are using the cache, and at some point 'config.cache' contains results you don't want to keep, you may remove or edit it. The file 'configure.ac' (or 'configure.in') is used to create 'configure' by a program called 'autoconf'. You need 'configure.ac' if you want to change it or regenerate 'configure' using a newer version of 'autoconf'. The simplest way to compile this package is: 1. 'cd' to the directory containing the package's source code and type './configure' to configure the package for your system. Running 'configure' might take a while. While running, it prints some messages telling which features it is checking for. 2. Type 'make' to compile the package. 3. Optionally, type 'make check' to run any self-tests that come with the package, generally using the just-built uninstalled binaries. 4. Type 'make install' to install the programs and any data files and documentation. When installing into a prefix owned by root, it is recommended that the package be configured and built as a regular user, and only the 'make install' phase executed with root privileges. 5. Optionally, type 'make installcheck' to repeat any self-tests, but this time using the binaries in their final installed location. This target does not install anything. Running this target as a regular user, particularly if the prior 'make install' required root privileges, verifies that the installation completed correctly. 6. You can remove the program binaries and object files from the source code directory by typing 'make clean'. To also remove the files that 'configure' created (so you can compile the package for a different kind of computer), type 'make distclean'. There is also a 'make maintainer-clean' target, but that is intended mainly for the package's developers. If you use it, you may have to get all sorts of other programs in order to regenerate files that came with the distribution. 7. Often, you can also type 'make uninstall' to remove the installed files again. In practice, not all packages have tested that uninstallation works correctly, even though it is required by the GNU Coding Standards. 8. Some packages, particularly those that use Automake, provide 'make distcheck', which can by used by developers to test that all other targets like 'make install' and 'make uninstall' work correctly. This target is generally not run by end users. Compilers and Options ===================== Some systems require unusual options for compilation or linking that the 'configure' script does not know about. Run './configure --help' for details on some of the pertinent environment variables. You can give 'configure' initial values for configuration parameters by setting variables in the command line or in the environment. Here is an example: ./configure CC=c99 CFLAGS=-g LIBS=-lposix *Note Defining Variables::, for more details. Compiling For Multiple Architectures ==================================== You can compile the package for more than one kind of computer at the same time, by placing the object files for each architecture in their own directory. To do this, you can use GNU 'make'. 'cd' to the directory where you want the object files and executables to go and run the 'configure' script. 'configure' automatically checks for the source code in the directory that 'configure' is in and in '..'. This is known as a "VPATH" build. With a non-GNU 'make', it is safer to compile the package for one architecture at a time in the source code directory. After you have installed the package for one architecture, use 'make distclean' before reconfiguring for another architecture. On MacOS X 10.5 and later systems, you can create libraries and executables that work on multiple system types--known as "fat" or "universal" binaries--by specifying multiple '-arch' options to the compiler but only a single '-arch' option to the preprocessor. Like this: ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ CPP="gcc -E" CXXCPP="g++ -E" This is not guaranteed to produce working output in all cases, you may have to build one architecture at a time and combine the results using the 'lipo' tool if you have problems. Installation Names ================== By default, 'make install' installs the package's commands under '/usr/local/bin', include files under '/usr/local/include', etc. You can specify an installation prefix other than '/usr/local' by giving 'configure' the option '--prefix=PREFIX', where PREFIX must be an absolute file name. You can specify separate installation prefixes for architecture-specific files and architecture-independent files. If you pass the option '--exec-prefix=PREFIX' to 'configure', the package uses PREFIX as the prefix for installing programs and libraries. Documentation and other data files still use the regular prefix. In addition, if you use an unusual directory layout you can give options like '--bindir=DIR' to specify different values for particular kinds of files. Run 'configure --help' for a list of the directories you can set and what kinds of files go in them. In general, the default for these options is expressed in terms of '${prefix}', so that specifying just '--prefix' will affect all of the other directory specifications that were not explicitly provided. The most portable way to affect installation locations is to pass the correct locations to 'configure'; however, many packages provide one or both of the following shortcuts of passing variable assignments to the 'make install' command line to change installation locations without having to reconfigure or recompile. The first method involves providing an override variable for each affected directory. For example, 'make install prefix=/alternate/directory' will choose an alternate location for all directory configuration variables that were expressed in terms of '${prefix}'. Any directories that were specified during 'configure', but not in terms of '${prefix}', must each be overridden at install time for the entire installation to be relocated. The approach of makefile variable overrides for each directory variable is required by the GNU Coding Standards, and ideally causes no recompilation. However, some platforms have known limitations with the semantics of shared libraries that end up requiring recompilation when using this method, particularly noticeable in packages that use GNU Libtool. The second method involves providing the 'DESTDIR' variable. For example, 'make install DESTDIR=/alternate/directory' will prepend '/alternate/directory' before all installation names. The approach of 'DESTDIR' overrides is not required by the GNU Coding Standards, and does not work on platforms that have drive letters. On the other hand, it does better at avoiding recompilation issues, and works well even when some directory options were not specified in terms of '${prefix}' at 'configure' time. Optional Features ================= If the package supports it, you can cause programs to be installed with an extra prefix or suffix on their names by giving 'configure' the option '--program-prefix=PREFIX' or '--program-suffix=SUFFIX'. Some packages pay attention to '--enable-FEATURE' options to 'configure', where FEATURE indicates an optional part of the package. They may also pay attention to '--with-PACKAGE' options, where PACKAGE is something like 'gnu-as' or 'x' (for the X Window System). The 'README' should mention any '--enable-' and '--with-' options that the package recognizes. For packages that use the X Window System, 'configure' can usually find the X include and library files automatically, but if it doesn't, you can use the 'configure' options '--x-includes=DIR' and '--x-libraries=DIR' to specify their locations. Some packages offer the ability to configure how verbose the execution of 'make' will be. For these packages, running './configure --enable-silent-rules' sets the default to minimal output, which can be overridden with 'make V=1'; while running './configure --disable-silent-rules' sets the default to verbose, which can be overridden with 'make V=0'. Particular systems ================== On HP-UX, the default C compiler is not ANSI C compatible. If GNU CC is not installed, it is recommended to use the following options in order to use an ANSI C compiler: ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" and if that doesn't work, install pre-built binaries of GCC for HP-UX. HP-UX 'make' updates targets which have the same time stamps as their prerequisites, which makes it generally unusable when shipped generated files such as 'configure' are involved. Use GNU 'make' instead. On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot parse its '' header file. The option '-nodtk' can be used as a workaround. If GNU CC is not installed, it is therefore recommended to try ./configure CC="cc" and if that doesn't work, try ./configure CC="cc -nodtk" On Solaris, don't put '/usr/ucb' early in your 'PATH'. This directory contains several dysfunctional programs; working variants of these programs are available in '/usr/bin'. So, if you need '/usr/ucb' in your 'PATH', put it _after_ '/usr/bin'. On Haiku, software installed for all users goes in '/boot/common', not '/usr/local'. It is recommended to use the following options: ./configure --prefix=/boot/common Specifying the System Type ========================== There may be some features 'configure' cannot figure out automatically, but needs to determine by the type of machine the package will run on. Usually, assuming the package is built to be run on the _same_ architectures, 'configure' can figure that out, but if it prints a message saying it cannot guess the machine type, give it the '--build=TYPE' option. TYPE can either be a short name for the system type, such as 'sun4', or a canonical name which has the form: CPU-COMPANY-SYSTEM where SYSTEM can have one of these forms: OS KERNEL-OS See the file 'config.sub' for the possible values of each field. If 'config.sub' isn't included in this package, then this package doesn't need to know the machine type. If you are _building_ compiler tools for cross-compiling, you should use the option '--target=TYPE' to select the type of system they will produce code for. If you want to _use_ a cross compiler, that generates code for a platform different from the build platform, you should specify the "host" platform (i.e., that on which the generated programs will eventually be run) with '--host=TYPE'. Sharing Defaults ================ If you want to set default values for 'configure' scripts to share, you can create a site shell script called 'config.site' that gives default values for variables like 'CC', 'cache_file', and 'prefix'. 'configure' looks for 'PREFIX/share/config.site' if it exists, then 'PREFIX/etc/config.site' if it exists. Or, you can set the 'CONFIG_SITE' environment variable to the location of the site script. A warning: not all 'configure' scripts look for a site script. Defining Variables ================== Variables not defined in a site shell script can be set in the environment passed to 'configure'. However, some packages may run configure again during the build, and the customized values of these variables may be lost. In order to avoid this problem, you should set them in the 'configure' command line, using 'VAR=value'. For example: ./configure CC=/usr/local2/bin/gcc causes the specified 'gcc' to be used as the C compiler (unless it is overridden in the site shell script). Unfortunately, this technique does not work for 'CONFIG_SHELL' due to an Autoconf limitation. Until the limitation is lifted, you can use this workaround: CONFIG_SHELL=/bin/bash ./configure CONFIG_SHELL=/bin/bash 'configure' Invocation ====================== 'configure' recognizes the following options to control how it operates. '--help' '-h' Print a summary of all of the options to 'configure', and exit. '--help=short' '--help=recursive' Print a summary of the options unique to this package's 'configure', and exit. The 'short' variant lists options used only in the top level, while the 'recursive' variant lists options also present in any nested packages. '--version' '-V' Print the version of Autoconf used to generate the 'configure' script, and exit. '--cache-file=FILE' Enable the cache: use and save the results of the tests in FILE, traditionally 'config.cache'. FILE defaults to '/dev/null' to disable caching. '--config-cache' '-C' Alias for '--cache-file=config.cache'. '--quiet' '--silent' '-q' Do not print messages saying which checks are being made. To suppress all normal output, redirect it to '/dev/null' (any error messages will still be shown). '--srcdir=DIR' Look for the package's source code in directory DIR. Usually 'configure' can determine that directory automatically. '--prefix=DIR' Use DIR as the installation prefix. *note Installation Names:: for more details, including other options available for fine-tuning the installation locations. '--no-create' '-n' Run the configure checks, but stop before creating any output files. 'configure' also accepts some other, not widely useful, options. Run 'configure --help' for more details. cddlib-0.94j/NEWS0000644000175000017500000006460013312731134010465 00000000000000libcdd, cdd & cdd+ HISTORY file *** libcdd version (date) / changes *** Version 094j (June 21, 2018) / - Thanks to Julian Rüth, modernized autotooling, mirrored code on GitHub, introduced cddexec as a replacement of cdd_both_reps that many distributions packaged, made randomization portable. Thanks to Matthias C. M. Troffaes, fixed representation type in dd_MatrixAppendTo. Version 094i (March 9, 2018) / - The missing definition of dd_set_d function in the case of -DGMPRATIONAL flag is used. The only change is in cddmp.h. The use of this function is explained in testcdd2.c program. This function is useful when input is mostly float (real). Even such a case, running on the rational exact arithmetic might be helpful to debug the floating point computation. Version 094h (April 30, 2015) / - Thanks to Mathieu Dutour, one minor bug has been fixed. Version 094g (March 23, 2012) / - Thanks to both Anders Jensen and Mathieu Dutour a few memory leaks in cddlib.c and cddlp.c have been fixed. Also, some patches sent by Jerry James have been applied. These were for making the library shared and more compatible for C++ compilers. Version 094f (February 7, 2008) / - Thanks to Sven Verdoolaege's fixes, the "configure" script now uses "gcc" as the default compiler, rather than "g++" in earlier releases, and the libraries can be linked properly with both C and C++ programs. Version 094e (January 27, 2008) / - A bug of reporting a wrong (sign) certificate of an infeasible LP is fixed. This bug reported by Charles Geyer, occurs if the exact GMP version of the dd_LPSolve is used with minimization. A bug of reporting infeasibility of a feasible LP with column non-full rank LP is fixed. This bug was reported by Sven Verdoolaege. Version 094d (February 12, 2007) / - A bug of reporting a wrong unbounded direction vector of a dual inconsistent LP is fixed. This bug occurs only if the exact GMP version of the dd_LPSolve is used. For example, this error may occur in scdd_gmp. This error was reported by Lars Schewe. Version 094c (April 23, 2006) / - A bug for reading a rational number of length longer than 255 characters have been fixed. This was reported by Ruriko Yoshida. Now the longest number is controlled by dd_wordlenmax defined in cddtypes.h . The longest line is also controlled by dd_linelenmax . These are currently fixed to 1024 and 4096. Larger numbers and lines can be handled by modifying these numbers and recompilation. Version 094b (August 25, 2005) / - A bug for the representation conversion, reported by Michal Kvasnica, was fixed. The earlier 094* versions prematurely terminate the conversion when the number of rows is equal to the number of columns in the input. This means the earlier 094* do not compute correctly for simplices, for example. Version 094a (August 24, 2005) / - A bug of dd_LPSolve is fixed. This bug, reported by Dima Pasechnik, due to a mishandling of cycling of LP algorithms, is fixed. Version 094 (August 4, 2005) / - dd_MatrixCanonicalize has been added. This reduces matrix M to a minimal representation by computing all implicit linearity rows and all redundant rows. It applies lexicographic sorting of rows to remove duplicates before applying redundancy removal. This function combines the two computations together in more efficient manner than before. See the new redcheck.c for its use. Several basic operations for matrices have been added, such as dd_MatrixRowsRemove and dd_MatrixRowsRemove2. The representation conversion dd_DDMatrix2Poly now handles the empty H-polyhedra properly, by calling an LP-based emptiness checker before running the double description algorithm. New functions finding specific points in H-polyhedra are added. dd_ExistsRestrictedFace is a general inequality system solver with specified equations, inequalities and strict inequalities. dd_FindRelativeInterior finds a point in the relative interior of a polyhedron. Version 093d (February 27, 2005) / - The problem of outputting the running log has been corrected. This problem and a solution was communicated by Charles Geyer. Now, a new global dd_boolean variable dd_log (= dd_FALSE by default) controls log output. An scdd/lcdd bug of terminating with segmentation fault when an input polyhedron is numerically delicate has been corrected. This bug was reported by Stefan Volkwein. Version 093c (December 26, 2003) / - A bug of Phase I of the dual simplex method in floating-point arithmetics is fixed. The problem (bus error) occurred when input data is not appropriate for floating-point arithmetics. The problem occurrs even for the GMP executables as the exact LP solver first tries to detect the terminal basis with float-point arithmetics. Version 093b (November 10, 2003) / - The nonterminating problem of the LP solver has been fixed. This was due to a cycling of the criss-cross method in floating-point arithmetics, that is extremely rare. Also, the phase I of the dual simplex method has been modified. The auxiliary LP is perhaps less likely to be degenerate. Version 093a (Augst 11, 2003) / - The LP basis finding procedure dd_FindLPBasis2 has been updated. The functions dd_Matrix2WeakAdjacency, dd_SRedundant and dd_SRedundantRows are added. The manual has been updated. Version 093 (July 18, 2003) / - dd_LPSolve with GMP now runs fisrt with floating point arithmetics and checks with GMP the correctness of the result. New functions dd_Matrix2Adjacency, dd_FourierElimination, dd_BlockElimination, dd_DDMatrix2Poly2 are added. Some minor memory leak problems are fixed. (Thanks to the excellent memory debugger valgrind on linux.) Version 092b (October 19, 2002) / - An illegal memory access for EqualityIndex reported by Thao Dang is fixed. Another bug of lcdd_gmp which takes "real" data and return a false result is fixed. It now warns that input is not correct for the exact arithmetic lcdd_gmp. This error was reported by Andras Salamon. Version 092a (December 19, 2001) / - Joerg Rambau kindly created an autoconf distribution of cddlib-092. This version 092a is made from Rambau's version with a slight modification. For the momoment, the Mathematica cdd interface, cddmathlink (in src-mathlink), still needs to be handled in the conventional manner by editing Makefile. Version 092 (December 12, 2001) / - the default value of dd_almostzero is now set to 1.0E-7 instead of 1.0E-6. New functions are added for checking redundancy of H- and V- representations such as dd_Redundant, dd_RedundantRows, dd_ImplicitLinearity, dd_ImplicitLinearityRows, and dd_RayShooting. Also some basic operations on dd_MatrixPtr have been added such as dd_MatrixAppendTo, dd_MatrixRowRemove, dd_MatrixSubmatrix. The names of enumeration type variables have been modified. Now all names have prefix "dd_", e.g. Rational, Integer are now dd_Rational and dd_Integer. This applies to TRUE and FALSE, which are now dd_TRUE and dd_FALSE. Version 091d (March 9, 2001) / - Memory leak in dd_FreeLPData and dd_FreeLPSolution are fixed. Version 091c (February 27, 2001) / - Bug to terminate before the completion of computation (to produce a segmentation fault) is fixed. This bug was reported by Hugh Anderson. Version 091b (February 26, 2001) / - Numerous memory leak bugs with GMP exact arithmetic, reported by Marc Pfetsch, are fixed. Also, a minor bug of cddlib to terminate with core dump, reported by Hugh Anderson, is fixed. The messages printed to the standard output "stdout" are now sent to "stderr". This was suggested by Ingo Schurr. Version 091a (February 16, 2001) / - Memory leak problems when GMP is used are fixed for dd_InitializeAmatrix, dd_CreateMatrix and dd_Larger. These bugs, reported by Marc Pfetsch, can be fatal if GMP is used and the functions are called many times. It has no effect for floating-point arithmetic computation. Version 091 (Sept. 25, 2000) / - Memory leak in FreeDDMemory (cddcore.c) is fixed. This bug, which might cause a serious problem, was reported by Shawn Rusaw. Also, a bug reported by Istvan Csabai on dynamic row ordering is fixed. This problem is most likely not affecting anyone, since the dynamic row ordering option is not available via the publicly released documentations. David Avis contributed a sample cddlib code, lcdd.c, which runs like his convex hull code, lrs. In particular, it is useful to generate standard output stream for piping in unix. Version 090e (July 12, 2000) / - A bug of reading very large integer values incorrectly is fixed. The previous versions were truncating very large integer values to a number representable by long integer. Version 090d (June 25, 2000) / - Serious bugs of dd_CopyOutput, dd_CopyInequalities are fixed. This bug is found by Istvan Csabai. Earlier versions 090* output wrong H-representations whenever the RHS constants are not nonnegative, even though the computation runs correctly internally. Version 090c (June 12, 2000) / - set_intialize is modified so that it allocates a smallest space even when a nonpositive length is requested. The bug of not outputting the origin is fixed when input is homogeneous inequality system and the cone contains no extreme rays. Note that cddlib does not output this vertex when the homogeneous cone has extreme rays, since cddlib outputs a minimal representation. - A new function dd_DDInputAppend is added. - dd_DDMatrix2Poly replaces (and combines) the two old functions dd_Matrix2Poly and dd_DoubleDescription. - dd_LPSolutionLoad is renamed as dd_CopyLPSolution. Version 090b (June 2, 2000) / - Thanks to Shawn Rusaw's great help, I could detect and fix many memory related problems (memory leak, out-of-bounds, etc). Also, when input is not regular (nonfull or containing line), cddlib did not generate adjacency/incidence properly and this version should work more correctly. Version 090a (May 30, 2000) / - a small bug fix in cddarith.c. The bug is reported by Shawn Rusaw. Version 090 (May 28, 2000) / - Major revision over the previous versions. It can be now compiled with GMP rational (-DGMPRATIONAL) as well as the standard C double. cdd and lp codes are merged and easily called together. Many functions and data types are modified and renamed. It comes with a simple cdd/cdd+-type standalne program scdd which does the standard representation conversion (*.ine <-> *.ext) and outputs all four types of auxiliary files (*.icd, *.iad, *.ecd, *ead). Although it lacks some functions such as preprojection of cdd+, scdd is potentially the most powerful cdd ever since it runs in the two arithmetics and it can handle any input. Because of the better readability and the overhead of employing function calls to do GMP arithmetic, the speed is little slower than cdd+-076 on both arithmetics C double and GMP rational. Version 086 (Jan 22, 2000) / - A bug fixed in dd_LexSmaller that affercted the lexicographic ordering of input data. This fix is essential for efficiency. Also several memory leaks have been fixed. Many of these bugs were found by Mr. Masanori Sato of Tokyo Institute of Technology. Never released. Version 085 (October 4, 1999) / - It can read rational data. Several minor bugs have been fixed. The new makefile creates cdd and dplex library archives libcdd.a and libdplex.a for unix systems. Version 080 (March 24, 1999) / - The first C-library version of cdd. It is stilll very primitive and has no documentation. See README.libcdd. Unlike the existing versions of cdd/cdd+, cddlib can deal with essentially any input, namely, non-full-dimensional convex hull problems and vertex-free extreme point (i.e. generator) listing problems. Also it comes with MathLink program cddmathlink that can be called from Mathematica to perform cdd operations. *** cdd version (date) / changes *** Version 0.61a (December, 1997) / Few minor corrections over 0.61. Version 0.61 (December 1, 1997) / It accepts "H-representation" and "V-representation" statements which are added to a Polyhedra format (1997). dp_FindInteriorPoint is added to dplex. Some small bugs are fixed in dplex. Version 0.60 (August 27, 1996) / The following changes are equivalent to ones that had been made for cdd+-074. The default output file names have been changed to be consistent with the transformation. To avoid confusion, *.ine file should be used only for a system of linear inequalities, and *.ext file only for a set of extreme points and rays. Accordingly, the files *.ead (previously *.adj) and *.ecd (previously *.icd) are reserved for the adjacency and incidence files for the extremal vertices/rays. Similarly, *.iad (previously *.iad) and *.icd (previously none) are reserved for the adjacency and incidence files for the inequality data. The LP code is now independent of cdd, and rewritten as a C library. This library is called dplex, and contains two algorithms, the dual simplex and the criss-cross method. Version C0.56 (August 7, 1995) / Some compilation problem associated with incompatible set_type variables in setoper.c is fixed. Various minor bugs are fixed. The output format of incidence file is slightly modified. (See the Reference Manual cddman.tex). Version C0.55a (December 18, 1994) / The broken "preprojection" option in Version 0.55 is fixed. Version C0.55 (December 5, 1994) / Set operation library setoper has been modified to use the optimized set_card function by David Bremner. It is expected that cdd runs much faster for problems with large row sizes. The package organization has been changed. Now the package consists of four C-programs, cdd.c, cddio.c, cddarith.c and setoper.c. New options verify_input, equality and strict_inequality are added. Also new options, lineshelling and row_decomposition are added but these options are still not in very reliable form and not recommended to use. Some newly found (minor) bugs are fixed. Version C0.54 (October 30, 1994) / The partial_enumeration option is renamed as "equality" option. A new option of "strict_inequality" is added to enumerate those vertices/rays satisfying some specified inequalities with strict inequality. Some bugs in reporting progress of iteration is fixed. Version C0.53 (July 29, 1994) / - Some imcompatibility of cdd and domcheck has been fixed. Namely, one can write any comments after each inequality data as long as it is written in the same line as the last number (i.e., a_{id}, for each i) of each ith inequality data. Anything written after the last number will be ignored. Also, random ordering option is added for specifying the ordering of rows (inequalities). Version C0.52b (March 28, 1994) / - The slowness problem of Version C0.52(a) is fixed. Version C0.51d (March 28, 1994) / - Because of the slowness of Version 0.52* due to unknown reasons, this version has been produced for a temporary replacement. This version fixes the bug mentioned in Version C0.52 release. Version C0.52a (March 28, 1994) / - A bug of Version C0.52 generating unnecessary information when maximize, minimize and find_interior are chosen is fixed. Version C0.52 (March 21, 1994) / - A bug of Version C0.51c generating segmentation fault when the option preprojection is used is fixed. This bug was reported by Alexander Bockmayr of Max-Planck Institute. - Some structural changes in the programs, cdd.c and cddarith.c, have been made mainly for a future planning of adding an option to decompose a problem into smaller subproblems. Version C0.51c (March 15, 1994) / - A bug of Version C0.51b (mishandling of homogeneous inputs, i.e. zero RHS) is fixed. This bug was reported by Alexander Bockmayr of Max-Planck Institute. Version C0.51b (March 9, 1994) / - A bug of Version C0.51a (mishandling of non full-dimensional polyhedron) is fixed. The bug was reported by Alexander Bockmayr of Max-Planck Institute. Version C0.51a (Feb. 16, 1994) / - A bug of Version C0.51 (mishandling of empty polyhedron) is fixed. Version C0.51 (Feb. 12, 1994) / - Some bugs of Version C0.50 has been fixed. - The option "algebraic" for selecting the algebraic adjacency computation is deleted. The reason is the combinatorial adjacency computation is almost always faster. - The option "minimize" is implemented to minimize a linear function over the polytope. Previously, only "maximize" was supported. - The option "find_interior" has been added to compute an interior point of the input polyhedron. Version C0.50 (Feb. 7, 1994) / - Major upgrade to implement a new data structure to store adjacencies of rays. The adjacency record lists, Edges(iteration), are used to store only necessary adjacencies for each iteration. This version runs much faster unless a dynamic ordering of rows (i.e. maxcutoff or mincutoff) is chosen. The users are strongly discouraged to use these dynamic ordering options. Version C0.38(Jan. 31, 1994) / - Bmatrix struct has been modified to store only the row pointers. Thus the program does not use any 2-dim arrays, and uses mainly dynamic allocation memory as much as necessary irrespective of the declared maximum size MMAX times NMAX. Thus, even in Macintosh computers large problems can be solved. - CrissCrossSolve LP solver has been updated to output dual solutions as well. Version C0.37(Jan. 25, 1994) / - Amatrix struct has been modified to store only the row pointers. Version C0.36(Jan. 23, 1994) / - RayRecord struct has been modified to store only a pointer for a ZeroSet so that the necessary space for the set is allocated each time. This saves a space for storing each RayRecord ZeroSet. For this modification, the setoper library must have been changed so that set_initialize allocates the minimum space. Note that this new version (Jan. 23, 1994) does not work with the older cdd programs. Version C0.35(Jan. 23, 1994) / - RayRecord struct has been modified to store only a pointer for a Ray vector so that the necessary space for the vector is allocated each time. This saves a space for storing each RayRecord. Version C0.34(Jan. 22, 1994) / - adjacency option has been added to output the adjacency list of output. Version C0.33(Jan. 16, 1994) / - partial_enumeration option has been added. By this option, one can enumerate all vertices and rays which are lying on a selected set of inequalities. The input ------------- begin m n Type b -A1 -A2 end partial_enumeration 4 1 4 6 7 ------------- restricts the enumeration for those lying on the 1st, 4th, 6th & 7th hyperplanes. Version C0.32(Jan. 11, 1994) / - "preprojection" option has been added. This option can be considered as a preprocessing of orthogonal projection of the polyhedon to a subset of variables. That is, if the inequality inequality system is of form A1 x1 + A2 x2 <= b, and the variable indices for x2, say 1, 4, 6, 7, are listed in the input file as ------------- begin m n Type b -A1 -A2 end preprojection 4 1 4 6 7 ------------- Then, cdd will output the inequality system, A1 x1 <= b, together with the list R of extremal rays of the homogeneous cone {z: z >=0 and z A2 = 0 }. Consequently, the inequality system {r A1 x1 <= r b for each r in R} represents the projection of the original polyhedron onto x1-space with possible redundancy. The supplementary C program (written by F. Margot) will be used to obtain a minimal system from these two outputs. Version C0.31(December 20, 1993) / - The main program cdd.c has been divided into two parts, cdd.c and cddarith.c, the latter contains all the procedures dealing with floating point numbers and operations. - LP solver CrissCrossSolve has been added. Now the option "maximize" can be used to optimize any linear function over the polyhedron. - The setoper library has been updated to accomodate set_card(set) function. Version C0.27(December 8, 1993) / - It uses a new versions of setoper.h and setoper.c (Dec 8, 1993 version) which have set complemen procedure set_compl. Version C0.26b(December 8, 1993) / - FindBasis and ComputeRank have been replaced with new programs which do not copy Amatrix (for save storage and time). Accordingly, the procedure CopyAmarix has been removed. Version C0.26 (November 29, 1993) / - FindBasis has been modified to be faster when the number of inequalities is large. - addition of #incidence option for outputting the cardinality of active hyperplanes instead of the set of all active hyperplanes at each vertex. - InitBasisAtBottom option has been added to select the last set of rows as the initial basis (determining a simplex cone/polytope). This option is {\em not\/} default. See User's manual. Version C0.25 (November 28, 1993) - The bug for mishandling the empty polyhedra input is fixed. Accordingly, the new variable CompStatus (Completion Status) has been added. - The procedure AddNewHyperplane and EvaluateARay have been completely changed. EvaluateARay computes A(hnew) * Ray for each Rays, and sort the linked list of rays so that the hnew-infeasible rays will be put consecutively from FirstRay. Version C0.24 (November 27, 1993) / - Modified to be able to deal with column size (nn) larger than 32. - Bugs of LexMin, LexMax ordering options are fixed. Version C0.23a, b (November 23, 1993) / - Few small bugs of C0.23 have been fixed. - Up to this version, the program can deal with column size at most 32. Version C0.23 (November 22, 1993) / - First release of cdd. Version C0.22 (November 21, 1993) / - File open procedures have been updated. Version C0.21 (November 10, 1993) / - The first version of cdd created by translating pdd.p (0.21) with Dave Gillespie's p2c translator and by modifying the c-code. The set operation libraries setoper.c, setoper.h (Nov.14, 1993) were created to make the code run without any p2c libraries. *** cdd+ version (date) / changes *** cdd+ Version 0.77beta (April 20, 2003) / This version is made so that it can be compiled with newer gcc. such as gcc 3.1.*. cdd+ Version 0.76 (March 17, 1999) / This is functionally the same as Ver. 075. This version can be compiled to run with GNU's GMP rational arithmetic library using Polymake's GMP-wrappers. cddr+ with GMP runs much faster than the previous versions of cddr+ (with g++ Rational library). cdd+ Version 0.75 (November 30, 1997) / This is a maintenance update of the previous version to employ the new 1997 Polyhedra format (introducing H-representation and V-representation statements). Three options for accuracy control is added: "zero_tolerance", "round_output_off" and "output_digits". cdd+ Version 0.74 (June 17, 1996) / Few minor bug fixes were made. cdd+ Version 0.74beta2 (June 5, 1996) / Also "vertex_listing_external" and "facet_listing_external" are added. These options do "vertex_listing" and "facet_listing" against the external file which can be huge. These options are useful when one has a small candidate set of vertices (or inequalities) and a large set of perhaps-redundant points (or inequalities). The external file must be named as "test.ext.external" (test.ine.external) if the candidate input file is test.ext (test.ine). cdd+ Version 0.74beta (June 4, 1996) / The option "vertex_listing" is added. The dual simplex method uses the standard Phase I instead of the criss-cross method. Consequently the LP code is faster. cdd+ Version 0.74alpha (March 30, 1996) / The default output file names have been changed to be consistent with the transformation. To avoid confusion, *.ine file should be used only for a system of linear inequalities, and *.ext file only for a set of extreme points and rays. Accordingly, the files *.ead (previously *.adj) and *.ecd (previously *.icd) are reserved for the adjacency and incidence files for the extremal vertices/rays. Similarly, *.iad (previously *.iad) and *.icd (previously none) are reserved for the adjacency and incidence files for the inequality data. Also, when a file with default file name exists in the current directory, the default extension name will be doubled. For instance, if test.ine is input and test.ext exists, then the extreme points and rays will be written in the file test.ext.ext. The program does not check "test.ext.ext" exists, and thus such a file will be overwritten if exists. cdd+ Version 0.73 (Septembe 6, 1995) / A new option "input_adjacency" has been added. The output format of incidence file is slightly modified. (See the Reference Manual cddman.tex). This incidence file format is compatible with cdd-056 and we will try not to change the format any more. cdd+ Version 0.72a (April 16, 1995) / Cycling bug of Version 072 of LP maximize and minimize has been fixed. cdd+ Version 0.72 (April 16, 1995) / The option "postanalysis" is added. This option is to be used after *.ext file is obtained. When this option is set with adjacency and/or incidence options, one can get adjacency and incidence files from both *.ine and *.ext files. Thus it is not necessary to generate *.adj and *.icd files together with *.ext file. cdd+ Version 0.71 (April 15, 1995) / Two new functions (through options) are added. The option "facet_listing" checks whether each input inequality determines a facet or not. The second option "tope_listing" generates all full-dimensional regions (topes) of the associated arrangement of hyperplanes by reverse search algorithm. Also, the option "show_tableau" is added to illustrate how the criss-cross method works in the tableau (dictornary) form. Criss-cross LP solver is now sensitive to ordering options, lexmin, minindex, radom, etc. cdd+ Version 0.70 (April 3, 1995) / The first C++ version of cdd which can run on both floating-point and rational (exact) arithmetics. The basic functions are identical to cdd-055. This version requires GNU gcc compilers (2.6.0 or higher) and a compatible g++lib. --- end of file: cddHISTORY --- cddlib-0.94j/README0000644000175000017500000000753213307420663010655 00000000000000# cddlib The C-library cddlib is a C implementation of the *Double Description Method* of Motzkin et al. for generating all vertices (i.e. extreme points) and extreme rays of a general convex polyhedron in Rd given by a system of linear inequalities: > P = { x=(x1, ..., xd)T : b - A·x ≥ 0 } where A is a given m×d real matrix, b is a given m-vector and 0 is the m-vector of all zeros. The program can be used for the reverse operation (i.e. convex hull computation). This means that one can move back and forth between an inequality representation and a generator (i.e. vertex and ray) representation of a polyhedron with cddlib. Also, cddlib can solve a linear programming problem, i.e. a problem of maximizing and minimizing a linear function over P. ## Report an Issue If you find some problems or bugs, please kindly report them to our [issue tracker](https://github.com/cddlib/cddlib/issues). ## Documentation The [documentation](ftp://ftp.math.ethz.ch/users/fukudak/cdd/cddlibman/cddlibman.html) is still incomplete but contains descriptions of the most important functions. Please look at the [examples](src/) for how the library functions can be used in user's C-codes. ## H-representation & V-polyhedron One convenient feature of cddlib is the ability to handle essentially any data. More precisely, it can generate an H-representation of a V-polyhedron which is not full-dimensional, and it can generate a V-representation of an H-polyhedron which has no extreme points. ## Numerical Problems A little caution is in order. Many people have seen numerical problems when the floating version of cddlib is used. As we all know, floating-point computation might not give a correct answer, especially when an input data is very sensitive to a small perturbation. When some strange behavior is observed, it is always wise to create a rational approximation of the input (for example, one can replace 0.3333333 with 1/3) and to compute it with cddlib compiled with [GMP Rational](https://gmplib.org) to see what a correct behavior should be. Whenever the time is not important, it is safer to use GMP rational arithmetic. If you need speedy computation with floating-point arithmetic, you might want to *play with* the constant `dd_almostzero` defined in [cdd.h](lib-src/cdd.h): #define dd_almostzero 1.0E-6 This number is used to recognize whether a number is zero: a number whose absolute value is smaller than `dd_almostzero` is considered zero, and nonzero otherwise. You might want to change this to modify the behavior of cddlib. Another thing one can do is scaling. If the values in one column of an input is of smaller magnitude than those in another column, scale one so that they become comparable. ## Build the Latest Released Version Download the most recent tarball from our [Releases page](https://github.com/cddlib/cddlib/releases) and build cddlib with ``` tar zxf cddlib-*.tar.gz cd cddlib-* ./configure make ``` To install cddlib to `/usr/local` type ``` sudo make install ``` To link your own code with cddlib, invoke your compiler with something like ``` gcc -I/usr/local/include -L/usr/local/lib YOUR_CODE.c -lcdd ``` or, if you want to use rational arithmetic provided by [GMP](https://gmplib.org), with ``` gcc -I/usr/local/include -L/usr/local/lib -DGMPRATIONAL YOUR_CODE.c -lcddgmp -lgmp ``` ## Build from the Source Code Repository Similar to the above, you can build from our [github repository](https://github.com/cddlib/cddlib) with ``` git clone https://github.com/cddlib/cddlib.git cd cddlib ./bootstrap ./configure make ``` ## Contact the Author The library cddlib is free software, but if cddlib turns out to be useful, please kindly send a note or paper to the [author](./AUTHORS) mentioning what purpose and how cddlib has been used for. The most powerful support for free software development is user's appreciation. cddlib-0.94j/compile0000755000175000017500000001632613300566265011356 00000000000000#! /bin/sh # Wrapper for compilers which do not understand '-c -o'. scriptversion=2016-01-11.22; # UTC # Copyright (C) 1999-2017 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' # We need space, tab and new line, in precisely that order. Quoting is # there to prevent tools from complaining about whitespace usage. IFS=" "" $nl" file_conv= # func_file_conv build_file lazy # Convert a $build file to $host form and store it in $file # Currently only supports Windows hosts. If the determined conversion # type is listed in (the comma separated) LAZY, no conversion will # take place. func_file_conv () { file=$1 case $file in / | /[!/]*) # absolute file, and not a UNC file if test -z "$file_conv"; then # lazily determine how to convert abs files case `uname -s` in MINGW*) file_conv=mingw ;; CYGWIN*) file_conv=cygwin ;; *) file_conv=wine ;; esac fi case $file_conv/,$2, in *,$file_conv,*) ;; mingw/*) file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` ;; cygwin/*) file=`cygpath -m "$file" || echo "$file"` ;; wine/*) file=`winepath -w "$file" || echo "$file"` ;; esac ;; esac } # func_cl_dashL linkdir # Make cl look for libraries in LINKDIR func_cl_dashL () { func_file_conv "$1" if test -z "$lib_path"; then lib_path=$file else lib_path="$lib_path;$file" fi linker_opts="$linker_opts -LIBPATH:$file" } # func_cl_dashl library # Do a library search-path lookup for cl func_cl_dashl () { lib=$1 found=no save_IFS=$IFS IFS=';' for dir in $lib_path $LIB do IFS=$save_IFS if $shared && test -f "$dir/$lib.dll.lib"; then found=yes lib=$dir/$lib.dll.lib break fi if test -f "$dir/$lib.lib"; then found=yes lib=$dir/$lib.lib break fi if test -f "$dir/lib$lib.a"; then found=yes lib=$dir/lib$lib.a break fi done IFS=$save_IFS if test "$found" != yes; then lib=$lib.lib fi } # func_cl_wrapper cl arg... # Adjust compile command to suit cl func_cl_wrapper () { # Assume a capable shell lib_path= shared=: linker_opts= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. eat=1 case $2 in *.o | *.[oO][bB][jJ]) func_file_conv "$2" set x "$@" -Fo"$file" shift ;; *) func_file_conv "$2" set x "$@" -Fe"$file" shift ;; esac ;; -I) eat=1 func_file_conv "$2" mingw set x "$@" -I"$file" shift ;; -I*) func_file_conv "${1#-I}" mingw set x "$@" -I"$file" shift ;; -l) eat=1 func_cl_dashl "$2" set x "$@" "$lib" shift ;; -l*) func_cl_dashl "${1#-l}" set x "$@" "$lib" shift ;; -L) eat=1 func_cl_dashL "$2" ;; -L*) func_cl_dashL "${1#-L}" ;; -static) shared=false ;; -Wl,*) arg=${1#-Wl,} save_ifs="$IFS"; IFS=',' for flag in $arg; do IFS="$save_ifs" linker_opts="$linker_opts $flag" done IFS="$save_ifs" ;; -Xlinker) eat=1 linker_opts="$linker_opts $2" ;; -*) set x "$@" "$1" shift ;; *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) func_file_conv "$1" set x "$@" -Tp"$file" shift ;; *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) func_file_conv "$1" mingw set x "$@" "$file" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -n "$linker_opts"; then linker_opts="-link$linker_opts" fi exec "$@" $linker_opts exit 1 } eat= case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] Wrapper for compilers which do not understand '-c -o'. Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF exit $? ;; -v | --v*) echo "compile $scriptversion" exit $? ;; cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \ icl | *[/\\]icl | icl.exe | *[/\\]icl.exe ) func_cl_wrapper "$@" # Doesn't return... ;; esac ofile= cfile= for arg do if test -n "$eat"; then eat= else case $1 in -o) # configure might choose to run compile as 'compile cc -o foo foo.c'. # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) ofile=$2 ;; *) set x "$@" -o "$2" shift ;; esac ;; *.c) cfile=$1 set x "$@" "$1" shift ;; *) set x "$@" "$1" shift ;; esac fi shift done if test -z "$ofile" || test -z "$cfile"; then # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi # Name of file we expect compiler to create. cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. # Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d while true; do if mkdir "$lockdir" >/dev/null 2>&1; then break fi sleep 1 done # FIXME: race condition here if user kills between mkdir and trap. trap "rmdir '$lockdir'; exit 1" 1 2 15 # Run the compile. "$@" ret=$? if test -f "$cofile"; then test "$cofile" = "$ofile" || mv "$cofile" "$ofile" elif test -f "${cofile}bj"; then test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" fi rmdir "$lockdir" exit $ret # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: cddlib-0.94j/config.guess0000755000175000017500000012634313300566265012321 00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright 1992-2017 Free Software Foundation, Inc. timestamp='2017-05-27' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # # Originally written by Per Bothner; maintained since 2000 by Ben Elliston. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess # # Please send patches to . me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] Output the configuration name of the system \`$me' is run on. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. Copyright 1992-2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" >&2 exit 1 ;; * ) break ;; esac done if test $# != 0; then echo "$me: too many arguments$help" >&2 exit 1 fi trap 'exit 1' 1 2 15 # CC_FOR_BUILD -- compiler used by this script. Note that the use of a # compiler to aid in system detection is discouraged as it requires # temporary files to be created and, as you can see below, it is a # headache to deal with in a portable fashion. # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still # use `HOST_CC' if defined, but it is deprecated. # Portable tmp directory creation inspired by the Autoconf team. set_cc_for_build=' trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; : ${TMPDIR=/tmp} ; { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; dummy=$tmp/dummy ; tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; case $CC_FOR_BUILD,$HOST_CC,$CC in ,,) echo "int x;" > $dummy.c ; for c in cc gcc c89 c99 ; do if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; if test x"$CC_FOR_BUILD" = x ; then CC_FOR_BUILD=no_compiler_found ; fi ;; ,,*) CC_FOR_BUILD=$CC ;; ,*,*) CC_FOR_BUILD=$HOST_CC ;; esac ; set_cc_for_build= ;' # This is needed to find uname on a Pyramid OSx when run in the BSD universe. # (ghazi@noc.rutgers.edu 1994-08-24) if (test -f /.attbin/uname) >/dev/null 2>&1 ; then PATH=$PATH:/.attbin ; export PATH fi UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in Linux|GNU|GNU/*) # If the system lacks a compiler, then just pick glibc. # We could probably try harder. LIBC=gnu eval $set_cc_for_build cat <<-EOF > $dummy.c #include #if defined(__UCLIBC__) LIBC=uclibc #elif defined(__dietlibc__) LIBC=dietlibc #else LIBC=gnu #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` ;; esac # Note: order is significant - the case branches are not exclusive. case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward # compatibility and a consistent mechanism for selecting the # object file format. # # Note: NetBSD doesn't particularly care about the vendor # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ /sbin/$sysctl 2>/dev/null || \ /usr/sbin/$sysctl 2>/dev/null || \ echo unknown)` case "${UNAME_MACHINE_ARCH}" in armeb) machine=armeb-unknown ;; arm*) machine=arm-unknown ;; sh3el) machine=shl-unknown ;; sh3eb) machine=sh-unknown ;; sh5el) machine=sh5le-unknown ;; earmv*) arch=`echo ${UNAME_MACHINE_ARCH} | sed -e 's,^e\(armv[0-9]\).*$,\1,'` endian=`echo ${UNAME_MACHINE_ARCH} | sed -ne 's,^.*\(eb\)$,\1,p'` machine=${arch}${endian}-unknown ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. case "${UNAME_MACHINE_ARCH}" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). # Return netbsd for either. FIX? os=netbsd else os=netbsdelf fi ;; *) os=netbsd ;; esac # Determine ABI tags. case "${UNAME_MACHINE_ARCH}" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` ;; esac # The OS release # Debian GNU/NetBSD machines have a different userland, and # thus, need a distinct triplet. However, they do not need # kernel version information, so it can be replaced with a # suitable tag, in the style of linux-gnu. case "${UNAME_VERSION}" in Debian*) release='-gnu' ;; *) release=`echo ${UNAME_RELEASE} | sed -e 's/[-_].*//' | cut -d. -f1,2` ;; esac # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: # contains redundant information, the shorter form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}${abi}" exit ;; *:Bitrig:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} exit ;; *:LibertyBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` echo ${UNAME_MACHINE_ARCH}-unknown-libertybsd${UNAME_RELEASE} exit ;; *:ekkoBSD:*:*) echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} exit ;; *:SolidBSD:*:*) echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} exit ;; macppc:MirBSD:*:*) echo powerpc-unknown-mirbsd${UNAME_RELEASE} exit ;; *:MirBSD:*:*) echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} exit ;; *:Sortix:*:*) echo ${UNAME_MACHINE}-unknown-sortix exit ;; alpha:OSF1:*:*) case $UNAME_RELEASE in *4.0) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` ;; *5.*) UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` ;; esac # According to Compaq, /usr/sbin/psrinfo has been available on # OSF/1 and Tru64 systems produced since 1995. I hope that # covers most systems running today. This code pipes the CPU # types through head -n 1, so we only detect the type of CPU 0. ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` case "$ALPHA_CPU_TYPE" in "EV4 (21064)") UNAME_MACHINE=alpha ;; "EV4.5 (21064)") UNAME_MACHINE=alpha ;; "LCA4 (21066/21068)") UNAME_MACHINE=alpha ;; "EV5 (21164)") UNAME_MACHINE=alphaev5 ;; "EV5.6 (21164A)") UNAME_MACHINE=alphaev56 ;; "EV5.6 (21164PC)") UNAME_MACHINE=alphapca56 ;; "EV5.7 (21164PC)") UNAME_MACHINE=alphapca57 ;; "EV6 (21264)") UNAME_MACHINE=alphaev6 ;; "EV6.7 (21264A)") UNAME_MACHINE=alphaev67 ;; "EV6.8CB (21264C)") UNAME_MACHINE=alphaev68 ;; "EV6.8AL (21264B)") UNAME_MACHINE=alphaev68 ;; "EV6.8CX (21264D)") UNAME_MACHINE=alphaev68 ;; "EV6.9A (21264/EV69A)") UNAME_MACHINE=alphaev69 ;; "EV7 (21364)") UNAME_MACHINE=alphaev7 ;; "EV7.9 (21364A)") UNAME_MACHINE=alphaev79 ;; esac # A Pn.n version is a patched version. # A Vn.n version is a released version. # A Tn.n version is a released field test version. # A Xn.n version is an unreleased experimental baselevel. # 1.2 uses "1.2" for uname -r. echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` # Reset EXIT trap before exiting to avoid spurious non-zero exit code. exitcode=$? trap '' 0 exit $exitcode ;; Alpha\ *:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # Should we change UNAME_MACHINE based on the output of uname instead # of the specific Alpha model? echo alpha-pc-interix exit ;; 21064:Windows_NT:50:3) echo alpha-dec-winnt3.5 exit ;; Amiga*:UNIX_System_V:4.0:*) echo m68k-unknown-sysv4 exit ;; *:[Aa]miga[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-amigaos exit ;; *:[Mm]orph[Oo][Ss]:*:*) echo ${UNAME_MACHINE}-unknown-morphos exit ;; *:OS/390:*:*) echo i370-ibm-openedition exit ;; *:z/VM:*:*) echo s390-ibm-zvmoe exit ;; *:OS400:*:*) echo powerpc-ibm-os400 exit ;; arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) echo hppa1.1-hitachi-hiuxmpp exit ;; Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. if test "`(/bin/universe) 2>/dev/null`" = att ; then echo pyramid-pyramid-sysv3 else echo pyramid-pyramid-bsd fi exit ;; NILE*:*:*:dcosx) echo pyramid-pyramid-svr4 exit ;; DRS?6000:unix:4.0:6*) echo sparc-icl-nx6 exit ;; DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) case `/usr/bin/uname -p` in sparc) echo sparc-icl-nx7; exit ;; esac ;; s390x:SunOS:*:*) echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4H:SunOS:5.*:*) echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) echo i386-pc-auroraux${UNAME_RELEASE} exit ;; i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) eval $set_cc_for_build SUN_ARCH=i386 # If there is a compiler, see if it is configured for 64-bit objects. # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. # This test works for both compilers. if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then SUN_ARCH=x86_64 fi fi echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:6*:*) # According to config.sub, this is the proper way to canonicalize # SunOS6. Hard to guess exactly what SunOS6 will be like, but # it's likely to be more like Solaris than SunOS4. echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; sun4*:SunOS:*:*) case "`/usr/bin/arch -k`" in Series*|S4*) UNAME_RELEASE=`uname -v` ;; esac # Japanese Language versions have a version number like `4.1.3-JL'. echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` exit ;; sun3*:SunOS:*:*) echo m68k-sun-sunos${UNAME_RELEASE} exit ;; sun*:*:4.2BSD:*) UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` test "x${UNAME_RELEASE}" = x && UNAME_RELEASE=3 case "`/bin/arch`" in sun3) echo m68k-sun-sunos${UNAME_RELEASE} ;; sun4) echo sparc-sun-sunos${UNAME_RELEASE} ;; esac exit ;; aushp:SunOS:*:*) echo sparc-auspex-sunos${UNAME_RELEASE} exit ;; # The situation for MiNT is a little confusing. The machine name # can be virtually everything (everything which is not # "atarist" or "atariste" at least should have a processor # > m68000). The system name ranges from "MiNT" over "FreeMiNT" # to the lowercase version "mint" (or "freemint"). Finally # the system name "TOS" denotes a system which is actually not # MiNT. But MiNT is downward compatible to TOS, so this should # be no problem. atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) echo m68k-atari-mint${UNAME_RELEASE} exit ;; milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) echo m68k-milan-mint${UNAME_RELEASE} exit ;; hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) echo m68k-hades-mint${UNAME_RELEASE} exit ;; *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) echo m68k-unknown-mint${UNAME_RELEASE} exit ;; m68k:machten:*:*) echo m68k-apple-machten${UNAME_RELEASE} exit ;; powerpc:machten:*:*) echo powerpc-apple-machten${UNAME_RELEASE} exit ;; RISC*:Mach:*:*) echo mips-dec-mach_bsd4.3 exit ;; RISC*:ULTRIX:*:*) echo mips-dec-ultrix${UNAME_RELEASE} exit ;; VAX*:ULTRIX*:*:*) echo vax-dec-ultrix${UNAME_RELEASE} exit ;; 2020:CLIX:*:* | 2430:CLIX:*:*) echo clipper-intergraph-clix${UNAME_RELEASE} exit ;; mips:*:*:UMIPS | mips:*:*:RISCos) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { #else int main (argc, argv) int argc; char *argv[]; { #endif #if defined (host_mips) && defined (MIPSEB) #if defined (SYSTYPE_SYSV) printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_SVR4) printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); #endif #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); #endif #endif exit (-1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && SYSTEM_NAME=`$dummy $dummyarg` && { echo "$SYSTEM_NAME"; exit; } echo mips-mips-riscos${UNAME_RELEASE} exit ;; Motorola:PowerMAX_OS:*:*) echo powerpc-motorola-powermax exit ;; Motorola:*:4.3:PL8-*) echo powerpc-harris-powermax exit ;; Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) echo powerpc-harris-powermax exit ;; Night_Hawk:Power_UNIX:*:*) echo powerpc-harris-powerunix exit ;; m88k:CX/UX:7*:*) echo m88k-harris-cxux7 exit ;; m88k:*:4*:R4*) echo m88k-motorola-sysv4 exit ;; m88k:*:3*:R3*) echo m88k-motorola-sysv3 exit ;; AViiON:dgux:*:*) # DG/UX returns AViiON for all architectures UNAME_PROCESSOR=`/usr/bin/uname -p` if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] then if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ [ ${TARGET_BINARY_INTERFACE}x = x ] then echo m88k-dg-dgux${UNAME_RELEASE} else echo m88k-dg-dguxbcs${UNAME_RELEASE} fi else echo i586-dg-dgux${UNAME_RELEASE} fi exit ;; M88*:DolphinOS:*:*) # DolphinOS (SVR3) echo m88k-dolphin-sysv3 exit ;; M88*:*:R3*:*) # Delta 88k system running SVR3 echo m88k-motorola-sysv3 exit ;; XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) echo m88k-tektronix-sysv3 exit ;; Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) echo m68k-tektronix-bsd exit ;; *:IRIX*:*:*) echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` exit ;; ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' i*86:AIX:*:*) echo i386-ibm-aix exit ;; ia64:AIX:*:*) if [ -x /usr/bin/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} exit ;; *:AIX:2:3) if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include main() { if (!__power_pc()) exit(1); puts("powerpc-ibm-aix3.2.5"); exit(0); } EOF if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` then echo "$SYSTEM_NAME" else echo rs6000-ibm-aix3.2.5 fi elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then echo rs6000-ibm-aix3.2.4 else echo rs6000-ibm-aix3.2 fi exit ;; *:AIX:*:[4567]) IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then IBM_ARCH=rs6000 else IBM_ARCH=powerpc fi if [ -x /usr/bin/lslpp ] ; then IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` else IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} fi echo ${IBM_ARCH}-ibm-aix${IBM_REV} exit ;; *:AIX:*:*) echo rs6000-ibm-aix exit ;; ibmrt:4.4BSD:*|romp-ibm:BSD:*) echo romp-ibm-bsd4.4 exit ;; ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to exit ;; # report: romp-ibm BSD 4.3 *:BOSX:*:*) echo rs6000-bull-bosx exit ;; DPX/2?00:B.O.S.:*:*) echo m68k-bull-sysv3 exit ;; 9000/[34]??:4.3bsd:1.*:*) echo m68k-hp-bsd exit ;; hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) echo m68k-hp-bsd4.4 exit ;; 9000/[34678]??:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` case "${UNAME_MACHINE}" in 9000/31? ) HP_ARCH=m68000 ;; 9000/[34]?? ) HP_ARCH=m68k ;; 9000/[678][0-9][0-9]) if [ -x /usr/bin/getconf ]; then sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` case "${sc_cpu_version}" in 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 532) # CPU_PA_RISC2_0 case "${sc_kernel_bits}" in 32) HP_ARCH=hppa2.0n ;; 64) HP_ARCH=hppa2.0w ;; '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 esac ;; esac fi if [ "${HP_ARCH}" = "" ]; then eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #define _HPUX_SOURCE #include #include int main () { #if defined(_SC_KERNEL_BITS) long bits = sysconf(_SC_KERNEL_BITS); #endif long cpu = sysconf (_SC_CPU_VERSION); switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0"); break; case CPU_PA_RISC1_1: puts ("hppa1.1"); break; case CPU_PA_RISC2_0: #if defined(_SC_KERNEL_BITS) switch (bits) { case 64: puts ("hppa2.0w"); break; case 32: puts ("hppa2.0n"); break; default: puts ("hppa2.0"); break; } break; #else /* !defined(_SC_KERNEL_BITS) */ puts ("hppa2.0"); break; #endif default: puts ("hppa1.0"); break; } exit (0); } EOF (CCOPTS="" $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` test -z "$HP_ARCH" && HP_ARCH=hppa fi ;; esac if [ ${HP_ARCH} = hppa2.0w ] then eval $set_cc_for_build # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler # generating 64-bit code. GNU and HP use different nomenclature: # # $ CC_FOR_BUILD=cc ./config.guess # => hppa2.0w-hp-hpux11.23 # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess # => hppa64-hp-hpux11.23 if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | grep -q __LP64__ then HP_ARCH=hppa2.0w else HP_ARCH=hppa64 fi fi echo ${HP_ARCH}-hp-hpux${HPUX_REV} exit ;; ia64:HP-UX:*:*) HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` echo ia64-hp-hpux${HPUX_REV} exit ;; 3050*:HI-UX:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include int main () { long cpu = sysconf (_SC_CPU_VERSION); /* The order matters, because CPU_IS_HP_MC68K erroneously returns true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct results, however. */ if (CPU_IS_PA_RISC (cpu)) { switch (cpu) { case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; default: puts ("hppa-hitachi-hiuxwe2"); break; } } else if (CPU_IS_HP_MC68K (cpu)) puts ("m68k-hitachi-hiuxwe2"); else puts ("unknown-hitachi-hiuxwe2"); exit (0); } EOF $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } echo unknown-hitachi-hiuxwe2 exit ;; 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) echo hppa1.1-hp-bsd exit ;; 9000/8??:4.3bsd:*:*) echo hppa1.0-hp-bsd exit ;; *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) echo hppa1.0-hp-mpeix exit ;; hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) echo hppa1.1-hp-osf exit ;; hp8??:OSF1:*:*) echo hppa1.0-hp-osf exit ;; i*86:OSF1:*:*) if [ -x /usr/sbin/sysversion ] ; then echo ${UNAME_MACHINE}-unknown-osf1mk else echo ${UNAME_MACHINE}-unknown-osf1 fi exit ;; parisc*:Lites*:*:*) echo hppa1.1-hp-lites exit ;; C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) echo c1-convex-bsd exit ;; C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) echo c34-convex-bsd exit ;; C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) echo c38-convex-bsd exit ;; C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) echo c4-convex-bsd exit ;; CRAY*Y-MP:*:*:*) echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*[A-Z]90:*:*:*) echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -e 's/\.[^.]*$/.X/' exit ;; CRAY*TS:*:*:*) echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*T3E:*:*:*) echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; CRAY*SV1:*:*:*) echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; *:UNICOS/mp:*:*) echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' exit ;; F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; 5000:UNIX_System_V:4.*:*) FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` FUJITSU_REL=`echo ${UNAME_RELEASE} | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" exit ;; i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} exit ;; sparc*:BSD/OS:*:*) echo sparc-unknown-bsdi${UNAME_RELEASE} exit ;; *:BSD/OS:*:*) echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` case ${UNAME_PROCESSOR} in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW64*:*) echo ${UNAME_MACHINE}-pc-mingw64 exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; *:MSYS*:*) echo ${UNAME_MACHINE}-pc-msys exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; authenticamd | genuineintel | EM64T) echo x86_64-unknown-interix${UNAME_RELEASE} exit ;; IA64) echo ia64-unknown-interix${UNAME_RELEASE} exit ;; esac ;; [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) echo i${UNAME_MACHINE}-pc-mks exit ;; 8664:Windows_NT:*) echo x86_64-pc-mks exit ;; i*:Windows_NT*:* | Pentium*:Windows_NT*:*) # How do we know it's Interix rather than the generic POSIX subsystem? # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we # UNAME_MACHINE based on the output of uname instead of i386? echo i586-pc-interix exit ;; i*:UWIN*:*) echo ${UNAME_MACHINE}-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-cygwin exit ;; p*:CYGWIN*:*) echo powerpcle-unknown-cygwin exit ;; prep*:SunOS:5.*:*) echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` exit ;; *:GNU:*:*) # the GNU system echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` exit ;; *:GNU/*:*:*) # other systems with GNU libc and userland echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; aarch64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; aarch64_be:Linux:*:*) UNAME_MACHINE=aarch64_be echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; EV56) UNAME_MACHINE=alphaev56 ;; PCA56) UNAME_MACHINE=alphapca56 ;; PCA57) UNAME_MACHINE=alphapca56 ;; EV6) UNAME_MACHINE=alphaev6 ;; EV67) UNAME_MACHINE=alphaev67 ;; EV68*) UNAME_MACHINE=alphaev68 ;; esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arc:Linux:*:* | arceb:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_EABI__ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ARM_PCS_VFP then echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi else echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; e2k:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; frv:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; hexagon:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; k1om:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; mips:Linux:*:* | mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=${UNAME_MACHINE}el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=${UNAME_MACHINE} #else CPU= #endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; mips64el:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; openrisc*:Linux:*:*) echo or1k-unknown-linux-${LIBC} exit ;; or32:Linux:*:* | or1k*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-${LIBC} exit ;; parisc:Linux:*:* | hppa:Linux:*:*) # Look for CPU level case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; *) echo hppa-unknown-linux-${LIBC} ;; esac exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-${LIBC} exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; ppc64le:Linux:*:*) echo powerpc64le-unknown-linux-${LIBC} exit ;; ppcle:Linux:*:*) echo powerpcle-unknown-linux-${LIBC} exit ;; riscv32:Linux:*:* | riscv64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:DYNIX/ptx:4*:*) # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. # earlier versions are messed up and put the nodename in both # sysname and nodename. echo i386-sequent-sysv4 exit ;; i*86:UNIX_SV:4.2MP:2.*) # Unixware is an offshoot of SVR4, but it has its own version # number series starting with 2... # I am not positive that other SVR4 systems won't match this, # I just have to hope. -- rms. # Use sysv4.2uw... so that sysv4* matches it. echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} exit ;; i*86:OS/2:*:*) # If we were able to find `uname', then EMX Unix compatibility # is probably installed. echo ${UNAME_MACHINE}-pc-os2-emx exit ;; i*86:XTS-300:*:STOP) echo ${UNAME_MACHINE}-unknown-stop exit ;; i*86:atheos:*:*) echo ${UNAME_MACHINE}-unknown-atheos exit ;; i*86:syllable:*:*) echo ${UNAME_MACHINE}-pc-syllable exit ;; i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) echo i386-unknown-lynxos${UNAME_RELEASE} exit ;; i*86:*DOS:*:*) echo ${UNAME_MACHINE}-pc-msdosdjgpp exit ;; i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} else echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} fi exit ;; i*86:*:5:[678]*) # UnixWare 7.x, OpenUNIX and OpenServer 6. case `/bin/uname -X | grep "^Machine"` in *486*) UNAME_MACHINE=i486 ;; *Pentium) UNAME_MACHINE=i586 ;; *Pent*|*Celeron) UNAME_MACHINE=i686 ;; esac echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} exit ;; i*86:*:3.2:*) if test -f /usr/options/cb.name; then UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ && UNAME_MACHINE=i586 (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ && UNAME_MACHINE=i686 (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ && UNAME_MACHINE=i686 echo ${UNAME_MACHINE}-pc-sco$UNAME_REL else echo ${UNAME_MACHINE}-pc-sysv32 fi exit ;; pc:*:*:*) # Left here for compatibility: # uname -m prints for DJGPP always 'pc', but it prints nothing about # the processor, so we play safe by assuming i586. # Note: whatever this is, it MUST be the same as what config.sub # prints for the "djgpp" host, or else GDB configure will decide that # this is a cross-build. echo i586-pc-msdosdjgpp exit ;; Intel:Mach:3*:*) echo i386-pc-mach3 exit ;; paragon:*:*:*) echo i860-intel-osf1 exit ;; i860:*:4.*:*) # i860-SVR4 if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 else # Add other i860-SVR4 vendors below as they are discovered. echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 fi exit ;; mini*:CTIX:SYS*5:*) # "miniframe" echo m68010-convergent-sysv exit ;; mc68k:UNIX:SYSTEM5:3.51m) echo m68k-convergent-sysv exit ;; M680?0:D-NIX:5.3:*) echo m68k-diab-dnix exit ;; M68*:*:R3V[5678]*:*) test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) OS_REL='' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4; exit; } ;; NCR*:*:4.2:* | MPRAS*:*:4.2:*) OS_REL='.3' test -r /etc/.relid \ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) echo m68k-unknown-lynxos${UNAME_RELEASE} exit ;; mc68030:UNIX_System_V:4.*:*) echo m68k-atari-sysv4 exit ;; TSUNAMI:LynxOS:2.*:*) echo sparc-unknown-lynxos${UNAME_RELEASE} exit ;; rs6000:LynxOS:2.*:*) echo rs6000-unknown-lynxos${UNAME_RELEASE} exit ;; PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) echo powerpc-unknown-lynxos${UNAME_RELEASE} exit ;; SM[BE]S:UNIX_SV:*:*) echo mips-dde-sysv${UNAME_RELEASE} exit ;; RM*:ReliantUNIX-*:*:*) echo mips-sni-sysv4 exit ;; RM*:SINIX-*:*:*) echo mips-sni-sysv4 exit ;; *:SINIX-*:*:*) if uname -p 2>/dev/null >/dev/null ; then UNAME_MACHINE=`(uname -p) 2>/dev/null` echo ${UNAME_MACHINE}-sni-sysv4 else echo ns32k-sni-sysv fi exit ;; PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort # says echo i586-unisys-sysv4 exit ;; *:UNIX_System_V:4*:FTX*) # From Gerald Hewes . # How about differentiating between stratus architectures? -djm echo hppa1.1-stratus-sysv4 exit ;; *:*:*:FTX*) # From seanf@swdc.stratus.com. echo i860-stratus-sysv4 exit ;; i*86:VOS:*:*) # From Paul.Green@stratus.com. echo ${UNAME_MACHINE}-stratus-vos exit ;; *:VOS:*:*) # From Paul.Green@stratus.com. echo hppa1.1-stratus-vos exit ;; mc68*:A/UX:*:*) echo m68k-apple-aux${UNAME_RELEASE} exit ;; news*:NEWS-OS:6*:*) echo mips-sony-newsos6 exit ;; R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) if [ -d /usr/nec ]; then echo mips-nec-sysv${UNAME_RELEASE} else echo mips-unknown-sysv${UNAME_RELEASE} fi exit ;; BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. echo powerpc-be-beos exit ;; BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. echo powerpc-apple-beos exit ;; BePC:BeOS:*:*) # BeOS running on Intel PC compatible. echo i586-pc-beos exit ;; BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; x86_64:Haiku:*:*) echo x86_64-unknown-haiku exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; SX-5:SUPER-UX:*:*) echo sx5-nec-superux${UNAME_RELEASE} exit ;; SX-6:SUPER-UX:*:*) echo sx6-nec-superux${UNAME_RELEASE} exit ;; SX-7:SUPER-UX:*:*) echo sx7-nec-superux${UNAME_RELEASE} exit ;; SX-8:SUPER-UX:*:*) echo sx8-nec-superux${UNAME_RELEASE} exit ;; SX-8R:SUPER-UX:*:*) echo sx8r-nec-superux${UNAME_RELEASE} exit ;; SX-ACE:SUPER-UX:*:*) echo sxace-nec-superux${UNAME_RELEASE} exit ;; Power*:Rhapsody:*:*) echo powerpc-apple-rhapsody${UNAME_RELEASE} exit ;; *:Rhapsody:*:*) echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown eval $set_cc_for_build if test "$UNAME_PROCESSOR" = unknown ; then UNAME_PROCESSOR=powerpc fi if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then if [ "$CC_FOR_BUILD" != no_compiler_found ]; then if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_64BIT_ARCH >/dev/null then case $UNAME_PROCESSOR in i386) UNAME_PROCESSOR=x86_64 ;; powerpc) UNAME_PROCESSOR=powerpc64 ;; esac fi # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ grep IS_PPC >/dev/null then UNAME_PROCESSOR=powerpc fi fi elif test "$UNAME_PROCESSOR" = i386 ; then # Avoid executing cc on OS X 10.9, as it ships with a stub # that puts up a graphical alert prompting to install # developer tools. Any system running Mac OS X 10.7 or # later (Darwin 11 and later) is required to have a 64-bit # processor. This is not true of the ARM version of Darwin # that Apple uses in portable devices. UNAME_PROCESSOR=x86_64 fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) UNAME_PROCESSOR=`uname -p` if test "$UNAME_PROCESSOR" = x86; then UNAME_PROCESSOR=i386 UNAME_MACHINE=pc fi echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} exit ;; *:QNX:*:4*) echo i386-pc-qnx exit ;; NEO-*:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-*:NONSTOP_KERNEL:*:*) echo nsr-tandem-nsk${UNAME_RELEASE} exit ;; NSX-*:NONSTOP_KERNEL:*:*) echo nsx-tandem-nsk${UNAME_RELEASE} exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux exit ;; BS2000:POSIX*:*:*) echo bs2000-siemens-sysv exit ;; DS/*:UNIX_System_V:*:*) echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} exit ;; *:Plan9:*:*) # "uname -m" is not consistent, so use $cputype instead. 386 # is converted to i386 for consistency with other x86 # operating systems. if test "$cputype" = 386; then UNAME_MACHINE=i386 else UNAME_MACHINE="$cputype" fi echo ${UNAME_MACHINE}-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 exit ;; *:TENEX:*:*) echo pdp10-unknown-tenex exit ;; KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) echo pdp10-dec-tops20 exit ;; XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) echo pdp10-xkl-tops20 exit ;; *:TOPS-20:*:*) echo pdp10-unknown-tops20 exit ;; *:ITS:*:*) echo pdp10-unknown-its exit ;; SEI:*:*:SEIUX) echo mips-sei-seiux${UNAME_RELEASE} exit ;; *:DragonFly:*:*) echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` exit ;; *:*VMS:*:*) UNAME_MACHINE=`(uname -p) 2>/dev/null` case "${UNAME_MACHINE}" in A*) echo alpha-dec-vms ; exit ;; I*) echo ia64-dec-vms ; exit ;; V*) echo vax-dec-vms ; exit ;; esac ;; *:XENIX:*:SysV) echo i386-pc-xenix exit ;; i*86:skyos:*:*) echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE} | sed -e 's/ .*$//'` exit ;; i*86:rdos:*:*) echo ${UNAME_MACHINE}-pc-rdos exit ;; i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; x86_64:VMkernel:*:*) echo ${UNAME_MACHINE}-unknown-esx exit ;; amd64:Isilon\ OneFS:*:*) echo x86_64-unknown-onefs exit ;; esac cat >&2 </dev/null || echo unknown` uname -r = `(uname -r) 2>/dev/null || echo unknown` uname -s = `(uname -s) 2>/dev/null || echo unknown` uname -v = `(uname -v) 2>/dev/null || echo unknown` /usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` /bin/uname -X = `(/bin/uname -X) 2>/dev/null` hostinfo = `(hostinfo) 2>/dev/null` /bin/universe = `(/bin/universe) 2>/dev/null` /usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` /bin/arch = `(/bin/arch) 2>/dev/null` /usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` /usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` UNAME_MACHINE = ${UNAME_MACHINE} UNAME_RELEASE = ${UNAME_RELEASE} UNAME_SYSTEM = ${UNAME_SYSTEM} UNAME_VERSION = ${UNAME_VERSION} EOF exit 1 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: cddlib-0.94j/config.sub0000755000175000017500000010724313300566265011762 00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright 1992-2017 Free Software Foundation, Inc. timestamp='2017-04-02' # This file is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that # program. This Exception is an additional permission under section 7 # of the GNU General Public License, version 3 ("GPLv3"). # Please send patches to . # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. # If it is invalid, we print an error message on stderr and exit with code 1. # Otherwise, we print the canonical config type on stdout and succeed. # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub # This file is supposed to be the same for all GNU packages # and recognize all the CPU types, system types and aliases # that are meaningful with *any* GNU software. # Each package is responsible for reporting which valid configurations # it does not support. The user should be able to distinguish # a failure to support a valid configuration from a meaningless # configuration. # The goal of this file is to map all the various variations of a given # machine specification into a single specification in the form: # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM # or in some cases, the newer four-part form: # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM # It is wrong to echo any other type of specification. me=`echo "$0" | sed -e 's,.*/,,'` usage="\ Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS Canonicalize a configuration name. Operation modes: -h, --help print this help, then exit -t, --time-stamp print date of last modification, then exit -v, --version print version number, then exit Report bugs and patches to ." version="\ GNU config.sub ($timestamp) Copyright 1992-2017 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." help=" Try \`$me --help' for more information." # Parse command line while test $# -gt 0 ; do case $1 in --time-stamp | --time* | -t ) echo "$timestamp" ; exit ;; --version | -v ) echo "$version" ; exit ;; --help | --h* | -h ) echo "$usage"; exit ;; -- ) # Stop option processing shift; break ;; - ) # Use stdin as input. break ;; -* ) echo "$me: invalid option $1$help" exit 1 ;; *local*) # First pass through any local machine types. echo $1 exit ;; * ) break ;; esac done case $# in 0) echo "$me: missing argument$help" >&2 exit 1;; 1) ;; *) echo "$me: too many arguments$help" >&2 exit 1;; esac # Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). # Here we must recognize all the valid KERNEL-OS combinations. maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | netbsd*-eabi* | \ kopensolaris*-gnu* | cloudabi*-eabi* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; android-linux) os=-linux-android basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] then os=`echo $1 | sed 's/.*-/-/'` else os=; fi ;; esac ### Let's recognize common machines as not being operating systems so ### that things like config.sub decstation-3100 work. We also ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in -sun*os*) # Prevent following clause from handling this invalid input. ;; -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; -bluegene*) os=-cnk ;; -sim | -cisco | -oki | -wec | -winbond) os= basic_machine=$1 ;; -scout) ;; -wrs) os=-vxworks basic_machine=$1 ;; -chorusos*) os=-chorusos basic_machine=$1 ;; -chorusrdb) os=-chorusrdb basic_machine=$1 ;; -hiux*) os=-hiuxwe2 ;; -sco6) os=-sco5v6 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5) os=-sco3.2v5 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco4) os=-sco3.2v4 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco3.2v[4-9]*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco5v6*) # Don't forget version if it is 3.2v4 or newer. basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -sco*) os=-sco3.2v2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -udk*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -isc) os=-isc2.2 basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -clix*) basic_machine=clipper-intergraph ;; -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; -lynx*178) os=-lynxos178 ;; -lynx*5) os=-lynxos5 ;; -lynx*) os=-lynxos ;; -ptx*) basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` ;; -windowsnt*) os=`echo $os | sed -e 's/windowsnt/winnt/'` ;; -psos*) os=-psos ;; -mint | -mint[0-9]*) basic_machine=m68k-atari os=-mint ;; esac # Decode aliases for certain CPU-COMPANY combinations. case $basic_machine in # Recognize the basic CPU types without company name. # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arceb \ | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ | c4x | c8051 | clipper \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | hexagon \ | i370 | i860 | i960 | ia16 | ia64 \ | ip2k | iq2000 \ | k1om \ | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ | mips64octeon | mips64octeonel \ | mips64orion | mips64orionel \ | mips64r5900 | mips64r5900el \ | mips64vr | mips64vrel \ | mips64vr4100 | mips64vr4100el \ | mips64vr4300 | mips64vr4300el \ | mips64vr5000 | mips64vr5000el \ | mips64vr5900 | mips64vr5900el \ | mipsisa32 | mipsisa32el \ | mipsisa32r2 | mipsisa32r2el \ | mipsisa32r6 | mipsisa32r6el \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64r6 | mipsisa64r6el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pru \ | pyramid \ | riscv32 | riscv64 \ | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[234]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ | spu \ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | visium \ | wasm32 \ | we32k \ | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; c54x) basic_machine=tic54x-unknown ;; c55x) basic_machine=tic55x-unknown ;; c6x) basic_machine=tic6x-unknown ;; leon|leon[3-9]) basic_machine=sparc-$basic_machine ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-unknown ;; strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown os=-none ;; xscaleeb) basic_machine=armeb-unknown ;; xscaleel) basic_machine=armel-unknown ;; # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. i*86 | x86_64) basic_machine=$basic_machine-pc ;; # Object if more than one company name word. *-*-*) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | ba-* \ | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | c8051-* | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | hexagon-* \ | i*86-* | i860-* | i960-* | ia16-* | ia64-* \ | ip2k-* | iq2000-* \ | k1om-* \ | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ | mips64octeon-* | mips64octeonel-* \ | mips64orion-* | mips64orionel-* \ | mips64r5900-* | mips64r5900el-* \ | mips64vr-* | mips64vrel-* \ | mips64vr4100-* | mips64vr4100el-* \ | mips64vr4300-* | mips64vr4300el-* \ | mips64vr5000-* | mips64vr5000el-* \ | mips64vr5900-* | mips64vr5900el-* \ | mipsisa32-* | mipsisa32el-* \ | mipsisa32r2-* | mipsisa32r2el-* \ | mipsisa32r6-* | mipsisa32r6el-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64r6-* | mipsisa64r6el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ | or1k*-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pru-* \ | pyramid-* \ | riscv32-* | riscv64-* \ | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx*-* \ | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ | tile*-* \ | tron-* \ | ubicom32-* \ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ | vax-* \ | visium-* \ | wasm32-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) ;; # Recognize the basic CPU types without company name, with glob match. xtensa*) basic_machine=$basic_machine-unknown ;; # Recognize the various machine names and aliases which stand # for a CPU type and a company and sometimes even an OS. 386bsd) basic_machine=i386-unknown os=-bsd ;; 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) basic_machine=m68000-att ;; 3b*) basic_machine=we32k-att ;; a29khif) basic_machine=a29k-amd os=-udi ;; abacus) basic_machine=abacus-unknown ;; adobe68k) basic_machine=m68010-adobe os=-scout ;; alliant | fx80) basic_machine=fx80-alliant ;; altos | altos3068) basic_machine=m68k-altos ;; am29k) basic_machine=a29k-none os=-bsd ;; amd64) basic_machine=x86_64-pc ;; amd64-*) basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; amdahl) basic_machine=580-amdahl os=-sysv ;; amiga | amiga-*) basic_machine=m68k-unknown ;; amigaos | amigados) basic_machine=m68k-unknown os=-amigaos ;; amigaunix | amix) basic_machine=m68k-unknown os=-sysv4 ;; apollo68) basic_machine=m68k-apollo os=-sysv ;; apollo68bsd) basic_machine=m68k-apollo os=-bsd ;; aros) basic_machine=i386-pc os=-aros ;; asmjs) basic_machine=asmjs-unknown ;; aux) basic_machine=m68k-apple os=-aux ;; balance) basic_machine=ns32k-sequent os=-dynix ;; blackfin) basic_machine=bfin-unknown os=-linux ;; blackfin-*) basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; bluegene*) basic_machine=powerpc-ibm os=-cnk ;; c54x-*) basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c55x-*) basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c6x-*) basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray os=-unicos ;; cegcc) basic_machine=arm-unknown os=-cegcc ;; convex-c1) basic_machine=c1-convex os=-bsd ;; convex-c2) basic_machine=c2-convex os=-bsd ;; convex-c32) basic_machine=c32-convex os=-bsd ;; convex-c34) basic_machine=c34-convex os=-bsd ;; convex-c38) basic_machine=c38-convex os=-bsd ;; cray | j90) basic_machine=j90-cray os=-unicos ;; craynv) basic_machine=craynv-cray os=-unicosmp ;; cr16 | cr16-*) basic_machine=cr16-unknown os=-elf ;; crds | unos) basic_machine=m68k-crds ;; crisv32 | crisv32-* | etraxfs*) basic_machine=crisv32-axis ;; cris | cris-* | etrax*) basic_machine=cris-axis ;; crx) basic_machine=crx-unknown os=-elf ;; da30 | da30-*) basic_machine=m68k-da30 ;; decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) basic_machine=mips-dec ;; decsystem10* | dec10*) basic_machine=pdp10-dec os=-tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec os=-tops20 ;; delta | 3300 | motorola-3300 | motorola-delta \ | 3300-motorola | delta-motorola) basic_machine=m68k-motorola ;; delta88) basic_machine=m88k-motorola os=-sysv3 ;; dicos) basic_machine=i686-pc os=-dicos ;; djgpp) basic_machine=i586-pc os=-msdosdjgpp ;; dpx20 | dpx20-*) basic_machine=rs6000-bull os=-bosx ;; dpx2* | dpx2*-bull) basic_machine=m68k-bull os=-sysv3 ;; e500v[12]) basic_machine=powerpc-unknown os=$os"spe" ;; e500v[12]-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` os=$os"spe" ;; ebmon29k) basic_machine=a29k-amd os=-ebmon ;; elxsi) basic_machine=elxsi-elxsi os=-bsd ;; encore | umax | mmax) basic_machine=ns32k-encore ;; es1800 | OSE68k | ose68k | ose | OSE) basic_machine=m68k-ericsson os=-ose ;; fx2800) basic_machine=i860-alliant ;; genix) basic_machine=ns32k-ns ;; gmicro) basic_machine=tron-gmicro os=-sysv ;; go32) basic_machine=i386-pc os=-go32 ;; h3050r* | hiux*) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; h8300hms) basic_machine=h8300-hitachi os=-hms ;; h8300xray) basic_machine=h8300-hitachi os=-xray ;; h8500hms) basic_machine=h8500-hitachi os=-hms ;; harris) basic_machine=m88k-harris os=-sysv3 ;; hp300-*) basic_machine=m68k-hp ;; hp300bsd) basic_machine=m68k-hp os=-bsd ;; hp300hpux) basic_machine=m68k-hp os=-hpux ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k2[0-9][0-9] | hp9k31[0-9]) basic_machine=m68000-hp ;; hp9k3[2-9][0-9]) basic_machine=m68k-hp ;; hp9k6[0-9][0-9] | hp6[0-9][0-9]) basic_machine=hppa1.0-hp ;; hp9k7[0-79][0-9] | hp7[0-79][0-9]) basic_machine=hppa1.1-hp ;; hp9k78[0-9] | hp78[0-9]) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) # FIXME: really hppa2.0-hp basic_machine=hppa1.1-hp ;; hp9k8[0-9][13679] | hp8[0-9][13679]) basic_machine=hppa1.1-hp ;; hp9k8[0-9][0-9] | hp8[0-9][0-9]) basic_machine=hppa1.0-hp ;; hppa-next) os=-nextstep3 ;; hppaosf) basic_machine=hppa1.1-hp os=-osf ;; hppro) basic_machine=hppa1.1-hp os=-proelf ;; i370-ibm* | ibm*) basic_machine=i370-ibm ;; i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 ;; i*86v4*) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv4 ;; i*86v) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv ;; i*86sol2) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-solaris2 ;; i386mach) basic_machine=i386-mach os=-mach ;; i386-vsta | vsta) basic_machine=i386-unknown os=-vsta ;; iris | iris4d) basic_machine=mips-sgi case $os in -irix*) ;; *) os=-irix4 ;; esac ;; isi68 | isi) basic_machine=m68k-isi os=-sysv ;; leon-*|leon[3-9]-*) basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` ;; m68knommu) basic_machine=m68k-unknown os=-linux ;; m68knommu-*) basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; m88k-omron*) basic_machine=m88k-omron ;; magnum | m3230) basic_machine=mips-mips os=-sysv ;; merlin) basic_machine=ns32k-utek os=-sysv ;; microblaze*) basic_machine=microblaze-xilinx ;; mingw64) basic_machine=x86_64-pc os=-mingw64 ;; mingw32) basic_machine=i686-pc os=-mingw32 ;; mingw32ce) basic_machine=arm-unknown os=-mingw32ce ;; miniframe) basic_machine=m68000-convergent ;; *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari os=-mint ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; mips3*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown ;; monitor) basic_machine=m68k-rom68k os=-coff ;; morphos) basic_machine=powerpc-unknown os=-morphos ;; moxiebox) basic_machine=moxie-unknown os=-moxiebox ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; msys) basic_machine=i686-pc os=-msys ;; mvs) basic_machine=i370-ibm os=-mvs ;; nacl) basic_machine=le32-unknown os=-nacl ;; ncr3000) basic_machine=i486-ncr os=-sysv4 ;; netbsd386) basic_machine=i386-unknown os=-netbsd ;; netwinder) basic_machine=armv4l-rebel os=-linux ;; news | news700 | news800 | news900) basic_machine=m68k-sony os=-newsos ;; news1000) basic_machine=m68030-sony os=-newsos ;; news-3600 | risc-news) basic_machine=mips-sony os=-newsos ;; necv70) basic_machine=v70-nec os=-sysv ;; next | m*-next ) basic_machine=m68k-next case $os in -nextstep* ) ;; -ns2*) os=-nextstep2 ;; *) os=-nextstep3 ;; esac ;; nh3000) basic_machine=m68k-harris os=-cxux ;; nh[45]000) basic_machine=m88k-harris os=-cxux ;; nindy960) basic_machine=i960-intel os=-nindy ;; mon960) basic_machine=i960-intel os=-mon960 ;; nonstopux) basic_machine=mips-compaq os=-nonstopux ;; np1) basic_machine=np1-gould ;; neo-tandem) basic_machine=neo-tandem ;; nse-tandem) basic_machine=nse-tandem ;; nsr-tandem) basic_machine=nsr-tandem ;; nsx-tandem) basic_machine=nsx-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki os=-proelf ;; openrisc | openrisc-*) basic_machine=or32-unknown ;; os400) basic_machine=powerpc-ibm os=-os400 ;; OSE68000 | ose68000) basic_machine=m68000-ericsson os=-ose ;; os68k) basic_machine=m68k-none os=-os68k ;; pa-hitachi) basic_machine=hppa1.1-hitachi os=-hiuxwe2 ;; paragon) basic_machine=i860-intel os=-osf ;; parisc) basic_machine=hppa-unknown os=-linux ;; parisc-*) basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` os=-linux ;; pbd) basic_machine=sparc-tti ;; pbb) basic_machine=m68k-tti ;; pc532 | pc532-*) basic_machine=ns32k-pc532 ;; pc98) basic_machine=i386-pc ;; pc98-*) basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc ;; pentiumpro | p6 | 6x86 | athlon | athlon_*) basic_machine=i686-pc ;; pentiumii | pentium2 | pentiumiii | pentium3) basic_machine=i686-pc ;; pentium4) basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pentium4-*) basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould ;; power) basic_machine=power-ibm ;; ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ps2) basic_machine=i386-ibm ;; pw32) basic_machine=i586-unknown os=-pw32 ;; rdos | rdos64) basic_machine=x86_64-pc os=-rdos ;; rdos32) basic_machine=i386-pc os=-rdos ;; rom68k) basic_machine=m68k-rom68k os=-coff ;; rm[46]00) basic_machine=mips-siemens ;; rtpc | rtpc-*) basic_machine=romp-ibm ;; s390 | s390-*) basic_machine=s390-ibm ;; s390x | s390x-*) basic_machine=s390x-ibm ;; sa29200) basic_machine=a29k-amd os=-udi ;; sb1) basic_machine=mipsisa64sb1-unknown ;; sb1el) basic_machine=mipsisa64sb1el-unknown ;; sde) basic_machine=mipsisa32-sde os=-elf ;; sei) basic_machine=mips-sei os=-seiux ;; sequent) basic_machine=i386-sequent ;; sh) basic_machine=sh-hitachi os=-hms ;; sh5el) basic_machine=sh5le-unknown ;; sh64) basic_machine=sh64-unknown ;; sparclite-wrs | simso-wrs) basic_machine=sparclite-wrs os=-vxworks ;; sps7) basic_machine=m68k-bull os=-sysv2 ;; spur) basic_machine=spur-unknown ;; st2000) basic_machine=m68k-tandem ;; stratus) basic_machine=i860-stratus os=-sysv4 ;; strongarm-* | thumb-*) basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; sun2os3) basic_machine=m68000-sun os=-sunos3 ;; sun2os4) basic_machine=m68000-sun os=-sunos4 ;; sun3os3) basic_machine=m68k-sun os=-sunos3 ;; sun3os4) basic_machine=m68k-sun os=-sunos4 ;; sun4os3) basic_machine=sparc-sun os=-sunos3 ;; sun4os4) basic_machine=sparc-sun os=-sunos4 ;; sun4sol2) basic_machine=sparc-sun os=-solaris2 ;; sun3 | sun3-*) basic_machine=m68k-sun ;; sun4) basic_machine=sparc-sun ;; sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; sv1) basic_machine=sv1-cray os=-unicos ;; symmetry) basic_machine=i386-sequent os=-dynix ;; t3e) basic_machine=alphaev5-cray os=-unicos ;; t90) basic_machine=t90-cray os=-unicos ;; tile*) basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) basic_machine=mipstx39-unknown ;; tx39el) basic_machine=mipstx39el-unknown ;; toad1) basic_machine=pdp10-xkl os=-tops20 ;; tower | tower-32) basic_machine=m68k-ncr ;; tpf) basic_machine=s390x-ibm os=-tpf ;; udi29k) basic_machine=a29k-amd os=-udi ;; ultra3) basic_machine=a29k-nyu os=-sym1 ;; v810 | necv810) basic_machine=v810-nec os=-none ;; vaxv) basic_machine=vax-dec os=-sysv ;; vms) basic_machine=vax-dec os=-vms ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; vxworks960) basic_machine=i960-wrs os=-vxworks ;; vxworks68) basic_machine=m68k-wrs os=-vxworks ;; vxworks29k) basic_machine=a29k-wrs os=-vxworks ;; wasm32) basic_machine=wasm32-unknown ;; w65*) basic_machine=w65-wdc os=-none ;; w89k-*) basic_machine=hppa1.1-winbond os=-proelf ;; xbox) basic_machine=i686-pc os=-mingw32 ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` ;; ymp) basic_machine=ymp-cray os=-unicos ;; z8k-*-coff) basic_machine=z8k-unknown os=-sim ;; z80-*-coff) basic_machine=z80-unknown os=-sim ;; none) basic_machine=none-none os=-none ;; # Here we handle the default manufacturer of certain CPU types. It is in # some cases the only manufacturer, in others, it is the most popular. w89k) basic_machine=hppa1.1-winbond ;; op50n) basic_machine=hppa1.1-oki ;; op60c) basic_machine=hppa1.1-oki ;; romp) basic_machine=romp-ibm ;; mmix) basic_machine=mmix-knuth ;; rs6000) basic_machine=rs6000-ibm ;; vax) basic_machine=vax-dec ;; pdp10) # there are many clones, so DEC is not a safe bet basic_machine=pdp10-unknown ;; pdp11) basic_machine=pdp11-dec ;; we32k) basic_machine=we32k-att ;; sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) basic_machine=sparc-sun ;; cydra) basic_machine=cydra-cydrome ;; orion) basic_machine=orion-highlevel ;; orion105) basic_machine=clipper-highlevel ;; mac | mpw | mac-mpw) basic_machine=m68k-apple ;; pmac | pmac-mpw) basic_machine=powerpc-apple ;; *-unknown) # Make sure to match an already-canonicalized machine name. ;; *) echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 exit 1 ;; esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` ;; *-commodore*) basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` ;; *) ;; esac # Decode manufacturer-specific aliases for certain operating systems. if [ x"$os" != x"" ] then case $os in # First match some system type aliases # that might get confused with valid system types. # -solaris* is a basic system type, with this one exception. -auroraux) os=-auroraux ;; -solaris1 | -solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; -solaris) os=-solaris2 ;; -svr4*) os=-sysv4 ;; -unixware*) os=-sysv4.2uw ;; -gnu/linux*) os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` ;; # First accept the basic system types. # The portable systems comes first. # Each alternative MUST END IN A *, to match a version number. # -sysv* is not here because it comes later, after sysvr4. -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* | -cloudabi* | -sortix* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -bitrig* | -openbsd* | -solidbsd* | -libertybsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \ | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*) # Remember, each alternative MUST END IN *, to match a version number. ;; -qnx*) case $basic_machine in x86-* | i*86-*) ;; *) os=-nto$os ;; esac ;; -nto-qnx*) ;; -nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) ;; -mac*) os=`echo $os | sed -e 's|mac|macos|'` ;; -linux-dietlibc) os=-linux-dietlibc ;; -linux*) os=`echo $os | sed -e 's|linux|linux-gnu|'` ;; -sunos5*) os=`echo $os | sed -e 's|sunos5|solaris2|'` ;; -sunos6*) os=`echo $os | sed -e 's|sunos6|solaris3|'` ;; -opened*) os=-openedition ;; -os400*) os=-os400 ;; -wince*) os=-wince ;; -osfrose*) os=-osfrose ;; -osf*) os=-osf ;; -utek*) os=-bsd ;; -dynix*) os=-bsd ;; -acis*) os=-aos ;; -atheos*) os=-atheos ;; -syllable*) os=-syllable ;; -386bsd) os=-bsd ;; -ctix* | -uts*) os=-sysv ;; -nova*) os=-rtmk-nova ;; -ns2 ) os=-nextstep2 ;; -nsk*) os=-nsk ;; # Preserve the version number of sinix5. -sinix5.*) os=`echo $os | sed -e 's|sinix|sysv|'` ;; -sinix*) os=-sysv4 ;; -tpf*) os=-tpf ;; -triton*) os=-sysv3 ;; -oss*) os=-sysv3 ;; -svr4) os=-sysv4 ;; -svr3) os=-sysv3 ;; -sysvr4) os=-sysv4 ;; # This must come after -sysvr4. -sysv*) ;; -ose*) os=-ose ;; -es1800*) os=-ose ;; -xenix) os=-xenix ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) os=-mint ;; -aros*) os=-aros ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -nacl*) ;; -ios) ;; -none) ;; *) # Get rid of the `-' at the beginning of $os. os=`echo $os | sed 's/[^-]*-//'` echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 exit 1 ;; esac else # Here we handle the default operating systems that come with various machines. # The value should be what the vendor currently ships out the door with their # machine or put another way, the most popular os provided with the machine. # Note that if you're going to try to match "-MANUFACTURER" here (say, # "-sun"), then you have to tell the case statement up towards the top # that MANUFACTURER isn't an operating system. Otherwise, code above # will signal an error saying that MANUFACTURER isn't an operating # system, and we'll never get to this point. case $basic_machine in score-*) os=-elf ;; spu-*) os=-elf ;; *-acorn) os=-riscix1.2 ;; arm*-rebel) os=-linux ;; arm*-semi) os=-aout ;; c4x-* | tic4x-*) os=-coff ;; c8051-*) os=-elf ;; hexagon-*) os=-elf ;; tic54x-*) os=-coff ;; tic55x-*) os=-coff ;; tic6x-*) os=-coff ;; # This must come before the *-dec entry. pdp10-*) os=-tops20 ;; pdp11-*) os=-none ;; *-dec | vax-*) os=-ultrix4.2 ;; m68*-apollo) os=-domain ;; i386-sun) os=-sunos4.0.2 ;; m68000-sun) os=-sunos3 ;; m68*-cisco) os=-aout ;; mep-*) os=-elf ;; mips*-cisco) os=-elf ;; mips*-*) os=-elf ;; or32-*) os=-coff ;; *-tti) # must be before sparc entry or we get the wrong os. os=-sysv3 ;; sparc-* | *-sun) os=-sunos4.1.1 ;; pru-*) os=-elf ;; *-be) os=-beos ;; *-haiku) os=-haiku ;; *-ibm) os=-aix ;; *-knuth) os=-mmixware ;; *-wec) os=-proelf ;; *-winbond) os=-proelf ;; *-oki) os=-proelf ;; *-hp) os=-hpux ;; *-hitachi) os=-hiux ;; i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) os=-sysv ;; *-cbm) os=-amigaos ;; *-dg) os=-dgux ;; *-dolphin) os=-sysv3 ;; m68k-ccur) os=-rtu ;; m88k-omron*) os=-luna ;; *-next ) os=-nextstep ;; *-sequent) os=-ptx ;; *-crds) os=-unos ;; *-ns) os=-genix ;; i370-*) os=-mvs ;; *-next) os=-nextstep3 ;; *-gould) os=-sysv ;; *-highlevel) os=-bsd ;; *-encore) os=-bsd ;; *-sgi) os=-irix ;; *-siemens) os=-sysv4 ;; *-masscomp) os=-rtu ;; f30[01]-fujitsu | f700-fujitsu) os=-uxpv ;; *-rom68k) os=-coff ;; *-*bug) os=-coff ;; *-apple) os=-macos ;; *-atari*) os=-mint ;; *) os=-none ;; esac fi # Here we handle the case where we know the os, and the CPU type, but not the # manufacturer. We pick the logical manufacturer. vendor=unknown case $basic_machine in *-unknown) case $os in -riscix*) vendor=acorn ;; -sunos*) vendor=sun ;; -cnk*|-aix*) vendor=ibm ;; -beos*) vendor=be ;; -hpux*) vendor=hp ;; -mpeix*) vendor=hp ;; -hiux*) vendor=hitachi ;; -unos*) vendor=crds ;; -dgux*) vendor=dg ;; -luna*) vendor=omron ;; -genix*) vendor=ns ;; -mvs* | -opened*) vendor=ibm ;; -os400*) vendor=ibm ;; -ptx*) vendor=sequent ;; -tpf*) vendor=ibm ;; -vxsim* | -vxworks* | -windiss*) vendor=wrs ;; -aux*) vendor=apple ;; -hms*) vendor=hitachi ;; -mpw* | -macos*) vendor=apple ;; -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) vendor=atari ;; -vos*) vendor=stratus ;; esac basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` ;; esac echo $basic_machine$os exit # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" # End: cddlib-0.94j/depcomp0000755000175000017500000005601713300566265011356 00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2016-01-11.22; # UTC # Copyright (C) 1999-2017 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. # Originally written by Alexandre Oliva . case $1 in '') echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] Run PROGRAMS ARGS to compile a file, generating dependencies as side-effects. Environment variables: depmode Dependency tracking mode. source Source file read by 'PROGRAMS ARGS'. object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac # Get the directory component of the given path, and save it in the # global variables '$dir'. Note that this directory component will # be either empty or ending with a '/' character. This is deliberate. set_dir_from () { case $1 in */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; *) dir=;; esac } # Get the suffix-stripped basename of the given path, and save it the # global variable '$base'. set_base_from () { base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` } # If no dependency file was actually created by the compiler invocation, # we still have to create a dummy depfile, to avoid errors with the # Makefile "include basename.Plo" scheme. make_dummy_depfile () { echo "#dummy" > "$depfile" } # Factor out some common post-processing of the generated depfile. # Requires the auxiliary global variable '$tmpdepfile' to be set. aix_post_process_depfile () { # If the compiler actually managed to produce a dependency file, # post-process it. if test -f "$tmpdepfile"; then # Each line is of the form 'foo.o: dependency.h'. # Do two passes, one to just change these to # $object: dependency.h # and one to simply output # dependency.h: # which is needed to avoid the deleted-header problem. { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" } > "$depfile" rm -f "$tmpdepfile" else make_dummy_depfile fi } # A tabulation character. tab=' ' # A newline character. nl=' ' # Character ranges might be problematic outside the C locale. # These definitions help. upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ lower=abcdefghijklmnopqrstuvwxyz digits=0123456789 alpha=${upper}${lower} if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 fi # Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. depfile=${depfile-`echo "$object" | sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} rm -f "$tmpdepfile" # Avoid interferences from the environment. gccflag= dashmflag= # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case # here, because this file can only contain one case statement. if test "$depmode" = hp; then # HP compiler uses -M and no extra arg. gccflag=-M depmode=gcc fi if test "$depmode" = dashXmstdout; then # This is just like dashmstdout with a different argument. dashmflag=-xM depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then # This is just like msvisualcpp but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvisualcpp fi if test "$depmode" = msvc7msys; then # This is just like msvc7 but w/o cygpath translation. # Just convert the backslash-escaped backslashes to single forward # slashes to satisfy depend.m4 cygpath_u='sed s,\\\\,/,g' depmode=msvc7 fi if test "$depmode" = xlc; then # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. gccflag=-qmakedep=gcc,-MF depmode=gcc fi case "$depmode" in gcc3) ## gcc 3 implements dependency tracking that does exactly what ## we want. Yay! Note: for some reason libtool 1.4 doesn't like ## it if -MD -MP comes after the -MF stuff. Hmm. ## Unfortunately, FreeBSD c89 acceptance of flags depends upon ## the command line argument order; so add the flags where they ## appear in depend2.am. Note that the slowdown incurred here ## affects only configure: in makefiles, %FASTDEP% shortcuts this. for arg do case $arg in -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; *) set fnord "$@" "$arg" ;; esac shift # fnord shift # $arg done "$@" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. ## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. ## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like ## -MM, not -M (despite what the docs say). Also, it might not be ## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then gccflag=-MD, fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The second -e expression handles DOS-style file names with drive # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" ## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. ## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as ## well. hp depmode also adds that space, but also prefixes the VPATH ## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; sgi) if test "$libtool" = yes; then "$@" "-Wp,-MDupdate,$tmpdepfile" else "$@" -MDupdate "$tmpdepfile" fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" # The second pass generates a dummy entry for each header file. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" ;; xlc) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u tmpdepfile3=$dir.libs/$base.u "$@" -Wc,-M else tmpdepfile1=$dir$base.u tmpdepfile2=$dir$base.u tmpdepfile3=$dir$base.u "$@" -M fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done aix_post_process_depfile ;; tcc) # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 # FIXME: That version still under development at the moment of writing. # Make that this statement remains true also for stable, released # versions. # It will wrap lines (doesn't matter whether long or short) with a # trailing '\', as in: # # foo.o : \ # foo.c \ # foo.h \ # # It will put a trailing '\' even on the last line, and will use leading # spaces rather than leading tabs (at least since its commit 0394caf7 # "Emit spaces for -MD"). "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. # We have to change lines of the first kind to '$object: \'. sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" # And for each line of the second kind, we have to emit a 'dep.h:' # dummy dependency, to avoid the deleted-header problem. sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; ## The order of this option in the case statement is important, since the ## shell code in configure will try each of these formats in the order ## listed in this file. A plain '-MD' option would be understood by many ## compilers, so we must ensure this comes after the gcc and icc options. pgcc) # Portland's C compiler understands '-MD'. # Will always output deps to 'file.d' where file is the root name of the # source file under compilation, even if file resides in a subdirectory. # The object file name does not affect the name of the '.d' file. # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... set_dir_from "$object" # Use the source, not the object, to determine the base name, since # that's sadly what pgcc will do too. set_base_from "$source" tmpdepfile=$base.d # For projects that build the same source file twice into different object # files, the pgcc approach of using the *source* file root name can cause # problems in parallel builds. Use a locking strategy to avoid stomping on # the same $tmpdepfile. lockdir=$base.d-lock trap " echo '$0: caught signal, cleaning up...' >&2 rmdir '$lockdir' exit 1 " 1 2 13 15 numtries=100 i=$numtries while test $i -gt 0; do # mkdir is a portable test-and-set. if mkdir "$lockdir" 2>/dev/null; then # This process acquired the lock. "$@" -MD stat=$? # Release the lock. rmdir "$lockdir" break else # If the lock is being held by a different process, wait # until the winning process is done or we timeout. while test -d "$lockdir" && test $i -gt 0; do sleep 1 i=`expr $i - 1` done fi i=`expr $i - 1` done trap - 1 2 13 15 if test $i -le 0; then echo "$0: failed to acquire lock after $numtries attempts" >&2 echo "$0: check lockdir '$lockdir'" >&2 exit 1 fi if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" # Each line is of the form `foo.o: dependent.h', # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; hp2) # The "hp" stanza above does not work with aCC (C++) and HP's ia64 # compilers, which have integrated preprocessors. The correct option # to use with these is +Maked; it writes dependencies to a file named # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d "$@" -Wc,+Maked else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d "$@" +Maked fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" # Add 'dependent.h:' lines. sed -ne '2,${ s/^ *// s/ \\*$// s/$/:/ p }' "$tmpdepfile" >> "$depfile" else make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) # The Tru64 compiler uses -MD to generate dependencies as a side # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put # dependencies in 'foo.d' instead, so we check for that too. # Subdirectories are respected. set_dir_from "$object" set_base_from "$object" if test "$libtool" = yes; then # Libtool generates 2 separate objects for the 2 libraries. These # two compilations output dependencies in $dir.libs/$base.o.d and # in $dir$base.o.d. We have to check for both files, because # one of the two compilations can be disabled. We should prefer # $dir$base.o.d over $dir.libs/$base.o.d because the latter is # automatically cleaned when .libs/ is deleted, while ignoring # the former would cause a distcleancheck panic. tmpdepfile1=$dir$base.o.d # libtool 1.5 tmpdepfile2=$dir.libs/$base.o.d # Likewise. tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d "$@" -MD fi stat=$? if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done # Same post-processing that is required for AIX mode. aix_post_process_depfile ;; msvc7) if test "$libtool" = yes; then showIncludes=-Wc,-showIncludes else showIncludes=-showIncludes fi "$@" $showIncludes > "$tmpdepfile" stat=$? grep -v '^Note: including file: ' "$tmpdepfile" if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" # The first sed program below extracts the file names and escapes # backslashes for cygpath. The second sed program outputs the file # name when reading, but also accumulates all include files in the # hold buffer in order to output them again at the end. This only # works with sed implementations that can handle large buffers. sed < "$tmpdepfile" -n ' /^Note: including file: *\(.*\)/ { s//\1/ s/\\/\\\\/g p }' | $cygpath_u | sort -u | sed -n ' s/ /\\ /g s/\(.*\)/'"$tab"'\1 \\/p s/.\(.*\) \\/\1:/ H $ { s/.*/'"$tab"'/ G p }' >> "$depfile" echo >> "$depfile" # make sure the fragment doesn't end with a backslash rm -f "$tmpdepfile" ;; msvc7msys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; #nosideeffect) # This comment above is used by automake to tell side-effect # dependency tracking mechanisms from slower ones. dashmstdout) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout, regardless of -o. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done test -z "$dashmflag" && dashmflag=-M # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this sed invocation # correctly. Breaking it into two sed invocations is a workaround. tr ' ' "$nl" < "$tmpdepfile" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; dashXmstdout) # This case only exists to satisfy depend.m4. It is never actually # run, as this mode is specially recognized in the preamble. exit 1 ;; makedepend) "$@" || exit $? # Remove any Libtool call if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # X makedepend shift cleared=no eat=no for arg do case $cleared in no) set ""; shift cleared=yes ;; esac if test $eat = yes; then eat=no continue fi case "$arg" in -D*|-I*) set fnord "$@" "$arg"; shift ;; # Strip any option that makedepend may not understand. Remove # the object too, otherwise makedepend will parse it as a source file. -arch) eat=yes ;; -*|$object) ;; *) set fnord "$@" "$arg"; shift ;; esac done obj_suffix=`echo "$object" | sed 's/^.*\././'` touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" # makedepend may prepend the VPATH from the source file name to the object. # No need to regex-escape $object, excess matching of '.' is harmless. sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process the last invocation # correctly. Breaking it into two sed invocations is a workaround. sed '1,2d' "$tmpdepfile" \ | tr ' ' "$nl" \ | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; cpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi # Remove '-o $object'. IFS=" " for arg do case $arg in -o) shift ;; $object) shift ;; *) set fnord "$@" "$arg" shift # fnord shift # $arg ;; esac done "$@" -E \ | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; msvisualcpp) # Important note: in order to support this mode, a compiler *must* # always write the preprocessed file to stdout. "$@" || exit $? # Remove the call to Libtool. if test "$libtool" = yes; then while test "X$1" != 'X--mode=compile'; do shift done shift fi IFS=" " for arg do case "$arg" in -o) shift ;; $object) shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; msvcmsys) # This case exists only to let depend.m4 do its work. It works by # looking at the text of this script. This case will never be run, # since it is checked for above. exit 1 ;; none) exec "$@" ;; *) echo "Unknown depmode $depmode" 1>&2 exit 1 ;; esac exit 0 # Local Variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: cddlib-0.94j/install-sh0000755000175000017500000003452413300566265012004 00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2016-01-11.22; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the # following copyright and license. # # Copyright (C) 1994 X Consortium # # Permission is hereby granted, free of charge, to any person obtaining a copy # of this software and associated documentation files (the "Software"), to # deal in the Software without restriction, including without limitation the # rights to use, copy, modify, merge, publish, distribute, sublicense, and/or # sell copies of the Software, and to permit persons to whom the Software is # furnished to do so, subject to the following conditions: # # The above copyright notice and this permission notice shall be included in # all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE # X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- # TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # Except as contained in this notice, the name of the X Consortium shall not # be used in advertising or otherwise to promote the sale, use or other deal- # ings in this Software without prior written authorization from the X Consor- # tium. # # # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent # 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. tab=' ' nl=' ' IFS=" $tab$nl" # Set DOITPROG to "echo" to test this script. doit=${DOITPROG-} doit_exec=${doit:-exec} # Put in absolute file names if you don't have them in your path; # or use environment vars. chgrpprog=${CHGRPPROG-chgrp} chmodprog=${CHMODPROG-chmod} chownprog=${CHOWNPROG-chown} cmpprog=${CMPPROG-cmp} cpprog=${CPPROG-cp} mkdirprog=${MKDIRPROG-mkdir} mvprog=${MVPROG-mv} rmprog=${RMPROG-rm} stripprog=${STRIPPROG-strip} posix_mkdir= # Desired mode of installed file. mode=0755 chgrpcmd= chmodcmd=$chmodprog chowncmd= mvcmd=$mvprog rmcmd="$rmprog -f" stripcmd= src= dst= dir_arg= dst_arg= copy_on_change=false is_target_a_directory=possibly usage="\ Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE or: $0 [OPTION]... SRCFILES... DIRECTORY or: $0 [OPTION]... -t DIRECTORY SRCFILES... or: $0 [OPTION]... -d DIRECTORIES... In the 1st form, copy SRCFILE to DSTFILE. In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. In the 4th, create DIRECTORIES. Options: --help display this help and exit. --version display version info and exit. -c (ignored) -C install only if different (preserve the last data modification time) -d create directories instead of installing files. -g GROUP $chgrpprog installed files to GROUP. -m MODE $chmodprog installed files to MODE. -o USER $chownprog installed files to USER. -s $stripprog installed files. -t DIRECTORY install into DIRECTORY. -T report an error if DSTFILE is a directory. Environment variables override the default commands: CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG " while test $# -ne 0; do case $1 in -c) ;; -C) copy_on_change=true;; -d) dir_arg=true;; -g) chgrpcmd="$chgrpprog $2" shift;; --help) echo "$usage"; exit $?;; -m) mode=$2 case $mode in *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) is_target_a_directory=always dst_arg=$2 # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac shift;; -T) is_target_a_directory=never;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done # We allow the use of options -d and -T together, by making -d # take the precedence; this is for compatibility with GNU install. if test -n "$dir_arg"; then if test -n "$dst_arg"; then echo "$0: target directory not allowed when installing a directory." >&2 exit 1 fi fi if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then # When -d is used, all remaining arguments are directories to create. # When -t is used, the destination is already specified. # Otherwise, the last argument is the destination. Remove it from $@. for arg do if test -n "$dst_arg"; then # $@ is not empty: it contains at least $arg. set fnord "$@" "$dst_arg" shift # fnord fi shift # arg dst_arg=$arg # Protect names problematic for 'test' and other utilities. case $dst_arg in -* | [=\(\)!]) dst_arg=./$dst_arg;; esac done fi if test $# -eq 0; then if test -z "$dir_arg"; then echo "$0: no input file specified." >&2 exit 1 fi # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then if test $# -gt 1 || test "$is_target_a_directory" = always; then if test ! -d "$dst_arg"; then echo "$0: $dst_arg: Is not a directory." >&2 exit 1 fi fi fi if test -z "$dir_arg"; then do_exit='(exit $ret); exit $ret' trap "ret=129; $do_exit" 1 trap "ret=130; $do_exit" 2 trap "ret=141; $do_exit" 13 trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. case $mode in # Optimize common cases. *644) cp_umask=133;; *755) cp_umask=22;; *[0-7]) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw='% 200' fi cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; *) if test -z "$stripcmd"; then u_plus_rw= else u_plus_rw=,u+rw fi cp_umask=$mode$u_plus_rw;; esac fi for src do # Protect names problematic for 'test' and other utilities. case $src in -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then dst=$src dstdir=$dst test -d "$dstdir" dstdir_status=$? else # Waiting for this to be detected by the "$cpprog $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if test ! -f "$src" && test ! -d "$src"; then echo "$0: $src does not exist." >&2 exit 1 fi if test -z "$dst_arg"; then echo "$0: no destination specified." >&2 exit 1 fi dst=$dst_arg # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. if test -d "$dst"; then if test "$is_target_a_directory" = never; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else dstdir=`dirname "$dst"` test -d "$dstdir" dstdir_status=$? fi fi obsolete_mkdir_used=false if test $dstdir_status != 0; then case $posix_mkdir in '') # Create intermediate dirs using mode 755 as modified by the umask. # This is like FreeBSD 'install' as of 1997-10-28. umask=`umask` case $stripcmd.$umask in # Optimize common cases. *[2367][2367]) mkdir_umask=$umask;; .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; *[0-7]) mkdir_umask=`expr $umask + 22 \ - $umask % 100 % 40 + $umask % 20 \ - $umask % 10 % 4 + $umask % 2 `;; *) mkdir_umask=$umask,go-w;; esac # With -d, create the new directory with the user-specified mode. # Otherwise, rely on $mkdir_umask. if test -n "$dir_arg"; then mkdir_mode=-m$mode else mkdir_mode= fi posix_mkdir=false case $umask in *[123567][0-7][0-7]) # POSIX mkdir -p sets u+wx bits regardless of umask, which # is incompatible with FreeBSD 'install' when (umask & 300) != 0. ;; *) tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 if (umask $mkdir_umask && exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 then if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in d????-?r-*) different_mode=700;; d????-?--*) different_mode=755;; *) false;; esac && $mkdirprog -m$different_mode -p -- "$tmpdir" && { ls_ld_tmpdir_1=`ls -ld "$tmpdir"` test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" } } then posix_mkdir=: fi rmdir "$tmpdir/d" "$tmpdir" else # Remove any dirs left behind by ancient mkdir implementations. rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null fi trap '' 0;; esac;; esac if $posix_mkdir && ( umask $mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" ) then : else # The umask is ridiculous, or mkdir does not conform to POSIX, # or it failed possibly due to a race condition. Create the # directory the slow way, step by step, checking for races as we go. case $dstdir in /*) prefix='/';; [-=\(\)!]*) prefix='./';; *) prefix='';; esac oIFS=$IFS IFS=/ set -f set fnord $dstdir shift set +f IFS=$oIFS prefixes= for d do test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then prefixes= else if $posix_mkdir; then (umask=$mkdir_umask && $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break # Don't fail if two instances are running concurrently. test -d "$prefix" || exit 1 else case $prefix in *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; *) qprefix=$prefix;; esac prefixes="$prefixes '$qprefix'" fi fi prefix=$prefix/ done if test -n "$prefixes"; then # Don't fail if two instances are running concurrently. (umask $mkdir_umask && eval "\$doit_exec \$mkdirprog $prefixes") || test -d "$dstdir" || exit 1 obsolete_mkdir_used=true fi fi fi if test -n "$dir_arg"; then { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 else # Make a couple of temp file names in the proper directory. dsttmp=$dstdir/_inst.$$_ rmtmp=$dstdir/_rm.$$_ # Trap to clean up those temp files at exit. trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 # Copy the file name to the temp name. (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && # and set any options; do chmod last to preserve setuid bits. # # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $cpprog $src $dsttmp" command. # { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && # If -C, don't bother to copy if it wouldn't change the file. if $copy_on_change && old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && set +f && test "$old" = "$new" && $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 then rm -f "$dsttmp" else # Rename the file to the real destination. $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || # The rename failed, perhaps because mv can't rename something else # to itself, or perhaps because mv is so ancient that it does not # support -f. { # Now remove or move aside any old file at destination location. # We try this two ways since rm can't unlink itself on some # systems and the destination file might be busy for other # reasons. In this case, the final cleanup might fail but the new # file should still install successfully. { test ! -f "$dst" || $doit $rmcmd -f "$dst" 2>/dev/null || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } } || { echo "$0: cannot unlink or rename $dst" >&2 (exit 1); exit 1 } } && # Now rename the file to the real destination. $doit $mvcmd "$dsttmp" "$dst" } fi || exit 1 trap '' 0 fi done # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: cddlib-0.94j/ltmain.sh0000644000175000017500000120674013300566262011617 00000000000000#! /bin/sh ## DO NOT EDIT - This file generated from ./build-aux/ltmain.in ## by inline-source v2016-02-21.11 # libtool (GNU libtool) 2.4.6.40-6ca5-dirty # Provide generalized library-building support services. # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996-2017 Free Software Foundation, Inc. # This is free software; see the source for copying conditions. There is NO # warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # GNU Libtool is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # As a special exception to the GNU General Public License, # if you distribute this file as part of a program or library that # is built using GNU Libtool, you may include this file under the # same distribution terms that you use for the rest of that program. # # GNU Libtool is distributed in the hope that it will be useful, but # WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . PROGRAM=libtool PACKAGE=libtool VERSION=2.4.6.40-6ca5-dirty package_revision=2.4.6.40 ## ------ ## ## Usage. ## ## ------ ## # Run './libtool --help' for help with using this script from the # command line. ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # After configure completes, it has a better idea of some of the # shell tools we need than the defaults used by the functions shared # with bootstrap, so set those here where they can still be over- # ridden by the user, but otherwise take precedence. : ${AUTOCONF="autoconf"} : ${AUTOMAKE="automake"} ## -------------------------- ## ## Source external libraries. ## ## -------------------------- ## # Much of our low-level functionality needs to be sourced from external # libraries, which are installed to $pkgauxdir. # Set a version string for this script. scriptversion=2017-04-19.12; # UTC # General shell script boiler plate, and helper functions. # Written by Gary V. Vaughan, 2004 # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2004-2017 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 3 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # ## ------ ## ## Usage. ## ## ------ ## # Evaluate this file near the top of your script to gain access to # the functions and variables defined here: # # . `echo "$0" | ${SED-sed} 's|[^/]*$||'`/build-aux/funclib.sh # # If you need to override any of the default environment variable # settings, do that before evaluating this file. ## -------------------- ## ## Shell normalisation. ## ## -------------------- ## # Some shells need a little help to be as Bourne compatible as possible. # Before doing anything else, make sure all that help has been provided! DUALCASE=1; export DUALCASE # for MKS sh if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : emulate sh NULLCMD=: # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which # is contrary to our usage. Disable this feature. alias -g '${1+"$@"}'='"$@"' setopt NO_GLOB_SUBST else case `(set -o) 2>/dev/null` in *posix*) set -o posix ;; esac fi # NLS nuisances: We save the old values in case they are required later. _G_user_locale= _G_safe_locale= for _G_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test set = \"\${$_G_var+set}\"; then save_$_G_var=\$$_G_var $_G_var=C export $_G_var _G_user_locale=\"$_G_var=\\\$save_\$_G_var; \$_G_user_locale\" _G_safe_locale=\"$_G_var=C; \$_G_safe_locale\" fi" done # Make sure IFS has a sensible default sp=' ' nl=' ' IFS="$sp $nl" # There are apparently some retarded systems that use ';' as a PATH separator! if test "${PATH_SEPARATOR+set}" != set; then PATH_SEPARATOR=: (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || PATH_SEPARATOR=';' } fi # func_unset VAR # -------------- # Portably unset VAR. # In some shells, an 'unset VAR' statement leaves a non-zero return # status if VAR is already unset, which might be problematic if the # statement is used at the end of a function (thus poisoning its return # value) or when 'set -e' is active (causing even a spurious abort of # the script in this case). func_unset () { { eval $1=; (eval unset $1) >/dev/null 2>&1 && eval unset $1 || : ; } } # Make sure CDPATH doesn't cause `cd` commands to output the target dir. func_unset CDPATH # Make sure ${,E,F}GREP behave sanely. func_unset GREP_OPTIONS ## ------------------------- ## ## Locate command utilities. ## ## ------------------------- ## # func_executable_p FILE # ---------------------- # Check that FILE is an executable regular file. func_executable_p () { test -f "$1" && test -x "$1" } # func_path_progs PROGS_LIST CHECK_FUNC [PATH] # -------------------------------------------- # Search for either a program that responds to --version with output # containing "GNU", or else returned by CHECK_FUNC otherwise, by # trying all the directories in PATH with each of the elements of # PROGS_LIST. # # CHECK_FUNC should accept the path to a candidate program, and # set $func_check_prog_result if it truncates its output less than # $_G_path_prog_max characters. func_path_progs () { _G_progs_list=$1 _G_check_func=$2 _G_PATH=${3-"$PATH"} _G_path_prog_max=0 _G_path_prog_found=false _G_save_IFS=$IFS; IFS=${PATH_SEPARATOR-:} for _G_dir in $_G_PATH; do IFS=$_G_save_IFS test -z "$_G_dir" && _G_dir=. for _G_prog_name in $_G_progs_list; do for _exeext in '' .EXE; do _G_path_prog=$_G_dir/$_G_prog_name$_exeext func_executable_p "$_G_path_prog" || continue case `"$_G_path_prog" --version 2>&1` in *GNU*) func_path_progs_result=$_G_path_prog _G_path_prog_found=: ;; *) $_G_check_func $_G_path_prog func_path_progs_result=$func_check_prog_result ;; esac $_G_path_prog_found && break 3 done done done IFS=$_G_save_IFS test -z "$func_path_progs_result" && { echo "no acceptable sed could be found in \$PATH" >&2 exit 1 } } # We want to be able to use the functions in this file before configure # has figured out where the best binaries are kept, which means we have # to search for them ourselves - except when the results are already set # where we skip the searches. # Unless the user overrides by setting SED, search the path for either GNU # sed, or the sed that truncates its output the least. test -z "$SED" && { _G_sed_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ for _G_i in 1 2 3 4 5 6 7; do _G_sed_script=$_G_sed_script$nl$_G_sed_script done echo "$_G_sed_script" 2>/dev/null | sed 99q >conftest.sed _G_sed_script= func_check_prog_sed () { _G_path_prog=$1 _G_count=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo '' >> conftest.nl "$_G_path_prog" -f conftest.sed conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "sed gsed" func_check_prog_sed "$PATH:/usr/xpg4/bin" rm -f conftest.sed SED=$func_path_progs_result } # Unless the user overrides by setting GREP, search the path for either GNU # grep, or the grep that truncates its output the least. test -z "$GREP" && { func_check_prog_grep () { _G_path_prog=$1 _G_count=0 _G_path_prog_max=0 printf 0123456789 >conftest.in while : do cat conftest.in conftest.in >conftest.tmp mv conftest.tmp conftest.in cp conftest.in conftest.nl echo 'GREP' >> conftest.nl "$_G_path_prog" -e 'GREP$' -e '-(cannot match)-' conftest.out 2>/dev/null || break diff conftest.out conftest.nl >/dev/null 2>&1 || break _G_count=`expr $_G_count + 1` if test "$_G_count" -gt "$_G_path_prog_max"; then # Best one so far, save it but keep looking for a better one func_check_prog_result=$_G_path_prog _G_path_prog_max=$_G_count fi # 10*(2^10) chars as input seems more than enough test 10 -lt "$_G_count" && break done rm -f conftest.in conftest.tmp conftest.nl conftest.out } func_path_progs "grep ggrep" func_check_prog_grep "$PATH:/usr/xpg4/bin" GREP=$func_path_progs_result } ## ------------------------------- ## ## User overridable command paths. ## ## ------------------------------- ## # All uppercase variable names are used for environment variables. These # variables can be overridden by the user before calling a script that # uses them if a suitable command of that name is not already available # in the command search PATH. : ${CP="cp -f"} : ${ECHO="printf %s\n"} : ${EGREP="$GREP -E"} : ${FGREP="$GREP -F"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} ## -------------------- ## ## Useful sed snippets. ## ## -------------------- ## sed_dirname='s|/[^/]*$||' sed_basename='s|^.*/||' # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='s|\([`"$\\]\)|\\\1|g' # Same as above, but do not quote variable references. sed_double_quote_subst='s/\(["`\\]\)/\\\1/g' # Sed substitution that turns a string into a regex matching for the # string literally. sed_make_literal_regex='s|[].[^$\\*\/]|\\&|g' # Sed substitution that converts a w32 file name or path # that contains forward slashes, into one that contains # (escaped) backslashes. A very naive implementation. sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # Re-'\' parameter expansions in output of sed_double_quote_subst that # were '\'-ed in input to the same. If an odd number of '\' preceded a # '$' in input to sed_double_quote_subst, that '$' was protected from # expansion. Since each input '\' is now two '\'s, look for any number # of runs of four '\'s followed by two '\'s and then a '$'. '\' that '$'. _G_bs='\\' _G_bs2='\\\\' _G_bs4='\\\\\\\\' _G_dollar='\$' sed_double_backslash="\ s/$_G_bs4/&\\ /g s/^$_G_bs2$_G_dollar/$_G_bs&/ s/\\([^$_G_bs]\\)$_G_bs2$_G_dollar/\\1$_G_bs2$_G_bs$_G_dollar/g s/\n//g" ## ----------------- ## ## Global variables. ## ## ----------------- ## # Except for the global variables explicitly listed below, the following # functions in the '^func_' namespace, and the '^require_' namespace # variables initialised in the 'Resource management' section, sourcing # this file will not pollute your global namespace with anything # else. There's no portable way to scope variables in Bourne shell # though, so actually running these functions will sometimes place # results into a variable named after the function, and often use # temporary variables in the '^_G_' namespace. If you are careful to # avoid using those namespaces casually in your sourcing script, things # should continue to work as you expect. And, of course, you can freely # overwrite any of the functions or variables defined here before # calling anything to customize them. EXIT_SUCCESS=0 EXIT_FAILURE=1 EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. # Allow overriding, eg assuming that you follow the convention of # putting '$debug_cmd' at the start of all your functions, you can get # bash to show function call trace with: # # debug_cmd='eval echo "${FUNCNAME[0]} $*" >&2' bash your-script-name debug_cmd=${debug_cmd-":"} exit_cmd=: # By convention, finish your script with: # # exit $exit_status # # so that you can set exit_status to non-zero if you want to indicate # something went wrong during execution without actually bailing out at # the point of failure. exit_status=$EXIT_SUCCESS # Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh # is ksh but when the shell is invoked as "sh" and the current value of # the _XPG environment variable is not equal to 1 (one), the special # positional parameter $0, within a function call, is the name of the # function. progpath=$0 # The name of this program. progname=`$ECHO "$progpath" |$SED "$sed_basename"` # Make sure we have an absolute progpath for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=`$ECHO "$progpath" |$SED "$sed_dirname"` progdir=`cd "$progdir" && pwd` progpath=$progdir/$progname ;; *) _G_IFS=$IFS IFS=${PATH_SEPARATOR-:} for progdir in $PATH; do IFS=$_G_IFS test -x "$progdir/$progname" && break done IFS=$_G_IFS test -n "$progdir" || progdir=`pwd` progpath=$progdir/$progname ;; esac ## ----------------- ## ## Standard options. ## ## ----------------- ## # The following options affect the operation of the functions defined # below, and should be set appropriately depending on run-time para- # meters passed on the command line. opt_dry_run=false opt_quiet=false opt_verbose=false # Categories 'all' and 'none' are always available. Append any others # you will pass as the first argument to func_warning from your own # code. warning_categories= # By default, display warnings according to 'opt_warning_types'. Set # 'warning_func' to ':' to elide all warnings, or func_fatal_error to # treat the next displayed warning as a fatal error. warning_func=func_warn_and_continue # Set to 'all' to display all warnings, 'none' to suppress all # warnings, or a space delimited list of some subset of # 'warning_categories' to display only the listed warnings. opt_warning_types=all ## -------------------- ## ## Resource management. ## ## -------------------- ## # This section contains definitions for functions that each ensure a # particular resource (a file, or a non-empty configuration variable for # example) is available, and if appropriate to extract default values # from pertinent package files. Call them using their associated # 'require_*' variable to ensure that they are executed, at most, once. # # It's entirely deliberate that calling these functions can set # variables that don't obey the namespace limitations obeyed by the rest # of this file, in order that that they be as useful as possible to # callers. # require_term_colors # ------------------- # Allow display of bold text on terminals that support it. require_term_colors=func_require_term_colors func_require_term_colors () { $debug_cmd test -t 1 && { # COLORTERM and USE_ANSI_COLORS environment variables take # precedence, because most terminfo databases neglect to describe # whether color sequences are supported. test -n "${COLORTERM+set}" && : ${USE_ANSI_COLORS="1"} if test 1 = "$USE_ANSI_COLORS"; then # Standard ANSI escape sequences tc_reset='' tc_bold=''; tc_standout='' tc_red=''; tc_green='' tc_blue=''; tc_cyan='' else # Otherwise trust the terminfo database after all. test -n "`tput sgr0 2>/dev/null`" && { tc_reset=`tput sgr0` test -n "`tput bold 2>/dev/null`" && tc_bold=`tput bold` tc_standout=$tc_bold test -n "`tput smso 2>/dev/null`" && tc_standout=`tput smso` test -n "`tput setaf 1 2>/dev/null`" && tc_red=`tput setaf 1` test -n "`tput setaf 2 2>/dev/null`" && tc_green=`tput setaf 2` test -n "`tput setaf 4 2>/dev/null`" && tc_blue=`tput setaf 4` test -n "`tput setaf 5 2>/dev/null`" && tc_cyan=`tput setaf 5` } fi } require_term_colors=: } ## ----------------- ## ## Function library. ## ## ----------------- ## # This section contains a variety of useful functions to call in your # scripts. Take note of the portable wrappers for features provided by # some modern shells, which will fall back to slower equivalents on # less featureful shells. # func_append VAR VALUE # --------------------- # Append VALUE onto the existing contents of VAR. # We should try to minimise forks, especially on Windows where they are # unreasonably slow, so skip the feature probes when bash or zsh are # being used: if test set = "${BASH_VERSION+set}${ZSH_VERSION+set}"; then : ${_G_HAVE_ARITH_OP="yes"} : ${_G_HAVE_XSI_OPS="yes"} # The += operator was introduced in bash 3.1 case $BASH_VERSION in [12].* | 3.0 | 3.0*) ;; *) : ${_G_HAVE_PLUSEQ_OP="yes"} ;; esac fi # _G_HAVE_PLUSEQ_OP # Can be empty, in which case the shell is probed, "yes" if += is # useable or anything else if it does not work. test -z "$_G_HAVE_PLUSEQ_OP" \ && (eval 'x=a; x+=" b"; test "a b" = "$x"') 2>/dev/null \ && _G_HAVE_PLUSEQ_OP=yes if test yes = "$_G_HAVE_PLUSEQ_OP" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_append () { $debug_cmd eval "$1+=\$2" }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_append () { $debug_cmd eval "$1=\$$1\$2" } fi # func_append_quoted VAR VALUE # ---------------------------- # Quote VALUE and append to the end of shell variable VAR, separated # by a space. if test yes = "$_G_HAVE_PLUSEQ_OP"; then eval 'func_append_quoted () { $debug_cmd func_quote_arg pretty "$2" eval "$1+=\\ \$func_quote_arg_result" }' else func_append_quoted () { $debug_cmd func_quote_arg pretty "$2" eval "$1=\$$1\\ \$func_quote_arg_result" } fi # func_append_uniq VAR VALUE # -------------------------- # Append unique VALUE onto the existing contents of VAR, assuming # entries are delimited by the first character of VALUE. For example: # # func_append_uniq options " --another-option option-argument" # # will only append to $options if " --another-option option-argument " # is not already present somewhere in $options already (note spaces at # each end implied by leading space in second argument). func_append_uniq () { $debug_cmd eval _G_current_value='`$ECHO $'$1'`' _G_delim=`expr "$2" : '\(.\)'` case $_G_delim$_G_current_value$_G_delim in *"$2$_G_delim"*) ;; *) func_append "$@" ;; esac } # func_arith TERM... # ------------------ # Set func_arith_result to the result of evaluating TERMs. test -z "$_G_HAVE_ARITH_OP" \ && (eval 'test 2 = $(( 1 + 1 ))') 2>/dev/null \ && _G_HAVE_ARITH_OP=yes if test yes = "$_G_HAVE_ARITH_OP"; then eval 'func_arith () { $debug_cmd func_arith_result=$(( $* )) }' else func_arith () { $debug_cmd func_arith_result=`expr "$@"` } fi # func_basename FILE # ------------------ # Set func_basename_result to FILE with everything up to and including # the last / stripped. if test yes = "$_G_HAVE_XSI_OPS"; then # If this shell supports suffix pattern removal, then use it to avoid # forking. Hide the definitions single quotes in case the shell chokes # on unsupported syntax... _b='func_basename_result=${1##*/}' _d='case $1 in */*) func_dirname_result=${1%/*}$2 ;; * ) func_dirname_result=$3 ;; esac' else # ...otherwise fall back to using sed. _b='func_basename_result=`$ECHO "$1" |$SED "$sed_basename"`' _d='func_dirname_result=`$ECHO "$1" |$SED "$sed_dirname"` if test "X$func_dirname_result" = "X$1"; then func_dirname_result=$3 else func_append func_dirname_result "$2" fi' fi eval 'func_basename () { $debug_cmd '"$_b"' }' # func_dirname FILE APPEND NONDIR_REPLACEMENT # ------------------------------------------- # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. eval 'func_dirname () { $debug_cmd '"$_d"' }' # func_dirname_and_basename FILE APPEND NONDIR_REPLACEMENT # -------------------------------------------------------- # Perform func_basename and func_dirname in a single function # call: # dirname: Compute the dirname of FILE. If nonempty, # add APPEND to the result, otherwise set result # to NONDIR_REPLACEMENT. # value returned in "$func_dirname_result" # basename: Compute filename of FILE. # value retuned in "$func_basename_result" # For efficiency, we do not delegate to the functions above but instead # duplicate the functionality here. eval 'func_dirname_and_basename () { $debug_cmd '"$_b"' '"$_d"' }' # func_echo ARG... # ---------------- # Echo program name prefixed message. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname: $_G_line" done IFS=$func_echo_IFS } # func_echo_all ARG... # -------------------- # Invoke $ECHO with all args, space-separated. func_echo_all () { $ECHO "$*" } # func_echo_infix_1 INFIX ARG... # ------------------------------ # Echo program name, followed by INFIX on the first line, with any # additional lines not showing INFIX. func_echo_infix_1 () { $debug_cmd $require_term_colors _G_infix=$1; shift _G_indent=$_G_infix _G_prefix="$progname: $_G_infix: " _G_message=$* # Strip color escape sequences before counting printable length for _G_tc in "$tc_reset" "$tc_bold" "$tc_standout" "$tc_red" "$tc_green" "$tc_blue" "$tc_cyan" do test -n "$_G_tc" && { _G_esc_tc=`$ECHO "$_G_tc" | $SED "$sed_make_literal_regex"` _G_indent=`$ECHO "$_G_indent" | $SED "s|$_G_esc_tc||g"` } done _G_indent="$progname: "`echo "$_G_indent" | $SED 's|.| |g'`" " ## exclude from sc_prohibit_nested_quotes func_echo_infix_1_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_infix_1_IFS $ECHO "$_G_prefix$tc_bold$_G_line$tc_reset" >&2 _G_prefix=$_G_indent done IFS=$func_echo_infix_1_IFS } # func_error ARG... # ----------------- # Echo program name prefixed message to standard error. func_error () { $debug_cmd $require_term_colors func_echo_infix_1 " $tc_standout${tc_red}error$tc_reset" "$*" >&2 } # func_fatal_error ARG... # ----------------------- # Echo program name prefixed message to standard error, and exit. func_fatal_error () { $debug_cmd func_error "$*" exit $EXIT_FAILURE } # func_grep EXPRESSION FILENAME # ----------------------------- # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $debug_cmd $GREP "$1" "$2" >/dev/null 2>&1 } # func_len STRING # --------------- # Set func_len_result to the length of STRING. STRING may not # start with a hyphen. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_len () { $debug_cmd func_len_result=${#1} }' else func_len () { $debug_cmd func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } fi # func_mkdir_p DIRECTORY-PATH # --------------------------- # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { $debug_cmd _G_directory_path=$1 _G_dir_list= if test -n "$_G_directory_path" && test : != "$opt_dry_run"; then # Protect directory names starting with '-' case $_G_directory_path in -*) _G_directory_path=./$_G_directory_path ;; esac # While some portion of DIR does not yet exist... while test ! -d "$_G_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. _G_dir_list=$_G_directory_path:$_G_dir_list # If the last portion added has no slash in it, the list is done case $_G_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop _G_directory_path=`$ECHO "$_G_directory_path" | $SED -e "$sed_dirname"` done _G_dir_list=`$ECHO "$_G_dir_list" | $SED 's|:*$||'` func_mkdir_p_IFS=$IFS; IFS=: for _G_dir in $_G_dir_list; do IFS=$func_mkdir_p_IFS # mkdir can fail with a 'File exist' error if two processes # try to create one of the directories concurrently. Don't # stop in that case! $MKDIR "$_G_dir" 2>/dev/null || : done IFS=$func_mkdir_p_IFS # Bail out if we (or some other process) failed to create a directory. test -d "$_G_directory_path" || \ func_fatal_error "Failed to create '$1'" fi } # func_mktempdir [BASENAME] # ------------------------- # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, BASENAME is the basename for that directory. func_mktempdir () { $debug_cmd _G_template=${TMPDIR-/tmp}/${1-$progname} if test : = "$opt_dry_run"; then # Return a directory name, but don't create it in dry-run mode _G_tmpdir=$_G_template-$$ else # If mktemp works, use that first and foremost _G_tmpdir=`mktemp -d "$_G_template-XXXXXXXX" 2>/dev/null` if test ! -d "$_G_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race _G_tmpdir=$_G_template-${RANDOM-0}$$ func_mktempdir_umask=`umask` umask 0077 $MKDIR "$_G_tmpdir" umask $func_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$_G_tmpdir" || \ func_fatal_error "cannot create temporary directory '$_G_tmpdir'" fi $ECHO "$_G_tmpdir" } # func_normal_abspath PATH # ------------------------ # Remove doubled-up and trailing slashes, "." path components, # and cancel out any ".." path components in PATH after making # it an absolute path. func_normal_abspath () { $debug_cmd # These SED scripts presuppose an absolute path with a trailing slash. _G_pathcar='s|^/\([^/]*\).*$|\1|' _G_pathcdr='s|^/[^/]*||' _G_removedotparts=':dotsl s|/\./|/|g t dotsl s|/\.$|/|' _G_collapseslashes='s|/\{1,\}|/|g' _G_finalslash='s|/*$|/|' # Start from root dir and reassemble the path. func_normal_abspath_result= func_normal_abspath_tpath=$1 func_normal_abspath_altnamespace= case $func_normal_abspath_tpath in "") # Empty path, that just means $cwd. func_stripname '' '/' "`pwd`" func_normal_abspath_result=$func_stripname_result return ;; # The next three entries are used to spot a run of precisely # two leading slashes without using negated character classes; # we take advantage of case's first-match behaviour. ///*) # Unusual form of absolute path, do nothing. ;; //*) # Not necessarily an ordinary path; POSIX reserves leading '//' # and for example Cygwin uses it to access remote file shares # over CIFS/SMB, so we conserve a leading double slash if found. func_normal_abspath_altnamespace=/ ;; /*) # Absolute path, do nothing. ;; *) # Relative path, prepend $cwd. func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath ;; esac # Cancel out all the simple stuff to save iterations. We also want # the path to end with a slash for ease of parsing, so make sure # there is one (and only one) here. func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_removedotparts" -e "$_G_collapseslashes" -e "$_G_finalslash"` while :; do # Processed it all yet? if test / = "$func_normal_abspath_tpath"; then # If we ascended to the root using ".." the result may be empty now. if test -z "$func_normal_abspath_result"; then func_normal_abspath_result=/ fi break fi func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcar"` func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -e "$_G_pathcdr"` # Figure out what to do with it case $func_normal_abspath_tcomponent in "") # Trailing empty path component, ignore it. ;; ..) # Parent dir; strip last assembled component from result. func_dirname "$func_normal_abspath_result" func_normal_abspath_result=$func_dirname_result ;; *) # Actual path component, append it. func_append func_normal_abspath_result "/$func_normal_abspath_tcomponent" ;; esac done # Restore leading double-slash if one was found on entry. func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result } # func_notquiet ARG... # -------------------- # Echo program name prefixed message only when not in quiet mode. func_notquiet () { $debug_cmd $opt_quiet || func_echo ${1+"$@"} # A bug in bash halts the script if the last line of a function # fails when set -e is in force, so we need another command to # work around that: : } # func_relative_path SRCDIR DSTDIR # -------------------------------- # Set func_relative_path_result to the relative path from SRCDIR to DSTDIR. func_relative_path () { $debug_cmd func_relative_path_result= func_normal_abspath "$1" func_relative_path_tlibdir=$func_normal_abspath_result func_normal_abspath "$2" func_relative_path_tbindir=$func_normal_abspath_result # Ascend the tree starting from libdir while :; do # check if we have found a prefix of bindir case $func_relative_path_tbindir in $func_relative_path_tlibdir) # found an exact match func_relative_path_tcancelled= break ;; $func_relative_path_tlibdir*) # found a matching prefix func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" func_relative_path_tcancelled=$func_stripname_result if test -z "$func_relative_path_result"; then func_relative_path_result=. fi break ;; *) func_dirname $func_relative_path_tlibdir func_relative_path_tlibdir=$func_dirname_result if test -z "$func_relative_path_tlibdir"; then # Have to descend all the way to the root! func_relative_path_result=../$func_relative_path_result func_relative_path_tcancelled=$func_relative_path_tbindir break fi func_relative_path_result=../$func_relative_path_result ;; esac done # Now calculate path; take care to avoid doubling-up slashes. func_stripname '' '/' "$func_relative_path_result" func_relative_path_result=$func_stripname_result func_stripname '/' '/' "$func_relative_path_tcancelled" if test -n "$func_stripname_result"; then func_append func_relative_path_result "/$func_stripname_result" fi # Normalisation. If bindir is libdir, return '.' else relative path. if test -n "$func_relative_path_result"; then func_stripname './' '' "$func_relative_path_result" func_relative_path_result=$func_stripname_result fi test -n "$func_relative_path_result" || func_relative_path_result=. : } # func_quote_portable EVAL ARG # ---------------------------- # Internal function to portably implement func_quote_arg. Note that we still # keep attention to performance here so we as much as possible try to avoid # calling sed binary (so far O(N) complexity as long as func_append is O(1)). func_quote_portable () { $debug_cmd func_quote_portable_result=$2 # one-time-loop (easy break) while true do if $1; then func_quote_portable_result=`$ECHO "$2" | $SED \ -e "$sed_double_quote_subst" -e "$sed_double_backslash"` break fi # Quote for eval. case $func_quote_portable_result in *[\\\`\"\$]*) case $func_quote_portable_result in *[\[\*\?]*) func_quote_portable_result=`$ECHO "$func_quote_portable_result" \ | $SED "$sed_quote_subst"` break ;; esac func_quote_portable_old_IFS=$IFS for _G_char in '\' '`' '"' '$' do # STATE($1) PREV($2) SEPARATOR($3) set start "" "" func_quote_portable_result=dummy"$_G_char$func_quote_portable_result$_G_char"dummy IFS=$_G_char for _G_part in $func_quote_portable_result do case $1 in quote) func_append func_quote_portable_result "$3$2" set quote "$_G_part" "\\$_G_char" ;; start) set first "" "" func_quote_portable_result= ;; first) set quote "$_G_part" "" ;; esac done done IFS=$func_quote_portable_old_IFS ;; *) ;; esac break done func_quote_portable_unquoted_result=$func_quote_portable_result case $func_quote_portable_result in # double-quote args containing shell metacharacters to delay # word splitting, command substitution and variable expansion # for a subsequent eval. # many bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") func_quote_portable_result=\"$func_quote_portable_result\" ;; esac } # func_quotefast_eval ARG # ----------------------- # Quote one ARG (internal). This is equivalent to 'func_quote_arg eval ARG', # but optimized for speed. Result is stored in $func_quotefast_eval. if test xyes = `(x=; printf -v x %q yes; echo x"$x") 2>/dev/null`; then printf -v _GL_test_printf_tilde %q '~' if test '\~' = "$_GL_test_printf_tilde"; then func_quotefast_eval () { printf -v func_quotefast_eval_result %q "$1" } else # Broken older Bash implementations. Make those faster too if possible. func_quotefast_eval () { case $1 in '~'*) func_quote_portable false "$1" func_quotefast_eval_result=$func_quote_portable_result ;; *) printf -v func_quotefast_eval_result %q "$1" ;; esac } fi else func_quotefast_eval () { func_quote_portable false "$1" func_quotefast_eval_result=$func_quote_portable_result } fi # func_quote_arg MODEs ARG # ------------------------ # Quote one ARG to be evaled later. MODEs argument may contain zero or more # specifiers listed below separated by ',' character. This function returns two # values: # i) func_quote_arg_result # double-quoted (when needed), suitable for a subsequent eval # ii) func_quote_arg_unquoted_result # has all characters that are still active within double # quotes backslashified. Available only if 'unquoted' is specified. # # Available modes: # ---------------- # 'eval' (default) # - escape shell special characters # 'expand' # - the same as 'eval'; but do not quote variable references # 'pretty' # - request aesthetic output, i.e. '"a b"' instead of 'a\ b'. This might # be used later in func_quote to get output like: 'echo "a b"' instead # of 'echo a\ b'. This is slower than default on some shells. # 'unquoted' # - produce also $func_quote_arg_unquoted_result which does not contain # wrapping double-quotes. # # Examples for 'func_quote_arg pretty,unquoted string': # # string | *_result | *_unquoted_result # ------------+-----------------------+------------------- # " | \" | \" # a b | "a b" | a b # "a b" | "\"a b\"" | \"a b\" # * | "*" | * # z="${x-$y}" | "z=\"\${x-\$y}\"" | z=\"\${x-\$y}\" # # Examples for 'func_quote_arg pretty,unquoted,expand string': # # string | *_result | *_unquoted_result # --------------+---------------------+-------------------- # z="${x-$y}" | "z=\"${x-$y}\"" | z=\"${x-$y}\" func_quote_arg () { _G_quote_expand=false case ,$1, in *,expand,*) _G_quote_expand=: ;; esac case ,$1, in *,pretty,*|*,expand,*|*,unquoted,*) func_quote_portable $_G_quote_expand "$2" func_quote_arg_result=$func_quote_portable_result func_quote_arg_unquoted_result=$func_quote_portable_unquoted_result ;; *) # Faster quote-for-eval for some shells. func_quotefast_eval "$2" func_quote_arg_result=$func_quotefast_eval_result ;; esac } # func_quote MODEs ARGs... # ------------------------ # Quote all ARGs to be evaled later and join them into single command. See # func_quote_arg's description for more info. func_quote () { $debug_cmd _G_func_quote_mode=$1 ; shift func_quote_result= while test 0 -lt $#; do func_quote_arg "$_G_func_quote_mode" "$1" if test -n "$func_quote_result"; then func_append func_quote_result " $func_quote_arg_result" else func_append func_quote_result "$func_quote_arg_result" fi shift done } # func_stripname PREFIX SUFFIX NAME # --------------------------------- # strip PREFIX and SUFFIX from NAME, and store in func_stripname_result. # PREFIX and SUFFIX must not contain globbing or regex special # characters, hashes, percent signs, but SUFFIX may contain a leading # dot (in which case that matches only a dot). if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_stripname () { $debug_cmd # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary variable first. func_stripname_result=$3 func_stripname_result=${func_stripname_result#"$1"} func_stripname_result=${func_stripname_result%"$2"} }' else func_stripname () { $debug_cmd case $2 in .*) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%\\\\$2\$%%"`;; *) func_stripname_result=`$ECHO "$3" | $SED -e "s%^$1%%" -e "s%$2\$%%"`;; esac } fi # func_show_eval CMD [FAIL_EXP] # ----------------------------- # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. func_show_eval () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} func_quote_arg pretty,expand "$_G_cmd" eval "func_notquiet $func_quote_arg_result" $opt_dry_run || { eval "$_G_cmd" _G_status=$? if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_show_eval_locale CMD [FAIL_EXP] # ------------------------------------ # Unless opt_quiet is true, then output CMD. Then, if opt_dryrun is # not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP # is given, then evaluate it. Use the saved locale for evaluation. func_show_eval_locale () { $debug_cmd _G_cmd=$1 _G_fail_exp=${2-':'} $opt_quiet || { func_quote_arg expand,pretty "$_G_cmd" eval "func_echo $func_quote_arg_result" } $opt_dry_run || { eval "$_G_user_locale $_G_cmd" _G_status=$? eval "$_G_safe_locale" if test 0 -ne "$_G_status"; then eval "(exit $_G_status); $_G_fail_exp" fi } } # func_tr_sh # ---------- # Turn $1 into a string suitable for a shell variable name. # Result is stored in $func_tr_sh_result. All characters # not in the set a-zA-Z0-9_ are replaced with '_'. Further, # if $1 begins with a digit, a '_' is prepended as well. func_tr_sh () { $debug_cmd case $1 in [0-9]* | *[!a-zA-Z0-9_]*) func_tr_sh_result=`$ECHO "$1" | $SED -e 's/^\([0-9]\)/_\1/' -e 's/[^a-zA-Z0-9_]/_/g'` ;; * ) func_tr_sh_result=$1 ;; esac } # func_verbose ARG... # ------------------- # Echo program name prefixed message in verbose mode only. func_verbose () { $debug_cmd $opt_verbose && func_echo "$*" : } # func_warn_and_continue ARG... # ----------------------------- # Echo program name prefixed warning message to standard error. func_warn_and_continue () { $debug_cmd $require_term_colors func_echo_infix_1 "${tc_red}warning$tc_reset" "$*" >&2 } # func_warning CATEGORY ARG... # ---------------------------- # Echo program name prefixed warning message to standard error. Warning # messages can be filtered according to CATEGORY, where this function # elides messages where CATEGORY is not listed in the global variable # 'opt_warning_types'. func_warning () { $debug_cmd # CATEGORY must be in the warning_categories list! case " $warning_categories " in *" $1 "*) ;; *) func_internal_error "invalid warning category '$1'" ;; esac _G_category=$1 shift case " $opt_warning_types " in *" $_G_category "*) $warning_func ${1+"$@"} ;; esac } # func_sort_ver VER1 VER2 # ----------------------- # 'sort -V' is not generally available. # Note this deviates from the version comparison in automake # in that it treats 1.5 < 1.5.0, and treats 1.4.4a < 1.4-p3a # but this should suffice as we won't be specifying old # version formats or redundant trailing .0 in bootstrap.conf. # If we did want full compatibility then we should probably # use m4_version_compare from autoconf. func_sort_ver () { $debug_cmd printf '%s\n%s\n' "$1" "$2" \ | sort -t. -k 1,1n -k 2,2n -k 3,3n -k 4,4n -k 5,5n -k 6,6n -k 7,7n -k 8,8n -k 9,9n } # func_lt_ver PREV CURR # --------------------- # Return true if PREV and CURR are in the correct order according to # func_sort_ver, otherwise false. Use it like this: # # func_lt_ver "$prev_ver" "$proposed_ver" || func_fatal_error "..." func_lt_ver () { $debug_cmd test "x$1" = x`func_sort_ver "$1" "$2" | $SED 1q` } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: #! /bin/sh # A portable, pluggable option parser for Bourne shell. # Written by Gary V. Vaughan, 2010 # This is free software. There is NO warranty; not even for # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # Copyright (C) 2010-2017 Bootstrap Authors # # This file is dual licensed under the terms of the MIT license # , and GPL version 3 or later # . You must apply one of # these licenses when using or redistributing this software or any of # the files within it. See the URLs above, or the file `LICENSE` # included in the Bootstrap distribution for the full license texts. # Please report bugs or propose patches to: # # Set a version string for this script. scriptversion=2016-03-06.01; # UTC ## ------ ## ## Usage. ## ## ------ ## # This file is a library for parsing options in your shell scripts along # with assorted other useful supporting features that you can make use # of too. # # For the simplest scripts you might need only: # # #!/bin/sh # . relative/path/to/funclib.sh # . relative/path/to/options-parser # scriptversion=1.0 # func_options ${1+"$@"} # eval set dummy "$func_options_result"; shift # ...rest of your script... # # In order for the '--version' option to work, you will need to have a # suitably formatted comment like the one at the top of this file # starting with '# Written by ' and ending with '# Copyright'. # # For '-h' and '--help' to work, you will also need a one line # description of your script's purpose in a comment directly above the # '# Written by ' line, like the one at the top of this file. # # The default options also support '--debug', which will turn on shell # execution tracing (see the comment above debug_cmd below for another # use), and '--verbose' and the func_verbose function to allow your script # to display verbose messages only when your user has specified # '--verbose'. # # After sourcing this file, you can plug in processing for additional # options by amending the variables from the 'Configuration' section # below, and following the instructions in the 'Option parsing' # section further down. ## -------------- ## ## Configuration. ## ## -------------- ## # You should override these variables in your script after sourcing this # file so that they reflect the customisations you have added to the # option parser. # The usage line for option parsing errors and the start of '-h' and # '--help' output messages. You can embed shell variables for delayed # expansion at the time the message is displayed, but you will need to # quote other shell meta-characters carefully to prevent them being # expanded when the contents are evaled. usage='$progpath [OPTION]...' # Short help message in response to '-h' and '--help'. Add to this or # override it after sourcing this library to reflect the full set of # options your script accepts. usage_message="\ --debug enable verbose shell tracing -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -v, --verbose verbosely report processing --version print version information and exit -h, --help print short or long help message and exit " # Additional text appended to 'usage_message' in response to '--help'. long_help_message=" Warning categories include: 'all' show all warnings 'none' turn off all the warnings 'error' warnings are treated as fatal errors" # Help message printed before fatal option parsing errors. fatal_help="Try '\$progname --help' for more information." ## ------------------------- ## ## Hook function management. ## ## ------------------------- ## # This section contains functions for adding, removing, and running hooks # in the main code. A hook is just a list of function names that can be # run in order later on. # func_hookable FUNC_NAME # ----------------------- # Declare that FUNC_NAME will run hooks added with # 'func_add_hook FUNC_NAME ...'. func_hookable () { $debug_cmd func_append hookable_fns " $1" } # func_add_hook FUNC_NAME HOOK_FUNC # --------------------------------- # Request that FUNC_NAME call HOOK_FUNC before it returns. FUNC_NAME must # first have been declared "hookable" by a call to 'func_hookable'. func_add_hook () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not accept hook functions." ;; esac eval func_append ${1}_hooks '" $2"' } # func_remove_hook FUNC_NAME HOOK_FUNC # ------------------------------------ # Remove HOOK_FUNC from the list of hook functions to be called by # FUNC_NAME. func_remove_hook () { $debug_cmd eval ${1}_hooks='`$ECHO "\$'$1'_hooks" |$SED "s| '$2'||"`' } # func_propagate_result FUNC_NAME_A FUNC_NAME_B # --------------------------------------------- # If the *_result variable of FUNC_NAME_A _is set_, assign its value to # *_result variable of FUNC_NAME_B. func_propagate_result () { $debug_cmd func_propagate_result_result=: if eval "test \"\${${1}_result+set}\" = set" then eval "${2}_result=\$${1}_result" else func_propagate_result_result=false fi } # func_run_hooks FUNC_NAME [ARG]... # --------------------------------- # Run all hook functions registered to FUNC_NAME. # It's assumed that the list of hook functions contains nothing more # than a whitespace-delimited list of legal shell function names, and # no effort is wasted trying to catch shell meta-characters or preserve # whitespace. func_run_hooks () { $debug_cmd case " $hookable_fns " in *" $1 "*) ;; *) func_fatal_error "'$1' does not support hook functions." ;; esac eval _G_hook_fns=\$$1_hooks; shift for _G_hook in $_G_hook_fns; do func_unset "${_G_hook}_result" eval $_G_hook '${1+"$@"}' func_propagate_result $_G_hook func_run_hooks if $func_propagate_result_result; then eval set dummy "$func_run_hooks_result"; shift fi done } ## --------------- ## ## Option parsing. ## ## --------------- ## # In order to add your own option parsing hooks, you must accept the # full positional parameter list from your hook function. You may remove # or edit any options that you action, and then pass back the remaining # unprocessed options in '_result', escaped # suitably for 'eval'. # # The '_result' variable is automatically unset # before your hook gets called; for best performance, only set the # *_result variable when necessary (i.e. don't call the 'func_quote' # function unnecessarily because it can be an expensive operation on some # machines). # # Like this: # # my_options_prep () # { # $debug_cmd # # # Extend the existing usage message. # usage_message=$usage_message' # -s, --silent don'\''t print informational messages # ' # # No change in '$@' (ignored completely by this hook). Leave # # my_options_prep_result variable intact. # } # func_add_hook func_options_prep my_options_prep # # # my_silent_option () # { # $debug_cmd # # args_changed=false # # # Note that, for efficiency, we parse as many options as we can # # recognise in a loop before passing the remainder back to the # # caller on the first unrecognised argument we encounter. # while test $# -gt 0; do # opt=$1; shift # case $opt in # --silent|-s) opt_silent=: # args_changed=: # ;; # # Separate non-argument short options: # -s*) func_split_short_opt "$_G_opt" # set dummy "$func_split_short_opt_name" \ # "-$func_split_short_opt_arg" ${1+"$@"} # shift # args_changed=: # ;; # *) # Make sure the first unrecognised option "$_G_opt" # # is added back to "$@" in case we need it later, # # if $args_changed was set to 'true'. # set dummy "$_G_opt" ${1+"$@"}; shift; break ;; # esac # done # # # Only call 'func_quote' here if we processed at least one argument. # if $args_changed; then # func_quote eval ${1+"$@"} # my_silent_option_result=$func_quote_result # fi # } # func_add_hook func_parse_options my_silent_option # # # my_option_validation () # { # $debug_cmd # # $opt_silent && $opt_verbose && func_fatal_help "\ # '--silent' and '--verbose' options are mutually exclusive." # } # func_add_hook func_validate_options my_option_validation # # You'll also need to manually amend $usage_message to reflect the extra # options you parse. It's preferable to append if you can, so that # multiple option parsing hooks can be added safely. # func_options_finish [ARG]... # ---------------------------- # Finishing the option parse loop (call 'func_options' hooks ATM). func_options_finish () { $debug_cmd func_run_hooks func_options ${1+"$@"} func_propagate_result func_run_hooks func_options_finish } # func_options [ARG]... # --------------------- # All the functions called inside func_options are hookable. See the # individual implementations for details. func_hookable func_options func_options () { $debug_cmd _G_options_quoted=false for my_func in options_prep parse_options validate_options options_finish do func_unset func_${my_func}_result func_unset func_run_hooks_result eval func_$my_func '${1+"$@"}' func_propagate_result func_$my_func func_options if $func_propagate_result_result; then eval set dummy "$func_options_result"; shift _G_options_quoted=: fi done $_G_options_quoted || { # As we (func_options) are top-level options-parser function and # nobody quoted "$@" for us yet, we need to do it explicitly for # caller. func_quote eval ${1+"$@"} func_options_result=$func_quote_result } } # func_options_prep [ARG]... # -------------------------- # All initialisations required before starting the option parse loop. # Note that when calling hook functions, we pass through the list of # positional parameters. If a hook function modifies that list, and # needs to propagate that back to rest of this script, then the complete # modified list must be put in 'func_run_hooks_result' before returning. func_hookable func_options_prep func_options_prep () { $debug_cmd # Option defaults: opt_verbose=false opt_warning_types= func_run_hooks func_options_prep ${1+"$@"} func_propagate_result func_run_hooks func_options_prep } # func_parse_options [ARG]... # --------------------------- # The main option parsing loop. func_hookable func_parse_options func_parse_options () { $debug_cmd _G_parse_options_requote=false # this just eases exit handling while test $# -gt 0; do # Defer to hook functions for initial option parsing, so they # get priority in the event of reusing an option name. func_run_hooks func_parse_options ${1+"$@"} func_propagate_result func_run_hooks func_parse_options if $func_propagate_result_result; then eval set dummy "$func_parse_options_result"; shift # Even though we may have changed "$@", we passed the "$@" array # down into the hook and it quoted it for us (because we are in # this if-branch). No need to quote it again. _G_parse_options_requote=false fi # Break out of the loop if we already parsed every option. test $# -gt 0 || break # We expect that one of the options parsed in this function matches # and thus we remove _G_opt from "$@" and need to re-quote. _G_match_parse_options=: _G_opt=$1 shift case $_G_opt in --debug|-x) debug_cmd='set -x' func_echo "enabling shell trace mode" >&2 $debug_cmd ;; --no-warnings|--no-warning|--no-warn) set dummy --warnings none ${1+"$@"} shift ;; --warnings|--warning|-W) if test $# = 0 && func_missing_arg $_G_opt; then _G_parse_options_requote=: break fi case " $warning_categories $1" in *" $1 "*) # trailing space prevents matching last $1 above func_append_uniq opt_warning_types " $1" ;; *all) opt_warning_types=$warning_categories ;; *none) opt_warning_types=none warning_func=: ;; *error) opt_warning_types=$warning_categories warning_func=func_fatal_error ;; *) func_fatal_error \ "unsupported warning category: '$1'" ;; esac shift ;; --verbose|-v) opt_verbose=: ;; --version) func_version ;; -\?|-h) func_usage ;; --help) func_help ;; # Separate optargs to long options (plugins may need this): --*=*) func_split_equals "$_G_opt" set dummy "$func_split_equals_lhs" \ "$func_split_equals_rhs" ${1+"$@"} shift ;; # Separate optargs to short options: -W*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "$func_split_short_opt_arg" ${1+"$@"} shift ;; # Separate non-argument short options: -\?*|-h*|-v*|-x*) func_split_short_opt "$_G_opt" set dummy "$func_split_short_opt_name" \ "-$func_split_short_opt_arg" ${1+"$@"} shift ;; --) _G_parse_options_requote=: ; break ;; -*) func_fatal_help "unrecognised option: '$_G_opt'" ;; *) set dummy "$_G_opt" ${1+"$@"}; shift _G_match_parse_options=false break ;; esac if $_G_match_parse_options; then _G_parse_options_requote=: fi done if $_G_parse_options_requote; then # save modified positional parameters for caller func_quote eval ${1+"$@"} func_parse_options_result=$func_quote_result fi } # func_validate_options [ARG]... # ------------------------------ # Perform any sanity checks on option settings and/or unconsumed # arguments. func_hookable func_validate_options func_validate_options () { $debug_cmd # Display all warnings if -W was not given. test -n "$opt_warning_types" || opt_warning_types=" $warning_categories" func_run_hooks func_validate_options ${1+"$@"} func_propagate_result func_run_hooks func_validate_options # Bail if the options were screwed! $exit_cmd $EXIT_FAILURE } ## ----------------- ## ## Helper functions. ## ## ----------------- ## # This section contains the helper functions used by the rest of the # hookable option parser framework in ascii-betical order. # func_fatal_help ARG... # ---------------------- # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { $debug_cmd eval \$ECHO \""Usage: $usage"\" eval \$ECHO \""$fatal_help"\" func_error ${1+"$@"} exit $EXIT_FAILURE } # func_help # --------- # Echo long help message to standard output and exit. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message" exit 0 } # func_missing_arg ARGNAME # ------------------------ # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { $debug_cmd func_error "Missing argument for '$1'." exit_cmd=exit } # func_split_equals STRING # ------------------------ # Set func_split_equals_lhs and func_split_equals_rhs shell variables # after splitting STRING at the '=' sign. test -z "$_G_HAVE_XSI_OPS" \ && (eval 'x=a/b/c; test 5aa/bb/cc = "${#x}${x%%/*}${x%/*}${x#*/}${x##*/}"') 2>/dev/null \ && _G_HAVE_XSI_OPS=yes if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_equals () { $debug_cmd func_split_equals_lhs=${1%%=*} func_split_equals_rhs=${1#*=} if test "x$func_split_equals_lhs" = "x$1"; then func_split_equals_rhs= fi }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_equals () { $debug_cmd func_split_equals_lhs=`expr "x$1" : 'x\([^=]*\)'` func_split_equals_rhs= test "x$func_split_equals_lhs" = "x$1" \ || func_split_equals_rhs=`expr "x$1" : 'x[^=]*=\(.*\)$'` } fi #func_split_equals # func_split_short_opt SHORTOPT # ----------------------------- # Set func_split_short_opt_name and func_split_short_opt_arg shell # variables after splitting SHORTOPT after the 2nd character. if test yes = "$_G_HAVE_XSI_OPS" then # This is an XSI compatible shell, allowing a faster implementation... eval 'func_split_short_opt () { $debug_cmd func_split_short_opt_arg=${1#??} func_split_short_opt_name=${1%"$func_split_short_opt_arg"} }' else # ...otherwise fall back to using expr, which is often a shell builtin. func_split_short_opt () { $debug_cmd func_split_short_opt_name=`expr "x$1" : 'x-\(.\)'` func_split_short_opt_arg=`expr "x$1" : 'x-.\(.*\)$'` } fi #func_split_short_opt # func_usage # ---------- # Echo short help message to standard output and exit. func_usage () { $debug_cmd func_usage_message $ECHO "Run '$progname --help |${PAGER-more}' for full usage" exit 0 } # func_usage_message # ------------------ # Echo short help message to standard output. func_usage_message () { $debug_cmd eval \$ECHO \""Usage: $usage"\" echo $SED -n 's|^# || /^Written by/{ x;p;x } h /^Written by/q' < "$progpath" echo eval \$ECHO \""$usage_message"\" } # func_version # ------------ # Echo version message to standard output and exit. # The version message is extracted from the calling file's header # comments, with leading '# ' stripped: # 1. First display the progname and version # 2. Followed by the header comment line matching /^# Written by / # 3. Then a blank line followed by the first following line matching # /^# Copyright / # 4. Immediately followed by any lines between the previous matches, # except lines preceding the intervening completely blank line. # For example, see the header comments of this file. func_version () { $debug_cmd printf '%s\n' "$progname $scriptversion" $SED -n ' /^# Written by /!b s|^# ||; p; n :fwd2blnk /./ { n b fwd2blnk } p; n :holdwrnt s|^# || s|^# *$|| /^Copyright /!{ /./H n b holdwrnt } s|\((C)\)[ 0-9,-]*[ ,-]\([1-9][0-9]* \)|\1 \2| G s|\(\n\)\n*|\1|g p; q' < "$progpath" exit $? } # Local variables: # mode: shell-script # sh-indentation: 2 # eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-pattern: "10/scriptversion=%:y-%02m-%02d.%02H; # UTC" # time-stamp-time-zone: "UTC" # End: # Set a version string. scriptversion='(GNU libtool) 2.4.6.40-6ca5-dirty' # func_echo ARG... # ---------------- # Libtool also displays the current mode in messages, so override # funclib.sh func_echo with this custom definition. func_echo () { $debug_cmd _G_message=$* func_echo_IFS=$IFS IFS=$nl for _G_line in $_G_message; do IFS=$func_echo_IFS $ECHO "$progname${opt_mode+: $opt_mode}: $_G_line" done IFS=$func_echo_IFS } # func_warning ARG... # ------------------- # Libtool warnings are not categorized, so override funclib.sh # func_warning with this simpler definition. func_warning () { $debug_cmd $warning_func ${1+"$@"} } ## ---------------- ## ## Options parsing. ## ## ---------------- ## # Hook in the functions to make sure our own options are parsed during # the option parsing loop. usage='$progpath [OPTION]... [MODE-ARG]...' # Short help message in response to '-h'. usage_message="Options: --config show all configuration variables --debug enable verbose shell tracing -n, --dry-run display commands without modifying any files --features display basic configuration information and exit --mode=MODE use operation mode MODE --no-warnings equivalent to '-Wnone' --preserve-dup-deps don't remove duplicate dependency libraries --quiet, --silent don't print informational messages --tag=TAG use configuration variables from tag TAG -v, --verbose print more informational messages than default --version print version information -W, --warnings=CATEGORY report the warnings falling in CATEGORY [all] -h, --help, --help-all print short, long, or detailed help message " # Additional text appended to 'usage_message' in response to '--help'. func_help () { $debug_cmd func_usage_message $ECHO "$long_help_message MODE must be one of the following: clean remove files from the build directory compile compile a source file into a libtool object execute automatically set library path, then run a program finish complete the installation of libtool libraries install install libraries or executables link create a library or an executable uninstall remove libraries from an installed directory MODE-ARGS vary depending on the MODE. When passed as first option, '--mode=MODE' may be abbreviated as 'MODE' or a unique abbreviation of that. Try '$progname --help --mode=MODE' for a more detailed description of MODE. When reporting a bug, please describe a test case to reproduce it and include the following information: host-triplet: $host shell: $SHELL compiler: $LTCC compiler flags: $LTCFLAGS linker: $LD (gnu? $with_gnu_ld) version: $progname (GNU libtool) 2.4.6.40-6ca5-dirty automake: `($AUTOMAKE --version) 2>/dev/null |$SED 1q` autoconf: `($AUTOCONF --version) 2>/dev/null |$SED 1q` Report bugs to . GNU libtool home page: . General help using GNU software: ." exit 0 } # func_lo2o OBJECT-NAME # --------------------- # Transform OBJECT-NAME from a '.lo' suffix to the platform specific # object suffix. lo2o=s/\\.lo\$/.$objext/ o2lo=s/\\.$objext\$/.lo/ if test yes = "$_G_HAVE_XSI_OPS"; then eval 'func_lo2o () { case $1 in *.lo) func_lo2o_result=${1%.lo}.$objext ;; * ) func_lo2o_result=$1 ;; esac }' # func_xform LIBOBJ-OR-SOURCE # --------------------------- # Transform LIBOBJ-OR-SOURCE from a '.o' or '.c' (or otherwise) # suffix to a '.lo' libtool-object suffix. eval 'func_xform () { func_xform_result=${1%.*}.lo }' else # ...otherwise fall back to using sed. func_lo2o () { func_lo2o_result=`$ECHO "$1" | $SED "$lo2o"` } func_xform () { func_xform_result=`$ECHO "$1" | $SED 's|\.[^.]*$|.lo|'` } fi # func_fatal_configuration ARG... # ------------------------------- # Echo program name prefixed message to standard error, followed by # a configuration failure hint, and exit. func_fatal_configuration () { func_fatal_error ${1+"$@"} \ "See the $PACKAGE documentation for more information." \ "Fatal configuration error." } # func_config # ----------- # Display the configuration for all the tags in this script. func_config () { re_begincf='^# ### BEGIN LIBTOOL' re_endcf='^# ### END LIBTOOL' # Default configuration. $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" # Now print the configurations for the tags. for tagname in $taglist; do $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" done exit $? } # func_features # ------------- # Display the features supported by this script. func_features () { echo "host: $host" if test yes = "$build_libtool_libs"; then echo "enable shared libraries" else echo "disable shared libraries" fi if test yes = "$build_old_libs"; then echo "enable static libraries" else echo "disable static libraries" fi exit $? } # func_enable_tag TAGNAME # ----------------------- # Verify that TAGNAME is valid, and either flag an error and exit, or # enable the TAGNAME tag. We also add TAGNAME to the global $taglist # variable here. func_enable_tag () { # Global variable: tagname=$1 re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" sed_extractcf=/$re_begincf/,/$re_endcf/p # Validate tagname. case $tagname in *[!-_A-Za-z0-9,/]*) func_fatal_error "invalid tag name: $tagname" ;; esac # Don't test for the "default" C tag, as we know it's # there but not specially marked. case $tagname in CC) ;; *) if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then taglist="$taglist $tagname" # Evaluate the configuration. Be careful to quote the path # and the sed script, to avoid splitting on whitespace, but # also don't use non-portable quotes within backquotes within # quotes we have to do it in 2 steps: extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` eval "$extractedcf" else func_error "ignoring unknown tag $tagname" fi ;; esac } # func_check_version_match # ------------------------ # Ensure that we are using m4 macros, and libtool script from the same # release of libtool. func_check_version_match () { if test "$package_revision" != "$macro_revision"; then if test "$VERSION" != "$macro_version"; then if test -z "$macro_version"; then cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from an older release. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, but the $progname: definition of this LT_INIT comes from $PACKAGE $macro_version. $progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION $progname: and run autoconf again. _LT_EOF fi else cat >&2 <<_LT_EOF $progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, $progname: but the definition of this LT_INIT comes from revision $macro_revision. $progname: You should recreate aclocal.m4 with macros from revision $package_revision $progname: of $PACKAGE $VERSION and run autoconf again. _LT_EOF fi exit $EXIT_MISMATCH fi } # libtool_options_prep [ARG]... # ----------------------------- # Preparation for options parsed by libtool. libtool_options_prep () { $debug_mode # Option defaults: opt_config=false opt_dlopen= opt_dry_run=false opt_help=false opt_mode= opt_preserve_dup_deps=false opt_quiet=false nonopt= preserve_args= _G_rc_lt_options_prep=: # Shorthand for --mode=foo, only valid as the first argument case $1 in clean|clea|cle|cl) shift; set dummy --mode clean ${1+"$@"}; shift ;; compile|compil|compi|comp|com|co|c) shift; set dummy --mode compile ${1+"$@"}; shift ;; execute|execut|execu|exec|exe|ex|e) shift; set dummy --mode execute ${1+"$@"}; shift ;; finish|finis|fini|fin|fi|f) shift; set dummy --mode finish ${1+"$@"}; shift ;; install|instal|insta|inst|ins|in|i) shift; set dummy --mode install ${1+"$@"}; shift ;; link|lin|li|l) shift; set dummy --mode link ${1+"$@"}; shift ;; uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) shift; set dummy --mode uninstall ${1+"$@"}; shift ;; *) _G_rc_lt_options_prep=false ;; esac if $_G_rc_lt_options_prep; then # Pass back the list of options. func_quote eval ${1+"$@"} libtool_options_prep_result=$func_quote_result fi } func_add_hook func_options_prep libtool_options_prep # libtool_parse_options [ARG]... # --------------------------------- # Provide handling for libtool specific options. libtool_parse_options () { $debug_cmd _G_rc_lt_parse_options=false # Perform our own loop to consume as many options as possible in # each iteration. while test $# -gt 0; do _G_match_lt_parse_options=: _G_opt=$1 shift case $_G_opt in --dry-run|--dryrun|-n) opt_dry_run=: ;; --config) func_config ;; --dlopen|-dlopen) opt_dlopen="${opt_dlopen+$opt_dlopen }$1" shift ;; --preserve-dup-deps) opt_preserve_dup_deps=: ;; --features) func_features ;; --finish) set dummy --mode finish ${1+"$@"}; shift ;; --help) opt_help=: ;; --help-all) opt_help=': help-all' ;; --mode) test $# = 0 && func_missing_arg $_G_opt && break opt_mode=$1 case $1 in # Valid mode arguments: clean|compile|execute|finish|install|link|relink|uninstall) ;; # Catch anything else as an error *) func_error "invalid argument for $_G_opt" exit_cmd=exit break ;; esac shift ;; --no-silent|--no-quiet) opt_quiet=false func_append preserve_args " $_G_opt" ;; --no-warnings|--no-warning|--no-warn) opt_warning=false func_append preserve_args " $_G_opt" ;; --no-verbose) opt_verbose=false func_append preserve_args " $_G_opt" ;; --silent|--quiet) opt_quiet=: opt_verbose=false func_append preserve_args " $_G_opt" ;; --tag) test $# = 0 && func_missing_arg $_G_opt && break opt_tag=$1 func_append preserve_args " $_G_opt $1" func_enable_tag "$1" shift ;; --verbose|-v) opt_quiet=false opt_verbose=: func_append preserve_args " $_G_opt" ;; # An option not handled by this hook function: *) set dummy "$_G_opt" ${1+"$@"} ; shift _G_match_lt_parse_options=false break ;; esac $_G_match_lt_parse_options && _G_rc_lt_parse_options=: done if $_G_rc_lt_parse_options; then # save modified positional parameters for caller func_quote eval ${1+"$@"} libtool_parse_options_result=$func_quote_result fi } func_add_hook func_parse_options libtool_parse_options # libtool_validate_options [ARG]... # --------------------------------- # Perform any sanity checks on option settings and/or unconsumed # arguments. libtool_validate_options () { # save first non-option argument if test 0 -lt $#; then nonopt=$1 shift fi # preserve --debug test : = "$debug_cmd" || func_append preserve_args " --debug" case $host in # Solaris2 added to fix http://debbugs.gnu.org/cgi/bugreport.cgi?bug=16452 # see also: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=59788 *cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* | *os2*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps ;; esac $opt_help || { # Sanity checks first: func_check_version_match test yes != "$build_libtool_libs" \ && test yes != "$build_old_libs" \ && func_fatal_configuration "not configured to build any kind of library" # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$opt_dlopen" && test execute != "$opt_mode"; then func_error "unrecognized option '-dlopen'" $ECHO "$help" 1>&2 exit $EXIT_FAILURE fi # Change the help message to a mode-specific one. generic_help=$help help="Try '$progname --help --mode=$opt_mode' for more information." } # Pass back the unparsed argument list func_quote eval ${1+"$@"} libtool_validate_options_result=$func_quote_result } func_add_hook func_validate_options libtool_validate_options # Process options as early as possible so that --help and --version # can return quickly. func_options ${1+"$@"} eval set dummy "$func_options_result"; shift ## ----------- ## ## Main. ## ## ----------- ## magic='%%%MAGIC variable%%%' magic_exe='%%%MAGIC EXE variable%%%' # Global variables. extracted_archives= extracted_serial=0 # If this variable is set in any of the actions, the command in it # will be execed at the end. This prevents here-documents from being # left over by shells. exec_cmd= # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF $1 _LTECHO_EOF' } # func_generated_by_libtool # True iff stdin has been generated by Libtool. This function is only # a basic sanity check; it will hardly flush out determined imposters. func_generated_by_libtool_p () { $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # func_lalib_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_lalib_p () { test -f "$1" && $SED -e 4q "$1" 2>/dev/null | func_generated_by_libtool_p } # func_lalib_unsafe_p file # True iff FILE is a libtool '.la' library or '.lo' object file. # This function implements the same check as func_lalib_p without # resorting to external programs. To this end, it redirects stdin and # closes it afterwards, without saving the original file descriptor. # As a safety measure, use it only where a negative result would be # fatal anyway. Works if 'file' does not exist. func_lalib_unsafe_p () { lalib_p=no if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then for lalib_p_l in 1 2 3 4 do read lalib_p_line case $lalib_p_line in \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; esac done exec 0<&5 5<&- fi test yes = "$lalib_p" } # func_ltwrapper_script_p file # True iff FILE is a libtool wrapper script # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_script_p () { test -f "$1" && $lt_truncate_bin < "$1" 2>/dev/null | func_generated_by_libtool_p } # func_ltwrapper_executable_p file # True iff FILE is a libtool wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_executable_p () { func_ltwrapper_exec_suffix= case $1 in *.exe) ;; *) func_ltwrapper_exec_suffix=.exe ;; esac $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 } # func_ltwrapper_scriptname file # Assumes file is an ltwrapper_executable # uses $file to determine the appropriate filename for a # temporary ltwrapper_script. func_ltwrapper_scriptname () { func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result=$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper } # func_ltwrapper_p file # True iff FILE is a libtool wrapper script or wrapper executable # This function is only a basic sanity check; it will hardly flush out # determined imposters. func_ltwrapper_p () { func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" } # func_execute_cmds commands fail_cmd # Execute tilde-delimited COMMANDS. # If FAIL_CMD is given, eval that upon failure. # FAIL_CMD may read-access the current command in variable CMD! func_execute_cmds () { $debug_cmd save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs func_show_eval "$cmd" "${2-:}" done IFS=$save_ifs } # func_source file # Source FILE, adding directory component if necessary. # Note that it is not necessary on cygwin/mingw to append a dot to # FILE even if both FILE and FILE.exe exist: automatic-append-.exe # behavior happens only for exec(3), not for open(2)! Also, sourcing # 'FILE.' does not work on cygwin managed mounts. func_source () { $debug_cmd case $1 in */* | *\\*) . "$1" ;; *) . "./$1" ;; esac } # func_resolve_sysroot PATH # Replace a leading = in PATH with a sysroot. Store the result into # func_resolve_sysroot_result func_resolve_sysroot () { func_resolve_sysroot_result=$1 case $func_resolve_sysroot_result in =*) func_stripname '=' '' "$func_resolve_sysroot_result" func_resolve_sysroot_result=$lt_sysroot$func_stripname_result ;; esac } # func_replace_sysroot PATH # If PATH begins with the sysroot, replace it with = and # store the result into func_replace_sysroot_result. func_replace_sysroot () { case $lt_sysroot:$1 in ?*:"$lt_sysroot"*) func_stripname "$lt_sysroot" '' "$1" func_replace_sysroot_result='='$func_stripname_result ;; *) # Including no sysroot. func_replace_sysroot_result=$1 ;; esac } # func_infer_tag arg # Infer tagged configuration to use if any are available and # if one wasn't chosen via the "--tag" command line option. # Only attempt this if the compiler in the base compile # command doesn't match the default compiler. # arg is usually of the form 'gcc ...' func_infer_tag () { $debug_cmd if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case $@ in # Blanks in the command may have been stripped by the calling shell, # but not from the CC environment variable when configure was run. " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; # Blanks at the start of $base_compile will cause this to fail # if we don't check for them as well. *) for z in $available_tags; do if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then # Evaluate the configuration. eval "`$SED -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" CC_quoted= for arg in $CC; do # Double-quote args containing other shell metacharacters. func_append_quoted CC_quoted "$arg" done CC_expanded=`func_echo_all $CC` CC_quoted_expanded=`func_echo_all $CC_quoted` case "$@ " in " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) # The compiler in the base compile command matches # the one in the tagged configuration. # Assume this is the tagged configuration we want. tagname=$z break ;; esac fi done # If $tagname still isn't set, then no tagged configuration # was found and let the user know that the "--tag" command # line option must be used. if test -z "$tagname"; then func_echo "unable to infer tagged configuration" func_fatal_error "specify a tag with '--tag'" # else # func_verbose "using $tagname tagged configuration" fi ;; esac fi } # func_write_libtool_object output_name pic_name nonpic_name # Create a libtool object file (analogous to a ".la" file), # but don't create it if we're doing a dry run. func_write_libtool_object () { write_libobj=$1 if test yes = "$build_libtool_libs"; then write_lobj=\'$2\' else write_lobj=none fi if test yes = "$build_old_libs"; then write_oldobj=\'$3\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T </dev/null` if test "$?" -eq 0 && test -n "$func_convert_core_file_wine_to_w32_tmp"; then func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | $SED -e "$sed_naive_backslashify"` else func_convert_core_file_wine_to_w32_result= fi fi } # end: func_convert_core_file_wine_to_w32 # func_convert_core_path_wine_to_w32 ARG # Helper function used by path conversion functions when $build is *nix, and # $host is mingw, cygwin, or some other w32 environment. Relies on a correctly # configured wine environment available, with the winepath program in $build's # $PATH. Assumes ARG has no leading or trailing path separator characters. # # ARG is path to be converted from $build format to win32. # Result is available in $func_convert_core_path_wine_to_w32_result. # Unconvertible file (directory) names in ARG are skipped; if no directory names # are convertible, then the result may be empty. func_convert_core_path_wine_to_w32 () { $debug_cmd # unfortunately, winepath doesn't convert paths, only file names func_convert_core_path_wine_to_w32_result= if test -n "$1"; then oldIFS=$IFS IFS=: for func_convert_core_path_wine_to_w32_f in $1; do IFS=$oldIFS func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" if test -n "$func_convert_core_file_wine_to_w32_result"; then if test -z "$func_convert_core_path_wine_to_w32_result"; then func_convert_core_path_wine_to_w32_result=$func_convert_core_file_wine_to_w32_result else func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" fi fi done IFS=$oldIFS fi } # end: func_convert_core_path_wine_to_w32 # func_cygpath ARGS... # Wrapper around calling the cygpath program via LT_CYGPATH. This is used when # when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) # $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or # (2), returns the Cygwin file name or path in func_cygpath_result (input # file name or path is assumed to be in w32 format, as previously converted # from $build's *nix or MSYS format). In case (3), returns the w32 file name # or path in func_cygpath_result (input file name or path is assumed to be in # Cygwin format). Returns an empty string on error. # # ARGS are passed to cygpath, with the last one being the file name or path to # be converted. # # Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH # environment variable; do not put it in $PATH. func_cygpath () { $debug_cmd if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` if test "$?" -ne 0; then # on failure, ensure result is empty func_cygpath_result= fi else func_cygpath_result= func_error "LT_CYGPATH is empty or specifies non-existent file: '$LT_CYGPATH'" fi } #end: func_cygpath # func_convert_core_msys_to_w32 ARG # Convert file name or path ARG from MSYS format to w32 format. Return # result in func_convert_core_msys_to_w32_result. func_convert_core_msys_to_w32 () { $debug_cmd # awkward: cmd appends spaces to result func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | $SED -e 's/[ ]*$//' -e "$sed_naive_backslashify"` } #end: func_convert_core_msys_to_w32 # func_convert_file_check ARG1 ARG2 # Verify that ARG1 (a file name in $build format) was converted to $host # format in ARG2. Otherwise, emit an error message, but continue (resetting # func_to_host_file_result to ARG1). func_convert_file_check () { $debug_cmd if test -z "$2" && test -n "$1"; then func_error "Could not determine host file name corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_file_result=$1 fi } # end func_convert_file_check # func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH # Verify that FROM_PATH (a path in $build format) was converted to $host # format in TO_PATH. Otherwise, emit an error message, but continue, resetting # func_to_host_file_result to a simplistic fallback value (see below). func_convert_path_check () { $debug_cmd if test -z "$4" && test -n "$3"; then func_error "Could not determine the host path corresponding to" func_error " '$3'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This is a deliberately simplistic "conversion" and # should not be "improved". See libtool.info. if test "x$1" != "x$2"; then lt_replace_pathsep_chars="s|$1|$2|g" func_to_host_path_result=`echo "$3" | $SED -e "$lt_replace_pathsep_chars"` else func_to_host_path_result=$3 fi fi } # end func_convert_path_check # func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG # Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT # and appending REPL if ORIG matches BACKPAT. func_convert_path_front_back_pathsep () { $debug_cmd case $4 in $1 ) func_to_host_path_result=$3$func_to_host_path_result ;; esac case $4 in $2 ) func_append func_to_host_path_result "$3" ;; esac } # end func_convert_path_front_back_pathsep ################################################## # $build to $host FILE NAME CONVERSION FUNCTIONS # ################################################## # invoked via '$to_host_file_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # Result will be available in $func_to_host_file_result. # func_to_host_file ARG # Converts the file name ARG from $build format to $host format. Return result # in func_to_host_file_result. func_to_host_file () { $debug_cmd $to_host_file_cmd "$1" } # end func_to_host_file # func_to_tool_file ARG LAZY # converts the file name ARG from $build format to toolchain format. Return # result in func_to_tool_file_result. If the conversion in use is listed # in (the comma separated) LAZY, no conversion takes place. func_to_tool_file () { $debug_cmd case ,$2, in *,"$to_tool_file_cmd",*) func_to_tool_file_result=$1 ;; *) $to_tool_file_cmd "$1" func_to_tool_file_result=$func_to_host_file_result ;; esac } # end func_to_tool_file # func_convert_file_noop ARG # Copy ARG to func_to_host_file_result. func_convert_file_noop () { func_to_host_file_result=$1 } # end func_convert_file_noop # func_convert_file_msys_to_w32 ARG # Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_file_result. func_convert_file_msys_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_to_host_file_result=$func_convert_core_msys_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_w32 # func_convert_file_cygwin_to_w32 ARG # Convert file name ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_file_cygwin_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # because $build is cygwin, we call "the" cygpath in $PATH; no need to use # LT_CYGPATH in this case. func_to_host_file_result=`cygpath -m "$1"` fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_cygwin_to_w32 # func_convert_file_nix_to_w32 ARG # Convert file name ARG from *nix to w32 format. Requires a wine environment # and a working winepath. Returns result in func_to_host_file_result. func_convert_file_nix_to_w32 () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_file_wine_to_w32 "$1" func_to_host_file_result=$func_convert_core_file_wine_to_w32_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_w32 # func_convert_file_msys_to_cygwin ARG # Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_file_msys_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then func_convert_core_msys_to_w32 "$1" func_cygpath -u "$func_convert_core_msys_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_msys_to_cygwin # func_convert_file_nix_to_cygwin ARG # Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed # in a wine environment, working winepath, and LT_CYGPATH set. Returns result # in func_to_host_file_result. func_convert_file_nix_to_cygwin () { $debug_cmd func_to_host_file_result=$1 if test -n "$1"; then # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. func_convert_core_file_wine_to_w32 "$1" func_cygpath -u "$func_convert_core_file_wine_to_w32_result" func_to_host_file_result=$func_cygpath_result fi func_convert_file_check "$1" "$func_to_host_file_result" } # end func_convert_file_nix_to_cygwin ############################################# # $build to $host PATH CONVERSION FUNCTIONS # ############################################# # invoked via '$to_host_path_cmd ARG' # # In each case, ARG is the path to be converted from $build to $host format. # The result will be available in $func_to_host_path_result. # # Path separators are also converted from $build format to $host format. If # ARG begins or ends with a path separator character, it is preserved (but # converted to $host format) on output. # # All path conversion functions are named using the following convention: # file name conversion function : func_convert_file_X_to_Y () # path conversion function : func_convert_path_X_to_Y () # where, for any given $build/$host combination the 'X_to_Y' value is the # same. If conversion functions are added for new $build/$host combinations, # the two new functions must follow this pattern, or func_init_to_host_path_cmd # will break. # func_init_to_host_path_cmd # Ensures that function "pointer" variable $to_host_path_cmd is set to the # appropriate value, based on the value of $to_host_file_cmd. to_host_path_cmd= func_init_to_host_path_cmd () { $debug_cmd if test -z "$to_host_path_cmd"; then func_stripname 'func_convert_file_' '' "$to_host_file_cmd" to_host_path_cmd=func_convert_path_$func_stripname_result fi } # func_to_host_path ARG # Converts the path ARG from $build format to $host format. Return result # in func_to_host_path_result. func_to_host_path () { $debug_cmd func_init_to_host_path_cmd $to_host_path_cmd "$1" } # end func_to_host_path # func_convert_path_noop ARG # Copy ARG to func_to_host_path_result. func_convert_path_noop () { func_to_host_path_result=$1 } # end func_convert_path_noop # func_convert_path_msys_to_w32 ARG # Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic # conversion to w32 is not available inside the cwrapper. Returns result in # func_to_host_path_result. func_convert_path_msys_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from ARG. MSYS # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; # and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_msys_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_msys_to_w32 # func_convert_path_cygwin_to_w32 ARG # Convert path ARG from Cygwin to w32 format. Returns result in # func_to_host_file_result. func_convert_path_cygwin_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_cygwin_to_w32 # func_convert_path_nix_to_w32 ARG # Convert path ARG from *nix to w32 format. Requires a wine environment and # a working winepath. Returns result in func_to_host_file_result. func_convert_path_nix_to_w32 () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_to_host_path_result=$func_convert_core_path_wine_to_w32_result func_convert_path_check : ";" \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" fi } # end func_convert_path_nix_to_w32 # func_convert_path_msys_to_cygwin ARG # Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. # Returns result in func_to_host_file_result. func_convert_path_msys_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # See func_convert_path_msys_to_w32: func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_msys_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_msys_to_cygwin # func_convert_path_nix_to_cygwin ARG # Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a # a wine environment, working winepath, and LT_CYGPATH set. Returns result in # func_to_host_file_result. func_convert_path_nix_to_cygwin () { $debug_cmd func_to_host_path_result=$1 if test -n "$1"; then # Remove leading and trailing path separator characters from # ARG. msys behavior is inconsistent here, cygpath turns them # into '.;' and ';.', and winepath ignores them completely. func_stripname : : "$1" func_to_host_path_tmp1=$func_stripname_result func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" func_to_host_path_result=$func_cygpath_result func_convert_path_check : : \ "$func_to_host_path_tmp1" "$func_to_host_path_result" func_convert_path_front_back_pathsep ":*" "*:" : "$1" fi } # end func_convert_path_nix_to_cygwin # func_dll_def_p FILE # True iff FILE is a Windows DLL '.def' file. # Keep in sync with _LT_DLL_DEF_P in libtool.m4 func_dll_def_p () { $debug_cmd func_dll_def_p_tmp=`$SED -n \ -e 's/^[ ]*//' \ -e '/^\(;.*\)*$/d' \ -e 's/^\(EXPORTS\|LIBRARY\)\([ ].*\)*$/DEF/p' \ -e q \ "$1"` test DEF = "$func_dll_def_p_tmp" } # func_mode_compile arg... func_mode_compile () { $debug_cmd # Get the compilation command and the source file. base_compile= srcfile=$nonopt # always keep a non-empty value in "srcfile" suppress_opt=yes suppress_output= arg_mode=normal libobj= later= pie_flag= for arg do case $arg_mode in arg ) # do not "continue". Instead, add this to base_compile lastarg=$arg arg_mode=normal ;; target ) libobj=$arg arg_mode=normal continue ;; normal ) # Accept any command-line options. case $arg in -o) test -n "$libobj" && \ func_fatal_error "you cannot specify '-o' more than once" arg_mode=target continue ;; -pie | -fpie | -fPIE) func_append pie_flag " $arg" continue ;; -shared | -static | -prefer-pic | -prefer-non-pic) func_append later " $arg" continue ;; -no-suppress) suppress_opt=no continue ;; -Xcompiler) arg_mode=arg # the next one goes into the "base_compile" arg list continue # The current "srcfile" will either be retained or ;; # replaced later. I would guess that would be a bug. -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result lastarg= save_ifs=$IFS; IFS=, for arg in $args; do IFS=$save_ifs func_append_quoted lastarg "$arg" done IFS=$save_ifs func_stripname ' ' '' "$lastarg" lastarg=$func_stripname_result # Add the arguments to base_compile. func_append base_compile " $lastarg" continue ;; *) # Accept the current argument as the source file. # The previous "srcfile" becomes the current argument. # lastarg=$srcfile srcfile=$arg ;; esac # case $arg ;; esac # case $arg_mode # Aesthetically quote the previous argument. func_append_quoted base_compile "$lastarg" done # for arg case $arg_mode in arg) func_fatal_error "you must specify an argument for -Xcompile" ;; target) func_fatal_error "you must specify a target with '-o'" ;; *) # Get the name of the library object. test -z "$libobj" && { func_basename "$srcfile" libobj=$func_basename_result } ;; esac # Recognize several different file suffixes. # If the user specifies -o file.o, it is replaced with file.lo case $libobj in *.[cCFSifmso] | \ *.ada | *.adb | *.ads | *.asm | \ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) func_xform "$libobj" libobj=$func_xform_result ;; esac case $libobj in *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; *) func_fatal_error "cannot determine name of library object from '$libobj'" ;; esac func_infer_tag $base_compile for arg in $later; do case $arg in -shared) test yes = "$build_libtool_libs" \ || func_fatal_configuration "cannot build a shared library" build_old_libs=no continue ;; -static) build_libtool_libs=no build_old_libs=yes continue ;; -prefer-pic) pic_mode=yes continue ;; -prefer-non-pic) pic_mode=no continue ;; esac done func_quote_arg pretty "$libobj" test "X$libobj" != "X$func_quote_arg_result" \ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ && func_warning "libobj name '$libobj' may not contain shell special characters." func_dirname_and_basename "$obj" "/" "" objname=$func_basename_result xdir=$func_dirname_result lobj=$xdir$objdir/$objname test -z "$base_compile" && \ func_fatal_help "you must specify a compilation command" # Delete any leftover library objects. if test yes = "$build_old_libs"; then removelist="$obj $lobj $libobj ${libobj}T" else removelist="$lobj $libobj ${libobj}T" fi # On Cygwin there's no "real" PIC flag so we must build both object types case $host_os in cygwin* | mingw* | pw32* | os2* | cegcc*) pic_mode=default ;; esac if test no = "$pic_mode" && test pass_all != "$deplibs_check_method"; then # non-PIC code in shared libraries is not supported pic_mode=default fi # Calculate the filename of the output object if compiler does # not support -o with -c if test no = "$compiler_c_o"; then output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.$objext lockfile=$output_obj.lock else output_obj= need_locks=no lockfile= fi # Lock this critical section if it is needed # We use this script file to make the link, it avoids creating a new file if test yes = "$need_locks"; then until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done elif test warn = "$need_locks"; then if test -f "$lockfile"; then $ECHO "\ *** ERROR, $lockfile exists and contains: `cat $lockfile 2>/dev/null` This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi func_append removelist " $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist func_append removelist " $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 srcfile=$func_to_tool_file_result func_quote_arg pretty "$srcfile" qsrcfile=$func_quote_arg_result # Only build a PIC object if we are building libtool libraries. if test yes = "$build_libtool_libs"; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test no != "$pic_mode"; then command="$base_compile $qsrcfile $pic_flag" else # Don't build PIC code command="$base_compile $qsrcfile" fi func_mkdir_p "$xdir$objdir" if test -z "$output_obj"; then # Place PIC objects in $objdir func_append command " -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed, then go on to compile the next one if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then func_show_eval '$MV "$output_obj" "$lobj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi # Allow error messages only from the first compilation. if test yes = "$suppress_opt"; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test yes = "$build_old_libs"; then if test yes != "$pic_mode"; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test yes = "$compiler_c_o"; then func_append command " -o $obj" fi # Suppress compiler output if we already did a PIC compilation. func_append command "$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test warn = "$need_locks" && test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then $ECHO "\ *** ERROR, $lockfile contains: `cat $lockfile 2>/dev/null` but it should contain: $srcfile This indicates that another process is trying to use the same temporary object file, and libtool could not work around it because your compiler does not support '-c' and '-o' together. If you repeat this compilation, it may succeed, by chance, but you had better avoid parallel builds (make -j) in this platform, or get a better compiler." $opt_dry_run || $RM $removelist exit $EXIT_FAILURE fi # Just move the object if needed if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then func_show_eval '$MV "$output_obj" "$obj"' \ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' fi fi $opt_dry_run || { func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" # Unlock the critical section if it was locked if test no != "$need_locks"; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test compile = "$opt_mode" && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $opt_mode in "") # Generic help is extracted from the usage comments # at the start of this file. func_help ;; clean) $ECHO \ "Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... Remove files from the build directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, object or program, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; compile) $ECHO \ "Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE Compile a source file into a libtool library object. This mode accepts the following additional options: -o OUTPUT-FILE set the output file name to OUTPUT-FILE -no-suppress do not suppress compiler output for multiple passes -prefer-pic try to build PIC objects only -prefer-non-pic try to build non-PIC objects only -shared do not build a '.o' file suitable for static linking -static only build a '.o' file suitable for static linking -Wc,FLAG pass FLAG directly to the compiler COMPILE-COMMAND is a command to be used in creating a 'standard' object file from the given SOURCEFILE. The output file name is determined by removing the directory component from SOURCEFILE, then substituting the C source code suffix '.c' with the library object suffix, '.lo'." ;; execute) $ECHO \ "Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... Automatically set library path, then run a program. This mode accepts the following additional options: -dlopen FILE add the directory containing FILE to the library path This mode sets the library path environment variable according to '-dlopen' flags. If any of the ARGS are libtool executable wrappers, then they are translated into their corresponding uninstalled binary, and any of their required library directories are added to the library path. Then, COMMAND is executed, with ARGS as arguments." ;; finish) $ECHO \ "Usage: $progname [OPTION]... --mode=finish [LIBDIR]... Complete the installation of libtool libraries. Each LIBDIR is a directory that contains libtool libraries. The commands that this mode executes may require superuser privileges. Use the '--dry-run' option if you just want to see what would be executed." ;; install) $ECHO \ "Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... Install executables or libraries. INSTALL-COMMAND is the installation command. The first component should be either the 'install' or 'cp' program. The following components of INSTALL-COMMAND are treated specially: -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation The rest of the components are interpreted as arguments to that command (only BSD-compatible install options are recognized)." ;; link) $ECHO \ "Usage: $progname [OPTION]... --mode=link LINK-COMMAND... Link object files or libraries together to form another library, or to create an executable program. LINK-COMMAND is a command using the C compiler that you would use to create a program from several object files. The following components of LINK-COMMAND are treated specially: -all-static do not do any dynamic linking at all -avoid-version do not add a version suffix if possible -bindir BINDIR specify path to binaries directory (for systems where libraries must be found in the PATH setting at runtime) -dlopen FILE '-dlpreopen' FILE if it cannot be dlopened at runtime -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -export-symbols SYMFILE try to export only the symbols listed in SYMFILE -export-symbols-regex REGEX try to export only the symbols matching REGEX -LLIBDIR search LIBDIR for required installed libraries -lNAME OUTPUT-FILE requires the installed library libNAME -module build a library that can dlopened -no-fast-install disable the fast-install mode -no-install link a not-installable executable -no-undefined declare that a library does not refer to external symbols -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -objectlist FILE use a list of object files found in FILE to specify objects -os2dllname NAME force a short DLL name on OS/2 (no effect on other OSes) -precious-files-regex REGEX don't remove output files matching REGEX -release RELEASE specify package release information -rpath LIBDIR the created library will eventually be installed in LIBDIR -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -shared only do dynamic linking of libtool libraries -shrext SUFFIX override the standard shared library file extension -static do not do any dynamic linking of uninstalled libtool libraries -static-libtool-libs do not do any dynamic linking of libtool libraries -version-info CURRENT[:REVISION[:AGE]] specify library version info [each variable defaults to 0] -weak LIBNAME declare that the target provides the LIBNAME interface -Wc,FLAG -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -Wl,FLAG -Xlinker FLAG pass linker-specific FLAG directly to the linker -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) All other options (arguments beginning with '-') are ignored. Every other argument is treated as a filename. Files ending in '.la' are treated as uninstalled libtool libraries, other files are standard or library object files. If the OUTPUT-FILE ends in '.la', then a libtool library is created, only library objects ('.lo' files) may be specified, and '-rpath' is required, except when creating a convenience library. If OUTPUT-FILE ends in '.a' or '.lib', then a standard library is created using 'ar' and 'ranlib', or on Windows using 'lib'. If OUTPUT-FILE ends in '.lo' or '.$objext', then a reloadable object file is created, otherwise an executable program is created." ;; uninstall) $ECHO \ "Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... Remove libraries from an installation directory. RM is the name of the program to use to delete files associated with each FILE (typically '/bin/rm'). RM-OPTIONS are options (such as '-f') to be passed to RM. If FILE is a libtool library, all the files associated with it are deleted. Otherwise, only FILE itself is deleted using RM." ;; *) func_fatal_help "invalid operation mode '$opt_mode'" ;; esac echo $ECHO "Try '$progname --help' for more information about other modes." } # Now that we've collected a possible --mode arg, show help if necessary if $opt_help; then if test : = "$opt_help"; then func_mode_help else { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do func_mode_help done } | $SED -n '1p; 2,$s/^Usage:/ or: /p' { func_help noexit for opt_mode in compile link execute install finish uninstall clean; do echo func_mode_help done } | $SED '1d /^When reporting/,/^Report/{ H d } $x /information about other modes/d /more detailed .*MODE/d s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' fi exit $? fi # func_mode_execute arg... func_mode_execute () { $debug_cmd # The first argument is the command name. cmd=$nonopt test -z "$cmd" && \ func_fatal_help "you must specify a COMMAND" # Handle -dlopen flags immediately. for file in $opt_dlopen; do test -f "$file" \ || func_fatal_help "'$file' is not a file" dir= case $file in *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$lib' is not a valid libtool archive" # Read the libtool library. dlname= library_names= func_source "$file" # Skip this library if it cannot be dlopened. if test -z "$dlname"; then # Warn if it was a shared library. test -n "$library_names" && \ func_warning "'$file' was not linked with '-export-dynamic'" continue fi func_dirname "$file" "" "." dir=$func_dirname_result if test -f "$dir/$objdir/$dlname"; then func_append dir "/$objdir" else if test ! -f "$dir/$dlname"; then func_fatal_error "cannot find '$dlname' in '$dir' or '$dir/$objdir'" fi fi ;; *.lo) # Just add the directory containing the .lo file. func_dirname "$file" "" "." dir=$func_dirname_result ;; *) func_warning "'-dlopen' is ignored for non-libtool libraries and objects" continue ;; esac # Get the absolute pathname. absdir=`cd "$dir" && pwd` test -n "$absdir" && dir=$absdir # Now add the directory to shlibpath_var. if eval "test -z \"\$$shlibpath_var\""; then eval "$shlibpath_var=\"\$dir\"" else eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" fi done # This variable tells wrapper scripts just to set shlibpath_var # rather than running their programs. libtool_execute_magic=$magic # Check if any of the arguments is a wrapper script. args= for file do case $file in -* | *.la | *.lo ) ;; *) # Do a test to see if this is really a libtool program. if func_ltwrapper_script_p "$file"; then func_source "$file" # Transform arg to wrapped name. file=$progdir/$program elif func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" func_source "$func_ltwrapper_scriptname_result" # Transform arg to wrapped name. file=$progdir/$program fi ;; esac # Quote arguments (to preserve shell metacharacters). func_append_quoted args "$file" done if $opt_dry_run; then # Display what would be done. if test -n "$shlibpath_var"; then eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" echo "export $shlibpath_var" fi $ECHO "$cmd$args" exit $EXIT_SUCCESS else if test -n "$shlibpath_var"; then # Export the shlibpath_var. eval "export $shlibpath_var" fi # Restore saved environment variables for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${save_$lt_var+set}\" = set; then $lt_var=\$save_$lt_var; export $lt_var else $lt_unset $lt_var fi" done # Now prepare to actually exec the command. exec_cmd=\$cmd$args fi } test execute = "$opt_mode" && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $debug_cmd libs= libdirs= admincmds= for opt in "$nonopt" ${1+"$@"} do if test -d "$opt"; then func_append libdirs " $opt" elif test -f "$opt"; then if func_lalib_unsafe_p "$opt"; then func_append libs " $opt" else func_warning "'$opt' is not a valid libtool archive" fi else func_fatal_error "invalid argument '$opt'" fi done if test -n "$libs"; then if test -n "$lt_sysroot"; then sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" else sysroot_cmd= fi # Remove sysroot references if $opt_dry_run; then for lib in $libs; do echo "removing references to $lt_sysroot and '=' prefixes from $lib" done else tmpdir=`func_mktempdir` for lib in $libs; do $SED -e "$sysroot_cmd s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ > $tmpdir/tmp-la mv -f $tmpdir/tmp-la $lib done ${RM}r "$tmpdir" fi fi if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for libdir in $libdirs; do if test -n "$finish_cmds"; then # Do each command in the finish commands. func_execute_cmds "$finish_cmds" 'admincmds="$admincmds '"$cmd"'"' fi if test -n "$finish_eval"; then # Do the single finish_eval. eval cmds=\"$finish_eval\" $opt_dry_run || eval "$cmds" || func_append admincmds " $cmds" fi done fi # Exit here if they wanted silent mode. $opt_quiet && exit $EXIT_SUCCESS if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then echo "----------------------------------------------------------------------" echo "Libraries have been installed in:" for libdir in $libdirs; do $ECHO " $libdir" done echo echo "If you ever happen to want to link against installed libraries" echo "in a given directory, LIBDIR, you must either use libtool, and" echo "specify the full pathname of the library, or use the '-LLIBDIR'" echo "flag during linking and do at least one of the following:" if test -n "$shlibpath_var"; then echo " - add LIBDIR to the '$shlibpath_var' environment variable" echo " during execution" fi if test -n "$runpath_var"; then echo " - add LIBDIR to the '$runpath_var' environment variable" echo " during linking" fi if test -n "$hardcode_libdir_flag_spec"; then libdir=LIBDIR eval flag=\"$hardcode_libdir_flag_spec\" $ECHO " - use the '$flag' linker flag" fi if test -n "$admincmds"; then $ECHO " - have your system administrator run these commands:$admincmds" fi if test -f /etc/ld.so.conf; then echo " - have your system administrator add LIBDIR to '/etc/ld.so.conf'" fi echo echo "See any operating system documentation about shared libraries for" case $host in solaris2.[6789]|solaris2.1[0-9]) echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" echo "pages." ;; *) echo "more information, such as the ld(1) and ld.so(8) manual pages." ;; esac echo "----------------------------------------------------------------------" fi exit $EXIT_SUCCESS } test finish = "$opt_mode" && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $debug_cmd # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$SHELL" = "$nonopt" || test /bin/sh = "$nonopt" || # Allow the use of GNU shtool's install command. case $nonopt in *shtool*) :;; *) false;; esac then # Aesthetically quote it. func_quote_arg pretty "$nonopt" install_prog="$func_quote_arg_result " arg=$1 shift else install_prog= arg=$nonopt fi # The real first argument should be the name of the installation program. # Aesthetically quote it. func_quote_arg pretty "$arg" func_append install_prog "$func_quote_arg_result" install_shared_prog=$install_prog case " $install_prog " in *[\\\ /]cp\ *) install_cp=: ;; *) install_cp=false ;; esac # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=false stripme= no_mode=: for arg do arg2= if test -n "$dest"; then func_append files " $dest" dest=$arg continue fi case $arg in -d) isdir=: ;; -f) if $install_cp; then :; else prev=$arg fi ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then if test X-m = "X$prev" && test -n "$install_override_mode"; then arg2=$install_override_mode no_mode=false fi prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_arg pretty "$arg" func_append install_prog " $func_quote_arg_result" if test -n "$arg2"; then func_quote_arg pretty "$arg2" fi func_append install_shared_prog " $func_quote_arg_result" done test -z "$install_prog" && \ func_fatal_help "you must specify an install program" test -n "$prev" && \ func_fatal_help "the '$prev' option requires an argument" if test -n "$install_override_mode" && $no_mode; then if $install_cp; then :; else func_quote_arg pretty "$install_override_mode" func_append install_shared_prog " -m $func_quote_arg_result" fi fi if test -z "$files"; then if test -z "$dest"; then func_fatal_help "no file or destination specified" else func_fatal_help "you must specify a destination" fi fi # Strip any trailing slash from the destination. func_stripname '' '/' "$dest" dest=$func_stripname_result # Check to see that the destination is a directory. test -d "$dest" && isdir=: if $isdir; then destdir=$dest destname= else func_dirname_and_basename "$dest" "" "." destdir=$func_dirname_result destname=$func_basename_result # Not a directory, so check to see that there is only one file specified. set dummy $files; shift test "$#" -gt 1 && \ func_fatal_help "'$dest' is not a directory" fi case $destdir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) for file in $files; do case $file in *.lo) ;; *) func_fatal_help "'$destdir' must be an absolute directory name" ;; esac done ;; esac # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic staticlibs= future_libdirs= current_libdirs= for file in $files; do # Do each installation. case $file in *.$libext) # Do the static libraries later. func_append staticlibs " $file" ;; *.la) func_resolve_sysroot "$file" file=$func_resolve_sysroot_result # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$file" \ || func_fatal_help "'$file' is not a valid libtool archive" library_names= old_library= relink_command= func_source "$file" # Add the libdir to current_libdirs if it is the destination. if test "X$destdir" = "X$libdir"; then case "$current_libdirs " in *" $libdir "*) ;; *) func_append current_libdirs " $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) func_append future_libdirs " $libdir" ;; esac fi func_dirname "$file" "/" "" dir=$func_dirname_result func_append dir "$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` # Don't allow the user to place us outside of our expected # location b/c this prevents finding dependent libraries that # are installed to the same prefix. # At present, this check doesn't affect windows .dll's that # are installed into $libdir/../bin (currently, that works fine) # but it's something to keep an eye on. test "$inst_prefix_dir" = "$destdir" && \ func_fatal_error "error: cannot install '$file' to a directory not ending in $libdir" if test -n "$inst_prefix_dir"; then # Stick the inst_prefix_dir data into the link command. relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` fi func_warning "relinking '$file'" func_show_eval "$relink_command" \ 'func_fatal_error "error: relink '\''$file'\'' with the above command before installing it"' fi # See the names of the shared library. set dummy $library_names; shift if test -n "$1"; then realname=$1 shift srcname=$realname test -n "$relink_command" && srcname=${realname}T # Install the shared library and build the symlinks. func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme=$stripme case $host_os in cygwin* | mingw* | pw32* | cegcc*) case $realname in *.dll.a) tstripme= ;; esac ;; os2*) case $realname in *_dll.a) tstripme= ;; esac ;; esac if test -n "$tstripme" && test -n "$striplib"; then func_show_eval "$striplib $destdir/$realname" 'exit $?' fi if test "$#" -gt 0; then # Delete the old symlinks, and create new ones. # Try 'ln -sf' first, because the 'ln' binary might depend on # the symlink we replace! Solaris /bin/ln does not understand -f, # so we also need to try rm && ln -s. for linkname do test "$linkname" != "$realname" \ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" done fi # Do each command in the postinstall commands. lib=$destdir/$realname func_execute_cmds "$postinstall_cmds" 'exit $?' fi # Install the pseudo-library for information purposes. func_basename "$file" name=$func_basename_result instname=$dir/${name}i func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' # Maybe install the static library, too. test -n "$old_library" && func_append staticlibs " $dir/$old_library" ;; *.lo) # Install (i.e. copy) a libtool object. # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # Deduce the name of the destination old-style object file. case $destfile in *.lo) func_lo2o "$destfile" staticdest=$func_lo2o_result ;; *.$objext) staticdest=$destfile destfile= ;; *) func_fatal_help "cannot copy a libtool object to '$destfile'" ;; esac # Install the libtool object if requested. test -n "$destfile" && \ func_show_eval "$install_prog $file $destfile" 'exit $?' # Install the old object if enabled. if test yes = "$build_old_libs"; then # Deduce the name of the old-style object file. func_lo2o "$file" staticobj=$func_lo2o_result func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' fi exit $EXIT_SUCCESS ;; *) # Figure out destination file name, if it wasn't already specified. if test -n "$destname"; then destfile=$destdir/$destname else func_basename "$file" destfile=$func_basename_result destfile=$destdir/$destfile fi # If the file is missing, and there is a .exe on the end, strip it # because it is most likely a libtool script we actually want to # install stripped_ext= case $file in *.exe) if test ! -f "$file"; then func_stripname '' '.exe' "$file" file=$func_stripname_result stripped_ext=.exe fi ;; esac # Do a test to see if this is really a libtool program. case $host in *cygwin* | *mingw*) if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" wrapper=$func_ltwrapper_scriptname_result else func_stripname '' '.exe' "$file" wrapper=$func_stripname_result fi ;; *) wrapper=$file ;; esac if func_ltwrapper_script_p "$wrapper"; then notinst_deplibs= relink_command= func_source "$wrapper" # Check the variables that should have been set. test -z "$generated_by_libtool_version" && \ func_fatal_error "invalid libtool wrapper script '$wrapper'" finalize=: for lib in $notinst_deplibs; do # Check to see that each library is installed. libdir= if test -f "$lib"; then func_source "$lib" fi libfile=$libdir/`$ECHO "$lib" | $SED 's%^.*/%%g'` if test -n "$libdir" && test ! -f "$libfile"; then func_warning "'$lib' has not been installed in '$libdir'" finalize=false fi done relink_command= func_source "$wrapper" outputname= if test no = "$fast_install" && test -n "$relink_command"; then $opt_dry_run || { if $finalize; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file=$func_basename_result outputname=$tmpdir/$file # Replace the output file specification. relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` $opt_quiet || { func_quote_arg expand,pretty "$relink_command" eval "func_echo $func_quote_arg_result" } if eval "$relink_command"; then : else func_error "error: relink '$file' with the above command before installing it" $opt_dry_run || ${RM}r "$tmpdir" continue fi file=$outputname else func_warning "cannot relink '$file'" fi } else # Install the binary that we compiled earlier. file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` fi fi # remove .exe since cygwin /usr/bin/install will append another # one anyway case $install_prog,$host in */usr/bin/install*,*cygwin*) case $file:$destfile in *.exe:*.exe) # this is ok ;; *.exe:*) destfile=$destfile.exe ;; *:*.exe) func_stripname '' '.exe' "$destfile" destfile=$func_stripname_result ;; esac ;; esac func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' $opt_dry_run || if test -n "$outputname"; then ${RM}r "$tmpdir" fi ;; esac done for file in $staticlibs; do func_basename "$file" name=$func_basename_result # Set up the ranlib parameters. oldlib=$destdir/$name func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result func_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $tool_oldlib" 'exit $?' fi # Do each command in the postinstall commands. func_execute_cmds "$old_postinstall_cmds" 'exit $?' done test -n "$future_libdirs" && \ func_warning "remember to run '$progname --finish$future_libdirs'" if test -n "$current_libdirs"; then # Maybe just do a dry run. $opt_dry_run && current_libdirs=" -n$current_libdirs" exec_cmd='$SHELL "$progpath" $preserve_args --finish$current_libdirs' else exit $EXIT_SUCCESS fi } test install = "$opt_mode" && func_mode_install ${1+"$@"} # func_generate_dlsyms outputname originator pic_p # Extract symbols from dlprefiles and create ${outputname}S.o with # a dlpreopen symbol table. func_generate_dlsyms () { $debug_cmd my_outputname=$1 my_originator=$2 my_pic_p=${3-false} my_prefix=`$ECHO "$my_originator" | $SED 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then if test -n "$NM" && test -n "$global_symbol_pipe"; then my_dlsyms=${my_outputname}S.c else func_error "not configured to extract global symbols from dlpreopened files" fi fi if test -n "$my_dlsyms"; then case $my_dlsyms in "") ;; *.c) # Discover the nlist of each of the dlfiles. nlist=$output_objdir/$my_outputname.nm func_show_eval "$RM $nlist ${nlist}S ${nlist}T" # Parse the name list into a source file. func_verbose "creating $output_objdir/$my_dlsyms" $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ /* $my_dlsyms - symbol resolution table for '$my_outputname' dlsym emulation. */ /* Generated by $PROGRAM (GNU $PACKAGE) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif #if defined __GNUC__ && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) #pragma GCC diagnostic ignored \"-Wstrict-prototypes\" #endif /* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ #if defined _WIN32 || defined __CYGWIN__ || defined _WIN32_WCE /* DATA imports from DLLs on WIN32 can't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */ # define LT_DLSYM_CONST #elif defined __osf__ /* This system does not cope well with relocations in const data. */ # define LT_DLSYM_CONST #else # define LT_DLSYM_CONST const #endif #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* External symbol declarations for the compiler. */\ " if test yes = "$dlself"; then func_verbose "generating symbol list for '$output'" $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" # Add our own program objects to the symbol list. progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` for progfile in $progfiles; do func_to_tool_file "$progfile" func_convert_file_msys_to_w32 func_verbose "extracting global C symbols from '$func_to_tool_file_result'" $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" done if test -n "$exclude_expsyms"; then $opt_dry_run || { eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi if test -n "$export_symbols_regex"; then $opt_dry_run || { eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' } fi # Prepare the list of exported symbols if test -z "$export_symbols"; then export_symbols=$output_objdir/$outputname.exp $opt_dry_run || { $RM $export_symbols eval "$SED -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' ;; esac } else $opt_dry_run || { eval "$SED -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' eval '$MV "$nlist"T "$nlist"' case $host in *cygwin* | *mingw* | *cegcc* ) eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' ;; esac } fi fi for dlprefile in $dlprefiles; do func_verbose "extracting global C symbols from '$dlprefile'" func_basename "$dlprefile" name=$func_basename_result case $host in *cygwin* | *mingw* | *cegcc* ) # if an import library, we need to obtain dlname if func_win32_import_lib_p "$dlprefile"; then func_tr_sh "$dlprefile" eval "curr_lafile=\$libfile_$func_tr_sh_result" dlprefile_dlbasename= if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then # Use subshell, to avoid clobbering current variable values dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` if test -n "$dlprefile_dlname"; then func_basename "$dlprefile_dlname" dlprefile_dlbasename=$func_basename_result else # no lafile. user explicitly requested -dlpreopen . $sharedlib_from_linklib_cmd "$dlprefile" dlprefile_dlbasename=$sharedlib_from_linklib_result fi fi $opt_dry_run || { if test -n "$dlprefile_dlbasename"; then eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' else func_warning "Could not compute DLL name from $name" eval '$ECHO ": $name " >> "$nlist"' fi func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" } else # not an import lib $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } fi ;; *) $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" } ;; esac done $opt_dry_run || { # Make sure we have at least an empty file. test -f "$nlist" || : > "$nlist" if test -n "$exclude_expsyms"; then $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T $MV "$nlist"T "$nlist" fi # Try sorting and uniquifying the output. if $GREP -v "^: " < "$nlist" | if sort -k 3 /dev/null 2>&1; then sort -k 3 else sort +2 fi | uniq > "$nlist"S; then : else $GREP -v "^: " < "$nlist" > "$nlist"S fi if test -f "$nlist"S; then eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' else echo '/* NONE */' >> "$output_objdir/$my_dlsyms" fi func_show_eval '$RM "${nlist}I"' if test -n "$global_symbol_to_import"; then eval "$global_symbol_to_import"' < "$nlist"S > "$nlist"I' fi echo >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; extern LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[];\ " if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ static void lt_syminit(void) { LT_DLSYM_CONST lt_dlsymlist *symbol = lt_${my_prefix}_LTX_preloaded_symbols; for (; symbol->name; ++symbol) {" $SED 's/.*/ if (STREQ (symbol->name, \"&\")) symbol->address = (void *) \&&;/' < "$nlist"I >> "$output_objdir/$my_dlsyms" echo >> "$output_objdir/$my_dlsyms" "\ } }" fi echo >> "$output_objdir/$my_dlsyms" "\ LT_DLSYM_CONST lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = { {\"$my_originator\", (void *) 0}," if test -s "$nlist"I; then echo >> "$output_objdir/$my_dlsyms" "\ {\"@INIT@\", (void *) <_syminit}," fi case $need_lib_prefix in no) eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; *) eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" ;; esac echo >> "$output_objdir/$my_dlsyms" "\ {0, (void *) 0} }; /* This works around a problem in FreeBSD linker */ #ifdef FREEBSD_WORKAROUND static const void *lt_preloaded_setup() { return lt_${my_prefix}_LTX_preloaded_symbols; } #endif #ifdef __cplusplus } #endif\ " } # !$opt_dry_run pic_flag_for_symtable= case "$compile_command " in *" -static "*) ;; *) case $host in # compiling the symbol table file with pic_flag works around # a FreeBSD bug that causes programs to crash when -lm is # linked before any other PIC object. But we must not use # pic_flag when linking with -static. The problem exists in # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; *-*-hpux*) pic_flag_for_symtable=" $pic_flag" ;; *) $my_pic_p && pic_flag_for_symtable=" $pic_flag" ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) func_append symtab_cflags " $arg" ;; esac done # Now compile the dynamic symbol file. func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' # Clean up the generated files. func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T" "${nlist}I"' # Transform the symbol file into the correct name. symfileobj=$output_objdir/${my_outputname}S.$objext case $host in *cygwin* | *mingw* | *cegcc* ) if test -f "$output_objdir/$my_outputname.def"; then compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` ;; esac ;; *) func_fatal_error "unknown suffix for '$my_dlsyms'" ;; esac else # We keep going just in case the user didn't refer to # lt_preloaded_symbols. The linker will fail if global_symbol_pipe # really was required. # Nullify the symbol file. compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` fi } # func_cygming_gnu_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is a GNU/binutils-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_gnu_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` test -n "$func_cygming_gnu_implib_tmp" } # func_cygming_ms_implib_p ARG # This predicate returns with zero status (TRUE) if # ARG is an MS-style import library. Returns # with nonzero status (FALSE) otherwise. func_cygming_ms_implib_p () { $debug_cmd func_to_tool_file "$1" func_convert_file_msys_to_w32 func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` test -n "$func_cygming_ms_implib_tmp" } # func_win32_libid arg # return the library type of file 'arg' # # Need a lot of goo to handle *both* DLLs and import libs # Has to be a shell function in order to 'eat' the argument # that is supplied when $file_magic_command is called. # Despite the name, also deal with 64 bit binaries. func_win32_libid () { $debug_cmd win32_libid_type=unknown win32_fileres=`file -L $1 2>/dev/null` case $win32_fileres in *ar\ archive\ import\ library*) # definitely import win32_libid_type="x86 archive import" ;; *ar\ archive*) # could be an import, or static # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then case $nm_interface in "MS dumpbin") if func_cygming_ms_implib_p "$1" || func_cygming_gnu_implib_p "$1" then win32_nmres=import else win32_nmres= fi ;; *) func_to_tool_file "$1" func_convert_file_msys_to_w32 win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | $SED -n -e ' 1,100{ / I /{ s|.*|import| p q } }'` ;; esac case $win32_nmres in import*) win32_libid_type="x86 archive import";; *) win32_libid_type="x86 archive static";; esac fi ;; *DLL*) win32_libid_type="x86 DLL" ;; *executable*) # but shell scripts are "executable" too... case $win32_fileres in *MS\ Windows\ PE\ Intel*) win32_libid_type="x86 DLL" ;; esac ;; esac $ECHO "$win32_libid_type" } # func_cygming_dll_for_implib ARG # # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib () { $debug_cmd sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` } # func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs # # The is the core of a fallback implementation of a # platform-specific function to extract the name of the # DLL associated with the specified import library LIBNAME. # # SECTION_NAME is either .idata$6 or .idata$7, depending # on the platform and compiler that created the implib. # # Echos the name of the DLL associated with the # specified import library. func_cygming_dll_for_implib_fallback_core () { $debug_cmd match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` $OBJDUMP -s --section "$1" "$2" 2>/dev/null | $SED '/^Contents of section '"$match_literal"':/{ # Place marker at beginning of archive member dllname section s/.*/====MARK====/ p d } # These lines can sometimes be longer than 43 characters, but # are always uninteresting /:[ ]*file format pe[i]\{,1\}-/d /^In archive [^:]*:/d # Ensure marker is printed /^====MARK====/p # Remove all lines with less than 43 characters /^.\{43\}/!d # From remaining lines, remove first 43 characters s/^.\{43\}//' | $SED -n ' # Join marker and all lines until next marker into a single line /^====MARK====/ b para H $ b para b :para x s/\n//g # Remove the marker s/^====MARK====// # Remove trailing dots and whitespace s/[\. \t]*$// # Print /./p' | # we now have a list, one entry per line, of the stringified # contents of the appropriate section of all members of the # archive that possess that section. Heuristic: eliminate # all those that have a first or second character that is # a '.' (that is, objdump's representation of an unprintable # character.) This should work for all archives with less than # 0x302f exports -- but will fail for DLLs whose name actually # begins with a literal '.' or a single character followed by # a '.'. # # Of those that remain, print the first one. $SED -e '/^\./d;/^.\./d;q' } # func_cygming_dll_for_implib_fallback ARG # Platform-specific function to extract the # name of the DLL associated with the specified # import library ARG. # # This fallback implementation is for use when $DLLTOOL # does not support the --identify-strict option. # Invoked by eval'ing the libtool variable # $sharedlib_from_linklib_cmd # Result is available in the variable # $sharedlib_from_linklib_result func_cygming_dll_for_implib_fallback () { $debug_cmd if func_cygming_gnu_implib_p "$1"; then # binutils import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` elif func_cygming_ms_implib_p "$1"; then # ms-generated import library sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` else # unknown sharedlib_from_linklib_result= fi } # func_extract_an_archive dir oldlib func_extract_an_archive () { $debug_cmd f_ex_an_ar_dir=$1; shift f_ex_an_ar_oldlib=$1 if test yes = "$lock_old_archive_extraction"; then lockfile=$f_ex_an_ar_oldlib.lock until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do func_echo "Waiting for $lockfile to be removed" sleep 2 done fi func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ 'stat=$?; rm -f "$lockfile"; exit $stat' if test yes = "$lock_old_archive_extraction"; then $opt_dry_run || rm -f "$lockfile" fi if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then : else func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" fi } # func_extract_archives gentop oldlib ... func_extract_archives () { $debug_cmd my_gentop=$1; shift my_oldlibs=${1+"$@"} my_oldobjs= my_xlib= my_xabs= my_xdir= for my_xlib in $my_oldlibs; do # Extract the objects. case $my_xlib in [\\/]* | [A-Za-z]:[\\/]*) my_xabs=$my_xlib ;; *) my_xabs=`pwd`"/$my_xlib" ;; esac func_basename "$my_xlib" my_xlib=$func_basename_result my_xlib_u=$my_xlib while :; do case " $extracted_archives " in *" $my_xlib_u "*) func_arith $extracted_serial + 1 extracted_serial=$func_arith_result my_xlib_u=lt$extracted_serial-$my_xlib ;; *) break ;; esac done extracted_archives="$extracted_archives $my_xlib_u" my_xdir=$my_gentop/$my_xlib_u func_mkdir_p "$my_xdir" case $host in *-darwin*) func_verbose "Extracting $my_xabs" # Do not bother doing anything if just a dry run $opt_dry_run || { darwin_orig_dir=`pwd` cd $my_xdir || exit $? darwin_archive=$my_xabs darwin_curdir=`pwd` func_basename "$darwin_archive" darwin_base_archive=$func_basename_result darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` if test -n "$darwin_arches"; then darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` darwin_arch= func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" for darwin_arch in $darwin_arches; do func_mkdir_p "unfat-$$/$darwin_base_archive-$darwin_arch" $LIPO -thin $darwin_arch -output "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" "$darwin_archive" cd "unfat-$$/$darwin_base_archive-$darwin_arch" func_extract_an_archive "`pwd`" "$darwin_base_archive" cd "$darwin_curdir" $RM "unfat-$$/$darwin_base_archive-$darwin_arch/$darwin_base_archive" done # $darwin_arches ## Okay now we've a bunch of thin objects, gotta fatten them up :) darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$sed_basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` $LIPO -create -output "$darwin_file" $darwin_files done # $darwin_filelist $RM -rf unfat-$$ cd "$darwin_orig_dir" else cd $darwin_orig_dir func_extract_an_archive "$my_xdir" "$my_xabs" fi # $darwin_arches } # !$opt_dry_run ;; *) func_extract_an_archive "$my_xdir" "$my_xabs" ;; esac my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` done func_extract_archives_result=$my_oldobjs } # func_emit_wrapper [arg=no] # # Emit a libtool wrapper script on stdout. # Don't directly open a file because we may want to # incorporate the script contents within a cygwin/mingw # wrapper executable. Must ONLY be called from within # func_mode_link because it depends on a number of variables # set therein. # # ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR # variable will take. If 'yes', then the emitted script # will assume that the directory where it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=${1-no} $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # The $output program cannot be directly executed until all the libtool # libraries that it depends on are installed. # # This wrapper script should never be moved out of the build directory. # If it is, it will not operate correctly. # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. sed_quote_subst='$sed_quote_subst' # Be Bourne compatible if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then emulate sh NULLCMD=: # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which # is contrary to our usage. Disable this feature. alias -g '\${1+\"\$@\"}'='\"\$@\"' setopt NO_GLOB_SUBST else case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac fi BIN_SH=xpg4; export BIN_SH # for Tru64 DUALCASE=1; export DUALCASE # for MKS sh # The HP-UX ksh and POSIX shell print the target directory to stdout # if CDPATH is set. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH relink_command=\"$relink_command\" # This environment variable determines our operation mode. if test \"\$libtool_install_magic\" = \"$magic\"; then # install mode needs the following variables: generated_by_libtool_version='$macro_version' notinst_deplibs='$notinst_deplibs' else # When we are sourced in execute mode, \$file and \$ECHO are already set. if test \"\$libtool_execute_magic\" != \"$magic\"; then file=\"\$0\"" func_quote_arg pretty "$ECHO" qECHO=$func_quote_arg_result $ECHO "\ # A function that is used when there is no print builtin or printf. func_fallback_echo () { eval 'cat <<_LTECHO_EOF \$1 _LTECHO_EOF' } ECHO=$qECHO fi # Very basic option parsing. These options are (a) specific to # the libtool wrapper, (b) are identical between the wrapper # /script/ and the wrapper /executable/ that is used only on # windows platforms, and (c) all begin with the string "--lt-" # (application programs are unlikely to have options that match # this pattern). # # There are only two supported options: --lt-debug and # --lt-dump-script. There is, deliberately, no --lt-help. # # The first argument to this parsing function should be the # script's $0 value, followed by "$@". lt_option_debug= func_parse_lt_options () { lt_script_arg0=\$0 shift for lt_opt do case \"\$lt_opt\" in --lt-debug) lt_option_debug=1 ;; --lt-dump-script) lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` cat \"\$lt_dump_D/\$lt_dump_F\" exit 0 ;; --lt-*) \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 exit 1 ;; esac done # Print the debug banner immediately: if test -n \"\$lt_option_debug\"; then echo \"$outputname:$output:\$LINENO: libtool wrapper (GNU $PACKAGE) $VERSION\" 1>&2 fi } # Used when --lt-debug. Prints its arguments to stdout # (redirection is the responsibility of the caller) func_lt_dump_args () { lt_dump_args_N=1; for lt_arg do \$ECHO \"$outputname:$output:\$LINENO: newargv[\$lt_dump_args_N]: \$lt_arg\" lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` done } # Core function for launching the target application func_exec_program_core () { " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir\\\\\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ if test -n \"\$lt_option_debug\"; then \$ECHO \"$outputname:$output:\$LINENO: newargv[0]: \$progdir/\$program\" 1>&2 func_lt_dump_args \${1+\"\$@\"} 1>&2 fi exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 1 } # A function to encapsulate launching the target application # Strips options in the --lt-* namespace from \$@ and # launches target application with the remaining arguments. func_exec_program () { case \" \$* \" in *\\ --lt-*) for lt_wr_arg do case \$lt_wr_arg in --lt-*) ;; *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; esac shift done ;; esac func_exec_program_core \${1+\"\$@\"} } # Parse options func_parse_lt_options \"\$0\" \${1+\"\$@\"} # Find the directory that this script lives in. thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` test \"x\$thisdir\" = \"x\$file\" && thisdir=. # Follow symbolic links until we get to the real thisdir. file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` while test -n \"\$file\"; do destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` # If there was a directory component, then change thisdir. if test \"x\$destdir\" != \"x\$file\"; then case \"\$destdir\" in [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; *) thisdir=\"\$thisdir/\$destdir\" ;; esac fi file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` done # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then # special case for '.' if test \"\$thisdir\" = \".\"; then thisdir=\`pwd\` fi # remove .libs from thisdir case \"\$thisdir\" in *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test yes = "$fast_install"; then $ECHO "\ program=lt-'$outputname'$exeext progdir=\"\$thisdir/$objdir\" if test ! -f \"\$progdir/\$program\" || { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | $SED 1q\`; \\ test \"X\$file\" != \"X\$progdir/\$program\"; }; then file=\"\$\$-\$program\" if test ! -d \"\$progdir\"; then $MKDIR \"\$progdir\" else $RM \"\$progdir/\$file\" fi" $ECHO "\ # relink executable if necessary if test -n \"\$relink_command\"; then if relink_command_output=\`eval \$relink_command 2>&1\`; then : else \$ECHO \"\$relink_command_output\" >&2 $RM \"\$progdir/\$file\" exit 1 fi fi $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || { $RM \"\$progdir/\$program\"; $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } $RM \"\$progdir/\$file\" fi" else $ECHO "\ program='$outputname' progdir=\"\$thisdir/$objdir\" " fi $ECHO "\ if test -f \"\$progdir/\$program\"; then" # fixup the dll searchpath if we need to. # # Fix the DLL searchpath if we need to. Do this before prepending # to shlibpath, because on Windows, both are PATH and uninstalled # libraries must come first. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi # Export our shlibpath_var if we have one. if test yes = "$shlibpath_overrides_runpath" && test -n "$shlibpath_var" && test -n "$temp_rpath"; then $ECHO "\ # Add our own library path to $shlibpath_var $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" # Some systems cannot cope with colon-terminated $shlibpath_var # The second colon is a workaround for a bug in BeOS R4 sed $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` export $shlibpath_var " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. func_exec_program \${1+\"\$@\"} fi else # The program doesn't exist. \$ECHO \"\$0: error: '\$progdir/\$program' does not exist\" 1>&2 \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 exit 1 fi fi\ " } # func_emit_cwrapperexe_src # emit the source code for a wrapper executable on stdout # Must ONLY be called from within func_mode_link because # it depends on a number of variable set therein. func_emit_cwrapperexe_src () { cat < #include #ifdef _MSC_VER # include # include # include #else # include # include # ifdef __CYGWIN__ # include # endif #endif #include #include #include #include #include #include #include #include #define STREQ(s1, s2) (strcmp ((s1), (s2)) == 0) /* declarations of non-ANSI functions */ #if defined __MINGW32__ # ifdef __STRICT_ANSI__ int _putenv (const char *); # endif #elif defined __CYGWIN__ # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif /* #elif defined other_platform || defined ... */ #endif /* portability defines, excluding path handling macros */ #if defined _MSC_VER # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv # define S_IXUSR _S_IEXEC #elif defined __MINGW32__ # define setmode _setmode # define stat _stat # define chmod _chmod # define getcwd _getcwd # define putenv _putenv #elif defined __CYGWIN__ # define HAVE_SETENV # define FOPEN_WB "wb" /* #elif defined other platforms ... */ #endif #if defined PATH_MAX # define LT_PATHMAX PATH_MAX #elif defined MAXPATHLEN # define LT_PATHMAX MAXPATHLEN #else # define LT_PATHMAX 1024 #endif #ifndef S_IXOTH # define S_IXOTH 0 #endif #ifndef S_IXGRP # define S_IXGRP 0 #endif /* path handling portability macros */ #ifndef DIR_SEPARATOR # define DIR_SEPARATOR '/' # define PATH_SEPARATOR ':' #endif #if defined _WIN32 || defined __MSDOS__ || defined __DJGPP__ || \ defined __OS2__ # define HAVE_DOS_BASED_FILE_SYSTEM # define FOPEN_WB "wb" # ifndef DIR_SEPARATOR_2 # define DIR_SEPARATOR_2 '\\' # endif # ifndef PATH_SEPARATOR_2 # define PATH_SEPARATOR_2 ';' # endif #endif #ifndef DIR_SEPARATOR_2 # define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) #else /* DIR_SEPARATOR_2 */ # define IS_DIR_SEPARATOR(ch) \ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) #endif /* DIR_SEPARATOR_2 */ #ifndef PATH_SEPARATOR_2 # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) #else /* PATH_SEPARATOR_2 */ # define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) #endif /* PATH_SEPARATOR_2 */ #ifndef FOPEN_WB # define FOPEN_WB "w" #endif #ifndef _O_BINARY # define _O_BINARY 0 #endif #define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) #define XFREE(stale) do { \ if (stale) { free (stale); stale = 0; } \ } while (0) #if defined LT_DEBUGWRAPPER static int lt_debug = 1; #else static int lt_debug = 0; #endif const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ void *xmalloc (size_t num); char *xstrdup (const char *string); const char *base_name (const char *name); char *find_executable (const char *wrapper); char *chase_symlinks (const char *pathspec); int make_executable (const char *path); int check_executable (const char *path); char *strendzap (char *str, const char *pat); void lt_debugprintf (const char *file, int line, const char *fmt, ...); void lt_fatal (const char *file, int line, const char *message, ...); static const char *nonnull (const char *s); static const char *nonempty (const char *s); void lt_setenv (const char *name, const char *value); char *lt_extend_str (const char *orig_value, const char *add, int to_end); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); char **prepare_spawn (char **argv); void lt_dump_script (FILE *f); EOF cat <= 0) && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) return 1; else return 0; } int make_executable (const char *path) { int rval = 0; struct stat st; lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", nonempty (path)); if ((!path) || (!*path)) return 0; if (stat (path, &st) >= 0) { rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); } return rval; } /* Searches for the full path of the wrapper. Returns newly allocated full path name if found, NULL otherwise Does not chase symlinks, even on platforms that support them. */ char * find_executable (const char *wrapper) { int has_slash = 0; const char *p; const char *p_next; /* static buffer for getcwd */ char tmp[LT_PATHMAX + 1]; size_t tmp_len; char *concat_name; lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", nonempty (wrapper)); if ((wrapper == NULL) || (*wrapper == '\0')) return NULL; /* Absolute path? */ #if defined HAVE_DOS_BASED_FILE_SYSTEM if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } else { #endif if (IS_DIR_SEPARATOR (wrapper[0])) { concat_name = xstrdup (wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } #if defined HAVE_DOS_BASED_FILE_SYSTEM } #endif for (p = wrapper; *p; p++) if (*p == '/') { has_slash = 1; break; } if (!has_slash) { /* no slashes; search PATH */ const char *path = getenv ("PATH"); if (path != NULL) { for (p = path; *p; p = p_next) { const char *q; size_t p_len; for (q = p; *q; q++) if (IS_PATH_SEPARATOR (*q)) break; p_len = (size_t) (q - p); p_next = (*q == '\0' ? q : q + 1); if (p_len == 0) { /* empty path: current directory */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); } else { concat_name = XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, p, p_len); concat_name[p_len] = '/'; strcpy (concat_name + p_len + 1, wrapper); } if (check_executable (concat_name)) return concat_name; XFREE (concat_name); } } /* not found in PATH; assume curdir */ } /* Relative path | not found in path: prepend cwd */ if (getcwd (tmp, LT_PATHMAX) == NULL) lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", nonnull (strerror (errno))); tmp_len = strlen (tmp); concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); memcpy (concat_name, tmp, tmp_len); concat_name[tmp_len] = '/'; strcpy (concat_name + tmp_len + 1, wrapper); if (check_executable (concat_name)) return concat_name; XFREE (concat_name); return NULL; } char * chase_symlinks (const char *pathspec) { #ifndef S_ISLNK return xstrdup (pathspec); #else char buf[LT_PATHMAX]; struct stat s; char *tmp_pathspec = xstrdup (pathspec); char *p; int has_symlinks = 0; while (strlen (tmp_pathspec) && !has_symlinks) { lt_debugprintf (__FILE__, __LINE__, "checking path component for symlinks: %s\n", tmp_pathspec); if (lstat (tmp_pathspec, &s) == 0) { if (S_ISLNK (s.st_mode) != 0) { has_symlinks = 1; break; } /* search backwards for last DIR_SEPARATOR */ p = tmp_pathspec + strlen (tmp_pathspec) - 1; while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) p--; if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) { /* no more DIR_SEPARATORS left */ break; } *p = '\0'; } else { lt_fatal (__FILE__, __LINE__, "error accessing file \"%s\": %s", tmp_pathspec, nonnull (strerror (errno))); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal (__FILE__, __LINE__, "could not follow symlinks for %s", pathspec); } return xstrdup (tmp_pathspec); #endif } char * strendzap (char *str, const char *pat) { size_t len, patlen; assert (str != NULL); assert (pat != NULL); len = strlen (str); patlen = strlen (pat); if (patlen <= len) { str += len - patlen; if (STREQ (str, pat)) *str = '\0'; } return str; } void lt_debugprintf (const char *file, int line, const char *fmt, ...) { va_list args; if (lt_debug) { (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } } static void lt_error_core (int exit_status, const char *file, int line, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *file, int line, const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); va_end (ap); } static const char * nonnull (const char *s) { return s ? s : "(null)"; } static const char * nonempty (const char *s) { return (s && !*s) ? "(empty)" : nonnull (s); } void lt_setenv (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_setenv) setting '%s' to '%s'\n", nonnull (name), nonnull (value)); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else size_t len = strlen (name) + 1 + strlen (value) + 1; char *str = XMALLOC (char, len); sprintf (str, "%s=%s", name, value); if (putenv (str) != EXIT_SUCCESS) { XFREE (str); } #endif } } char * lt_extend_str (const char *orig_value, const char *add, int to_end) { char *new_value; if (orig_value && *orig_value) { size_t orig_value_len = strlen (orig_value); size_t add_len = strlen (add); new_value = XMALLOC (char, add_len + orig_value_len + 1); if (to_end) { strcpy (new_value, orig_value); strcpy (new_value + orig_value_len, add); } else { strcpy (new_value, add); strcpy (new_value + add_len, orig_value); } } else { new_value = xstrdup (add); } return new_value; } void lt_update_exe_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); /* some systems can't cope with a ':'-terminated path #' */ size_t len = strlen (new_value); while ((len > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[--len] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { lt_debugprintf (__FILE__, __LINE__, "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", nonnull (name), nonnull (value)); if (name && *name && value && *value) { char *new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); } } EOF case $host_os in mingw*) cat <<"EOF" /* Prepares an argument vector before calling spawn(). Note that spawn() does not by itself call the command interpreter (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); GetVersionEx(&v); v.dwPlatformId == VER_PLATFORM_WIN32_NT; }) ? "cmd.exe" : "command.com"). Instead it simply concatenates the arguments, separated by ' ', and calls CreateProcess(). We must quote the arguments since Win32 CreateProcess() interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a special way: - Space and tab are interpreted as delimiters. They are not treated as delimiters if they are surrounded by double quotes: "...". - Unescaped double quotes are removed from the input. Their only effect is that within double quotes, space and tab are treated like normal characters. - Backslashes not followed by double quotes are not special. - But 2*n+1 backslashes followed by a double quote become n backslashes followed by a double quote (n >= 0): \" -> " \\\" -> \" \\\\\" -> \\" */ #define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" #define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" char ** prepare_spawn (char **argv) { size_t argc; char **new_argv; size_t i; /* Count number of arguments. */ for (argc = 0; argv[argc] != NULL; argc++) ; /* Allocate new argument vector. */ new_argv = XMALLOC (char *, argc + 1); /* Put quoted arguments into the new argument vector. */ for (i = 0; i < argc; i++) { const char *string = argv[i]; if (string[0] == '\0') new_argv[i] = xstrdup ("\"\""); else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) { int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); size_t length; unsigned int backslashes; const char *s; char *quoted_string; char *p; length = 0; backslashes = 0; if (quote_around) length++; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') length += backslashes + 1; length++; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) length += backslashes + 1; quoted_string = XMALLOC (char, length + 1); p = quoted_string; backslashes = 0; if (quote_around) *p++ = '"'; for (s = string; *s != '\0'; s++) { char c = *s; if (c == '"') { unsigned int j; for (j = backslashes + 1; j > 0; j--) *p++ = '\\'; } *p++ = c; if (c == '\\') backslashes++; else backslashes = 0; } if (quote_around) { unsigned int j; for (j = backslashes; j > 0; j--) *p++ = '\\'; *p++ = '"'; } *p = '\0'; new_argv[i] = quoted_string; } else new_argv[i] = (char *) string; } new_argv[argc] = NULL; return new_argv; } EOF ;; esac cat <<"EOF" void lt_dump_script (FILE* f) { EOF func_emit_wrapper yes | $SED -n -e ' s/^\(.\{79\}\)\(..*\)/\1\ \2/ h s/\([\\"]\)/\\\1/g s/$/\\n/ s/\([^\n]*\).*/ fputs ("\1", f);/p g D' cat <<"EOF" } EOF } # end: func_emit_cwrapperexe_src # func_win32_import_lib_p ARG # True if ARG is an import lib, as indicated by $file_magic_cmd func_win32_import_lib_p () { $debug_cmd case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in *import*) : ;; *) false ;; esac } # func_suncc_cstd_abi # !!ONLY CALL THIS FOR SUN CC AFTER $compile_command IS FULLY EXPANDED!! # Several compiler flags select an ABI that is incompatible with the # Cstd library. Avoid specifying it if any are in CXXFLAGS. func_suncc_cstd_abi () { $debug_cmd case " $compile_command " in *" -compat=g "*|*\ -std=c++[0-9][0-9]\ *|*" -library=stdcxx4 "*|*" -library=stlport4 "*) suncc_use_cstd_abi=no ;; *) suncc_use_cstd_abi=yes ;; esac } # func_mode_link arg... func_mode_link () { $debug_cmd case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) # It is impossible to link a dll without this setting, and # we shouldn't force the makefile maintainer to figure out # what system we are compiling for in order to pass an extra # flag for every libtool invocation. # allow_undefined=no # FIXME: Unfortunately, there are problems with the above when trying # to make a dll that has undefined symbols, in which case not # even a static library is built. For now, we need to specify # -no-undefined on the libtool link line when we can be certain # that all symbols are satisfied, otherwise we get a static library. allow_undefined=yes ;; *) allow_undefined=yes ;; esac libtool_args=$nonopt base_compile="$nonopt $@" compile_command=$nonopt finalize_command=$nonopt compile_rpath= finalize_rpath= compile_shlibpath= finalize_shlibpath= convenience= old_convenience= deplibs= old_deplibs= compiler_flags= linker_flags= dllsearchpath= lib_search_path=`pwd` inst_prefix_dir= new_inherited_linker_flags= avoid_version=no bindir= dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= os2dllname= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=false prev= prevarg= release= rpath= xrpath= perm_rpath= temp_rpath= thread_safe=no vinfo= vinfo_number=no weak_libs= single_module=$wl-single_module func_infer_tag $base_compile # We need to know -static, to get the right output filenames. for arg do case $arg in -shared) test yes != "$build_libtool_libs" \ && func_fatal_configuration "cannot build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test yes = "$build_libtool_libs" && test -z "$link_static_flag"; then func_warning "complete static linking is impossible in this configuration" fi if test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; -static) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=built ;; -static-libtool-libs) if test -z "$pic_flag" && test -n "$link_static_flag"; then dlopen_self=$dlopen_self_static fi prefer_static_libs=yes ;; esac build_libtool_libs=no build_old_libs=yes break ;; esac done # See if our shared archives depend on static archives. test -n "$old_archive_from_new_cmds" && build_old_libs=yes # Go through the arguments, transforming them on the way. while test "$#" -gt 0; do arg=$1 shift func_quote_arg pretty,unquoted "$arg" qarg=$func_quote_arg_unquoted_result func_append libtool_args " $func_quote_arg_result" # If the previous option needs an argument, assign it. if test -n "$prev"; then case $prev in output) func_append compile_command " @OUTPUT@" func_append finalize_command " @OUTPUT@" ;; esac case $prev in bindir) bindir=$arg prev= continue ;; dlfiles|dlprefiles) $preload || { # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=: } case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test no = "$dlself"; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test dlprefiles = "$prev"; then dlself=yes elif test dlfiles = "$prev" && test yes != "$dlopen_self"; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test dlfiles = "$prev"; then func_append dlfiles " $arg" else func_append dlprefiles " $arg" fi prev= continue ;; esac ;; expsyms) export_symbols=$arg test -f "$arg" \ || func_fatal_error "symbol file '$arg' does not exist" prev= continue ;; expsyms_regex) export_symbols_regex=$arg prev= continue ;; framework) case $host in *-*-darwin*) case "$deplibs " in *" $qarg.ltframework "*) ;; *) func_append deplibs " $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir=$arg prev= continue ;; mllvm) # Clang does not use LLVM to link, so we can simply discard any # '-mllvm $arg' options when doing the link step. prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # func_append moreargs " $fil" arg=$fil # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result if test none != "$pic_object"; then # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object fi # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi done else func_fatal_error "link input file '$arg' does not exist" fi arg=$save_arg prev= continue ;; os2dllname) os2dllname=$arg prev= continue ;; precious_regex) precious_files_regex=$arg prev= continue ;; release) release=-$arg prev= continue ;; rpath | xrpath) # We need an absolute path. case $arg in [\\/]* | [A-Za-z]:[\\/]*) ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac if test rpath = "$prev"; then case "$rpath " in *" $arg "*) ;; *) func_append rpath " $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) func_append xrpath " $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds=$arg prev= continue ;; weak) func_append weak_libs " $arg" prev= continue ;; xcclinker) func_append linker_flags " $qarg" func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) func_append compiler_flags " $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) func_append linker_flags " $qarg" func_append compiler_flags " $wl$qarg" prev= func_append compile_command " $wl$qarg" func_append finalize_command " $wl$qarg" continue ;; *) eval "$prev=\"\$arg\"" prev= continue ;; esac fi # test -n "$prev" prevarg=$arg case $arg in -all-static) if test -n "$link_static_flag"; then # See comment for -static flag below, for more details. func_append compile_command " $link_static_flag" func_append finalize_command " $link_static_flag" fi continue ;; -allow-undefined) # FIXME: remove this flag sometime in the future. func_fatal_error "'-allow-undefined' must not be used because it is the default" ;; -avoid-version) avoid_version=yes continue ;; -bindir) prev=bindir continue ;; -dlopen) prev=dlfiles continue ;; -dlpreopen) prev=dlprefiles continue ;; -export-dynamic) export_dynamic=yes continue ;; -export-symbols | -export-symbols-regex) if test -n "$export_symbols" || test -n "$export_symbols_regex"; then func_fatal_error "more than one -exported-symbols argument is not allowed" fi if test X-export-symbols = "X$arg"; then prev=expsyms else prev=expsyms_regex fi continue ;; -framework) prev=framework continue ;; -inst-prefix-dir) prev=inst_prefix continue ;; # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* # so, if we see these flags be careful not to treat them like -L -L[A-Z][A-Z]*:*) case $with_gcc/$host in no/*-*-irix* | /*-*-irix*) func_append compile_command " $arg" func_append finalize_command " $arg" ;; esac continue ;; -L*) func_stripname "-L" '' "$arg" if test -z "$func_stripname_result"; then if test "$#" -gt 0; then func_fatal_error "require no space between '-L' and '$1'" else func_fatal_error "need path for '-L' option" fi fi func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; *) absdir=`cd "$dir" && pwd` test -z "$absdir" && \ func_fatal_error "cannot determine absolute directory name of '$dir'" dir=$absdir ;; esac case "$deplibs " in *" -L$dir "* | *" $arg "*) # Will only happen for absolute or sysroot arguments ;; *) # Preserve sysroot, but never include relative directories case $dir in [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; *) func_append deplibs " -L$dir" ;; esac func_append lib_search_path " $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) func_append dllsearchpath ":$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac continue ;; -l*) if test X-lc = "X$arg" || test X-lm = "X$arg"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) # These systems don't actually have a C or math library (as such) continue ;; *-*-os2*) # These systems don't actually have a C library (as such) test X-lc = "X$arg" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc due to us having libc/libc_r. test X-lc = "X$arg" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework func_append deplibs " System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test X-lc = "X$arg" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test X-lc = "X$arg" && continue ;; esac elif test X-lc_r = "X$arg"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly* | *-*-bitrig*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi func_append deplibs " $arg" continue ;; -mllvm) prev=mllvm continue ;; -module) module=yes continue ;; # Tru64 UNIX uses -model [arg] to determine the layout of C++ # classes, name mangling, and exception handling. # Darwin uses the -arch flag to determine output architecture. -model|-arch|-isysroot|--sysroot) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" prev=xcompiler continue ;; -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) func_append compiler_flags " $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) func_append new_inherited_linker_flags " $arg" ;; esac continue ;; -multi_module) single_module=$wl-multi_module continue ;; -no-fast-install) fast_install=no continue ;; -no-install) case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) # The PATH hackery in wrapper scripts is required on Windows # and Darwin in order for the loader to find any dlls it needs. func_warning "'-no-install' is ignored for $host" func_warning "assuming '-no-fast-install' instead" fast_install=no ;; *) no_install=yes ;; esac continue ;; -no-undefined) allow_undefined=no continue ;; -objectlist) prev=objectlist continue ;; -os2dllname) prev=os2dllname continue ;; -o) prev=output ;; -precious-files-regex) prev=precious_regex continue ;; -release) prev=release continue ;; -rpath) prev=rpath continue ;; -R) prev=xrpath continue ;; -R*) func_stripname '-R' '' "$arg" dir=$func_stripname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) ;; =*) func_stripname '=' '' "$dir" dir=$lt_sysroot$func_stripname_result ;; *) func_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac continue ;; -shared) # The effects of -shared are defined in a previous loop. continue ;; -shrext) prev=shrext continue ;; -static | -static-libtool-libs) # The effects of -static are defined in a previous loop. # We used to do the same as -all-static on platforms that # didn't have a PIC flag, but the assumption that the effects # would be equivalent was wrong. It would break on at least # Digital Unix and AIX. continue ;; -thread-safe) thread_safe=yes continue ;; -version-info) prev=vinfo continue ;; -version-number) prev=vinfo vinfo_number=yes continue ;; -weak) prev=weak continue ;; -Wc,*) func_stripname '-Wc,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_arg pretty "$flag" func_append arg " $func_quote_arg_result" func_append compiler_flags " $func_quote_arg_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Wl,*) func_stripname '-Wl,' '' "$arg" args=$func_stripname_result arg= save_ifs=$IFS; IFS=, for flag in $args; do IFS=$save_ifs func_quote_arg pretty "$flag" func_append arg " $wl$func_quote_arg_result" func_append compiler_flags " $wl$func_quote_arg_result" func_append linker_flags " $func_quote_arg_result" done IFS=$save_ifs func_stripname ' ' '' "$arg" arg=$func_stripname_result ;; -Xcompiler) prev=xcompiler continue ;; -Xlinker) prev=xlinker continue ;; -XCClinker) prev=xcclinker continue ;; # -msg_* for osf cc -msg_*) func_quote_arg pretty "$arg" arg=$func_quote_arg_result ;; # Flags to be passed through unchanged, with rationale: # -64, -mips[0-9] enable 64-bit mode for the SGI compiler # -r[0-9][0-9]* specify processor for the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler # +DA*, +DD* enable 64-bit mode for the HP compiler # -q* compiler args for the IBM compiler # -m*, -t[45]*, -txscale* architecture-specific flags for GCC # -F/path path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* profiling flags for GCC # -fstack-protector* stack protector flags for GCC # @file GCC response files # -tp=* Portland pgcc target processor selection # --sysroot=* for sysroot support # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization # -specs=* GCC specs files # -stdlib=* select c++ std lib with clang # -fsanitize=* Clang/GCC memory and address sanitizer # -fuse-ld=* Linker select flags for GCC -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*| \ -specs=*|-fsanitize=*|-fuse-ld=*) func_quote_arg pretty "$arg" arg=$func_quote_arg_result func_append compile_command " $arg" func_append finalize_command " $arg" func_append compiler_flags " $arg" continue ;; -Z*) if test os2 = "`expr $host : '.*\(os2\)'`"; then # OS/2 uses -Zxxx to specify OS/2-specific options compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case $arg in -Zlinker | -Zstack) prev=xcompiler ;; esac continue else # Otherwise treat like 'Some other compiler flag' below func_quote_arg pretty "$arg" arg=$func_quote_arg_result fi ;; # Some other compiler flag. -* | +*) func_quote_arg pretty "$arg" arg=$func_quote_arg_result ;; *.$objext) # A standard object. func_append objs " $arg" ;; *.lo) # A libtool-controlled object. # Check to see that this really is a libtool object. if func_lalib_unsafe_p "$arg"; then pic_object= non_pic_object= # Read the .lo file func_source "$arg" if test -z "$pic_object" || test -z "$non_pic_object" || test none = "$pic_object" && test none = "$non_pic_object"; then func_fatal_error "cannot find name of object for '$arg'" fi # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result test none = "$pic_object" || { # Prepend the subdirectory the object is found in. pic_object=$xdir$pic_object if test dlfiles = "$prev"; then if test yes = "$build_libtool_libs" && test yes = "$dlopen_support"; then func_append dlfiles " $pic_object" prev= continue else # If libtool objects are unsupported, then we need to preload. prev=dlprefiles fi fi # CHECK ME: I think I busted this. -Ossama if test dlprefiles = "$prev"; then # Preload the old-style object. func_append dlprefiles " $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg=$pic_object } # Non-PIC object. if test none != "$non_pic_object"; then # Prepend the subdirectory the object is found in. non_pic_object=$xdir$non_pic_object # A standard non-PIC object func_append non_pic_objects " $non_pic_object" if test -z "$pic_object" || test none = "$pic_object"; then arg=$non_pic_object fi else # If the PIC object exists, use it instead. # $xdir was prepended to $pic_object above. non_pic_object=$pic_object func_append non_pic_objects " $non_pic_object" fi else # Only an error if not doing a dry-run. if $opt_dry_run; then # Extract subdirectory from the argument. func_dirname "$arg" "/" "" xdir=$func_dirname_result func_lo2o "$arg" pic_object=$xdir$objdir/$func_lo2o_result non_pic_object=$xdir$func_lo2o_result func_append libobjs " $pic_object" func_append non_pic_objects " $non_pic_object" else func_fatal_error "'$arg' is not a valid libtool object" fi fi ;; *.$libext) # An archive. func_append deplibs " $arg" func_append old_deplibs " $arg" continue ;; *.la) # A libtool-controlled library. func_resolve_sysroot "$arg" if test dlfiles = "$prev"; then # This library was specified with -dlopen. func_append dlfiles " $func_resolve_sysroot_result" prev= elif test dlprefiles = "$prev"; then # The library was specified with -dlpreopen. func_append dlprefiles " $func_resolve_sysroot_result" prev= else func_append deplibs " $func_resolve_sysroot_result" fi continue ;; # Some other compiler argument. *) # Unknown arguments in both finalize_command and compile_command need # to be aesthetically quoted because they are evaled later. func_quote_arg pretty "$arg" arg=$func_quote_arg_result ;; esac # arg # Now actually substitute the argument into the commands. if test -n "$arg"; then func_append compile_command " $arg" func_append finalize_command " $arg" fi done # argument parsing loop test -n "$prev" && \ func_fatal_help "the '$prevarg' option requires an argument" if test yes = "$export_dynamic" && test -n "$export_dynamic_flag_spec"; then eval arg=\"$export_dynamic_flag_spec\" func_append compile_command " $arg" func_append finalize_command " $arg" fi oldlibs= # calculate the name of the file, without its directory func_basename "$output" outputname=$func_basename_result libobjs_save=$libobjs if test -n "$shlibpath_var"; then # get the directories listed in $shlibpath_var eval shlib_search_path=\`\$ECHO \"\$$shlibpath_var\" \| \$SED \'s/:/ /g\'\` else shlib_search_path= fi eval sys_lib_search_path=\"$sys_lib_search_path_spec\" eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" # Definition is injected by LT_CONFIG during libtool generation. func_munge_path_list sys_lib_dlsearch_path "$LT_SYS_LIBRARY_PATH" func_dirname "$output" "/" "" output_objdir=$func_dirname_result$objdir func_to_tool_file "$output_objdir/" tool_output_objdir=$func_to_tool_file_result # Create the object directory. func_mkdir_p "$output_objdir" # Determine the type of output case $output in "") func_fatal_help "you must specify an output file" ;; *.$libext) linkmode=oldlib ;; *.lo | *.$objext) linkmode=obj ;; *.la) linkmode=lib ;; *) linkmode=prog ;; # Anything else should be a program. esac specialdeplibs= libs= # Find all interdependent deplibs by searching for libraries # that are linked more than once (e.g. -la -lb -la) for deplib in $deplibs; do if $opt_preserve_dup_deps; then case "$libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append libs " $deplib" done if test lib = "$linkmode"; then libs="$predeps $libs $compiler_lib_search_path $postdeps" # Compute libraries that are listed more than once in $predeps # $postdeps and mark them as special (i.e., whose duplicates are # not to be eliminated). pre_post_deps= if $opt_duplicate_compiler_generated_deps; then for pre_post_dep in $predeps $postdeps; do case "$pre_post_deps " in *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; esac func_append pre_post_deps " $pre_post_dep" done fi pre_post_deps= fi deplibs= newdependency_libs= newlib_search_path= need_relink=no # whether we're linking any uninstalled libtool libraries notinst_deplibs= # not-installed libtool libraries notinst_path= # paths that contain not-installed libtool libraries case $linkmode in lib) passes="conv dlpreopen link" for file in $dlfiles $dlprefiles; do case $file in *.la) ;; *) func_fatal_help "libraries can '-dlopen' only libtool libraries: $file" ;; esac done ;; prog) compile_deplibs= finalize_deplibs= alldeplibs=false newdlfiles= newdlprefiles= passes="conv scan dlopen dlpreopen link" ;; *) passes="conv" ;; esac for pass in $passes; do # The preopen pass in lib mode reverses $deplibs; put it back here # so that -L comes before libs that need it for instance... if test lib,link = "$linkmode,$pass"; then ## FIXME: Find the place where the list is rebuilt in the wrong ## order, and fix it there properly tmp_deplibs= for deplib in $deplibs; do tmp_deplibs="$deplib $tmp_deplibs" done deplibs=$tmp_deplibs fi if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass"; then libs=$deplibs deplibs= fi if test prog = "$linkmode"; then case $pass in dlopen) libs=$dlfiles ;; dlpreopen) libs=$dlprefiles ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test lib,dlpreopen = "$linkmode,$pass"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= func_resolve_sysroot "$lib" case $lib in *.la) func_source "$func_resolve_sysroot_result" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do func_basename "$deplib" deplib_base=$func_basename_result case " $weak_libs " in *" $deplib_base "*) ;; *) func_append deplibs " $deplib" ;; esac done done libs=$dlprefiles fi if test dlopen = "$pass"; then # Collect dlpreopened libraries save_deplibs=$deplibs deplibs= fi for deplib in $libs; do lib= found=false case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append compiler_flags " $deplib" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -l*) if test lib != "$linkmode" && test prog != "$linkmode"; then func_warning "'-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test lib = "$linkmode"; then searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" else searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" fi for searchdir in $searchdirs; do for search_ext in .la $std_shrext .so .a; do # Search the libtool library lib=$searchdir/lib$name$search_ext if test -f "$lib"; then if test .la = "$search_ext"; then found=: else found=false fi break 2 fi done done if $found; then # deplib is a libtool library # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, # We need to do some special things here, and not later. if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $deplib "*) if func_lalib_p "$lib"; then library_names= old_library= func_source "$lib" for l in $old_library $library_names; do ll=$l done if test "X$ll" = "X$old_library"; then # only static version available found=false func_dirname "$lib" "" "." ladir=$func_dirname_result lib=$ladir/$old_library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi else # deplib doesn't seem to be a libtool library if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test lib = "$linkmode" && newdependency_libs="$deplib $newdependency_libs" fi continue fi ;; # -l *.ltframework) if test prog,link = "$linkmode,$pass"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test lib = "$linkmode"; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) func_append new_inherited_linker_flags " $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test conv = "$pass" && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; prog) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi if test scan = "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; *) func_warning "'-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test link = "$pass"; then func_stripname '-R' '' "$deplib" func_resolve_sysroot "$func_stripname_result" dir=$func_resolve_sysroot_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) func_append xrpath " $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) func_resolve_sysroot "$deplib" lib=$func_resolve_sysroot_result ;; *.$libext) if test conv = "$pass"; then deplibs="$deplib $deplibs" continue fi case $linkmode in lib) # Linking convenience modules into shared libraries is allowed, # but linking other static libraries is non-portable. case " $dlpreconveniencelibs " in *" $deplib "*) ;; *) valid_a_lib=false case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=: fi ;; pass_all) valid_a_lib=: ;; esac if $valid_a_lib; then echo $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" else echo $ECHO "*** Warning: Trying to link with static lib archive $deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because the file extensions .$libext of this argument makes me believe" echo "*** that it is just a static archive that I should not use here." fi ;; esac continue ;; prog) if test link != "$pass"; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test conv = "$pass"; then deplibs="$deplib $deplibs" elif test prog = "$linkmode"; then if test dlpreopen = "$pass" || test yes != "$dlopen_support" || test no = "$build_libtool_libs"; then # If there is no dlopen support or we're linking statically, # we need to preload. func_append newdlprefiles " $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else func_append newdlfiles " $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=: continue ;; esac # case $deplib $found || test -f "$lib" \ || func_fatal_error "cannot find the library '$lib' or unhandled argument '$deplib'" # Check to see that this really is a libtool archive. func_lalib_unsafe_p "$lib" \ || func_fatal_error "'$lib' is not a valid libtool archive" func_dirname "$lib" "" "." ladir=$func_dirname_result dlname= dlopen= dlpreopen= libdir= library_names= old_library= inherited_linker_flags= # If the library was installed with an old release of libtool, # it will not redefine variables installed, or shouldnotlink installed=yes shouldnotlink=no avoidtemprpath= # Read the .la file func_source "$lib" # Convert "-framework foo" to "foo.ltframework" if test -n "$inherited_linker_flags"; then tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do case " $new_inherited_linker_flags " in *" $tmp_inherited_linker_flag "*) ;; *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` if test lib,link = "$linkmode,$pass" || test prog,scan = "$linkmode,$pass" || { test prog != "$linkmode" && test lib != "$linkmode"; }; then test -n "$dlopen" && func_append dlfiles " $dlopen" test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" fi if test conv = "$pass"; then # Only check for convenience libraries deplibs="$lib $deplibs" if test -z "$libdir"; then if test -z "$old_library"; then func_fatal_error "cannot find name of link library for '$lib'" fi # It is a libtool convenience library, so add in its objects. func_append convenience " $ladir/$objdir/$old_library" func_append old_convenience " $ladir/$objdir/$old_library" elif test prog != "$linkmode" && test lib != "$linkmode"; then func_fatal_error "'$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= if test -n "$old_library" && { test yes = "$prefer_static_libs" || test built,no = "$prefer_static_libs,$installed"; }; then linklib=$old_library else for l in $old_library $library_names; do linklib=$l done fi if test -z "$linklib"; then func_fatal_error "cannot find name of link library for '$lib'" fi # This library was specified with -dlopen. if test dlopen = "$pass"; then test -z "$libdir" \ && func_fatal_error "cannot -dlopen a convenience library: '$lib'" if test -z "$dlname" || test yes != "$dlopen_support" || test no = "$build_libtool_libs" then # If there is no dlname, no dlopen support or we're linking # statically, we need to preload. We also need to preload any # dependent libraries so libltdl's deplib preloader doesn't # bomb out in the load deplibs phase. func_append dlprefiles " $lib $dependency_libs" else func_append newdlfiles " $lib" fi continue fi # $pass = dlopen # We need an absolute path. case $ladir in [\\/]* | [A-Za-z]:[\\/]*) abs_ladir=$ladir ;; *) abs_ladir=`cd "$ladir" && pwd` if test -z "$abs_ladir"; then func_warning "cannot determine absolute directory name of '$ladir'" func_warning "passing it literally to the linker, although it might fail" abs_ladir=$ladir fi ;; esac func_basename "$lib" laname=$func_basename_result # Find the relevant object directory and library name. if test yes = "$installed"; then if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library '$lib' was moved." dir=$ladir absdir=$abs_ladir libdir=$abs_ladir else dir=$lt_sysroot$libdir absdir=$lt_sysroot$libdir fi test yes = "$hardcode_automatic" && avoidtemprpath=yes else if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then dir=$ladir absdir=$abs_ladir # Remove this search path later func_append notinst_path " $abs_ladir" else dir=$ladir/$objdir absdir=$abs_ladir/$objdir # Remove this search path later func_append notinst_path " $abs_ladir" fi fi # $installed = yes func_stripname 'lib' '.la' "$laname" name=$func_stripname_result # This library was specified with -dlpreopen. if test dlpreopen = "$pass"; then if test -z "$libdir" && test prog = "$linkmode"; then func_fatal_error "only libraries may -dlpreopen a convenience library: '$lib'" fi case $host in # special handling for platforms with PE-DLLs. *cygwin* | *mingw* | *cegcc* ) # Linker will automatically link against shared library if both # static and shared are present. Therefore, ensure we extract # symbols from the import library if a shared library is present # (otherwise, the dlopen module name will be incorrect). We do # this by putting the import library name into $newdlprefiles. # We recover the dlopen module name by 'saving' the la file # name in a special purpose variable, and (later) extracting the # dlname from the la file. if test -n "$dlname"; then func_tr_sh "$dir/$linklib" eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" func_append newdlprefiles " $dir/$linklib" else func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" fi ;; * ) # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then func_append newdlprefiles " $dir/$old_library" # Keep a list of preopened convenience libraries to check # that they are being used correctly in the link pass. test -z "$libdir" && \ func_append dlpreconveniencelibs " $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then func_append newdlprefiles " $dir/$dlname" else func_append newdlprefiles " $dir/$linklib" fi ;; esac fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test lib = "$linkmode"; then deplibs="$dir/$old_library $deplibs" elif test prog,link = "$linkmode,$pass"; then compile_deplibs="$dir/$old_library $compile_deplibs" finalize_deplibs="$dir/$old_library $finalize_deplibs" else deplibs="$lib $deplibs" # used for prog,scan pass fi continue fi if test prog = "$linkmode" && test link != "$pass"; then func_append newlib_search_path " $ladir" deplibs="$lib $deplibs" linkalldeplibs=false if test no != "$link_all_deplibs" || test -z "$library_names" || test no = "$build_libtool_libs"; then linkalldeplibs=: fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result" func_append newlib_search_path " $func_resolve_sysroot_result" ;; esac # Need to link against all dependency_libs? if $linkalldeplibs; then deplibs="$deplib $deplibs" else # Need to hardcode shared library paths # or/and link against static libraries newdependency_libs="$deplib $newdependency_libs" fi if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $deplib "*) func_append specialdeplibs " $deplib" ;; esac fi func_append tmp_libs " $deplib" done # for deplib continue fi # $linkmode = prog... if test prog,link = "$linkmode,$pass"; then if test -n "$library_names" && { { test no = "$prefer_static_libs" || test built,yes = "$prefer_static_libs,$installed"; } || test -z "$old_library"; }; then # We need to hardcode the library path if test -n "$shlibpath_var" && test -z "$avoidtemprpath"; then # Make sure the rpath contains only unique directories. case $temp_rpath: in *"$absdir:"*) ;; *) func_append temp_rpath "$absdir:" ;; esac fi # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi # $linkmode,$pass = prog,link... if $alldeplibs && { test pass_all = "$deplibs_check_method" || { test yes = "$build_libtool_libs" && test -n "$library_names"; }; }; then # We only need to search for static libraries continue fi fi link_static=no # Whether the deplib will be linked statically use_static_libs=$prefer_static_libs if test built = "$use_static_libs" && test yes = "$installed"; then use_static_libs=no fi if test -n "$library_names" && { test no = "$use_static_libs" || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc* | *os2*) # No point in relinking DLLs because paths are not encoded func_append notinst_deplibs " $lib" need_relink=no ;; *) if test no = "$installed"; then func_append notinst_deplibs " $lib" need_relink=yes fi ;; esac # This is a shared library # Warn about portability, can't link against -module's on some # systems (darwin). Don't bleat about dlopened modules though! dlopenmodule= for dlpremoduletest in $dlprefiles; do if test "X$dlpremoduletest" = "X$lib"; then dlopenmodule=$dlpremoduletest break fi done if test -z "$dlopenmodule" && test yes = "$shouldnotlink" && test link = "$pass"; then echo if test prog = "$linkmode"; then $ECHO "*** Warning: Linking the executable $output against the loadable module" else $ECHO "*** Warning: Linking the shared library $output against the loadable module" fi $ECHO "*** $linklib is not portable!" fi if test lib = "$linkmode" && test yes = "$hardcode_into_libs"; then # Hardcode the library path. # Skip directories that are in the system default run-time # search path. case " $sys_lib_dlsearch_path " in *" $absdir "*) ;; *) case "$compile_rpath " in *" $absdir "*) ;; *) func_append compile_rpath " $absdir" ;; esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac ;; esac fi if test -n "$old_archive_from_expsyms_cmds"; then # figure out the soname set dummy $library_names shift realname=$1 shift libname=`eval "\\$ECHO \"$libname_spec\""` # use dlname if we got it. it's perfectly good, no? if test -n "$dlname"; then soname=$dlname elif test -n "$soname_spec"; then # bleh windows case $host in *cygwin* | mingw* | *cegcc* | *os2*) func_arith $current - $age major=$func_arith_result versuffix=-$major ;; esac eval soname=\"$soname_spec\" else soname=$realname fi # Make a new name for the extract_expsyms_cmds to use soroot=$soname func_basename "$soroot" soname=$func_basename_result func_stripname 'lib' '.dll' "$soname" newlib=libimp-$func_stripname_result.a # If the library has no export list, then create one now if test -f "$output_objdir/$soname-def"; then : else func_verbose "extracting exported symbol list from '$soname'" func_execute_cmds "$extract_expsyms_cmds" 'exit $?' fi # Create $newlib if test -f "$output_objdir/$newlib"; then :; else func_verbose "generating import library for '$soname'" func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' fi # make sure the library variables are pointing to the new library dir=$output_objdir linklib=$newlib fi # test -n "$old_archive_from_expsyms_cmds" if test prog = "$linkmode" || test relink != "$opt_mode"; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test no = "$hardcode_direct"; then add=$dir/$linklib case $host in *-*-sco3.2v5.0.[024]*) add_dir=-L$dir ;; *-*-sysv4*uw2*) add_dir=-L$dir ;; *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ *-*-unixware7*) add_dir=-L$dir ;; *-*-darwin* ) # if the lib is a (non-dlopened) module then we cannot # link against it, someone is ignoring the earlier warnings if /usr/bin/file -L $add 2> /dev/null | $GREP ": [^:]* bundle" >/dev/null; then if test "X$dlopenmodule" != "X$lib"; then $ECHO "*** Warning: lib $linklib is a module, not a shared library" if test -z "$old_library"; then echo echo "*** And there doesn't seem to be a static archive available" echo "*** The link will probably fail, sorry" else add=$dir/$old_library fi elif test -n "$old_library"; then add=$dir/$old_library fi fi esac elif test no = "$hardcode_minus_L"; then case $host in *-*-sunos*) add_shlibpath=$dir ;; esac add_dir=-L$dir add=-l$name elif test no = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; relink) if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$dir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$absdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name elif test yes = "$hardcode_shlibpath_var"; then add_shlibpath=$dir add=-l$name else lib_linked=no fi ;; *) lib_linked=no ;; esac if test yes != "$lib_linked"; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) func_append compile_shlibpath "$add_shlibpath:" ;; esac fi if test prog = "$linkmode"; then test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" test -n "$add" && compile_deplibs="$add $compile_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" if test yes != "$hardcode_direct" && test yes != "$hardcode_minus_L" && test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac fi fi fi if test prog = "$linkmode" || test relink = "$opt_mode"; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test yes = "$hardcode_direct" && test no = "$hardcode_direct_absolute"; then add=$libdir/$linklib elif test yes = "$hardcode_minus_L"; then add_dir=-L$libdir add=-l$name elif test yes = "$hardcode_shlibpath_var"; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) func_append finalize_shlibpath "$libdir:" ;; esac add=-l$name elif test yes = "$hardcode_automatic"; then if test -n "$inst_prefix_dir" && test -f "$inst_prefix_dir$libdir/$linklib"; then add=$inst_prefix_dir$libdir/$linklib else add=$libdir/$linklib fi else # We cannot seem to hardcode it, guess we'll fake it. add_dir=-L$libdir # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) func_append add_dir " -L$inst_prefix_dir$libdir" ;; esac fi add=-l$name fi if test prog = "$linkmode"; then test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" test -n "$add" && finalize_deplibs="$add $finalize_deplibs" else test -n "$add_dir" && deplibs="$add_dir $deplibs" test -n "$add" && deplibs="$add $deplibs" fi fi elif test prog = "$linkmode"; then # Here we assume that one of hardcode_direct or hardcode_minus_L # is not unsupported. This is valid on all known static and # shared platforms. if test unsupported != "$hardcode_direct"; then test -n "$old_library" && linklib=$old_library compile_deplibs="$dir/$linklib $compile_deplibs" finalize_deplibs="$dir/$linklib $finalize_deplibs" else compile_deplibs="-l$name -L$dir $compile_deplibs" finalize_deplibs="-l$name -L$dir $finalize_deplibs" fi elif test yes = "$build_libtool_libs"; then # Not a shared library if test pass_all != "$deplibs_check_method"; then # We're trying link a shared library against a static one # but the system doesn't support it. # Just print a warning and add the library to dependency_libs so # that the program can be linked against the static library. echo $ECHO "*** Warning: This system cannot link to static lib archive $lib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have." if test yes = "$module"; then echo "*** But as you try to build a module library, libtool will still create " echo "*** a static module, that should work as long as the dlopening application" echo "*** is linked with the -dlopen flag to resolve symbols at runtime." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi else deplibs="$dir/$old_library $deplibs" link_static=yes fi fi # link shared/static library? if test lib = "$linkmode"; then if test -n "$dependency_libs" && { test yes != "$hardcode_into_libs" || test yes = "$build_old_libs" || test yes = "$link_static"; }; then # Extract -R from dependency_libs temp_deplibs= for libdir in $dependency_libs; do case $libdir in -R*) func_stripname '-R' '' "$libdir" temp_xrpath=$func_stripname_result case " $xrpath " in *" $temp_xrpath "*) ;; *) func_append xrpath " $temp_xrpath";; esac;; *) func_append temp_deplibs " $libdir";; esac done dependency_libs=$temp_deplibs fi func_append newlib_search_path " $absdir" # Link against this library test no = "$link_static" && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" case $deplib in -L*) func_stripname '-L' '' "$deplib" func_resolve_sysroot "$func_stripname_result";; *) func_resolve_sysroot "$deplib" ;; esac if $opt_preserve_dup_deps; then case "$tmp_libs " in *" $func_resolve_sysroot_result "*) func_append specialdeplibs " $func_resolve_sysroot_result" ;; esac fi func_append tmp_libs " $func_resolve_sysroot_result" done if test no != "$link_all_deplibs"; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do path= case $deplib in -L*) path=$deplib ;; *.la) func_resolve_sysroot "$deplib" deplib=$func_resolve_sysroot_result func_dirname "$deplib" "" "." dir=$func_dirname_result # We need an absolute path. case $dir in [\\/]* | [A-Za-z]:[\\/]*) absdir=$dir ;; *) absdir=`cd "$dir" && pwd` if test -z "$absdir"; then func_warning "cannot determine absolute directory name of '$dir'" absdir=$dir fi ;; esac if $GREP "^installed=no" $deplib > /dev/null; then case $host in *-*-darwin*) depdepl= eval deplibrary_names=`$SED -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` if test -n "$deplibrary_names"; then for tmp in $deplibrary_names; do depdepl=$tmp done if test -f "$absdir/$objdir/$depdepl"; then depdepl=$absdir/$objdir/$depdepl darwin_install_name=`$OTOOL -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` if test -z "$darwin_install_name"; then darwin_install_name=`$OTOOL64 -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` fi func_append compiler_flags " $wl-dylib_file $wl$darwin_install_name:$depdepl" func_append linker_flags " -dylib_file $darwin_install_name:$depdepl" path= fi fi ;; *) path=-L$absdir/$objdir ;; esac else eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" test "$absdir" != "$libdir" && \ func_warning "'$deplib' seems to be moved" path=-L$absdir fi ;; esac case " $deplibs " in *" $path "*) ;; *) deplibs="$path $deplibs" ;; esac done fi # link_all_deplibs != no fi # linkmode = lib done # for deplib in $libs if test link = "$pass"; then if test prog = "$linkmode"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs=$newdependency_libs if test dlpreopen = "$pass"; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test dlopen != "$pass"; then test conv = "$pass" || { # Make sure lib_search_path contains only unique directories. lib_search_path= for dir in $newlib_search_path; do case "$lib_search_path " in *" $dir "*) ;; *) func_append lib_search_path " $dir" ;; esac done newlib_search_path= } if test prog,link = "$linkmode,$pass"; then vars="compile_deplibs finalize_deplibs" else vars=deplibs fi for var in $vars dependency_libs; do # Add libraries to $var in reverse order eval tmp_libs=\"\$$var\" new_libs= for deplib in $tmp_libs; do # FIXME: Pedantically, this is the right thing to do, so # that some nasty dependency loop isn't accidentally # broken: #new_libs="$deplib $new_libs" # Pragmatically, this seems to cause very few problems in # practice: case $deplib in -L*) new_libs="$deplib $new_libs" ;; -R*) ;; *) # And here is the reason: when a library appears more # than once as an explicit dependence of a library, or # is implicitly linked in more than once by the # compiler, it is considered special, and multiple # occurrences thereof are not removed. Compare this # with having the same library being listed as a # dependency of multiple other libraries: in this case, # we know (pedantically, we assume) the library does not # need to be listed more than once, so we keep only the # last copy. This is not always right, but it is rare # enough that we require users that really mean to play # such unportable linking tricks to link the library # using -Wl,-lname, so that libtool does not consider it # for duplicate removal. case " $specialdeplibs " in *" $deplib "*) new_libs="$deplib $new_libs" ;; *) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$deplib $new_libs" ;; esac ;; esac ;; esac done tmp_libs= for deplib in $new_libs; do case $deplib in -L*) case " $tmp_libs " in *" $deplib "*) ;; *) func_append tmp_libs " $deplib" ;; esac ;; *) func_append tmp_libs " $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # Add Sun CC postdeps if required: test CXX = "$tagname" && { case $host_os in linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; solaris*) func_cc_basename "$CC" case $func_cc_basename_result in CC* | sunCC*) func_suncc_cstd_abi if test no != "$suncc_use_cstd_abi"; then func_append postdeps ' -library=Cstd -library=Crun' fi ;; esac ;; esac } # Last step: remove runtime libs from dependency_libs # (they stay in deplibs) tmp_libs= for i in $dependency_libs; do case " $predeps $postdeps $compiler_lib_search_path " in *" $i "*) i= ;; esac if test -n "$i"; then func_append tmp_libs " $i" fi done dependency_libs=$tmp_libs done # for pass if test prog = "$linkmode"; then dlfiles=$newdlfiles fi if test prog = "$linkmode" || test lib = "$linkmode"; then dlprefiles=$newdlprefiles fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for archives" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for archives" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for archives" test -n "$xrpath" && \ func_warning "'-R' is ignored for archives" test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for archives" test -n "$release" && \ func_warning "'-release' is ignored for archives" test -n "$export_symbols$export_symbols_regex" && \ func_warning "'-export-symbols' is ignored for archives" # Now set the variables for building old libraries. build_libtool_libs=no oldlibs=$output func_append objs "$old_deplibs" ;; lib) # Make sure we only generate libraries of the form 'libNAME.la'. case $outputname in lib*) func_stripname 'lib' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" ;; *) test no = "$module" \ && func_fatal_help "libtool library '$output' must begin with 'lib'" if test no != "$need_lib_prefix"; then # Add the "lib" prefix for modules if required func_stripname '' '.la' "$outputname" name=$func_stripname_result eval shared_ext=\"$shrext_cmds\" eval libname=\"$libname_spec\" else func_stripname '' '.la' "$outputname" libname=$func_stripname_result fi ;; esac if test -n "$objs"; then if test pass_all != "$deplibs_check_method"; then func_fatal_error "cannot build libtool library '$output' from non-libtool objects on this host:$objs" else echo $ECHO "*** Warning: Linking the shared library $output against the non-libtool" $ECHO "*** objects $objs is not portable!" func_append libobjs " $objs" fi fi test no = "$dlself" \ || func_warning "'-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test 1 -lt "$#" \ && func_warning "ignoring multiple '-rpath's for a libtool library" install_libdir=$1 oldlibs= if test -z "$rpath"; then if test yes = "$build_libtool_libs"; then # Building a libtool convenience library. # Some compilers have problems with a '.al' extension so # convenience libraries should have the same extension an # archive normally would. oldlibs="$output_objdir/$libname.$libext $oldlibs" build_libtool_libs=convenience build_old_libs=yes fi test -n "$vinfo" && \ func_warning "'-version-info/-version-number' is ignored for convenience libraries" test -n "$release" && \ func_warning "'-release' is ignored for convenience libraries" else # Parse the version information argument. save_ifs=$IFS; IFS=: set dummy $vinfo 0 0 0 shift IFS=$save_ifs test -n "$7" && \ func_fatal_help "too many parameters to '-version-info'" # convert absolute version numbers to libtool ages # this retains compatibility with .la files and attempts # to make the code below a bit more comprehensible case $vinfo_number in yes) number_major=$1 number_minor=$2 number_revision=$3 # # There are really only two kinds -- those that # use the current revision as the major version # and those that subtract age and use age as # a minor version. But, then there is irix # that has an extra 1 added just for fun # case $version_type in # correct linux to gnu/linux during the next big refactor darwin|freebsd-elf|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_revision ;; freebsd-aout|qnx|sunos) current=$number_major revision=$number_minor age=0 ;; irix|nonstopux) func_arith $number_major + $number_minor current=$func_arith_result age=$number_minor revision=$number_minor lt_irix_increment=no ;; esac ;; no) current=$1 revision=$2 age=$3 ;; esac # Check that each of the things are valid numbers. case $current in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "CURRENT '$current' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $revision in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "REVISION '$revision' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac case $age in 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; *) func_error "AGE '$age' must be a nonnegative integer" func_fatal_error "'$vinfo' is not valid version information" ;; esac if test "$age" -gt "$current"; then func_error "AGE '$age' is greater than the current interface number '$current'" func_fatal_error "'$vinfo' is not valid version information" fi # Calculate the version variables. major= versuffix= verstring= case $version_type in none) ;; darwin) # Like Linux, but with the current version available in # verstring for coding it into the library header func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision # Darwin ld doesn't like 0 for these options... func_arith $current + 1 minor_current=$func_arith_result xlcverstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" # On Darwin other compilers case $CC in nagfor*) verstring="$wl-compatibility_version $wl$minor_current $wl-current_version $wl$minor_current.$revision" ;; *) verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" ;; esac ;; freebsd-aout) major=.$current versuffix=.$current.$revision ;; freebsd-elf) func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; irix | nonstopux) if test no = "$lt_irix_increment"; then func_arith $current - $age else func_arith $current - $age + 1 fi major=$func_arith_result case $version_type in nonstopux) verstring_prefix=nonstopux ;; *) verstring_prefix=sgi ;; esac verstring=$verstring_prefix$major.$revision # Add in all the interfaces that we are compatible with. loop=$revision while test 0 -ne "$loop"; do func_arith $revision - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring_prefix$major.$iface:$verstring done # Before this point, $major must not contain '.'. major=.$major versuffix=$major.$revision ;; linux) # correct to gnu/linux during the next big refactor func_arith $current - $age major=.$func_arith_result versuffix=$major.$age.$revision ;; osf) func_arith $current - $age major=.$func_arith_result versuffix=.$current.$age.$revision verstring=$current.$age.$revision # Add in all the interfaces that we are compatible with. loop=$age while test 0 -ne "$loop"; do func_arith $current - $loop iface=$func_arith_result func_arith $loop - 1 loop=$func_arith_result verstring=$verstring:$iface.0 done # Make executables depend on our current version. func_append verstring ":$current.0" ;; qnx) major=.$current versuffix=.$current ;; sco) major=.$current versuffix=.$current ;; sunos) major=.$current versuffix=.$current.$revision ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 file systems. func_arith $current - $age major=$func_arith_result versuffix=-$major ;; *) func_fatal_configuration "unknown library version type '$version_type'" ;; esac # Clear the version info if we defaulted, and they specified a release. if test -z "$vinfo" && test -n "$release"; then major= case $version_type in darwin) # we can't check for "0.0" in archive_cmds due to quoting # problems, so we reset it completely verstring= ;; *) verstring=0.0 ;; esac if test no = "$need_version"; then versuffix= else versuffix=.0.0 fi fi # Remove version info from name if versioning should be avoided if test yes,no = "$avoid_version,$need_version"; then major= versuffix= verstring= fi # Check to see if the archive will have undefined symbols. if test yes = "$allow_undefined"; then if test unsupported = "$allow_undefined_flag"; then if test yes = "$build_old_libs"; then func_warning "undefined symbols not allowed in $host shared libraries; building static only" build_libtool_libs=no else func_fatal_error "can't build $host shared library unless -no-undefined is specified" fi fi else # Don't allow undefined symbols. allow_undefined_flag=$no_undefined_flag fi fi func_generate_dlsyms "$libname" "$libname" : func_append libobjs " $symfileobj" test " " = "$libobjs" && libobjs= if test relink != "$opt_mode"; then # Remove our outputs, but don't remove object files since they # may have been created when compiling PIC objects. removelist= tempremovelist=`$ECHO "$output_objdir/*"` for p in $tempremovelist; do case $p in *.$objext | *.gcno) ;; $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/$libname$release.*) if test -n "$precious_files_regex"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi func_append removelist " $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test yes = "$build_old_libs" && test convenience != "$build_libtool_libs"; then func_append oldlibs " $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; $lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` #done if test -n "$xrpath"; then # If the user specified any rpath flags, then add them. temp_xrpath= for libdir in $xrpath; do func_replace_sysroot "$libdir" func_append temp_xrpath " -R$func_replace_sysroot_result" case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done if test yes != "$hardcode_into_libs" || test yes = "$build_old_libs"; then dependency_libs="$temp_xrpath $dependency_libs" fi fi # Make sure dlfiles contains only unique files that won't be dlpreopened old_dlfiles=$dlfiles dlfiles= for lib in $old_dlfiles; do case " $dlprefiles $dlfiles " in *" $lib "*) ;; *) func_append dlfiles " $lib" ;; esac done # Make sure dlprefiles contains only unique files old_dlprefiles=$dlprefiles dlprefiles= for lib in $old_dlprefiles; do case "$dlprefiles " in *" $lib "*) ;; *) func_append dlprefiles " $lib" ;; esac done if test yes = "$build_libtool_libs"; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework func_append deplibs " System.ltframework" ;; *-*-netbsd*) # Don't link with libc until the a.out ld.so is fixed. ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work ;; *) # Add libc to deplibs on all other systems if necessary. if test yes = "$build_libtool_need_lc"; then func_append deplibs " -lc" fi ;; esac fi # Transform deplibs into only deplibs that can be linked in shared. name_save=$name libname_save=$libname release_save=$release versuffix_save=$versuffix major_save=$major # I'm not sure if I'm treating the release correctly. I think # release should show up in the -l (ie -lgmp5) so we don't want to # add it in twice. Is that correct? release= versuffix= major= newdeplibs= droppeddeps=no case $deplibs_check_method in pass_all) # Don't check for shared/static. Everything works. # This might be a little naive. We might want to check # whether the library exists or not. But this is on # osf3 & osf4 and I'm not really sure... Just # implementing what was already the behavior. newdeplibs=$deplibs ;; test_compile) # This code stresses the "libraries are programs" paradigm to its # limits. Maybe even breaks it. We compile a program, linking it # against the deplibs as a proxy for the library. Then we can check # whether they linked in statically or dynamically with ldd. $opt_dry_run || $RM conftest.c cat > conftest.c </dev/null` $nocaseglob else potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` fi for potent_lib in $potential_libs; do # Follow soft links. if ls -lLd "$potent_lib" 2>/dev/null | $GREP " -> " >/dev/null; then continue fi # The statement above tries to avoid entering an # endless loop below, in case of cyclic links. # We might still enter an endless loop, since a link # loop can be closed while we follow links, # but so what? potlib=$potent_lib while test -h "$potlib" 2>/dev/null; do potliblink=`ls -ld $potlib | $SED 's/.* -> //'` case $potliblink in [\\/]* | [A-Za-z]:[\\/]*) potlib=$potliblink;; *) potlib=`$ECHO "$potlib" | $SED 's|[^/]*$||'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for file magic test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a file magic. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` for a_deplib in $deplibs; do case $a_deplib in -l*) func_stripname -l '' "$a_deplib" name=$func_stripname_result if test yes = "$allow_libtool_libs_with_static_runtimes"; then case " $predeps $postdeps " in *" $a_deplib "*) func_append newdeplibs " $a_deplib" a_deplib= ;; esac fi if test -n "$a_deplib"; then libname=`eval "\\$ECHO \"$libname_spec\""` for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do potential_libs=`ls $i/$libname[.-]* 2>/dev/null` for potent_lib in $potential_libs; do potlib=$potent_lib # see symlink-check above in file_magic test if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then func_append newdeplibs " $a_deplib" a_deplib= break 2 fi done done fi if test -n "$a_deplib"; then droppeddeps=yes echo $ECHO "*** Warning: linker path does not have real file for library $a_deplib." echo "*** I have the capability to make that library automatically link in when" echo "*** you link to this library. But I can only do this if you have a" echo "*** shared version of the library, which you do not appear to have" echo "*** because I did check the linker path looking for a file starting" if test -z "$potlib"; then $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" else $ECHO "*** with $libname and none of the candidates passed a file format test" $ECHO "*** using a regex pattern. Last file checked: $potlib" fi fi ;; *) # Add a -L argument. func_append newdeplibs " $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs= tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` if test yes = "$allow_libtool_libs_with_static_runtimes"; then for i in $predeps $postdeps; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s|$i||"` done fi case $tmp_deplibs in *[!\ \ ]*) echo if test none = "$deplibs_check_method"; then echo "*** Warning: inter-library dependencies are not supported in this platform." else echo "*** Warning: inter-library dependencies are not known to be supported." fi echo "*** All declared inter-library dependencies are being dropped." droppeddeps=yes ;; esac ;; esac versuffix=$versuffix_save major=$major_save release=$release_save libname=$libname_save name=$name_save case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library with the System framework newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac if test yes = "$droppeddeps"; then if test yes = "$module"; then echo echo "*** Warning: libtool could not satisfy all declared inter-library" $ECHO "*** dependencies of module $libname. Therefore, libtool will create" echo "*** a static module, that should work as long as the dlopening" echo "*** application is linked with the -dlopen flag." if test -z "$global_symbol_pipe"; then echo echo "*** However, this would only work if libtool was able to extract symbol" echo "*** lists from a program, using 'nm' or equivalent, but libtool could" echo "*** not find such a program. So, this module is probably useless." echo "*** 'nm' from GNU binutils and a full rebuild may help." fi if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi else echo "*** The inter-library dependencies that have been dropped here will be" echo "*** automatically added whenever a program is linked with this library" echo "*** or is declared to -dlopen it." if test no = "$allow_undefined"; then echo echo "*** Since this library must not contain undefined symbols," echo "*** because either the platform does not support them or" echo "*** it was explicitly requested with -no-undefined," echo "*** libtool will only create a static version of it." if test no = "$build_old_libs"; then oldlibs=$output_objdir/$libname.$libext build_libtool_libs=module build_old_libs=yes else build_libtool_libs=no fi fi fi fi # Done checking deplibs! deplibs=$newdeplibs fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" case $host in *-*-darwin*) newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done deplibs=$new_libs # All the library-specific variables (install_libdir is set above). library_names= old_library= dlname= # Test again, we may have decided not to build it any more if test yes = "$build_libtool_libs"; then # Remove $wl instances when linking with ld. # FIXME: should test the right _cmds variable. case $archive_cmds in *\$LD\ *) wl= ;; esac if test yes = "$hardcode_into_libs"; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath=$finalize_rpath test relink = "$opt_mode" || rpath=$compile_rpath$rpath for libdir in $rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then func_replace_sysroot "$libdir" libdir=$func_replace_sysroot_result if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append dep_rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" fi test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" fi shlibpath=$finalize_shlibpath test relink = "$opt_mode" || shlibpath=$compile_shlibpath$shlibpath if test -n "$shlibpath"; then eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" fi # Get the real and link names of the library. eval shared_ext=\"$shrext_cmds\" eval library_names=\"$library_names_spec\" set dummy $library_names shift realname=$1 shift if test -n "$soname_spec"; then eval soname=\"$soname_spec\" else soname=$realname fi if test -z "$dlname"; then dlname=$soname fi lib=$output_objdir/$realname linknames= for link do func_append linknames " $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` test "X$libobjs" = "X " && libobjs= delfiles= if test -n "$export_symbols" && test -n "$include_expsyms"; then $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" export_symbols=$output_objdir/$libname.uexp func_append delfiles " $export_symbols" fi orig_export_symbols= case $host_os in cygwin* | mingw* | cegcc*) if test -n "$export_symbols" && test -z "$export_symbols_regex"; then # exporting using user supplied symfile func_dll_def_p "$export_symbols" || { # and it's NOT already a .def file. Must figure out # which of the given symbols are data symbols and tag # them as such. So, trigger use of export_symbols_cmds. # export_symbols gets reassigned inside the "prepare # the list of exported symbols" if statement, so the # include_expsyms logic still works. orig_export_symbols=$export_symbols export_symbols= always_export_symbols=yes } fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test yes = "$always_export_symbols" || test -n "$export_symbols_regex"; then func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols cmds=$export_symbols_cmds save_ifs=$IFS; IFS='~' for cmd1 in $cmds; do IFS=$save_ifs # Take the normal branch if the nm_file_list_spec branch # doesn't work or if tool conversion is not needed. case $nm_file_list_spec~$to_tool_file_cmd in *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) try_normal_branch=yes eval cmd=\"$cmd1\" func_len " $cmd" len=$func_len_result ;; *) try_normal_branch=no ;; esac if test yes = "$try_normal_branch" \ && { test "$len" -lt "$max_cmd_len" \ || test "$max_cmd_len" -le -1; } then func_show_eval "$cmd" 'exit $?' skipped_export=false elif test -n "$nm_file_list_spec"; then func_basename "$output" output_la=$func_basename_result save_libobjs=$libobjs save_output=$output output=$output_objdir/$output_la.nm func_to_tool_file "$output" libobjs=$nm_file_list_spec$func_to_tool_file_result func_append delfiles " $output" func_verbose "creating $NM input file list: $output" for obj in $save_libobjs; do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > "$output" eval cmd=\"$cmd1\" func_show_eval "$cmd" 'exit $?' output=$save_output libobjs=$save_libobjs skipped_export=false else # The command line is too long to execute in one step. func_verbose "using reloadable object file for export list..." skipped_export=: # Break out early, otherwise skipped_export may be # set to false by a later but shorter cmd. break fi done IFS=$save_ifs if test -n "$export_symbols_regex" && test : != "$skipped_export"; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi fi if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test : != "$skipped_export" && test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi tmp_deplibs= for test_deplib in $deplibs; do case " $convenience " in *" $test_deplib "*) ;; *) func_append tmp_deplibs " $test_deplib" ;; esac done deplibs=$tmp_deplibs if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test yes = "$compiler_needs_object" && test -z "$libobjs"; then # extract the archives, so we have objects to list. # TODO: could optimize this to just extract one archive. whole_archive_flag_spec= fi if test -n "$whole_archive_flag_spec"; then save_libobjs=$libobjs eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= else gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $convenience func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test yes = "$thread_safe" && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" func_append linker_flags " $flag" fi # Make a backup of the uninstalled library when relinking if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? fi # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then eval test_cmds=\"$module_expsym_cmds\" cmds=$module_expsym_cmds else eval test_cmds=\"$module_cmds\" cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then eval test_cmds=\"$archive_expsym_cmds\" cmds=$archive_expsym_cmds else eval test_cmds=\"$archive_cmds\" cmds=$archive_cmds fi fi if test : != "$skipped_export" && func_len " $test_cmds" && len=$func_len_result && test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then : else # The command line is too long to link in one step, link piecewise # or, if using GNU ld and skipped_export is not :, use a linker # script. # Save the value of $output and $libobjs because we want to # use them later. If we have whole_archive_flag_spec, we # want to use save_libobjs as it was before # whole_archive_flag_spec was expanded, because we can't # assume the linker understands whole_archive_flag_spec. # This may have to be revisited, in case too many # convenience libraries get linked in and end up exceeding # the spec. if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then save_libobjs=$libobjs fi save_output=$output func_basename "$output" output_la=$func_basename_result # Clear the reloadable object creation command queue and # initialize k to one. test_cmds= concat_cmds= objlist= last_robj= k=1 if test -n "$save_libobjs" && test : != "$skipped_export" && test yes = "$with_gnu_ld"; then output=$output_objdir/$output_la.lnkscript func_verbose "creating GNU ld script: $output" echo 'INPUT (' > $output for obj in $save_libobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done echo ')' >> $output func_append delfiles " $output" func_to_tool_file "$output" output=$func_to_tool_file_result elif test -n "$save_libobjs" && test : != "$skipped_export" && test -n "$file_list_spec"; then output=$output_objdir/$output_la.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test yes = "$compiler_needs_object"; then firstobj="$1 " shift fi for obj do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" >> $output done func_append delfiles " $output" func_to_tool_file "$output" output=$firstobj\"$file_list_spec$func_to_tool_file_result\" else if test -n "$save_libobjs"; then func_verbose "creating reloadable object files..." output=$output_objdir/$output_la-$k.$objext eval test_cmds=\"$reload_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 # Loop over the list of objects to be linked. for obj in $save_libobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result if test -z "$objlist" || test "$len" -lt "$max_cmd_len"; then func_append objlist " $obj" else # The command $test_cmds is almost too long, add a # command to the queue. if test 1 -eq "$k"; then # The first file doesn't have a previous command to add. reload_objs=$objlist eval concat_cmds=\"$reload_cmds\" else # All subsequent reloadable object files will link in # the last one created. reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" fi last_robj=$output_objdir/$output_la-$k.$objext func_arith $k + 1 k=$func_arith_result output=$output_objdir/$output_la-$k.$objext objlist=" $obj" func_len " $last_robj" func_arith $len0 + $func_len_result len=$func_arith_result fi done # Handle the remaining objects by creating one last # reloadable object file. All subsequent reloadable object # files will link in the last one created. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ reload_objs="$objlist $last_robj" eval concat_cmds=\"\$concat_cmds$reload_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi func_append delfiles " $output" else output= fi ${skipped_export-false} && { func_verbose "generating symbol list for '$libname.la'" export_symbols=$output_objdir/$libname.exp $opt_dry_run || $RM $export_symbols libobjs=$output # Append the command to create the export file. test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" if test -n "$last_robj"; then eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" fi } test -n "$save_libobjs" && func_verbose "creating a temporary reloadable object file: $output" # Loop through the commands generated above and execute them. save_ifs=$IFS; IFS='~' for cmd in $concat_cmds; do IFS=$save_ifs $opt_quiet || { func_quote_arg expand,pretty "$cmd" eval "func_echo $func_quote_arg_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs if test -n "$export_symbols_regex" && ${skipped_export-false}; then func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' func_show_eval '$MV "${export_symbols}T" "$export_symbols"' fi fi ${skipped_export-false} && { if test -n "$export_symbols" && test -n "$include_expsyms"; then tmp_export_symbols=$export_symbols test -n "$orig_export_symbols" && tmp_export_symbols=$orig_export_symbols $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' fi if test -n "$orig_export_symbols"; then # The given exports_symbols file has to be filtered, so filter it. func_verbose "filter symbol list for '$libname.la' to tag DATA exports" # FIXME: $output_objdir/$libname.filter potentially contains lots of # 's' commands, which not all seds can handle. GNU sed should be fine # though. Also, the filter scales superlinearly with the number of # global variables. join(1) would be nice here, but unfortunately # isn't a blessed tool. $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter func_append delfiles " $export_symbols $output_objdir/$libname.filter" export_symbols=$output_objdir/$libname.def $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols fi } libobjs=$output # Restore the value of output. output=$save_output if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then eval libobjs=\"\$libobjs $whole_archive_flag_spec\" test "X$libobjs" = "X " && libobjs= fi # Expand the library linking commands again to reset the # value of $libobjs for piecewise linking. # Do each of the archive commands. if test yes = "$module" && test -n "$module_cmds"; then if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then cmds=$module_expsym_cmds else cmds=$module_cmds fi else if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then cmds=$archive_expsym_cmds else cmds=$archive_cmds fi fi fi if test -n "$delfiles"; then # Append the command to remove temporary files to $cmds. eval cmds=\"\$cmds~\$RM $delfiles\" fi # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append libobjs " $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs=$IFS; IFS='~' for cmd in $cmds; do IFS=$sp$nl eval cmd=\"$cmd\" IFS=$save_ifs $opt_quiet || { func_quote_arg expand,pretty "$cmd" eval "func_echo $func_quote_arg_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test relink = "$opt_mode"; then ( cd "$output_objdir" && \ $RM "${realname}T" && \ $MV "${realname}U" "$realname" ) fi exit $lt_exit } done IFS=$save_ifs # Restore the uninstalled library and exit if test relink = "$opt_mode"; then $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? if test -n "$convenience"; then if test -z "$whole_archive_flag_spec"; then func_show_eval '${RM}r "$gentop"' fi fi exit $EXIT_SUCCESS fi # Create links to the real library. for linkname in $linknames; do if test "$realname" != "$linkname"; then func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' fi done # If -module or -export-dynamic was specified, set the dlname. if test yes = "$module" || test yes = "$export_dynamic"; then # On all known operating systems, these are identical. dlname=$soname fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test no != "$dlself"; then func_warning "'-dlopen' is ignored for objects" fi case " $deplibs" in *\ -l* | *\ -L*) func_warning "'-l' and '-L' are ignored for objects" ;; esac test -n "$rpath" && \ func_warning "'-rpath' is ignored for objects" test -n "$xrpath" && \ func_warning "'-R' is ignored for objects" test -n "$vinfo" && \ func_warning "'-version-info' is ignored for objects" test -n "$release" && \ func_warning "'-release' is ignored for objects" case $output in *.lo) test -n "$objs$old_deplibs" && \ func_fatal_error "cannot build library object '$output' from non-libtool objects" libobj=$output func_lo2o "$libobj" obj=$func_lo2o_result ;; *) libobj= obj=$output ;; esac # Delete the old objects. $opt_dry_run || $RM $obj $libobj # Objects from convenience libraries. This assumes # single-version convenience libraries. Whenever we create # different ones for PIC/non-PIC, this we'll have to duplicate # the extraction. reload_conv_objs= gentop= # if reload_cmds runs $LD directly, get rid of -Wl from # whole_archive_flag_spec and hope we can get by with turning comma # into space. case $reload_cmds in *\$LD[\ \$]*) wl= ;; esac if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" test -n "$wl" || tmp_whole_archive_flags=`$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` reload_conv_objs=$reload_objs\ $tmp_whole_archive_flags else gentop=$output_objdir/${obj}x func_append generated " $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # If we're not building shared, we need to use non_pic_objs test yes = "$build_libtool_libs" || libobjs=$non_pic_objects # Create the old-style object. reload_objs=$objs$old_deplibs' '`$ECHO "$libobjs" | $SP2NL | $SED "/\.$libext$/d; /\.lib$/d; $lo2o" | $NL2SP`' '$reload_conv_objs output=$obj func_execute_cmds "$reload_cmds" 'exit $?' # Exit if we aren't doing a library object file. if test -z "$libobj"; then if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS fi test yes = "$build_libtool_libs" || { if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi # Create an invalid libtool object if no PIC, so that we don't # accidentally link it into a program. # $show "echo timestamp > $libobj" # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? exit $EXIT_SUCCESS } if test -n "$pic_flag" || test default != "$pic_mode"; then # Only do commands if we really have different PIC objects. reload_objs="$libobjs $reload_conv_objs" output=$libobj func_execute_cmds "$reload_cmds" 'exit $?' fi if test -n "$gentop"; then func_show_eval '${RM}r "$gentop"' fi exit $EXIT_SUCCESS ;; prog) case $host in *cygwin*) func_stripname '' '.exe' "$output" output=$func_stripname_result.exe;; esac test -n "$vinfo" && \ func_warning "'-version-info' is ignored for programs" test -n "$release" && \ func_warning "'-release' is ignored for programs" $preload \ && test unknown,unknown,unknown = "$dlopen_support,$dlopen_self,$dlopen_self_static" \ && func_warning "'LT_INIT([dlopen])' not used. Assuming no dlopen support." case $host in *-*-rhapsody* | *-*-darwin1.[012]) # On Rhapsody replace the C library is the System framework compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` ;; esac case $host in *-*-darwin*) # Don't allow lazy linking, it breaks C++ global constructors # But is supposedly fixed on 10.4 or later (yay!). if test CXX = "$tagname"; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) func_append compile_command " $wl-bind_at_load" func_append finalize_command " $wl-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` ;; esac # move library search paths that coincide with paths to not yet # installed libraries to the beginning of the library search list new_libs= for path in $notinst_path; do case " $new_libs " in *" -L$path/$objdir "*) ;; *) case " $compile_deplibs " in *" -L$path/$objdir "*) func_append new_libs " -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) func_append new_libs " $deplib" ;; esac ;; *) func_append new_libs " $deplib" ;; esac done compile_deplibs=$new_libs func_append compile_command " $compile_deplibs" func_append finalize_command " $finalize_deplibs" if test -n "$rpath$xrpath"; then # If the user specified any rpath flags, then add them. for libdir in $rpath $xrpath; do # This is the magic to use -rpath. case "$finalize_rpath " in *" $libdir "*) ;; *) func_append finalize_rpath " $libdir" ;; esac done fi # Now hardcode the library paths rpath= hardcode_libdirs= for libdir in $compile_rpath $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) func_append perm_rpath " $libdir" ;; esac fi case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "$libdir" | $SED -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$libdir:"*) ;; ::) dllsearchpath=$libdir;; *) func_append dllsearchpath ":$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) func_append dllsearchpath ":$testbindir";; esac ;; esac done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi compile_rpath=$rpath rpath= hardcode_libdirs= for libdir in $finalize_rpath; do if test -n "$hardcode_libdir_flag_spec"; then if test -n "$hardcode_libdir_separator"; then if test -z "$hardcode_libdirs"; then hardcode_libdirs=$libdir else # Just accumulate the unique libdirs. case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) ;; *) func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" func_append rpath " $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) func_append finalize_perm_rpath " $libdir" ;; esac fi done # Substitute the hardcoded libdirs into the rpath. if test -n "$hardcode_libdir_separator" && test -n "$hardcode_libdirs"; then libdir=$hardcode_libdirs eval rpath=\" $hardcode_libdir_flag_spec\" fi finalize_rpath=$rpath if test -n "$libobjs" && test yes = "$build_old_libs"; then # Transform all the library objects into standard objects. compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" false # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=: case $host in *cegcc* | *mingw32ce*) # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. wrappers_required=false ;; *cygwin* | *mingw* ) test yes = "$build_libtool_libs" || wrappers_required=false ;; *) if test no = "$need_relink" || test yes != "$build_libtool_libs"; then wrappers_required=false fi ;; esac $wrappers_required || { # Replace the output file specification. compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` link_command=$compile_command$compile_rpath # We have no uninstalled library dependencies, so finalize right now. exit_status=0 func_show_eval "$link_command" 'exit_status=$?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Delete the generated files. if test -f "$output_objdir/${outputname}S.$objext"; then func_show_eval '$RM "$output_objdir/${outputname}S.$objext"' fi exit $exit_status } if test -n "$compile_shlibpath$finalize_shlibpath"; then compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" fi if test -n "$finalize_shlibpath"; then finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" fi compile_var= finalize_var= if test -n "$runpath_var"; then if test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do func_append rpath "$dir:" done compile_var="$runpath_var=\"$rpath\$$runpath_var\" " fi if test -n "$finalize_perm_rpath"; then # We should set the runpath_var. rpath= for dir in $finalize_perm_rpath; do func_append rpath "$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test yes = "$no_install"; then # We don't need to create a wrapper script. link_command=$compile_var$compile_command$compile_rpath # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` # Delete the old output file. $opt_dry_run || $RM $output # Link the executable and exit func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi exit $EXIT_SUCCESS fi case $hardcode_action,$fast_install in relink,*) # Fast installation is not supported link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath func_warning "this platform does not like uninstalled shared libraries" func_warning "'$output' will be relinked during installation" ;; *,yes) link_command=$finalize_var$compile_command$finalize_rpath relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` ;; *,no) link_command=$compile_var$compile_command$compile_rpath relink_command=$finalize_var$finalize_command$finalize_rpath ;; *,needless) link_command=$finalize_var$compile_command$finalize_rpath relink_command= ;; esac # Replace the output file specification. link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` # Delete the old output files. $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname func_show_eval "$link_command" 'exit $?' if test -n "$postlink_cmds"; then func_to_tool_file "$output_objdir/$outputname" postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` func_execute_cmds "$postlink_cmds" 'exit $?' fi # Now create the wrapper script. func_verbose "creating $output" # Quote the relink command for shipping. if test -n "$relink_command"; then # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_arg pretty "$var_value" relink_command="$var=$func_quote_arg_result; export $var; $relink_command" fi done func_quote eval cd "`pwd`" func_quote_arg pretty,unquoted "($func_quote_result; $relink_command)" relink_command=$func_quote_arg_unquoted_result fi # Only actually do things if not in dry run mode. $opt_dry_run || { # win32 will think the script is a binary if it has # a .exe suffix, so we strip it off here. case $output in *.exe) func_stripname '' '.exe' "$output" output=$func_stripname_result ;; esac # test for cygwin because mv fails w/o .exe extensions case $host in *cygwin*) exeext=.exe func_stripname '' '.exe' "$outputname" outputname=$func_stripname_result ;; *) exeext= ;; esac case $host in *cygwin* | *mingw* ) func_dirname_and_basename "$output" "" "." output_name=$func_basename_result output_path=$func_dirname_result cwrappersource=$output_path/$objdir/lt-$output_name.c cwrapper=$output_path/$output_name.exe $RM $cwrappersource $cwrapper trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 func_emit_cwrapperexe_src > $cwrappersource # The wrapper executable is built using the $host compiler, # because it contains $host paths and files. If cross- # compiling, it, like the target executable, must be # executed on the $host or under an emulation environment. $opt_dry_run || { $LTCC $LTCFLAGS -o $cwrapper $cwrappersource $STRIP $cwrapper } # Now, create the wrapper script for func_source use: func_ltwrapper_scriptname $cwrapper $RM $func_ltwrapper_scriptname_result trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 $opt_dry_run || { # note: this script will not be executed, so do not chmod. if test "x$build" = "x$host"; then $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result else func_emit_wrapper no > $func_ltwrapper_scriptname_result fi } ;; * ) $RM $output trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 func_emit_wrapper no > $output chmod +x $output ;; esac } exit $EXIT_SUCCESS ;; esac # See if we need to build an old-fashioned archive. for oldlib in $oldlibs; do case $build_libtool_libs in convenience) oldobjs="$libobjs_save $symfileobj" addlibs=$convenience build_libtool_libs=no ;; module) oldobjs=$libobjs_save addlibs=$old_convenience build_libtool_libs=no ;; *) oldobjs="$old_deplibs $non_pic_objects" $preload && test -f "$symfileobj" \ && func_append oldobjs " $symfileobj" addlibs=$old_convenience ;; esac if test -n "$addlibs"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $addlibs func_append oldobjs " $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test yes = "$build_libtool_libs"; then cmds=$old_archive_from_new_cmds else # Add any objects from preloaded convenience libraries if test -n "$dlprefiles"; then gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_extract_archives $gentop $dlprefiles func_append oldobjs " $func_extract_archives_result" fi # POSIX demands no paths to be encoded in archives. We have # to avoid creating archives with duplicate basenames if we # might have to extract them afterwards, e.g., when creating a # static archive out of a convenience library, or when linking # the entirety of a libtool archive into another (currently # not supported by libtool). if (for obj in $oldobjs do func_basename "$obj" $ECHO "$func_basename_result" done | sort | sort -uc >/dev/null 2>&1); then : else echo "copying selected object files to avoid basename conflicts..." gentop=$output_objdir/${outputname}x func_append generated " $gentop" func_mkdir_p "$gentop" save_oldobjs=$oldobjs oldobjs= counter=1 for obj in $save_oldobjs do func_basename "$obj" objbase=$func_basename_result case " $oldobjs " in " ") oldobjs=$obj ;; *[\ /]"$objbase "*) while :; do # Make sure we don't pick an alternate name that also # overlaps. newobj=lt$counter-$objbase func_arith $counter + 1 counter=$func_arith_result case " $oldobjs " in *[\ /]"$newobj "*) ;; *) if test ! -f "$gentop/$newobj"; then break; fi ;; esac done func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" func_append oldobjs " $gentop/$newobj" ;; *) func_append oldobjs " $obj" ;; esac done fi func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 tool_oldlib=$func_to_tool_file_result eval cmds=\"$old_archive_cmds\" func_len " $cmds" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then cmds=$old_archive_cmds elif test -n "$archiver_list_spec"; then func_verbose "using command file archive linking..." for obj in $oldobjs do func_to_tool_file "$obj" $ECHO "$func_to_tool_file_result" done > $output_objdir/$libname.libcmd func_to_tool_file "$output_objdir/$libname.libcmd" oldobjs=" $archiver_list_spec$func_to_tool_file_result" cmds=$old_archive_cmds else # the command line is too long to link in one step, link in parts func_verbose "using piecewise archive linking..." save_RANLIB=$RANLIB RANLIB=: objlist= concat_cmds= save_oldobjs=$oldobjs oldobjs= # Is there a better way of finding the last object in the list? for obj in $save_oldobjs do last_oldobj=$obj done eval test_cmds=\"$old_archive_cmds\" func_len " $test_cmds" len0=$func_len_result len=$len0 for obj in $save_oldobjs do func_len " $obj" func_arith $len + $func_len_result len=$func_arith_result func_append objlist " $obj" if test "$len" -lt "$max_cmd_len"; then : else # the above command should be used before it gets too long oldobjs=$objlist if test "$obj" = "$last_oldobj"; then RANLIB=$save_RANLIB fi test -z "$concat_cmds" || concat_cmds=$concat_cmds~ eval concat_cmds=\"\$concat_cmds$old_archive_cmds\" objlist= len=$len0 fi done RANLIB=$save_RANLIB oldobjs=$objlist if test -z "$oldobjs"; then eval cmds=\"\$concat_cmds\" else eval cmds=\"\$concat_cmds~\$old_archive_cmds\" fi fi fi func_execute_cmds "$cmds" 'exit $?' done test -n "$generated" && \ func_show_eval "${RM}r$generated" # Now create the libtool archive. case $output in *.la) old_library= test yes = "$build_old_libs" && old_library=$libname.$libext func_verbose "creating $output" # Preserve any variables that may affect compiler behavior for var in $variables_saved_for_relink; do if eval test -z \"\${$var+set}\"; then relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" elif eval var_value=\$$var; test -z "$var_value"; then relink_command="$var=; export $var; $relink_command" else func_quote_arg pretty,unquoted "$var_value" relink_command="$var=$func_quote_arg_unquoted_result; export $var; $relink_command" fi done # Quote the link command for shipping. func_quote eval cd "`pwd`" relink_command="($func_quote_result; $SHELL \"$progpath\" $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" func_quote_arg pretty,unquoted "$relink_command" relink_command=$func_quote_arg_unquoted_result if test yes = "$hardcode_automatic"; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test yes = "$installed"; then if test -z "$install_libdir"; then break fi output=$output_objdir/${outputname}i # Replace all uninstalled libtool libraries with the installed ones newdependency_libs= for deplib in $dependency_libs; do case $deplib in *.la) func_basename "$deplib" name=$func_basename_result func_resolve_sysroot "$deplib" eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` test -z "$libdir" && \ func_fatal_error "'$deplib' is not a valid libtool archive" func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" ;; -L*) func_stripname -L '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -L$func_replace_sysroot_result" ;; -R*) func_stripname -R '' "$deplib" func_replace_sysroot "$func_stripname_result" func_append newdependency_libs " -R$func_replace_sysroot_result" ;; *) func_append newdependency_libs " $deplib" ;; esac done dependency_libs=$newdependency_libs newdlfiles= for lib in $dlfiles; do case $lib in *.la) func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" ;; *) func_append newdlfiles " $lib" ;; esac done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in *.la) # Only pass preopened files to the pseudo-archive (for # eventual linking with the app. that links it) if we # didn't already link the preopened objects directly into # the library: func_basename "$lib" name=$func_basename_result eval libdir=`$SED -n -e 's/^libdir=\(.*\)$/\1/p' $lib` test -z "$libdir" && \ func_fatal_error "'$lib' is not a valid libtool archive" func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" ;; esac done dlprefiles=$newdlprefiles else newdlfiles= for lib in $dlfiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlfiles " $abs" done dlfiles=$newdlfiles newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs=$lib ;; *) abs=`pwd`"/$lib" ;; esac func_append newdlprefiles " $abs" done dlprefiles=$newdlprefiles fi $RM $output # place dlname in correct position for cygwin # In fact, it would be nice if we could use this code for all target # systems that can't hard-code library paths into their executables # and that have no shared library path variable independent of PATH, # but it turns out we can't easily determine that from inspecting # libtool variables, so we have to hard-code the OSs to which it # applies here; at the moment, that means platforms that use the PE # object format with DLL files. See the long comment at the top of # tests/bindir.at for full details. tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) # If a -bindir argument was supplied, place the dll there. if test -n "$bindir"; then func_relative_path "$install_libdir" "$bindir" tdlname=$func_relative_path_result/$dlname else # Otherwise fall back on heuristic. tdlname=../bin/$dlname fi ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE) $VERSION # # Please DO NOT delete this file! # It is necessary for linking the library. # The name that we can dlopen(3). dlname='$tdlname' # Names of this library. library_names='$library_names' # The name of the static archive. old_library='$old_library' # Linker flags that cannot go in dependency_libs. inherited_linker_flags='$new_inherited_linker_flags' # Libraries that this one depends upon. dependency_libs='$dependency_libs' # Names of additional weak libraries provided by this library weak_library_names='$weak_libs' # Version information for $libname. current=$current age=$age revision=$revision # Is this an already installed library? installed=$installed # Should we warn about portability when linking against -modules? shouldnotlink=$module # Files to dlopen/dlpreopen dlopen='$dlfiles' dlpreopen='$dlprefiles' # Directory that this library needs to be installed in: libdir='$install_libdir'" if test no,yes = "$installed,$need_relink"; then $ECHO >> $output "\ relink_command=\"$relink_command\"" fi done } # Do a symbolic link so that the libtool archive can be found in # LD_LIBRARY_PATH before the program is installed. func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' ;; esac exit $EXIT_SUCCESS } if test link = "$opt_mode" || test relink = "$opt_mode"; then func_mode_link ${1+"$@"} fi # func_mode_uninstall arg... func_mode_uninstall () { $debug_cmd RM=$nonopt files= rmforce=false exit_status=0 # This variable tells wrapper scripts just to set variables rather # than running their programs. libtool_install_magic=$magic for arg do case $arg in -f) func_append RM " $arg"; rmforce=: ;; -*) func_append RM " $arg" ;; *) func_append files " $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= for file in $files; do func_dirname "$file" "" "." dir=$func_dirname_result if test . = "$dir"; then odir=$objdir else odir=$dir/$objdir fi func_basename "$file" name=$func_basename_result test uninstall = "$opt_mode" && odir=$dir # Remember odir for removal later, being careful to avoid duplicates if test clean = "$opt_mode"; then case " $rmdirs " in *" $odir "*) ;; *) func_append rmdirs " $odir" ;; esac fi # Don't error if the file doesn't exist and rm -f was used. if { test -L "$file"; } >/dev/null 2>&1 || { test -h "$file"; } >/dev/null 2>&1 || test -f "$file"; then : elif test -d "$file"; then exit_status=1 continue elif $rmforce; then continue fi rmfiles=$file case $name in *.la) # Possibly a libtool archive, so verify it. if func_lalib_p "$file"; then func_source $dir/$name # Delete the libtool libraries and symlinks. for n in $library_names; do func_append rmfiles " $odir/$n" done test -n "$old_library" && func_append rmfiles " $odir/$old_library" case $opt_mode in clean) case " $library_names " in *" $dlname "*) ;; *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; esac test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" '$rmforce || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" '$rmforce || exit_status=1' fi # FIXME: should reinstall the best remaining shared library. ;; esac fi ;; *.lo) # Possibly a libtool object, so verify it. if func_lalib_p "$file"; then # Read the .lo file func_source $dir/$name # Add PIC object to the list of files to remove. if test -n "$pic_object" && test none != "$pic_object"; then func_append rmfiles " $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test none != "$non_pic_object"; then func_append rmfiles " $dir/$non_pic_object" fi fi ;; *) if test clean = "$opt_mode"; then noexename=$name case $file in *.exe) func_stripname '' '.exe' "$file" file=$func_stripname_result func_stripname '' '.exe' "$name" noexename=$func_stripname_result # $file with .exe has already been added to rmfiles, # add $file without .exe func_append rmfiles " $file" ;; esac # Do a test to see if this is a libtool program. if func_ltwrapper_p "$file"; then if func_ltwrapper_executable_p "$file"; then func_ltwrapper_scriptname "$file" relink_command= func_source $func_ltwrapper_scriptname_result func_append rmfiles " $func_ltwrapper_scriptname_result" else relink_command= func_source $dir/$noexename fi # note $name still contains .exe if it was in $file originally # as does the version of $file that was added into $rmfiles func_append rmfiles " $odir/$name $odir/${name}S.$objext" if test yes = "$fast_install" && test -n "$relink_command"; then func_append rmfiles " $odir/lt-$name" fi if test "X$noexename" != "X$name"; then func_append rmfiles " $odir/lt-$noexename.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done # Try to remove the $objdir's in the directories where we deleted files for dir in $rmdirs; do if test -d "$dir"; then func_show_eval "rmdir $dir >/dev/null 2>&1" fi done exit $exit_status } if test uninstall = "$opt_mode" || test clean = "$opt_mode"; then func_mode_uninstall ${1+"$@"} fi test -z "$opt_mode" && { help=$generic_help func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode '$opt_mode'" if test -n "$exec_cmd"; then eval exec "$exec_cmd" exit $EXIT_FAILURE fi exit $exit_status # The TAGs below are defined such that we never get into a situation # where we disable both kinds of libraries. Given conflicting # choices, we go for a static library, that is the most portable, # since we can't tell whether shared libraries were disabled because # the user asked for that or because the platform doesn't support # them. This is particularly important on AIX, because we don't # support having both static and shared libraries enabled at the same # time on that platform, so we default to a shared-only configuration. # If a disable-shared tag is given, we'll fallback to a static-only # configuration. But we'll never go from static-only to shared-only. # ### BEGIN LIBTOOL TAG CONFIG: disable-shared build_libtool_libs=no build_old_libs=yes # ### END LIBTOOL TAG CONFIG: disable-shared # ### BEGIN LIBTOOL TAG CONFIG: disable-static build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` # ### END LIBTOOL TAG CONFIG: disable-static # Local Variables: # mode:shell-script # sh-indentation:2 # End: cddlib-0.94j/missing0000755000175000017500000001533113300566265011372 00000000000000#! /bin/sh # Common wrapper for a few potentially missing GNU programs. scriptversion=2016-01-11.22; # UTC # Copyright (C) 1996-2017 Free Software Foundation, Inc. # Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # You should have received a copy of the GNU General Public License # along with this program. If not, see . # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then echo 1>&2 "Try '$0 --help' for more information" exit 1 fi case $1 in --is-lightweight) # Used by our autoconf macros to check whether the available missing # script is modern enough. exit 0 ;; --run) # Back-compat with the calling convention used by older automake. shift ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit Supported PROGRAM values: aclocal autoconf autoheader autom4te automake makeinfo bison yacc flex lex help2man Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and 'g' are ignored when checking the name. Send bug reports to ." exit $? ;; -v|--v|--ve|--ver|--vers|--versi|--versio|--version) echo "missing $scriptversion (GNU Automake)" exit $? ;; -*) echo 1>&2 "$0: unknown '$1' option" echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac # Run the given program, remember its exit status. "$@"; st=$? # If it succeeded, we are done. test $st -eq 0 && exit 0 # Also exit now if we it failed (or wasn't found), and '--version' was # passed; such an option is passed most likely to detect whether the # program is present and works. case $2 in --version|--help) exit $st;; esac # Exit code 63 means version mismatch. This often happens when the user # tries to use an ancient version of a tool on a file that requires a # minimum version. if test $st -eq 63; then msg="probably too old" elif test $st -eq 127; then # Program was missing. msg="missing on your system" else # Program was found and executed, but failed. Give up. exit $st fi perl_URL=http://www.perl.org/ flex_URL=http://flex.sourceforge.net/ gnu_software_URL=http://www.gnu.org/software program_details () { case $1 in aclocal|automake) echo "The '$1' program is part of the GNU Automake package:" echo "<$gnu_software_URL/automake>" echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/autoconf>" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; autoconf|autom4te|autoheader) echo "The '$1' program is part of the GNU Autoconf package:" echo "<$gnu_software_URL/autoconf/>" echo "It also requires GNU m4 and Perl in order to run:" echo "<$gnu_software_URL/m4/>" echo "<$perl_URL>" ;; esac } give_advice () { # Normalize program name to check for. normalized_program=`echo "$1" | sed ' s/^gnu-//; t s/^gnu//; t s/^g//; t'` printf '%s\n' "'$1' is $msg." configure_deps="'configure.ac' or m4 files included by 'configure.ac'" case $normalized_program in autoconf*) echo "You should only need it if you modified 'configure.ac'," echo "or m4 files included by it." program_details 'autoconf' ;; autoheader*) echo "You should only need it if you modified 'acconfig.h' or" echo "$configure_deps." program_details 'autoheader' ;; automake*) echo "You should only need it if you modified 'Makefile.am' or" echo "$configure_deps." program_details 'automake' ;; aclocal*) echo "You should only need it if you modified 'acinclude.m4' or" echo "$configure_deps." program_details 'aclocal' ;; autom4te*) echo "You might have modified some maintainer files that require" echo "the 'autom4te' program to be rebuilt." program_details 'autom4te' ;; bison*|yacc*) echo "You should only need it if you modified a '.y' file." echo "You may want to install the GNU Bison package:" echo "<$gnu_software_URL/bison/>" ;; lex*|flex*) echo "You should only need it if you modified a '.l' file." echo "You may want to install the Fast Lexical Analyzer package:" echo "<$flex_URL>" ;; help2man*) echo "You should only need it if you modified a dependency" \ "of a man page." echo "You may want to install the GNU Help2man package:" echo "<$gnu_software_URL/help2man/>" ;; makeinfo*) echo "You should only need it if you modified a '.texi' file, or" echo "any other file indirectly affecting the aspect of the manual." echo "You might want to install the Texinfo package:" echo "<$gnu_software_URL/texinfo/>" echo "The spurious makeinfo call might also be the consequence of" echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" echo "want to install GNU make:" echo "<$gnu_software_URL/make/>" ;; *) echo "You might have modified some files without having the proper" echo "tools for further handling them. Check the 'README' file, it" echo "often tells you about the needed prerequisites for installing" echo "this package. You may also peek at any GNU archive site, in" echo "case some other package contains this missing '$1' program." ;; esac } give_advice "$1" | sed -e '1s/^/WARNING: /' \ -e '2,$s/^/ /' >&2 # Propagate the correct exit status (expected to be 127 for a program # not found, 63 for a program that failed due to version mismatch). exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-time-zone: "UTC0" # time-stamp-end: "; # UTC" # End: cddlib-0.94j/README.core2processor0000644000175000017500000000047713270066522013626 00000000000000To compile on Intel Core 2 (64 bit) processors running MacOSX, you might need to add the compilation flags "-m64 -fast" by ./configure CFLAGS="-m64 -fast" This may apply to other operating systems. Also, note that this does not apply to 32 bit processors like Intel Core processor. Komei Fukuda February 14, 2009 cddlib-0.94j/bootstrap0000755000175000017500000000003213277651306011732 00000000000000#!/bin/sh autoreconf -ivf cddlib-0.94j/doc/0000755000175000017500000000000013312731233010605 500000000000000cddlib-0.94j/doc/Makefile.am0000644000175000017500000000333513277651306012601 00000000000000# The Makefile for doc/ is non-standard as we distribute a manual that is # built from a .tex file (and not a .texi file.) # We do not want to make latex & pdflatx & dvips requirements for building # cddlib, so we ship the built manual as part of the distribution. if LATEX LATEX_SRC = $(srcdir)/cddlibman.tex $(srcdir)/cddlibman.bbl # Building twice seems to be enough to get references right. cddlibman.dvi: ${LATEX_SRC} $(latex) $< $(latex) $< if PDF cddlibman.pdf: ${LATEX_SRC} $(pdflatex) $< $(pdflatex) $< endif if PS cddlibman.ps: cddlibman.dvi $(dvips) cddlibman.dvi endif if HTML # Wipe the HTML output directory as latex2html's perl calls otherwise try to # find images.pl in there without putting cddlibman into @INC. # We depend on cddlibman.dvi so we know that the references have been correctly # resolved in the .aux file. cddlibman/cddlibman.html: ${LATEX_SRC} html.sty cddlibman.dvi rm -rf cddlibman $(latex2html) $< endif endif # Include the PDF, PS, and DVI documentation in the distributed tarball. Note # that this means that pdflatex & latex & dvips must be available on the system # where make dist(check) is run. EXTRA_DIST = $(srcdir)/cddlibman.pdf $(srcdir)/cddlibman.dvi $(srcdir)/cddlibman.ps \ $(LATEX_SRC) $(srcdir)/html.sty # Clean up files that are not in the tarball CLEANFILES = cddlibman.toc cddlibman.aux cddlibman.log # Clean up files that "make dist" generates MAINTAINERCLEANFILES = cddlibman.pdf cddlibman.ps cddlibman.dvi # Change this to maintainer-clean-local if the HTML documentation should be part of the released tarball clean-local: rm -rf cddlibman/ # Install the PDF, PS, and DVI documentation into PREFIX/share/doc/cddlib/ doc_DATA = cddlibman.pdf cddlibman.dvi cddlibman.ps cddlib-0.94j/doc/Makefile.in0000644000175000017500000003755113307421344012610 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ # The Makefile for doc/ is non-standard as we distribute a manual that is # built from a .tex file (and not a .texi file.) # We do not want to make latex & pdflatx & dvips requirements for building # cddlib, so we ship the built manual as part of the distribution. VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ subdir = doc ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = SOURCES = DIST_SOURCES = am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(docdir)" DATA = $(doc_DATA) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) am__DIST_COMMON = $(srcdir)/Makefile.in DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CDD_LDFLAGS = @CDD_LDFLAGS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ dvips = @dvips@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ latex = @latex@ latex2html = @latex2html@ libcdd_version_info = @libcdd_version_info@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pdflatex = @pdflatex@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ @LATEX_TRUE@LATEX_SRC = $(srcdir)/cddlibman.tex $(srcdir)/cddlibman.bbl # Include the PDF, PS, and DVI documentation in the distributed tarball. Note # that this means that pdflatex & latex & dvips must be available on the system # where make dist(check) is run. EXTRA_DIST = $(srcdir)/cddlibman.pdf $(srcdir)/cddlibman.dvi $(srcdir)/cddlibman.ps \ $(LATEX_SRC) $(srcdir)/html.sty # Clean up files that are not in the tarball CLEANFILES = cddlibman.toc cddlibman.aux cddlibman.log # Clean up files that "make dist" generates MAINTAINERCLEANFILES = cddlibman.pdf cddlibman.ps cddlibman.dvi # Install the PDF, PS, and DVI documentation into PREFIX/share/doc/cddlib/ doc_DATA = cddlibman.pdf cddlibman.dvi cddlibman.ps all: all-am .SUFFIXES: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu doc/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-docDATA: $(doc_DATA) @$(NORMAL_INSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(docdir)'"; \ $(INSTALL_DATA) $$files "$(DESTDIR)$(docdir)" || exit $$?; \ done uninstall-docDATA: @$(NORMAL_UNINSTALL) @list='$(doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) tags TAGS: ctags CTAGS: cscope cscopelist: distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(DATA) installdirs: for dir in "$(DESTDIR)$(docdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) clean: clean-am clean-am: clean-generic clean-libtool clean-local mostlyclean-am distclean: distclean-am -rm -f Makefile distclean-am: clean-am distclean-generic dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-docDATA install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-generic mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-docDATA .MAKE: install-am install-strip .PHONY: all all-am check check-am clean clean-generic clean-libtool \ clean-local cscopelist-am ctags-am distclean distclean-generic \ distclean-libtool distdir dvi dvi-am html html-am info info-am \ install install-am install-data install-data-am \ install-docDATA install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic \ mostlyclean-libtool pdf pdf-am ps ps-am tags-am uninstall \ uninstall-am uninstall-docDATA .PRECIOUS: Makefile # Building twice seems to be enough to get references right. @LATEX_TRUE@cddlibman.dvi: ${LATEX_SRC} @LATEX_TRUE@ $(latex) $< @LATEX_TRUE@ $(latex) $< @LATEX_TRUE@@PDF_TRUE@cddlibman.pdf: ${LATEX_SRC} @LATEX_TRUE@@PDF_TRUE@ $(pdflatex) $< @LATEX_TRUE@@PDF_TRUE@ $(pdflatex) $< @LATEX_TRUE@@PS_TRUE@cddlibman.ps: cddlibman.dvi @LATEX_TRUE@@PS_TRUE@ $(dvips) cddlibman.dvi # Wipe the HTML output directory as latex2html's perl calls otherwise try to # find images.pl in there without putting cddlibman into @INC. # We depend on cddlibman.dvi so we know that the references have been correctly # resolved in the .aux file. @HTML_TRUE@@LATEX_TRUE@cddlibman/cddlibman.html: ${LATEX_SRC} html.sty cddlibman.dvi @HTML_TRUE@@LATEX_TRUE@ rm -rf cddlibman @HTML_TRUE@@LATEX_TRUE@ $(latex2html) $< # Change this to maintainer-clean-local if the HTML documentation should be part of the released tarball clean-local: rm -rf cddlibman/ # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: cddlib-0.94j/doc/cddlibman.pdf0000644000175000017500000072410513300556126013151 00000000000000%PDF-1.5 %ÐÔÅØ 3 0 obj << /Length 1525 /Filter /FlateDecode >> stream xÚåXÍwÓF¿óWø(¿‡„ö[{ !ÚÒä—¥EÞÄjeÉo%á¯ïÌÎʱƒÓrh 'ÉëùüÍìÌhž.=yÎôŒ™Œ3%g‹Ëçy¦ŒžxJÌËÙoIµ\6õÅ<9O^»Kç][9úùªlçÜ$cÙÌ_üÒÌŒ±Ì*ÅQš4™–f”™`œ„ýÔ­] Ì\'ÏçKÆ?Çe‰Ì³TY®ì,e"³ÀÈ_¶ýPãàˆå²óøb’ÓÍ<…‡óåPwmOÿ¾v½+}…­H¤™@ ‚È‚D–í’È÷d›¤»¤ãÅÊuÞ uN…ƒãn½*O¿Î«:øòeV¾/ýdñ‚èÞºÍàÇõã(çEZä–“¶·£¯ÁÒ"Y=¦ƒóõðÉùf΂…Á|›„+F“üw¹Ê·¡ïç†lžJ¡’ ‰ÚÖ7¡9@°w~,ý5ýo"Ïó”0 ¨€ô€¡MYn³,’*ã&z|ܵsÁ’ÁÑ£Œ `Mn2æà„̤Š,lžZ® sÁ¡5'˱ÂX°šeRJà ô<&H<%Yvú/È:CQ]s½rK_‚¼B$/R|Êp8x“>Ÿ[t~]=ý‡p¾ÁCç{T蘵6@²Bh“ˆ þ–‚ô>-{ˆc`;…h™ü᪄/ЦëMðÎõD„ Ï!)ªaô®'-x^·Ä3Å–YÍY"i–¤ùçúÂSô€SÉØVÓm`EÎ/¥Ú Ó™Ð2$­RQ`†®æœïÈÂSuÙԟƒ¼)té£òüþÒÚ¯ªI¨vfŠb'íàCÙ@ä$Þ.¹ “ëû°ùÛ  )îBSD4Ÿ•CIyM¦ÞŒÍTé-T™o%-¾öÃB²PšgØàFßF/\e&eò˸Ɗû$%æQß×Wí[S¥ZKñ /ó`ŸgZ¸¹ˆÕ‘¯‡Õ{>Áôùt‡8{„z*Å~=9’O­j}=\oÜ¡Â+Љ&„¦¡)°ñ€µð÷®…K±Jy΂WûmB„Û‰ˆy·tïr&[·$x` è‡r›Xp‡Íìh&~WJÉÐ9Ü3æäý\é¤lÆØF±¤ÑH/8[–¾î»öo“Œ3£`ñIf2^îN4­þ³k¸ƒ ”•ì5ŸÃ£¦üÁڄ㌻Ð4Y²„—0¸‡K?:úÿ[ùC%º3mtÄåç³€ÀÈÜÙÄ]ð˜Ï«rðõG‚(YóEéñ\¸`bº`7Ý[že^¶ð½úätàAI©ØHßÑp“‡SKEÈN/ú®qÃáù] ý}êÜ}=Õa uÄðÜ áìۃ³S®3 ,¶«Þ ÝÆùC}MB àf"l¦ÏTóoÎM÷ ô ·—')Ó:Ó¹Þß(ÚÅÅÉÇÁµÓ CÒ2 އ•£—ãgÏ蟽µÁ´uøáÒ3z_Çu ¶e%X‘0½·…ˆqפÿäc¹Þ4®§µR3l SdL§ã=û ñÈâ|ܵAGU5âÀ’ LäÖ*~[ä/ˆÿ<ôÄûkï.džœ8žœèâºæa)–¤ì‘Qu{%m·ŸL‚-f!›YÍ5Mg,³¸–YžK|tѾ¬†m2ßC<-d³€“q{‹UÊJ¦gIíÞï¬\átÚëáž°¡#ÚŠÂ -ÒÜJÌ+mq—¹ÃUÄm ü^NsW_ù:~#FµÃij½eAG¼ÏÀ7™7m)™ïq£6¿äÍ2Ì/‚¨—`8‚öx–'õUcón\x¤ø-<˜–HLÁƒi+†ïÇéÖ0¤ù°ªãÆ—D÷QmGϨØFk¢O–åô ŒxÜMûÃf[èv\ªÂxú"ä¶Hú‘6¸ô« §&ñnrΣ¿[ç│$Ubø~NcùÄð]€MݺÒÓáÆwW¾\¯CJâAÅÐ\ß ÑøShi¯ÒèNMšTž‹¬€[œYQl÷²@ùèdñè/¦ÔQ» endstream endobj 14 0 obj << /Length 3881 /Filter /FlateDecode >> stream xÚ¥Z[wÛ6~ϯÐÛJ'C\HíÙ‡4MÚô4§ÙÄ›}hû@‹°Å Eº$Ûûëw./'íƒMjƒÁÌ||ñäÙ+‘¬ò(Oeºº¸Zåy$Z™TGI–¯.ÊÕoë¢)7[ÈõoÞâ‹ZwÅPµMQ3ÙÞ»Š®ö;T»h³Íb±~[Û¢ßlÅÚrßÎŽÙ°·î›Ý®=ÜÍFfëûª¹fê»—Ïxó’»þ ];Nµl?lþ¸øy¯¶BDy’°´7]{ÝT)èÕâS¯qˆÚ,2¸6”<ø±¨#â(t”kíØ¦ÌöÂ‹ÛØ[~¹:6;TCï¦Q–Ö‰V5NÄ}å?!ÛõÐÝwÙÕÇÒâpÏ^i5[)aTP}Ìã–%öyòòâÉŸOã•X)m"™'+£ã(3ÙjwxòÛñª„FPG¤òluK]+ •Á[½zÿä_O¾Çõ^Œ¦’8ÒJ«XјoŠ¡«î^MÛT»¢®þçä\ZJ¥É(&êç…KåW¨p k›-©u«te"_®WgËcS㈠—ðf³•4Æ„Ÿ¶ülÝïÛÎÞt¶wËIÖøM@—"ÓQœ~N•2ב–bedåRýUÊÜD hY`Ec¾ªšò­AÂOöu3Ø®‚9œ+SÄ&2Fε‰óôÚT 6‘Ô13²'¦T¬„‘5è9N£8ÉNöh4XyEk“®Û+|ï†ÿ´u½êû½-;Tê6¼éÚÕ*JÓÏ«7feD Ÿ™¿¥ÞÄDFCV&u–úò®ê‡þ¸‚®Ú ¶|UìlP½y¤’Q½¿ÇIüj“¡»ú¸IÒuÑoò><{ë”RƒN›X³¾ ÓStmg¬j™ÂVÔÉRÕn·W¸|¶ƒÑ|™ Þ$ðÜaûÞÒã£k"÷/gd›ûI+Ï‚g‹´ä믜眺ön íXŒÒQïûaÉ»®[tü¯‚¬†ÊöAïÊô}uYß³eWFÃãϹÒz¨njç^yq|ç‰ÀÙ&3g«€9[%ó¹³EzÑY¦ß›c]t$4U'c7LNWä<à“Á3/-/TÝÞP`0¾+*{Ò^CÍ!±o¯ÈHn7Ëñy‡ EŽâÚº`ô¦j>¾?X+h„—duÜøb!Sk½þZ¦­.Ùk6ìA¡?ýñ 7,’N™ ó&%줲Æi)˜Fl¢‰ÀÓ‚‘¦»jŠÏØg²ÉÇsßßDú¿ÑBe>’¡l—µ·ý®«n¦ïÞØaß’VKÏ(wŒ®œëDkWQ¢]æsm‹¹Ùv ÒÖ5¾ŒñLÖ6–´Udq U»xa¹i¹i{· ±ËeÝ¢{W )Þƒºzn¥YbwþÉBÕL۵ĕýÓÝb<ïÙxíbFšçÜ„ ·i£@ 4pÊäÀÉtçûù[gfÙÜ@„TQ;*uý Yl”ǹè:^ùiøÈu¹ —D:{Ü…Æ7M¦a`d´xAá“È$æ”]¶2Qnbê‘FR¡÷R•ú-`¤#£äjÖë;Pbj‚,a–1jlÖ[~ Ïoñ‘òÃøÇwLtãaÂ3ާ 4Ç3ðàPRœŽ2pi³^dÈçü4D ÿ“X;§ZËäÅͺ' ¯`ó~Þ†ËÀ®Ì|¸ ð&ʲt1\ÐZÓYºxr©Çïq? t.|§çwAS6‘Ö3F2yhOˆ±Wb„¯}ëاä¸r¹o÷¶³!ᕌF~σBI@ ã’Â䜴ìfŒs3g›S€öÆ-~êEF‰™%jqØ*˜ì‘‚RÆ-Ž]vÖ,ç° ;¦µKîY V¢NÌàÔ‰ˆÏ« c7Ù0‰†ŒdT$'s:„GJLæ{l™ónh;4ic ¦8äùí-üCàÆ”ºñW,£ ¢ÿ2Æ!A<_Ç>Žæ1Áåãss¯ó©ÇÐMaó0ëÄá8Ç Îh!ÏD&âÇ£mý´í6 D“~@ªâÆ (`œÌÆ/Ça¼¬>f¡i C;æô$~Ëß„%„b"•eK}ø A F>Z'¸ÛTBÈ9Ñú®ä\HÃf!û‘„ððñb‹–SWj/»¢»GjvRA€n”½cÎJ+/ˆ?Uí±¯ïù7d¯¾öRzÎ;—ÿ¸O@Šgð÷ŒÉÈ” Yw%"oâÞòóP|dÄi. 9exF.eçZ‡Ò˜%8±ñÇ´:Nhb´˜E|ƒíŒju6Ú][þ3z~£u†'Û¼€¨Ü½oÝÎ1v ”Ù)‰q” —gÁ¯}áDs9µu½:{ÛU ­ˆß…›CBs@äÓ¤K‹µP©Ëfáyh ¤TIÊq2 ¿ûŠ uÆ¿î Çàr4R¢Ö5¡x¿êZLÂRÈuA g%®”«Mø|ñìÅS\ÉÒ²7uõq3céú›Ðt¼-â(£D{pŽ,<%é.?Lçé'´T ¸ ß©œ+CŽÊþ’M® y;œvACHs,ŸU¾¨H-Í0I4móp;-.¨À-í² ‰¶er–yl‰i,Otàtfè~œ_µr{{uDqàS[ ÇÎ5p¾œ9Å>óÊ瞤htÃC¯â¦¸¬hlÃIøÄVÁAëÌ,sd¤&Å™kg½AZs´0¾Ãƒûõ¶0„k§…™œzv¤‘³gY Fž¼^¯þÒðU0}ÖGU®CÙJEy’?‚ä{ͺÁä‹›„úËà={¼Ã*~ 1’+-7\ú"ÄŒ}4>ÇÐ ä‹Ù_‡åŸƒÐŸj—¥«ÅpÁì0v3Ž]ˆ”rý4¨2Éÿ¨2´@Dx Ç_§´.ÜsD‰Y,UËuzêðT<°ÔJä_©×.¬W‘ê¯)À'’lÔOÞΖæ1-~ÆÛZEYÄÛ£O ›$Ž Õ³ÆZqËÞQ%{G•pEÂpÛú–Kp*}p4Ä}=ÐûШ°VRŽÅб„0˜¾xÈÈtÑ‚µÀHËäñbÎcþ+‹t.þ«r޳´än­+”Aµll,™žøµ÷aôm¦Õ~úP­gªi\0,À7,Äf,‘ÑIäœuEp5Nçp¹g Ÿh¤ë2Šñ`µø­èÁßY×ÇvœÕª8YwœAàïšxÈMtÈD¥’n(>öƒ‚ª6…˜/Ò]ÇÒöÕ5zŽÀt¨ ¢bP ? ~ìÚ®³tõEÄ4žZâàôÁ°àLj ñ‰…ÊwÅ ˆ€,݇|šÚ»1Æ2 ±8Dá+”Å3º*FñP¹©‘%è”ÕçUM„¢Ç³-­}‰ hgsÔ®zmM;0áØTÝŒ¿˜Eçiüb¦"¬bˆ‚ɈL¹gÕøä™jZÚø-¬ÊœC™+U4ß19ÞVÂsE´„œË‘ˆ0‰ßz{=»%L§Ä¶¬€Úûú„9«0FC{8…‡€=÷YïÉÌÝôÚκq‘‹Fžk ) ­ü•^V&Hmô©çªÄ› qî:üØõUSÐuøIÆc\É_úâàߦ^$*w'Q¤¿^﹄6ã/:zœdü°ýrÐ:™v¼ò¬ÁŸÊÀ2ù.Iãr´Q!øcbkˆíÍâi,ž™ÇήñOïãõ/o}§±*‹?¹X¡ ­'”)<³ œš.o ?W<¸‚™cüË[_S1f>Ì¡¸«¶çu"?›^ÿ/´ÝL?Ð2»ÀIž©°æ`ùtPÝMØw^AÅø$ðÂBüð™Aò4«¹Ó%Š×þ¾‰[ä©V²ƒó—W®ü„PÙã–¯N°EÀ‰õ?zÛ0R&– rëš+ I\ž`Ž £lJÏÂ…!€ ©˜Ã¸¾ë‘tBÎõ†‡âƒ ¹¾¢ 2¹¯A4eG¹oŽ÷+ÛcÛÕß7È}UÚúáãn žKIi"3eóe85ÎÓ¯“UÄ1Ê‚/@¼´BùÉ-Þ êÏ«t¤²dá©ð£·®:ãë à]ˆÍßÑ󋄸 gGöÛå´ý‚ËïŒM™á@DL=ž2’3ä¸H#åÖ‡Ö1 SAYÊ”Ä Œšˆéî 4ýÀGUÉ?ŸªÜ7<ßÄevD9‚wÌRï"Ϧ6‰ž¾Ùû‘ç'$ðs¶\Ïʵs20rô­®òs• «ã0U™GY–Í@^ý?竪ö endstream endobj 22 0 obj << /Length 3337 /Filter /FlateDecode >> stream xÚ¥Ù’Û8•—U×Ä‘udj’l®©l6»éÉÖV’µMÛªèpt$é¿_€%ÙM'5µ/m „@7 ~rsõës¡W" ó(«›Ý*•«4‰Cå«›íêCpìÚ}WÔ×ë8VÁ¦¨*³¥uÕõ¸ˆƒ¢™!UyKëò-¶æëµÌs½AÕ¯×2 ˆDÜâÎáý½À‡¯%Ózüµdòô«‚‚~ž®ËúX™Ú4ˆ?CÙ6„Øîc8Zt|t×›ëO7¬¢ÕZ¨PÇ|³ÞÝ€%AQíÛ®5=~ˆñ‘vmG" ‹¾¨yE\Œµé#<ŽݳíÍCI'#Ø+úÝ´ Э{¦ÜÒQo‘Z[Ý̶+h ± ~©è—÷ÐtoöŽUâ¥EðÒÊ »±ªî®³8”ÔÀ=JRI g×G`÷¶¬€Ò€’ÊÊ·í5`7-ù–l LÆ4ÅmezÚ{Ó1|`ìñZ=ªÝüÖòÕz\S$dwºOYVä*Mƒ²9Ž-?F"&àÁŠœÛÒÔ›‡Ö)ƒ€ß%Áy0]¦7Ñá:a®æÁ”¼dífH°¡ëTϯ30·¶&ŒvìèuóuÑ•¦Ù8F¿ù®Ø™ ´BÏìEž;ÁQ¦!%I¼²î‘{Ó€»TììTé"Р{l·J`c0ÍöÄOR6%çƒ`ɦdöaòÙC¹?Xapkèè_´–ÔÓÞä ìoâN)Ð4jRÅŽ3Y£‡ß‰3|pœ¡8îNf‹¦m–L!M·¡t°ï û9ÇtZ~Eæ*9‰ +0„qÊV ³ áaS4´˜E `(%X:cA$?Ô£Ž)°°vl»×"D¦gèïŽpNH×Y/ïã”`ÝŒ4«ï1 ™! ghz7mj¹Ö°*+ Z„î"[b?ÎÙ@c¬e{¸ÎÒ– Å"õVµE(R¼a÷c,Ê”°pFùÅJâ³ÏÒ>F:rI³rÁC›Î¦„‰k Ó°xaZpùŽÁOYŒ¦Bc¢—J!2¬ |¨ñ mG·T:¿§ŽµggýÙP¦Ã‡Œ~ÈžaÁ±t,ôÌj;±ìOÅ“À0 Æ" nðr2†¨P¸xDÏÔ'\d˜@)•MO[5˜2\뎞&L?”Íž^‚‡±/@ÎÕœu+G¾[⤎Ø6@àbÔ§Xùã9†Îk%N í—‡³àÕl‡2ÀYœÝP\ôñ›Õe¾ˆŸ2ÏÈ­:¹5>lË~èÊÛq@{B´«]PÆAœ¼ª£¥µ0D{ñæO‚¼xöæÙ¿¿¦‡·>yýê)aÀâÙ›wÏBÞ©LÁŠöúqg ¾!1Ü™R9Ÿþóí_½yAH^TÊX<6]°8~qìA»÷ÅãŽzXQ 9× V6 )pÆ¡øÌ…)‚‹Æ¹<€æXôMZ&ETfâû'o¸XLOw6„·ô=Ø;p0rGkªì—hD•‰Þ tðdä——·¹(ÝEr̃}UliEé:‚ËmLéÎÇÛqïvØ:›B+‡Ð¸ß£µ oPEš»ì Ac]ClåÍí$Ø›ž¶ .üæ{cAªàÕŽædÇÎÑ­=nEÁD/2-Äuªdl´Á‘ÌÏb}.›­µù‹i‚×ü¢Õ&<;A ¾§˜K<‚„x(Â盆à”2q±ASXu!m2¾sž¡À:Nñ\ã½î÷e³©FÌ#*Á4f*ðbZYæqãx¬ÊMÁúAHÙPàß P~}ò~ ߈Åï¿¢ŸË@€i¨| M8ƒ ÞXR|FpÝ:f޳–©%é°¶ô•òãq lgõЮ3ìÖ}»›Û¢3®úŠ!óbm–UÉÙÜstãÈ Â‹•Ê-ÄÅ×M[UÎ:©³ä×çàR"UœHl‰¥B×K /$öjPÈ̽š‚6àåš~¹ÑÁûõóëk:házaz@ÈŽÄEžç˜®éôÓ†OC™$tü³¹vRIêÒ ‰å;ÁNé:e»MÒ©«Km“Ð,¸ë²Ÿ¶y ØjC(Ó»¸ìŠ¢†jÈ•°C6I½(£)ã¨vý± 6(É0~Š`ëõp{J6•p¸´@3û²ù|=ÙYÿ¹¤í~¬iߟ©™Æ=l‘n3î{3JAÈq –ciË «¿ÌÏò(D³ŸZ7z×w„¢#¾çÖÛ²#9Ú(ŽÑÇzö†ÉÜ/ר9—ÀûÓȉ¿_Ï:NаƒµÈvxüÔ~·—³ê›ÂJAI9¶=»e–…[œp[ôÐwÛåÙ˜A4æ°†ãÕÜØƒ÷hñr}ßVùX{UX¼woÞKQ§Zõ½‡˜Ûù$y,YO®Aµ.;³vIÛʵÜ7®Lwõî"ÜnűÖ”J[–ŽeÀ†Äf.WùY>­Ø ½5¹¦¤Jýg+{SJ‡*]=qX¸ö\CvÃJ°¦ðÛ·5CŠþ®vM>veo‹j¤¿£ÁÇ’îŒîc}ǵßI ¶ú~ ºl‚ÏË®·EHD4 ­û¡èØÖUq$\•y ‹‘8 ^›c¶Œ¾Rê0OS¸µÔ¾-¤e+ºW~Eäc—Ñ?6õ5”ka¯-Ã=M}º’FÕ±e> stream xÚ½Ërä¶ñ®¯˜ÚK¨Xƒ%H»r°«â²S›xS«Ú¼>PCJ¢Í!Ç$g%ý}ºÑ_ŒֻNN&ÐÝèwó»ë‹×ßódÃc–Åß\ßnÒ”eRoŒV,I³Íu±ù9ú±¹ÜJGÃ}‰5åÍð,ËhtÛvû|¸Â=\ •´EY¬¾?\n íûꦪ«áR¤Ñ­´·Ú#H•»êö©jî.¹þÇë陵c*cδI71!YWM™w°™°™…_R¦ftâÁÙåVé$º¾¯z:y_æMïñ̇‘*Üj³•Ài²Í–K–(Ç—¶]yèʾl‚!ª¶(žF}»ZULáÓƒª9v-~øÐÓÛ.ohpC´ÓKOÌ‚7€¨>Ä\!;U œíClYÊÒ‰Îò÷c,®Ê>Ä“„3e¸‡ýÚí—ÎA2&å!nBða™‰‰¯L§Ã4 b¡*%6 @mÑbi*JêWwZ6?Í0É '‚ >ÄqB‹æñˆù·¼RÆ¿¯ÅqÊž6Ãë1ÄNªldÖß@†2Å—[%{¡y]‡N±á z’Dl‰ËJEWfvˆ0iă<Ò@¦ü&¨,U£‰Ð SI2í±åÚ€œÀCÓÃøÇ749„Žt3ÕS T­T“æ:3 ¥¢Ñ>G[â¦GÅÀ—v_ ƒ5-ðRÝÒ^ e[Ïý iimRFJ­4ÓZ/uú§j1™Àâ’“æ9Ë`U—&L`öØ“…%oé¹kÉ$tmí>l÷ õù´·7t9½Nö5|çÌd×ÞuùÞš*=ZáCÞ ÕîXçÝ•v¸w'Q‡·/WÔå Úäy‡F˜¸Ó Ù'´ŽŠ®fÆ„G qeaùh*¿)7„n¹DG¿–»¡úxéŒÀÜ›ž¤•DïÊ5ù0ä;üà¾t¿yKOäàTRW–ÖxIeŸïuYþʺkÏ nMhûWùˆfÞHôWt™0.J<¡qooq¥­Ÿ.'ÑVz¡c€yÑ~¿%?Ô5ÉôdI2FFoÊ!¤u"aßmL†y;‘Ðù;;À #F¹›²‚jP“¬²ŽN3&2¿msÂÊi>"wW6e‚ NÚîì|;<Ô#¬Ü… TœÎytQÀ‰tvÖÖ©®2Ì€§XÜû„G–FEÕ•VÆzzÿ'1\!’ÝØÓìèC—xIpjqöÿH&3ÚF0=n&ácÐ6 &ä(@ˆeØÿ%=ß'y»„‰4%oçÄ›‡÷1RlfPŸ`Ò?œ+h"ÇE%±ÎwEœy}äXÊ>2£i›¦¼ í+aãø“˜6z.ºdB©X²–ËQ¿â'¢ɳ?È×.ÌW®ÕD)°ã`ÎêD4 Ä«««¤eŠ®¹!ý Ï !ÄĉiZy˜ÑZ×ëâç5»ô‹¦OAGeÑ¿øûõÅïðÅî³-!à2j³Û_üüK¼)` œ|7r¿3ÊDŒ›Õ›wÿ¾øîyÊ“+´ˆ™ÁR1p[”´Çž‚pà{gCƒaw¼ˆÛÞO™¤#Îï(]9®™ ›“ÚHtVbŸ1cF¹‡›ÐšûØw!E Ùf`\ª¢ÚL2“, 8¹Y2ßì뵦ÌÐ]ê8ÐÌ,Ž:Zð xæÊèغå˜ÆñÊ‹€+ΖwUÂucM8@Ï&þ‡íœNú¹åq¦£"è@×§í+0žBÀ=ÑV {tµ7”&vF»pÒ+*8±D_æ½ÀÒ(ˆ!³Ä¥l¬’l¬Âá¸héÙ´˜¬éÒ‚ß•‡¤‚Ž>^’© sØaâPö´@™# | MÛä~‹ºêmr“} 9j>”õD: ˜+ˆ"žŒj\øáÁÕµlªûê±tGå]ó7ïnª¡Ë;W h»¢ì–ÉÝúͪ¨àŠyði6÷ÎcÝn]v´…¶žàs·x¼é˦|ú¶s ÷m_ú”Ÿö‚ô®cÊú©6Ü,ëüq¬¶§3÷›É ¯e–',–c¸tÛ•eÐÄ,™ }[e2Ç$>U’R]¨E©$¼b}"ˆ0`Hù‹Å¨ìÅb”ús‹QX±Nç† SÂÒ‰¿…óS©Õù4³TŒf'ÙÌb's†ÙŠÉ”’7ek>ÉL ñ•ŸÌ‡4˜Ù©fzÖÛcÎÐ ö âÑT8Ì·fŸ¿d×ùgœ÷p_¹êU•á¶–ŸÄ§n3…á,¯ø_^„«0N„eòy†–EƤ³v4n`‹¤Ò÷'`Å÷'„×[˜+±Ff¢{šîó7·µ3×Aá– ²íìï'=s?àxÅftEgSò_Î飲m|¦ Åal&e?œG.µ…¢”çhÕÌÑ–‘ñwI.¶r\ëÄ/YÖå­7™¢«ÀAéÊ•ôf¯b|ËéáDu(ÃÅ" òô'('\†-EŒPx±ˆ*t>ˆGÐ1ÑRå@°d.2ÕmsWv~«1ùTÈÅÉ›£û²*p"vhùyò ~ŸSí. ¸5³Ž±ÎFè«ôtY2åó¬ð/(<‹ö6‡êzë!›²ƒãž¶¤ÏA,°” :G?:ÐÊmp_ÝÝ×Oulêê7ÇÕE=¹m¨§£Öê š²,úù!Uãq€_Ž õ?`wR|žÍEɾOaˆÚ”ijÿ¶W2P|Jz0U¼Ýò¾íKÖé 26Š:¼c·6•Ñéàë?T?Ò‰Ó-#.˜ïá¥ô••+*!—¶qp]E¸TØgÊÙ½ Kg½"H‹'ìˆ_Ì#<ãÏãÑ+w€¥@±…´=s™º"ž ¾W…L°¨Á¤GmMØ+Çf—ä=ÈTY<ç–³%?Kø~ÛsW»0·?ÞÝ•ýØç\/‹e KmuÝ"µT‡©îX—SŽzaùÞ-«è‡E©e .H8YQ«ržƒù:\Lñ-Èý} #‘|*¿¬1,šzƒ·&H¹Ãa·P>eÓ“à8îcçÕx14ÿÃvA bðà›‚*ûŠ wMÑ/¸cWmDe¨¨o‚È_ML Ntl! ‹…™è¾9I·˜ ŸG8Ì­ –pêu"V»ÒŸçÜ`åìõëyׄ9h,J¥q€(‚$†qå®^û¸H¢ïò¾Â~¦I¢Ÿ ‰ÑÂviâúRr[«Â‚›m)‹÷»¡;î†#è•‹£Özkx®nNäãòz—§Ê%©©o/‚é"£ê2Оñà™)Ä)<Ám&\€TËÙ=áG{Ûz~\µwͰxn mG¿Lø(O”]Àè/Í4µÈqmr('¦R‚õã2KÐÇ\¹n¥\ 4‹Ó1È Nñ²6ÁuÌ„P¯ Éܹâ„dÊ6®f¥‰åi\KpCÜîÅc§ÿ̇®z¼~:³ÔÒD3OÎÉ2UÖøeè3Z+ÖZá̲;a§Š|È ÆJÌäþë.m¹7a{¿yWÐâ>‡ Ù¯aö§fç*¨\¥ÏþÍ }…/ŒF}i|œ;Ð3Ÿ2²¥ZùO†v2+î)ü‘çìe )YÃe%ä&æ‹.KHÍ(/î5– Ï_–æó|î²éûòuï¹C¿LÀ nóÂÑì×Ü%îÇ ä—¹Ôäõ –ŠŠ•'j•I-ËÞ´ÏÒà¥Ôc;§°3 ?W\Æé—)øEØâ^qìR·^VO±Ö¨y©ÃYA éÆ×³4ƬäÊax{l|ÁΖî¨ë EÙïºÊ š³ú }oã?ÖGhr¼sÿ²Ic\0pùáà#ÚùçE{¼©½¢p`n¶Š£ óYÛ—Ã=¥Å\±5„± ò¦u! ¼<°l›RDßöšžîÏ•À•Ë8cRœ»rLÏÑq )BòeW¸°>À½”¯Ë¾¨JI6ªÒÎSÔ[×ë.K+=ÜO6” ¦ ¹é*Ú÷Þø«ý€c=¿ûgUÞø_ ]ˆYøß®üŸYdpÝZ¹ <ÜoJû1îìÛÚÕ‘]øÀmˆ”±4u* üü„Z\ endstream endobj 29 0 obj << /Length 1806 /Filter /FlateDecode >> stream xÚ­XÝsÛ¸÷_Á™¾P™!øÍñS.3¾I®W[éËÝM†"! -I($x’ÚéÿÞ],HQ6§ç{±ØÅ~ÿЫ«77ú¸ÿ:SYÂ2õqæÙ‹Ê ò _QhÎòBRªçb Ÿ^2æLyJ©2ú¥>"¾?}Æ$r?ýŒ¿¡ûQ®Û¼=QµôkºwßѺTýºô=#²!N“ Êÿm2CD©Žâ Rmò†Òk޼ÐVϘyJ2T•BêÁ ôö×ä~­Ô«Õ,›mE.{ʼUÛ6¯‘-Ÿr£5q‹¼!Òz,9XªÞËJ”´:@õ·ELÆè‰;­Ø­UkYJù«ÇÑb_$s°xW -‹î5PÒÄí„ Ä1¯÷•¶Övsžt}ŠÑ¤Nìè·“(]”%+ðäØwµètµÅ d€5%q"øìFlàÜÐwOàwß#ôum1W>T蹫Q×ÜQœ…Ñô¤å¶ÞÏâYÀ²${JN)[QhÕJa}6õ %ŠAP}[ØŠ c¡\Æ®”PrrÝcÛ3ÃÇc3$/¸0‹aœŒ ¡jóF„ ÑŽÂ8{X´†djk*ÛwXIHùÙvÒÕF‹æõl bãÆÿæÌ„©ås'NE²àe#3Ž`dÆæ,?³8s/ôM^ËêôÔÔ, £)ާ‘g›ûì<á1:Ûi5Ä4· ŠSÆ/icb_„”[ø…äwÂL¥4‰9ý@ƒ… Ar “%îý¹CÒh`žN]­Ø·¢³£HTL '›B–¢)ÄÀZ™iÑÑÒâÅ„hHn»;× ©Ä#? (â¨[Q "ÚA,ÏsˆÔµ¦¬,ÛÉ „M^ˆ}88¿8²:íDÙbÅ/£(pßVBŒH`„Ú³, z‚& àÑ~gMÀûÞrÎCs 4p¶çBâVÐuÌš ÑH¬#1vtQ àhvòòŸàÜÙ˜ÄB?°åcŠaeûJ‹#­õ"O2þž'Øx\11 8¹e[-Ò€à0Á´ {¦Cø=ס)Ü{Cn—tUü¢M%©9ÊË’?Ô ˜pža©Òxå±ÛCvÄæÔ(@îÄ>‡‹‘Vš>ªñr‹F³˜ÅxžD,™€¼Ðj¸9òpi9_¦¬}v2ƒŠ”~e Ç6…ð±Î;Y<°LøËÝ|Êíu7ð"–¦üA…b £² ®"AhÙ­‰¸k6€2щ–’ ¤¾0·iˆçfè EÈböDùÀxÊb |)ÅF6à@äëüróöãý{ZyÓ6{‚}u÷ÙróÛO ¸©u $ˆ£R؈V°U‡6o¶âz¶—Ÿ+TõGÄÖr{)fŒœƒÔ~1¡@»† c§¾y5Ëf‚RÒ³aY°þØŽ–¯ÞR÷Qá´³®óã4¿M©ê;u°aIOý‹ O¢¢kË?#o›Ÿñ5(ºîlÔÛªºQ}SNÌ[HÄûz¯Oß“¿wð½‡äõÝc[_ÐþD\)õ1o·bÒ5> stream xÚ­VßoÚ0~ï_‘Ƕ*!Eh›Z´N Âú²M“I 󔨙ãвiÿûÎvˆY™úæ;Ÿ¿ûñÝ]ònqÖ÷ºŽï¹Coè;‹•sÝu{AÏô{np=t‘óù<оMð ²Á‘àäyN~á«‹VÐ äÝm’Ší#Ç)Ǧ콺øºøàxNËïºAÏàÜIŒ'LŒYN#1-ÔÓS£°ûÙtù‡Òs10±ŒâIž,1Ÿçiʸ°n9g\½lù¾Ê¬Ñ“„4\lS<Úùé \ox­í\Dx¥­1Í}ú­lâýŒ2Šßx&œûY‚ž+"¡û±õЬ"¼r€s ‡$Â6© ŠâކŒf$À­ÑÞä(®Þ&|.x†PW8†æOt);ÆT¾,Õ/¡ò…æÌ³—1“Ñ }NT×GH -_šž„™à£C™¿jŸ!“4gOÑ5Ö– e0w£#…–׸p 瑪æíË‹–ïÞyD–/Ë·leÜU5€Š'b«Å/@vk`)æH0nÞHçŽ\,Uç5˜,Ea‘á FU[õm¢ÔˆFEƒÿÌ•>;T‹å} Å-ÈkëféöÜn*B[Ei¯è† ‡ ¾ì«¢vý1ÆôÒ2¯`j—ÂîÍšý[Ý;v3­­Œ‚“ê¨à¼$ƒÃQÓrRýSÎÁé3 ·B ‰·f¤æXŒ•ê䩪5®½%Y[ó‚«¶à¥i!üG(ð®ýÊ üÇZ*³>½†qš±8—=fŠ[®ÐÕ«œˆÖXÅØ`ò£mÚkE ~ÝžTélì1ɔܰ-Æ’#¼V‡<úï µYª}aô ÐŒŠY‘KWªÄ÷ÝnÉ9‡Qfe•>S0•}U‹.Ù SÄTlPœãº'¦?åZP6b{ìöŸ_ǺýÁãÐìjÕ—–g·‹³¿È@ñ¸ endstream endobj 35 0 obj << /Length 3445 /Filter /FlateDecode >> stream xÚÅZ[sÛ6~÷¯Ð£œ‰âFíä!mšÝtÚ]ïÆ3ûÐz:´HÛÜR¤–¤ì¸3ûß÷;(‰2()‘:ûDp>œ;ðÝõÅ›RLX$aÂ&×w“XRɉŽd âdrM~™fÙoïšúér¦¸š¶uùíåŒ)­¦o^Ù¦eS,Òrý{Õue¿^½¹¼¹þqNfLJúèeŽ`¨Â5Álu 9µ¦6¯Ë¢Êò϶Wuk>v‰ÎWM“Wý¸MÛ¢µ¯M¾lòòÌý{vtꊺÍíhó¼=ÀØjÒê>ïIï.bÍöÖzSG4uëÌ›®¸+æi—÷]í³{p ó´uoõ]ße^Wà¨Ë«ùó%¬­%¶/–ˆÿÆ7{zôb˺ºwV<Ö]û‹ºùÖôSæñ°ïZmÏðæm›w«¥müüuµ}¿[fŒ( {= ÀnÞ^=€‹ŽÆ>¿oж}ßÔmûÚ¬…é€Ål ‘ŽwìÀ‡ôÅÍÛwUWÌŸçÝûá?yóö/?_¹¦ºíêeç6É5ãœ4v ®®îÒò7KÌ"6cÌèõ`ÀÝÎd¿ýtõÉ)Úõó27CÞ|Ñ„É@Ȉ“aÀÞHîÆJ,ˆaðOÅm“6ØFƒðá2‘ÓU5'B­%ÂÔ¶u’Š["Í ÃU4}ºäñÔ¼«i Ѱ­m½pÿIŠèŸ0jXÔ¶Äi]ÆèºéҊȸÁe¿2êtׯêͲ©M÷yž­ ÷ÁåL²xú¯ËXôó¯ ì¬ÿXOxW—eMäŸ ‚™þAŒ©áñ’ëi^Í|"Ls~c‘ÚYZJt·S—Ï>¼ÐKÅë^d±„Ð zv4û³å>÷M"ã TQ?<˨ÏÅ×ÿ¹`h 'lÂb(M”ÒA„¹ç‹‹_nÂI†Ÿà%I¤‹¢|>%¡Ý’¬réÕ ɾ§™¤ícj·ø÷/Xm&9€M «§À¯«À‘êüŸ®FP:"°ÕX˜Ú ÔŽè€Å¤è˜@" ÂýÂÄC+¦Ï‚D˜rž¾ì6“–¦jw¦%¯ËG¿É†â‰øÏÄJ$¡ ºÎ•H¬â½À Ì]Ø+£w_ Q'ê&óƒnc¡=`YEõ­w }‡är»Jâ BkÝ$ò)yRŨ4 )*˜9ÿY?ý8Þ‹ ÞXüu˜!›Q¦<3žf…ô·§ â+¬Š®HËâÔàx ¡j0"ôDº|ª.²¾"íA,QÉFrlcxb¥q%•l$‡)£=î—!PœeV' nd0ë}Yߦ¥/©æ²óÌ !1ß`^:‚éÒª£“§o²Æ¶#¥oÜid%L¢AãúÁ(ŠäVa¤˜Ò‘ }²æÅÓéãÚ4º•˜Ê½Ø®æôù`;¤­WŸB„pbù ^T#7%ubùŠ%íHÁÛ9ÿÈ›ú«“dï_{„ÐòLKG¶)£h¸öåªÉÇÖóGú~°"ÛŠÁNJ}¤¢w=d¡®ü+^7å…;:¸3Bˆ$ÇJW“Ïë{{ZCÅI€¦œì8 Å óx §î$Ø´5E÷°È»þ»vV¿1†Îœ(%zúã9Ò2Ö–M}ß &6F1ð\Ñá QŸgYYÜÚÆ[Ñé}ÍÓ²tƒ¬~á­?Ìò8ÝÚµ€mJñCÈœWÉ0žZ%{¶óz±\ufÉXqééfRóÏLJ£í¤ÔVWóÜuü”ç¶íSn×a> Ž°£ èÔfž^²ü×IBö€U=Í; ƒxÃ[n è3s“|‰û~A$“³¸¢%õ»kòÜç>I°óL*‘„Èh0é¸ó Â¸>ϼt¶„„j{Þ‡FtÇw2|ë=¤dÓþIJBOƒ¬myp/½û ÷i™iDj 13t øõ _efû;qƒ!è¹ûñôWö ‹yÉìQqîVTÕ}1zkÆ[½}y)e}ÞLg|¢×¼´ÒW­šâª>¬â.¬úÞ(óÑìR­}rn‡rW…ÖÌ&æ¼½¶¡kk;™Ä@“sîÇos„tãÃt0Py@%4m%eoŒ Û¥oG7+K§ ðâj5æw–·ó¦X:3lè©ðýû^Êv FZÞׯ&£sØÛìp°}¦Ý>úû>FbR7GȶNóÉl›;ÖXÙß‘ž ¤Êeßó‚xÍÝŒî&‚=ò6†U é`ÁoÔ,m\ç‡<¥üüßÙƒ„×œÍ ¢â®bæ©ÔÊïÍ3$ØJd$°âÄJ­”ú©P¸Bíû÷Þ³,sQ†o”À·…FQŒü³Q^)±½ì÷ßFEÍ ¨Äta-eQåicß×uƒž #ö­ªY7ɼ0Ñ(Zì¦X·3™!§eÐÇÁž|W*‰–ahŽÄ•hµí^[Ûb]*+h]S<Úié§á=q÷M¨lLãF’ôçÛK-ŸíÜ ³¥€½£×«„ÑÓgWxäì÷Ê^m!·Lv65@HtmáÌ2šRû‰ÕÕ+×T‹¢s½ªõ@ׯøÃ˜O§Aô›M_´»“ÍÓÊ6ݺ–ùX6)ìÎÜ2Mݬ(àFሌ¦W她®Ýls-¶¹D>§A¿[{ü*È?w½iÎú¶Â–TºÌí¶ ¤·¹¹ŽDœ$Q[¹ —ïàï}îYž:*ö¶‡Ä®ƒÔZ:4÷XXy££±s,ôÑ€ûeElqëCðü±ÀFXpxgŸ†Ï+SÑô߈ÓZºEÁ’~g ûÏF"nÉò_RâÈØ1%è<ÜT2óß”BèVÁ¾ÔAP}POX"é$ô¤ÔAò „keTS’_Y ™EÊÚ*[Âêv®&eÿñÎí£«‘ûB‰Þ©‘kãw°•ÎÃÖ„÷Aa—Çd[õ.p¾?EãÛÅòÂ@bÐ^ µ9µÚz8§K"‚Z<áÛ÷`®/7†?Þ¨x+&Qwis¿ZÃÖT!ð]A®¼¹ŠU,–ž˜X2iªG±zH¦XjÚf~gìˆHÎ¥åæ^A“g#ÇMtz²•˜[§½$·dÅ“jF;áuêÌÍKé!›T{K! öÆ2`ŽÝKä‰K©ƒ(Œ -_½½¢_Ø Vx½1éþÃ#¯VùÓ²n÷/úðÝâd=½AO÷è‰ôô^½JŠÔç Ð Ã^ÈÐÙëÛþòÎÖ¡Â@¶-DHºpÍ)T“˜¤Û)ñ9“ˆTÆž»¤ã™¾&±gYÓt¡r¸Š÷ï­Qã´ ͬ)w7¸ó¦K†™¢Cg¾“ sÁƒ(Ù¹Êý©³á¬ìB©üy ŸûÂFÆ•ívkk<ž}D$$›Sû=7iã€m®ðŽpjƒǵei—’îÉØ…Sh»Ï+ªˆíraïV»XßråJq<„¥”;ÑÏ Že<Uhfª nÕ¯F¯TNájâ„M?v–r“w«ÆT§ðA‘n,¶µÞÙLj5XìòWz! ¼êCc6îüÕØ]N`¾¹¸Ð¯ÃF$àûë® Îà¥XxZõGFÐät¸Øéoµ¹¶9r Glùá» Dn‡M5lÆñˆ6é~ýÿ)¦F endstream endobj 39 0 obj << /Length 3870 /Filter /FlateDecode >> stream xÚµ[[wÛ6~ϯÐËžCw-w€}ë-ÛìIN³I¶ûÐö‘`›'©%©:î¯ß @‰4-;µöÅ"@˜Ìå›ü݇_¿äzÁY^°‚/>\-Š"V.¬Q¹vÅâÃzñk¶j¶»}_öUS_,“YïÛmU—½ï°­²ºi·åfswáT–_,ÖÙÏýoo«Î_ÂÁ³ª§O[ßïÛ:~WRßðA¹Ù{j–«UÓ®«úšõeÏÑñp|qÿ¤`9/âþE½Úûsã¬Ç4]/Œs9ƒ¡Ïò”—s˜ËæÎFÙ¼)?¿ª×þóì6ëÜq—È»œcÀæ–Ÿ´X¦sáøYè ¼&·ú«úÿJ?xléìyèíÀëOéÿ~ß7WWs h@?Ê?m]ÄYZäFÛ{ ôêy (0¦åY8PÀ¥Nvàó³wà$ý…÷rÒL€ž¨Ðkÿ´hŽz ÊkäIê—àœsÅå8Ü̺".•«…“Ðâ™®‚®—sIa|”Ÿÿ"çžò¤ÆåF‰|ˆÌMÈ£ÙB¬yÜB„æÙ+ÒÙµ¯}[nfù2!N‚"ÉXŽæq¾$“yðæÞ¶< ^ŒÉŽ`pCa>°ézj®0˜Þ4Õ*¾¾½©¨‹šéó* åª\?ì|à `¤±‰ÂÉFAV OJ `]‚¯¬}žZ€w‘N‡¹,dO„”ô±j(Yd¯cp 0xoöØ0Ù§ºÁæ-µpâ ’8tU5$xÔÄÉ–´¾\ßQ£kÚ> HP§i-YFÃä Ä¢ìXûŒSœÖÀ —±Y¹'VŒ=èŽÛV×7‰Å@Ûað2è騷w³˜ ¿¶ò¤Ë¿P@–`¤„0Z<Ïgr: Â\Æ=™€T"ïÈ Î0ßúÓaú¶éiÚm‰ÃöÇß^•]Où–E` ˜%!©Ü )Ú²”YçÑö¥Ê~•±‡›ß/³Äù>6ÍÆÃÎ<\î'êb¡ @+\=3y‘ð s>¤ë¯Ðã}»Ûùz*º«£ÊljRwX‹ÑÓR0êÔ¤Ôñ†ŠTëê Œ@ÑÚðá`mØjý6ΓšÇz›(ÜC1ÊGjð7_툒çîmS×+w±†PS¹mDÉžç3t-cƒ¾Š_̹–³âÖ’J—qr*/ú˜B‹ëåˆ<ø£dë#Y¹(+ôhŒ§ò…É«}P÷ˆ(Zú”òp oöÛº£F1+fa4¤î)\ª\CVNv@ L) ü÷å†úÑ'a×À#†b ¥â`½«Óëç·=ÀÎ"äYlO"T¾}ßlþðhu›]4³{žP^ä ü/³›ÃŠæÄeá|Ìî(äSfPÛÍn~¥Âã}£ÑÉ@°b}Ý´U³[É\Tžø›5N¬]Ž*H85EÌÈÁxU˜jßïqÓ;êxÀÂ6²!˜}õ—6çT ¤Èþ]'ä6YÚ—í¦B#…Bâ,lUtÕq>­?j¶Þm<:Txcµ^ÿ=paéX@h0EŒV¨–ØX{´|ºñÒšLbZÛ()öÓ‡“‡ÐøÓ· =µ‡pˆÃo†ñ]µö2 ˆôU\¼êâGà^B±s ѯçNvžS)Œáæ Û ª§Š£ÌgnëxÎøé”%L±P{æq€ƒ(N\iX:ÿô¾Úâ¾ÍqaÀ ‹‘?—)}“ÄøGÕ…lkòtðÔÅù a3¬ïc!”Îv06Ò ˜›ÀÓžBÓšN™ð›’H‘n\eÇÆ¼ŽcŠ‘-æ\#~cLÌM„JL晜åò(£FƂރ*åNNÐëDz ™@£H/…ä ú|9¤°ÐÚUÁššžšh3·7¾õ³t™ þ(¡\Òk˜5îŠa/¹êOOO!(ÂÛÍÍ3OžU„ÚÀ’ƒÞJ‘nÀã±PÚh%LÜhì6[ßß ;ŒáøBP¼%CÇÖU8ÎÃäë.NÿúmZljñ‘‡ØnCdµ!¶ãXdPi½­Ê§A±V¹Ïí:†‹43ä‰@BéࣦnT8Ê„4"ƒ]µ"ǃoa.bRú8c!ŒÑ™&úì=NŸ$p @Õ}‰€:ËôxøéWÀ„ 8Y ‹—íµ§˜{ÙìvÎsEðØaU†R O¢£FI?Wþ–zGÁî;` #ÅXjí¨ÌïbÖRëõ[ú½);z8p‹-:ç {<Ç} ÕùÞÜH˜…v}„.¢»œåoˆøA£¶ËÁI¢~?¢Œî’Q$óH'õ8RùÿÜaˆ"¬ðÛÑ/‚×j¼´‚ãÃ?Þ¼¥‡6D­@´Ê€|_­‚ÓdÃtxL×v±îÂÇé<„ßcîpžHÍë¸ ÅI|úžæ]£c݃îÏ(;¬¥ «¾^’mª”% 'hĶСÖÉGÚ*)vôÜôÓ ÐÛKi 4£/Ä!UünÕ´mãŠ1ÊC7Šî` • ßwÍ%a¼ pãgOúÓ|Š1‚Hñ²#‡yAL3ÖÔKkâSXSð­Ñ½nã½L®EÐʇ­ˆóÆK ,lþ^µˆ"!+ØþªÛÍѪ3ähRÇ“q|J¿µ¿ F]è\·1G¤(kr2eR§½ê‚¤4ƒð4hó#‰u»êº"Õ„2X7õrÕ6]×à'añ0ÇdRÓÂû)šã£5Žñ±?™\×W› ˆx}vµAŸ»ç’…'lûhJ´‡ #žhá¡ÌóΉo0æ’ÊŒRö”ªÛ\¢&A|ßzEBbÇDqŽ»(RÀ.OM  @çësåòªïb1±¿w¥Š¿;pUý_.Íృ˜š¿¿ñ‰}¢„üÙ ð²xÄ1€ªYpŸ[= âàaF°%=Í'jšåºàÜÃÅHÍa\0!¦§õWì¢Ä’3`C©„ÐÌq¹D ‡HŽÔÅÏÓÌà F“_FDhLH9Æg(èÈ:\îÂF‰?:[áM à»)Ëë¸à°—èóZþÓò~Y#$‰n˜¾fž½!rw¸a4åj˜>ØcÚ“ Ææ ›ƒyGC_Xèf1¥¬'TJÆá6·˜ ;ªÚ"'°Ù ñÔ`MayMÈ¡@L¯E®ÌDòé"˜d6lü W¼ŸxTÝHa¶ F¡R…£ƒ93q¹öä2x]h| +õô³å ‹!P.%›­›x8Hͺ‡¥Ë0E¨ âÃæ¿§c‡82éælòަíNeÜš©Ü@N%œÉ%¸êçŲÔa*ž\ßËo_¿ÿqöBˆSšÓáCªORHgÌ9âN…÷ÚÒͯÎ÷'â‡ÄÑY–ç ²`¿£õ‡øñ¹CNÅ =º'ÊŠX¹œÄ‹wƒ‹£”I„,çsµ %+h ËB&Šm:{ õ®z]­|ü¼NaDH³Ê>=ù8?"±p½µ*Ö;š/Îr9qœËaÃo*º ¿AÜÙìûYäH(ëk2£ãBÁ.L/¨RÀP:áG9uá¸-ÜTüÔEÐüQH¸B–ÑÇjÇ/Kú%s•ó®¿;Ë­]ÁU.´8‹¦sºMôePé$¨4¢àýùÀRAÅù XR A-KJžK*·‡úÄ`1%¢%%BK<”˜GKàb‹bc`ö®5¾™”’÷° •…²0hæ˜IIÍG?!ðj‹z$ü©BNI‹\Cø‹·AD¼"0÷÷B#% nF¡š‡ÐÈãa]똄FnN†FÆsÎìcgâZðPHGúÌ3q X $ ±±HõŠ'ÇÆÀÌO¾õ—s[#5¸õ…*îÆŒktÔ›ñ\Ñ~À 1>”ÊýfRx>J@E/4ÖÁ¢š²,´=þ‰?[ñÅ{eCÂS…K@*j†ŠwzÔ=ç*)F(˜µ~<¼nèwZ% cêá³Ñ ,¨3àÛ«»¨†*!Sºô㔚^ÅKOnÒ ÍæP(âÔôú—åÌé9ÏfUAp€É~™.à"÷êeÐ7¿«ùü® gŸ¸«,wG®â*.xX8üŽw•r#r!'ÿ ãmt2Ö0e¼9'] üxaò£>zëϾ­(¨»x^P>š(ná”^άY7ñœ'¹Ãf‘ÎËɵ"tsŠÇܱ·šb™’€År®B®‰Ì û r²\rfÿ¿²÷Ó endstream endobj 42 0 obj << /Length 3624 /Filter /FlateDecode >> stream xÚ½[msã¶þ~¿Bß*gNñ&Ót’Lnz™K'õ¹ý’ËZ¢Îl$Ò!éØî¯ï.à‹¿ÕjçfN.ØÅ³ðwo¾|§ä‚g,Ïr¾¸Ø.¬XX£˜vùâb³øe¹Ùœýzñã›.Þüþ†/2øÇN1®¨un±Þ¿ùå×l±w?.2&s·¸õ-÷ É”4ð´[||ó÷7ßwç,ÓÖÍ»¼lš]YÔg+-t²®4ÓÒžD®Ë­škð~½«ÖUÿ¡ªË¢­úûO™ÎöEßVwoI­*ü–m ï8êøå;®g’sÅ”й—ù¶Y¬„‚ÉÓr±â’iúûþª\Ÿ ·üíl%5_Þ^•ýUÙ’PéfæQ,7*ʬRýJfµ‹-ú+Ù6(ÿ– UM¿Ð >×õõM^wT»mÚu¹ Mú½<[œ’ »0=(úžªp¢ÊßoŠÝ¬$ÑÃ_WmyÝ–]Yã۾諦Æùc49Ö1+ͦئ¦ ~ ‡8$)4–jYõ]¹Û¾¥÷UO¿›†ÆÙQ›æ§é¯ªú3•‹zCíŠÝ-Š*¼¼Ð¸-û›¶îH§¹³ -˜ãƒqR¾- ß––™üU®-×–^Tô´wß~øøCjº„cÆ‹óÍXJû•T‚˜ö•Œsõ4@pX§VŸ @”´†ºl›Û®ìÁ™Ã4Ÿ¤{®$ÊÌû?‚‡sPè"‘eltƒ2ï?¾´Ràl~¹â”ù' Í–~«zS­ËnZ©â²ᣢ-©A†²»§óâ$xÂÊ*µ|>ìðƒÐv]ìv‰TÛU—mÑÞûesÛÞÔk\ï)ׂY6òÑuÁµf ©qŽ)0Ä«ŒªA`=ÊÖ>`Ô$¦gœå<êéaMq», ßWT3Ä:Š›åºÙíÊußQ5Í< øL¢)¡0tr{U…^¼»pÃf>Ç„èhàºdÍÚlI<2z £Éi·€£B- a_7í.c`9e…£>/Îÿ‘†#1Õ, G\rfL„#ý$¾âp„¢ —/ä+§P ò•™?yÜù¾¨›º‚UYý»ÑèçÈXÀ¿áFÂDËÓÌ”†Is09(A¶Üj‡B]Þ^7Ý3H”¸¤ #›=àPäúÈnˆÉÈ,„}ñÙÿ\CP·Ë¦"ò ÖÁüf9ËÆ@æ0¥bV>­fÒU¾ UÄoZhèK{âx_}ʸ*»øEh>ÊË€ƒÁ(îé†Ú#-!H€‰·RÍç¥@`Ö à®Ú`ßS‘pžžnJššžj”Þ¬ÇhPQ\ÑžÞ]]Õy{ù* ):†xh®é‚ÐäÍ•É"Jô‹½¿?â8â(8l¹¹©7Yª6E_@„R¹]~KͲ!¤Í9ªV5ð!ÊÅA Jà円÷@§cPMi ŠmõÙêb7Žž:Ìv®—·ª r3Òj¬&‰ÌK(›xùX±nZ`Ð×þ‹"’RÿYƒ–»¥¬´'F Z(¡&ïã±MÑUè‡Õ¡Íf½ùÑàP¦}tI;µ!öŒú#¾¸¶œ„§¶-È‹SKP ë`"¹ËQ€5r pä¾vÅ-s€j`Èð•vƒCéFL _ö±tI#¢ÕUÈ:S zÀ ô§/p #­¾Q燄0ÓÙÙ>eÔ8Vãæ¦Ú—uGp‘R:˜rw¿ \öžV äU¹i p€l§5lþºDQó·‘Ol"á?L9U-0OIÐÝ p†/ÇyDy]¬Ë©"jØyEEþy¨|nbÛ¿5=ú©3Û 8VM6šô†wKÊbEwÕÜ€n» 릧/Ç夹~*±zˆ¶E?H¼$]7]I5U¹ï ŸËºl Ð=±Žzb‚8v4.D Ò«ÐÆ9ðÞo©;zAn⢛¸eWìÃÓÑäT˜åûúàƒí ,å}€ãê­ºX=/(ÅÚòޤ½-7É‘5dÛ1‰€»„³µß€È°!)÷a0å&Íü„Þ.ŸMü”3̨Sð>”¤!ï;Aÿ‘öÍ8¦}‰„Õü¦HÙ“¨0{#9W‘oFúÀ×8h÷(ëÀï„9`}Š#æìxüÆÔ‰iÆ‹M홎 ‰È«Ú.4¿*vÛÐr›„teXnÛ ØDJ´ˆ• ?zÍÔ ØË9ÎA°ð\<Ó½$Ïšî H!™Èì\c÷JG0èÞ [545ÏüìËO „Š*Ú©ìÃö HÁˆÐÊÎÄ<÷1ò8áäœÇa…HÂ) ÀŠ}G…‚^NØ.#Ãu‘á†p$V-‹ð"DIt<5ߨ@å:ØßáX›6{å] ö6r B§[Ì¦Ô t„0xTOšÀŸRé ŒsD¯)ªÛƒ`újX§qö$ùe¬{)®ž@X§çŸ꿾?‡ÝÁ‰=õµ¥Ç„É·´°wËí1¶ £ Û¬Ç6,–] öUpq6YøÐ•ëÆ/ £Êaí(g9×G@ÂÁžç>“âu i`>Lp/Š‹çöHL‹ÂtB©,3™™k𘛢œ°nŽrXQE‹” ¦åL ™ÚÕr1l0×Až†Yرxˆ€—ˆ€ÒU䪒ObàE@ x*¶ä5(‘ñGOŒ5õBæ,þʉ6š9ý,ížd+É ‡øšÉagtU„ÙTB1jÎf3ÌF9`)PöÓpG‰iV~’3 i Š›‚Ü)ˆ 7ÓàDÅór†?Ê÷5¸MÕ´Ççœd 3€§Ð •²\Ïu³†¸L°Vèÿ4½çÂ{ÙÜ6˜áŠý_?Òs;¥@C’2gî褷Ù_ßôe86)èg’— ©7éÓ>““):Ï^tÍîÁ®:e–~>VĨ@Yx;ÍjرB%¾ð)ì—©0IùW¾÷d¾Œf†“u0Q@,ƒ†c†È3Îeè«úužœ]Ûæs[ì± ¡·Å@y¿(‚úq÷‰ç9JÍÈ«‡wett\—{Ü´_#Q Y•çK/žšyËA•G(åaâë ½/¨ÿŽ\©5Ž’àᦴY‡wæø–€ž*-£>Ðr¢¹Ô}‡î§9ÌêY¸_ïÿ»¨MÑèµRgCÒÒF©i6w0Ò/’ÐÉ!î9 SÂ:½ò(J&3íEÁ'Ø™¤½ÂÇ݃ Ã&‘è €6K§’‚G!h&ÆÛç†x¡-³ÙIB<ŠÒÙKCü)ˆ!~¦ÁwU×wçe ŽI¹w°¾BüyøýøŒ{ Â1ÇOã€ø2Íò2Ã͑ǔlnñ´óÇÒþEPbŸýNºh;Ó€*ÝŸB¿¦®Çcp•r]…T.”º/w³¾›n*Þ ª¢2mQ…vEq‡ñÓª‡€“#”Æôü$¾Êlr’Éñê;€¹n{O·Š2 4õPƒÅŠ€Ø½­’'`³á¯ä‹œ'ÙÉ”GßVþJôyäß1y2E—,æúA L)¤Pfø¹2³hø1­Öä'¨…gÞWC2x~“‚Ø…‚ØüS›®[tƒq6½ÅutVO=ñy[R]V»ÙÁDð¢¯Â³|¦¯”#T‘qO“§f€œ ;­¿$¯¯i*4¹KßdNM&®’;%=&.© ²DÈ謚ÇÁ$þŽÝ¡J ÑÀP1¶ú”eÙÓ÷ï¾Môè<ùJõ8¤ÀGô´ÇôdÆóÁ…ÿL{í´b8„ØðëÔ-svÐÜ¥d ýbƒä49&ô‚âùus°*çBàÑæ=ý%%Âê8˜l ΀›nŸcò.mr'ÿg&ïÒ&Wàû3“¯r™/¿IFŸË ©˜†ùP'4y—69Wê&ÿ¬•e°|™µl<L¨¡YÍ&­Nb­ƒÝü6±ÖfÚã]Ò™AÚh¦O™ÐÉeÌ=Oø³æ^`Ë‹³Ä–¯S#‚@¨ E…<\‰½õ #5™8|¶¢sÄ•™Ñd/—Àƒ¿÷*• f¬Žï`«Ùý(=t¾•yê9»æôà= 5É{JE !1<`‡™åã´¥‡gø€z³“ëùPE*†:WÜŽópñ¾Àó{b¤@‚¥áóeùÊ©ø¤~ ©ñZÛãH=ÙÛ|H²Ÿ[}¶Œ\io û\±[~×ôW)ƒÝ,·OðB>þyÂ`Ò~ÉÕE -È\=àr2c‚ËGϬ„íL®ýºsa-,Lãea¼œ^O¹9ìÀÆk8³ÝF˜hJhÁè ¨”{t¶0ä«ùåÝ\Ç›X”Åg}|zÈñŒ¯û×$5Û¶Ù÷}Ä¡ÃÓ׃¬Uͬ~Ü?`id™:r9¬*…4;u}OàþYGòÚ¿‚3ãìë¢NC²à ¨áß=aƒ|Œ0!y|'¥îª €x8{-ºt”‰%{¸ì­f§NÏÎ$žáæ<Í™Ä(ætt2e©Iþ.‡Ã$.ð3æÜtïƒ ø? ¸D“ endstream endobj 45 0 obj << /Length 3227 /Filter /FlateDecode >> stream xÚíZÝoä¶÷_±o]·ŒH‘¢Ô¢’âÜ&¸\®g7A‘äAÞÕž•ìJޤ½³û×w†3Ô—¹¶/·Š"O◆Ùáo>¤/®Î>»f!#‘E™\\mY&”6ѤÙâj³ø~yuS¶ç«8‘Ëí¡Zwe]a/Z–諸)Úó¯¾úìBÇc222Âdj…}Þ5åÝê¯Mq /U—;*îÅéþR‘e™ñîd—yµ!º›s•.ÌNñ{EE½rËluÜçUmÁ]dUK'æ 7\söòêì—3 ƒÑB.tªa…qB±iºXïϾÿ1Zl`ò«E$â,]|pK÷‹Xè8Önqyöϳ/P¾ÓÝtš iÕTÀ/ª¢É»º IdÃ+)ˆd%ca4¿â×Î΋8yô,RÁlº°F gŸt©R¡¤v´"M{þ«jo‹u¹-‹Mè0s¨Ù8&eÅzÙ5EÞµ4ÖÝÔ ³¡9O:-^üàL á7ʪøåï`FïiÝ9Ëù m¡Â²?áJÊÌj¥$ˆ[%X…Ô I•‰$K>I’©•¤4r[^×õ®ÈÁ¶2aUj¸c±= R§"³zÊÁË»²íÚ·E ZXwÅæ"_ê‡ÈD¤—ÄÚ[~^òswÛr«hX-Cv ’®AÍÿ„kÀÒ¥p¿&†þ%èYeÖÝf|:ãÀF›ïQ£ÜËçÓ=T¹ò‘ÑÝe”ÐI¶°2-šp•L‹?$<µ=.Ü J  “x^‹»uqÛù³æ^8ülŠîÐT,Š|×¢€jîÑc]4]ùC$õŠD®¬ZÎd¾Î;¾O[ÀºŸþNæUËWNœ¯´6àx¦'=¼î //uÛzw`÷×¼ž‘¾Óe}¨6ņF^½!˰™Ë•L…QŠ˜DC|ãìk•IÄŠ;_œNðÖ‚;éAç?A gBšÞUµ`Ã$ËŸÜ`2´9Ã[%ñçöµdÏ®} ¦Õ²ÞÒÀõ¼Âtjjì|àWaa0p‹\È;I+CüÄ!=Î5tì²ÈÀñ ‹‰¬|Ôàx‰ì†Ïb]&1=ªòG•ýQ§ç¢˜ [yÃoTuDZ˜±ÀµœÚ\YMÂgewrãfO8¹lHÈ^ñ”r0·£DôçÒƒSÉÞïCÔhŒæ¨ÑFOZˆ'©O'4:¿bùdKQ#ôn›úzWì©ã žÿ~yÉ®qÁêjw?šÓ}õ†9躼¬ZÏé"ÁäovýëÛ®Üç;X¨Ð˜ @ÜP›HBc´B-ߟAø¡ ®ãÖÜR”Û–]Iå GK–,Üü£xÆ1à-JØ«é9p㶦¯Ô~©;T4=í£Òtyp¦< ¿q|S6…K¢(ÌVi©AEs´º Îº®Úrð±¡U.ƒñœ_šf8ãÔŒ JØ`Ñëoø>Áx)Kê7Y9¬«äBÁëoD?m2/fŠY‹6Qr’b–1‘H#ûÑÅ,sšZxpyö$µ,¤8üÿYÌŠŸ,f,QÈøÅ,$e%×Ï.‹î"ß—»û7]óHEË`¾§àBZ >{ÊÅ×NêóÍOùº¨Ö÷jYT¬¤% N+VJg*V«÷·‡ d¥-=‹ß•ÆweÛÑ 8RVð 1NÚ²z7£†Î ïß3Ò..8ñ=:Bs„ŽÐóè8¦íО=:¢ù BJ͉ ô‰4!fËF˜Ç„LG 1!d§ >†k‚Ù·Ô|ˆx‹ÜuЪ"a·§É°ƒûô9ü ˆ÷An&žªÜïP\s)0Zîò¶£™USæ×;žÛ6õžZ9=Úû¶+xˆJ‡WIÙ p2ˆáuIéßÈ+X*Àºë¾¤ )çlœ]&1ëÂÚ€!b:þo€RË‘(ñBEvùå–fè¶b•‹o+4ûÛªèC0Ž…‘7`È€Å"Iû çASÁÿŒ€«1féów€^œŒ ðÁÂH¢˜£Jc!ãOüÉ'IEl 6³<_×ÝçïórwQ7ß« ©°CI—jWZV¤³Š°¯`E“ –\nÈ…\)²²[EØæ38?6àöûšT]ñŠ}ùîÆ»w>)ï ,pŸïa/Ltª#A¬ƒ¸-8nÚªÙ´üƒÁåÇå–¬öD©bˆt³“@$’RÙÇCä)Xð9áá‹]½þù1€l‹î?óD‘2‘p5ÍQ¤Ôô[ˆvž°£†‹õá9†Ë–†/Ç/1^Žßóx‰í¾xVz>|Fã©(¸Fó¼§iWØö`‰mË£yŠw˜:w©Þ·ÔsHnì°–‹ûÐêÁÚtü4"-Û»I]\ÅAKdÊŠfzrcËÇ.X‘ÄO$ô ‹XÓ0}S1öw€@­‡`…b©þêc·{°ÃáÖ\–œ°M÷•%æB·šžÅ mìδJA^^ù—W\0FΣ©wF°fæÒ™L´ŽªÈBÞâ*í{”%§¡ § ›Ì™Ã)pð»ôÍ)ØwΜPsIæ¼!NùÃ`Û'|ðfïŽ{*æùQãGŒØ<åW~Ý8û{Ì/">ú'þ˜@N/“DX#? „ŒRGË­_åAãø×Ù¹äÀŒü ö6}Vð¼s…Xn<»ÊŒóZ›÷Ù€ñ9“&oˆ#“+afÞGès þ7^ÅfsrMéú{úGO¥Cîá|ØØ1êcÔÞ1Žþ k9E¬?ºOÑ83>MLâï&=…DRÚøztý¡É+¼_ÇÝ£*1'á@-ð×™ oóûË›ºîÀ<ðŒ·uYyßøZ¤{4F$ÑìËÁEYmÒ+ðøhSÜÑ9“Øe нÉwÛöÖåÛ8ŠßW—pÀÜ®OS;šíÃãã(XÕä£Ñ¶Ë›Žò˜rþ6„Ð6ïN Á0ÄÛý²®î I`¿3.ú¯Ìþ/;)Òí?­¤üçMäÕÿ_`A  endstream endobj 48 0 obj << /Length 1978 /Filter /FlateDecode >> stream xÚÕYI“ã¶¾÷¯à‘ªaˆHU3q&åTl'vûäø@IìiVQ¤LR½Ì¯÷{(‘h먜òE ðá-ßÛ ÷wï? žÐŒØÌÒäþ!±–0Í­‘Æ&÷«ä—ô©XöM;ûõþŸï?Q9ÞÍáŠ'™ßGfsÁuúm?›sJÓ¶èšêiÆLZtþM_~²À·¯~žû¡*^Êeó¹Í7å_eéf6ÇÛ~Û.ò¾lêpÀýcÓBe]ü¶Í«(‡3žÊ¦ÊûbåIÀAr¬OåZ!ÄÀû¦)ë>&â\PJL¦“9åDŠ ’粪àÎáǤèÊõ¦B¹¸HËÏuÓ+â‰r•+%sD™vjž3P7åž&èr6§”Éô›¼G­h™~—×åf[9é»@IÙË€FF¤•;„"™¥ßo×3ÎAø-Z O?t0¶.ê{t1‰’“ü4ƒÏüTY£á€.üÁÃB¾£ }÷ßš´© ¿ K×3šÖMï×¶]Xë¶K¤÷è_/Nçä ”cæc–Ívæ{ùë3™­_û×M3šÇ›"U0RÙùSËpXj™ï¸[®VU¹@rÉœKáuP‡ð­È ŠçÇE×·ù²÷OQáBï|`3À_¡ 1a©äDdtàÞ‹yÞQžpׄ3óÀVÆ¥çälÖ›my.ûG?{šI™æmÙl;¿Ïøky4Ê£½<:TâL«Á´N}ÔheêI9j^Úôo~X5ÛEUøy^¯üäßýÛOZçyö“Œ¦?w~°àÄÀI‘w¥ó@ü~¾ÏýPÏaE1,Ø_íB_¬]TÔeý9PnAS뢇…"fSÙš!‚ÿu1¢¬ýÀZoÈ£Î5V~î–$†ôMId|ó©)W¨ ™‚¨°ýîï÷w¿Ý!P²„BÀaDk“(*ˆ22Y®ï~ù5KV°¬nMòì¶®ÀD¨,©’Ÿîþs÷ñë¼@©‚H%-a”?¾¬Ë1ûâÁ£^…ðøÅ…±G´:ƾÁpŠ!Â;Äø/…•G]$S$cú1DÙÝ>€·B#æºYA‰â;^baš©a‡‡ìŽnEé§ _ж+®ÆÒ¢:Àøwy7ýrÈ8Þ§¬"‚Ú)î–yU¹ ¸ÏO‹ü‹¼>špYé¼5±ÖFuèì8=Ì(WQLÏ©°&sƈ¤òhK%I¦éM -¡æ1šVEޞͤ ,vˆmãòyÛèùÝT=mtÓ?Íu›|9Ø©ª§¿e(gp_ÂEÔŒþíÿd¾˜ ÀTœô IQïSkÌÄÌb¨y“‰¡FÊÀÃnbbf\-çŽG×üúTH¡™á·9-Á7§§–Uï¼àùItñtëèM|ý8¼|èA$ÅL¢%µKâå5@áö$R,”';, |îÀ喝Áš‡àPXP5.óú4 ¾ÑŸ‹6ê ŒØñží9[î’ÕšÔ5¸–ãÜ&4!--ظ½É©·ÓSK6nǬ¡†u#˜Ž!˜)_…ãˆÈÀÑ!'qC ÌEáŽ}ŠS'Q „¤c;žÅ8¡Å“õ¡†õOûv'Šbm‰æûêâý"ZhPõ.½Ã¤AÓçÇ¢ ȱ̞t pØ0Ø$x¡3£È20ãA Ú»&A1ÍŠ±G.ÎÆ‡!®më}ñÐŽ×Ð7;¯àº¿Û8/Тh.pÞ[œ:8ïøÔÕØuWUë† ˱œ£D:Œ.–ÃèsŽ:R¡h 9U\T£ƒ©¯¨Ñ™gò޲f’wg—wÔ4ïÀ£Ë;0†V4ÚlX,ïN!ù &šË}?R[Ž¥¸?¾¬BýŒÔ®……xq½çÖœ›HsC«rÑæíë¸àþÒÚú²‚&ªÀ‡E±½o¶}T4°ÙG·ù7Ð{ÿøáþÛ¾ÿð¯h˜7gaûÒæºiLài¹¶š3°1‚s¬èèöŠ…Û«ûÎzÎHØàžë¥Q’ÐO¨¢›öX5,môÎdÊ 2²GýÁ¥Yô‚ â‰$ÜprOö±€zÒs4è²q9w¾Š~#¢ˆR»¯o§±Ë'_ÎÆà¼=(Ʀ7$‘¤'£K¯ªŽ4†@Ì*î<®ê8DNoÓ5 -:ä|5 ¦¯aürUd cSþ©ˆ;¤!Ú˜³U5?¬ª'½÷¾¿xöŒ]øj÷Ħðˆgz™²“(» g¤ :$󆞑g’0y›Úier¨‚·‹ÛZ_þ¡Æ7Óþné( (ØodäóQâ¡mÖQ€•Íùˆu¦cPßbà{˜² ÿÛD(‚‰5¡‹_o«?qp7ßÛª/7U¹ÌÏÃH﯀þÏQ1Ô}KQϰ¶a·‰ 2ºe!*¬Ê§?1€û²;ƒ }¨4—CÀUBþ¿ßhuÆø˜¿7gˉruØÕX zy›ïàÔÃ"S,½àSãKØ€Íñ®õ‡@[,! ×ÍÕÉh™±_Ôi t~s yyø÷ˆÒÁ<¿µ@½ endstream endobj 51 0 obj << /Length 2897 /Filter /FlateDecode >> stream xÚ­ZM“ÓH½÷¯ðÑŽ 5õý±7˜… &€a¡÷²ÃD[Њ±­Y¦i~ý¾¬’dÉH²Á¾´¥’:+++3ßË,=»¹úå…´3ÎÏ<ŸÝ|šY1³F%ÚùÙÍröç\%2‘‹kÎ5›¿-³eöqµÉ–‹kéäü×b³­ÒÍBŠyµ]üuóû//¸îŠc³kÁíu”vs—•ÙâZ;O›‹möe!ì<+ÓU” dW‚“‰’‚‚€õcõxŸ Í$m"¬mÞ»­Ž ótT§Û‡»l34ç"áÞ4‚–KzéêùÍÕ?WƒlÆg’Û„i5³JáU9»]_ýù›-ñð÷K¤w³‡ðêzFÊ“¬ÕìýÕ®ž‘½ûÓI˜Gyˆ’‰÷*ιͪI¥K¤ö—™TñÄbOz³~^ãLlM┹ÌÄŽ%‰þÄõ^UÛL³/E¾Ä/Úbç'D³3y½¯·éj•-“ŵbþ¾Xï˜]KoÎÔìšËD+?èÒ ¸Å=ä¸y¶YÆbC¿r^ÝeõÅî㪾î òÁx⸟òátâ ŸYÉ£ÔYöÎãl¥Tdéj]l«oYY ÑðDJÙ(øp—ßÒbîâòòm\û¦(×0ëc% U9‹’b ñ–ÅÀ‘l”öº6÷Æê7¹ë¼i^ÚHµƒ; ÷”ØÃ½¨|SoÀr™Ü%q‹•Љ²[|sÁÅüËBkc—ÅÛÛt/>ÆýŽ7ë"Ü-sJ!­ñÆ',ùD¾ùÇ‚[p9¿+È^q08Ân•ùmm®ðß+ÜVõ”ÜŠ]ïî˾´®5 90¨´«ê‘ZÇìkU¦a•ìÀƒÓ]•]¤œoïŠÝj¯÷«’j^¥/‚O'CNJIY'šé^N½ÖB:,*RÌŒu Sü,‡åÂ&Æ8ȲH*"*p¿+³1wÕi½u×Å·>ÚwX¢ÌîËl‹ìÃWõX f\¬S\âmX´U˜9PóOE9È®aä ¡b°¯j% :\¿÷ $ïÃ߬,T±Ü`Ã{õê³lUÓ½m¤èR“¯ƒ†”ÐîÏ“!!›Ý¾ñx߆d J0­¦‘uÆøl‘–øX—AC ar'N¨ÁUwž‘ÓTþøš‚ªñ,áPn`•Fl9sVL«‘ƒ(æjõ±(VÑíÑ „j¸Õ%à€FJ¥§ÁÛb›#¡fTö~«yVò9Î];öcü]VíÊÍv _¹:ޝ0¡˜´çã+Ò:ÉÒH¥1½ûïóÁ÷f­jù ¢x,ÖOÆÂ]È^c¬£K'…¶-{ÍŠÁ՟ЀYhˆáA5Çôd#H‚X{s«IÈ(Ì{V{ñôÕûA³¡ÖVí‚ díò!ßfÔá>Ð<2@ÈëtqÈ„#]³H¦EA—ü ek ˜¢íò˜/èžÜŸ7yÌéôf°>d_ÓÛŠbµBxV‹3Ä;é¾á4¦¶ÍÔ¨Dî@ÑakDj}ÙªÔ)ï»ón+ãÕê±[ÔÙ<Ô2eƒyé`û¥’Ó¡b@p`8ʼn)œ ö–Ê[dQ—ó8}ñÓÙÕ+€Ǫ] ã‹àp ¤н@½ÏZÕ7šYŠœ^á~Ž_Fk¡L_7‘®É®€NÙä×Eù÷6Ââ6_çp¸É˜Y–8 c-N€™´2¡ÿ½˜I²ü˜]BÌz¼)6÷§àJ #õ!žI˜tϺUÕUHÓ®@87ÝH¬Í©O‚8—ÚcFq^ÉØš J6-­Ó°í§úh-%|ä X‡DÒü`!Ø×Í)‘ä$¢Ùþ|$Iɱš.›>IÒ‚°\„Š;ñ£´ð ´‘ÔÕà9µžnŠÿÎŒ$}œ‚õq1M ± ,S üžÛȸ:Ô$K4ÌQbHÇ7bšâRï›_‡+/x—RyÙe†Ò逸Ôîòv” "̨¿0IÁ²õE …˜A™`ú†ç‚HÑAí]ìùaÍ1ƒââ7j{¾¹â„à6F‰qR(™‰ÌŒX—÷uóœ®úDá·%‚È×/ëg‘Äႈ ”l‰ †¾Ÿ®‘Ô°@ïöº,°ÔÑqÈäÇxŠSÑuHIÙð™ïAãxŠ0 oyf3·!L$‹7ÍÜéNà­ø¨—œfÁd"áW—X„`&œÆö1J]M·“onW»m]„+:¦4öd8à5”Z.$Êõƒpp 8èið*- žD5ÇÁª®—4ˆ€(ꉈÀñ–;Ö*ðVbO±¼s{ÖTn©‘,ÞôGd]ù£ˆÀ™<‚jß- ˆ ä¾j wm¡¨Äh¡Èbr(pJëòôhð:`2x%Øb{/awI' k=»OŒ´f°Û`eÓ[†ÙÚßõý*[׊ٲ†%¥ \?ØS“¡å*v}d¹±ÛYnÖ5ZYº9%x»h;!Qˆ} ¡tzŸ* }¤Áɶ[Yï;H´Ý}¬J`b¬bH‰á®—Ga,'ý«7ϧ²XzVÏ ·©Çêé¬ ){qÚvýJ,D¸þv½§RNM„ÔÜ#¸ê#r¬ñHÀúЇÎÎ<÷iТš3NŸ Ìß‚OGPŠœdñãmê“ G) zdþëüR$ÊÑGAGK¬?Mß²McŽÜ‡Os׫Bpß|s ÅØ7 \ʇׅ)G!Am¦ƒZ+üö&Àqˆ¨ŽÅ§àFìº7JuŽ2Ûß1¸!Žý=Þà?ÆðF!–9}7¨Ï†KC Æ^ónYO9§-í´F£hÙïö²FO÷Ô¡wµ³>ÜŒ6Í7n}GO§àƹ†›ƒseÉM0áw˺ù™Nt‹Õã]¶,ÓXØþ;­Òxœü:Ýä÷»UlŽ|×9åÈì\ÙÄžÙW«3;‰ÒM[íu ÂùõmUN$w¤(ï/£ÏSâ@‡·0ß‹|•‰¨LÔ„üòSí³²Ë÷°M÷[Š:á F]yØÇM—±(OãO$^íÖ…ú?lðÁ­Â(y–ºߟº> ô®[+×âŠðÅ95ª¶I0DuXÂZï\Óõ†PN$ôwS•ãzk®ÏÏò:I•u£Øw3âGË„ÃìÒìñ‹W¾XBRCŠT¢ÞF.ßù?/ß1ÿ endstream endobj 55 0 obj << /Length 2195 /Filter /FlateDecode >> stream xÚåZËrã6Ýû+¸”k"OÈ.™O%ã®òT{—΂–èn&²¤¦äîößçàAФ¡—ÍN&•òB0^\àÞsîƒúáöâÛ+)2F‰¥–e·÷™æ™Î%QÆf·óìçÉ|~ùËíOÿ¾½øxÁ2Š?–I˜ ë´1Ùìáâç_h6Çw?e”k²Ï~åC&ˆ9F‹ìíÅÿ.~x¾ÑDiÓßòM±­«/7Ûúrª¸JjÀTN¬G–S"ù@‡®ÖO?.ËÅ¢ÚVåæUt½Z<á“9u¾½bª'D0"•À>þñïÜšlÊ,'95¢äNô%7“§Ë)×v²ýP†Aµ¼dŒÙä#~ßK®Ã23©Ëu]nÊ¥›ÚÛ KVËðàf²ÂóøØ–ó0{×ÙíÐh·\…ô¯ãJU.›ÖË”t3°VxʤÒ0¢©Ê´b„ û*“J£à¡ÌË¢rèU‰ó`’ªQ¤N0•ðÜäÙ”s¢X~ÜÍÅ(ð€(ÅåùðA…]<þS.˺خêãà`êØ!8`p¦ä^pØ<‚ƒ÷Í^áߌGƒ‡棣W& V9(aÁ²h6Ø JùÉPP} xÁÖ)@`pb-Ç“Äjõ'!!w4¨F N”TÑYÞ–Û«â¡Z<ƒ†ZŒ¢Ӛ䬯E³j^.gåq(HÂ5;3Np¡ÀâDÜ*Ì'¡€ùÕýà¹Ùêaý0qà±D0ÁlL §LðoAÂæDÐ6nÊí½7TêJ¦ÍâÞé=”$g‡ „€Åí!(±\+e–ç ±í•–gD/IÀžû_Šûê–¦šÚÉ­3ˆ; â¢ýÚE{Ór]Ü|µIÝË-ÉeKTmÂ’¼çœÓ*SÝ%¶Al°„w„¹ô^S¡92 ǹä›Ë©"V‰­CÂãÆŸªY¾þTmŠ4ëhC 3§“·DZ5 é@XýE¤3‚ étµp¤óýü×b&xúú¤S4[ý“Ž%p¦SI',þФC«GaˆbxîïÎ:êÏ%u”tTŽP&ø¤ãD1!^B:chI§§EÈt`±ÓÓÉ1Öæá%žÜ›ù ç…ÎCÜÀ—Å3ç²Õ¼)Û)¿F'Ý×=ëè¨#L7îææö=óœ‹ÜƒM áÆ Os‘ãìJž#\?ç"眸i8Í[.JQEÈ€C„!_Y¢r ¢¨PgPQ~¸˜ðõ¥:½˜À¢Ù(Å„¥Ø‹Š‰1´h ÖÕ¢…ØéÁýE£*¢‚ÊnpwóId`™GÓî9 µ÷1•¨É°»Ž"   ­Qí/€)iùr’¿2¤>­@ ûýšq¢ ‰ä…ÑW2š3 Y9æ"U\Õey7þPÎëâ´„•VŸfƒ:ñêÒ8sÆ@þP>¬ê§ó‹•÷¬YÜÎ…ÿ¤c1®Hž·rš¥´âhfpõB÷¯^+b¤K\â»e’’#^1E'×7Ð*ÿ˵“0’“7ŲZ?.dÚQ£DÙãÙ‡¤î3ƒ%HbuØòúæ0' I¨£lÏ„ödØÛÿMñ[y}s¿ª\n˺ZÕWÕr^-ß;7Z¬÷:JuÞ#”¤ùÀ‰:Ø‚ÉÉãÚ}º|1üï­Å¼ßøùw”IÏ!˜ k\C&0›S,Ìôsˆ°Ú³'ë$ ߗŦº[Äÿêò} Ͱ:Õ—´91mj»X§Ãòí¼× Â=á…Ã…©A¦S÷OêXÞ_˜`Ì3N7ǵÀ…QZKCi!,Ò²òs˜ñ·†‰Å&L¬–Ã%Ÿ.•šuU¸ã ™Þ1,\^´`ûÖ€$Q[i˜Ð§4Sh§u‡­q!¦³ ØS­˜¤EÁåmÖ®­«8h%Žf«åf[ñÚ¾,”<_’§¶ÛûƒO±y¼ƒvùä×&ožméì+‹¯Peš4îâRÛ{IˆÑúØ;Jiòð~جúþKJ"…‘ì9J1Ý®pKç;;3¤d§VéBâa3Ê›9'JyVœcû&Nöö/vøõ Œá­Õ7A²®Ï|síz(_„©Dr%mð>Ù4¤0¼o*}Umqë òÍîZâõkô®oµˆXeêxR£’ûÕÊ€”5`¬‰ymA‹ TàDåME»sgëcŽ#@‘öHykE¨Ï/o¹RˆÄã”·Në–·×7®¨;|@ƒJSäC`Páú…mÑ„ÒH‚>Çç<”™Ïù0ºMìäXÝUÅÌÅyØ\\#ÉCfús1ûêߵ悬æ·@ÁZ}.Ûüá͈}6Û¸\Ý·Ãc-Æ©ðu¢C}ØÚvã3Nš<%rú]f–nn.¢%Í ›! ×Öhß4-Üh„‡ûa7lŒ ëDQœøÜßT¡B󛪞.À=véÛ™¶›´Éö×”¿9׈éNÑäÔm'ÿùÞ¾ìüÐéEžÆpµæé)™à\{ß’MI¤F9¥$'†!&›þ<æ endstream endobj 59 0 obj << /Length 2776 /Filter /FlateDecode >> stream xÚíZÝsÛ8Ï_ṇ{§aÅ/‘Ú™{دììNÛ͵¹Ù‡í>(6ÝèΖRInšýë ([’i×i|o7©)Š@~óýÍÅË+%';k˜6vÈòuÞÖÅçë¶ž]j¡£p²,;-f|úÂüImš–žnI ôà>nò‘ŽÄª#×âg3xUÑDQÞo¿ý¹k‚¿´D#ì‘OzÎcªL†®òæ_¯^ÅÔ( 3f«ðˆZH´¤_’YíDT;é)¯Ãв ïÁ!êê¾.òÖá.,É+R0V*:Iêê¡)þrQË+–iÓ-,ëÆŽÞˆ}i›Í àeð %˜ÈäPA´<µÀÙ[¹74CßíÅ:ìÉ:1ŽÍxÆûžÛ¾`©1Cjq¿OX²å *µ°±›NöÒ=à`ðEQÞ¹ºhzë>¡¿¹ú±½ó§ÔÏ­š@#VÁÀ\^YÜjf¥*ËûÇÆ{|pôÚûñc8ý餔à¨÷µk\‰ÜÚ¼-ª2¼pí܇?ÿ°¬«5ŽTˆ0õ>áªÆ£„´ÓÚ¥ÀX –õ e‚G”í‘ØŸ–èIj ôgúy¡ÆÊOKgi?ýP¸©P•ïGýs€HÆí8pªA8{—¯ƒÊòè©OWvÐãÉP2›e“4å ÂôyцIX‚´•î'ÃØ^`2•ˆîóÜÝ÷wyûeÇ ü\å=pQàJ·„ªð»Ë—}¢à£›Uw0ÜR êyº‡AÂÎàóxÐ2Ù༭ÞºuõÉí¹Xð°â ¾Há@ótä\ˆ:’QHD¨¯O#¥y¢Òö‰êŒYµuØ"ÆW2£·«½ ª§`K´ãqVO%r£ôUßXœMƒc¬y¤¦‰d"ç©H*}<¤žC„¤Fdx·¹]pjp H¨Ç]Ȍ㓉¡øÐÏ®t5$°°áÈY@.[š[žKâªLo™[q¶€× í‹€®g ÏÓSQ.Üg/`M  vΓm@EРߨ՛za”‚|\|·øw>wåüqÏÉ]]®Ã8XBŽê(Gq’ì*¬&÷VMóŽ'ͯ ÌZ8_÷ ÂJÝCI6 $šÿPPà ‡RàqÌN ‘ª!(xDój °¾'æT”tQ•n,x,`¡ME‹LMo7Ū½ÄjöôÕ5Í6ÕŠöT#sÉsxU~qWmV ¢²­©ðŲvަ½B=‰Å¦\ä¤rx~¸s=ÀÜ&|µ)çq‰Ä­ŒJ¥y¾Z¹ È5ø1rQaa°% \@”Çð–Ê«MsŒëÏÃB 8QžVÂw…“;O„_¤çáo%8”ð¬ÐBi¢xÏ0.ô 8ôë>çëû•PS(?ÔùšÞ쎔‘lâˆÀ8ÓZPü³Öc&00KlˆŠ)¨Ôíô,]_þ¶i}+ž^ÍÀ/‚M›•´Há«/S•‚‰³ô´”OïiC„. d¸®VWÅʉ€ä½$O—'„R(C²d¯žIKÒ=Ì™ûÓn1CâÏ5Fà}çu˜¢”(²,”Ž8×´µ?‰I³=˘pÓíÐ=¹ªv4,Úð=ñÊñQÙîÅ‹0­ê±ãÝôö¼ß†ÁY¬bü/ApˆÀm´Ñƒ‚:V§–Ê·UµryyÄ­àeÛ·òyn%Á NV nf ýñGïTøŸï;,aªêæéh¿´_,wÎõƒÏpˆÿÒ$Á”GSÎÏ«rWýÔÍv~YÕD!§g´–é\´[ÔKÞ¸t‹IS‚~0u=Û}¦°f]©|;ãS|æS웤¦k3ÖC]´Ã¢´£šæ¢Ä𹤥9=ŽNNmÂêŒØ!’ì|û0W§à§[\LŽ ¹Ò0³‹1ÇT*% ?Ô­V=Ë1•Âð ¤R€vὩ~ªë*º •¬Üõ—#ÅŒê0=¤¢4ùàbùŽ„«×E õQCT°«[Õk@ ”ä°q©§¿Á,šó¡ð箽V´]ÿ‚I} "ôi¦Ói¾ÚtÝ¡9~8¯ê¶­}-„2w}‘®âüžÉÜÞ«é³M=Ãc‚ãŒN/Ÿªbq$¸@ü2ë¤æL<÷†§L VÒÝÃüŽçbw ³4߯əÒcÜÏ•Ýk¾ýŽ&òG/æÂ°y &ߺygé jnÅÑl¦™ÙU‡ZZˆà«¯±×L™³X h @,;K½Ù¬o]Ý·Ôa#%"Òàêå«X÷PaèØnâþãM'¨W¶)æîdžªw=Ž‹&Æ$…Âg§0Qû¶ñÚ,vôZþÕæK¸cRûG®Øì"Dû%†ú¶íÚÔù0„#½B.ÖU(<]µ[ìæÅ/÷;Eç×"M!]¦g ²Ž½]Ñ÷0wÎpMI¯(kõØ¿+PÇ \½›¿èÏú½è"$ûÀ"8§ÅׯiÙGeç1Ðâºg!Œ^»¦É?¸æÔ P+ß)_:pßÛ?¯‡DN×'©®°%6‡®Ä{¶ ûÒÛ ¦Ð4èðÔTÌ¿æíñTŒÝÄÌ|…9„Z­åY,Œ´¤V=o»·}ó6®]æëÃ5>€]©Ç†ó­MzØÂ¶ûû®ðЃ:¡JBöô ¬‚î‘©IŸkÒk(¥ß¤_vFÜ¿70C£Ûc¹]#¦3OÊíi"§W¸_ïÄ@ÝÁïhk ‚ù,£Ü`»DÖÐë‚)]OlW6¡Æ…Á»«yÝ5/âCš-è>9¿è% ‰¾ÒÕï¹Tßþ K .)vù*Ww‰‰š×8ªBµC‚áñ\¹u¨,›s'®!&ç© V’ؘcWêãÆ-N÷v@"0Þ¿þôÿÞþ¿öö]¯~è뙛ÐRÆAé>ú¤?z K–£%Î¥î.ç†Ý¹Ñ"ƒs3âæÓ±þ¡ ™¢ñ#ë#ˆ Âvû€ÓøþµµÁa¹êNÉ/|á endstream endobj 62 0 obj << /Length 2700 /Filter /FlateDecode >> stream xÚ­ZKs㸾ûWðHoFâ ä¶g*•ÚÔ:Wæ°»Š„lf)R!éõ8¿>EÊ”ä±|p‰¢€ÐýuÝ º»úøógHg'w›DkD$M¤`ˆ+Ü•É/iÑnwµÙšæš¨tè¯WŒèôé¡*ì÷ó‡ý0×+œvö'•VaH¿ÍëÚtèz%)N¿>\c?¬‰~fœ5øYíã°{Œ« ÆÿZØñ°˜Z»¹ãv>ÀNâHyWVM^ƒ<øýùú·»¿'Y²Âqä6Èa#æ>Lé¿ô­ÿòaÙÿrœå[+|]Ý?ÆeMíAµJïâ觪®ýÓúzå•d¿mÓW%ÈŽ+yS®ý·MÛù¯ˆª¹Ÿ‡4Hh H™HÍxöªŠòƒý®ÒœŠŠÞcû†§°‚š—ÿÉ ˜ù<›™— X7Y§? “3EZæCÆË*ʲ®ÖpZ¦Húéqð¿£};ÿà¦ôþ³o·áͶjà€KFi,Îò¡ZW£íV”RÐ"ˆ†'fþòï½Úê¶1þ{Ñ:%—¦GVþÇÏŒN‘½"ÒA{Eâ8èñ¶½pÂÓ²´“®þzwõß+ {Ëœ`L”*‘F‚ð¤Ø^ýò[–”ð#lQ­’'7t›PĨ€§:ùrõÏ«OÖ±æËc,ÁÌÉbDøå¿vÕ`n»ö¾Ë·7¦/ºj7Tmc²qpç˜{(æ QA`-'âÏN—+,1¢ä«¥]ÁëÇyˆS”³Ÿ”à‚=¬ê_T p›ã‹¡ 궦ºhdð€%«dtÕ7rë5Ûº¯¯Ð+'ˆ²–vjoÂÑ¿˜"xŸ!Ø~­_{ÿÍNòÌ ãòbx„„Èg$+a\c<×-0 Ï+d°wh›<È´,8¸üš̊^Ð9ÆÚEÍJ'†Ó„KŽpv±jùH€,8Pˆí­:§,GÏ RaÈA?¤bbm!\ý¢3*‰8p‹•Dƒ©ìÑLÙå·À‰Ç(CÒñ{ÀR" £éÞªe Éï‹ÌF 6#š Ѽ„`D›û‹ \”ûL¸ Ì%#G¹¬÷€ùr—rÄø4Žð›´Ó9äµõ+’½W`(Ÿ_˜áE€(JBôùéöK[?ÚXq&h3ü.ÛÀ øÅFÁå}üÔºä>«wGá‘)0[„G“o=,Ø"™’¤™:$‘ÃFòðXë½ðÆYø)ä«¶Œ\Žtø˜‘“‘ŽQ PЭ–—%†„I”Ù°™Ù\3 ê/íîy¯Þsª¥ àt¦C¤‚„‰f:"d:_̰”ä¸WU `žM%bˆõŠtЛ¡Ý™nim8ß3Ô]Þ-æ€PnÅf$¤QlšP9)0¤¥4džð 9 Bÿ¢¯lc!<»sÁC»óµr7&¬r¾•›p›aÐÅÓÍ7Ͳ™î¡Ææû-ÿî"Þ³ÿâ«Ï]¬Ùí«ÒüšaÖxðK‹Ó%8›ÚéÉ^^â‘ÃxÊp4‡°PᑃKI)A`[מwf1o·A޽dÅ ò³™sþh+u,Âp(âñ¤Q©k›Ø—ëX©Ã³ëd©ÕÔ·ø{mš{gv;¶j¬½tàªæ¾·vì`Å<ö®š9vÔ6ÿV¹”èqûR\»™,;Ù¯ŸÐqƒ+G3/›(¥)꼋4÷ô`¯UÃ4Y¬†*¯«ÿ™Ò« "«¦Jûdê1fe<œúgŸÒyÚ«q£1’GÓäÇJ$G|X"ãï®Ï–YçeK24‚Ð6î´ ‡t–Șué'hüb!Yf⤃( ÷Nôœà˶‚LX)'‹ü}²b4ˆWÚQBæƒ÷Ú¹]N¾ÀeÇUÄ@zîõçCN[ë–Úð9 KK8¢ ùëÂÏ;hw ?߯Ý'ÂÏ‘ªÒJ†÷±õ­×dß»X8—s|sâñm;Âgñ µx6" n}óö,Òx†Ó¿¿Ý/º¦Ó <„1› óÃû‘ž‚0›o/¶ç0‚ád‰•ÉUcÈñÙ7¬”ûدc?pðvü‡¬„™I몷lt¬Ã}—o¿Cr +å1ãËèƒ64ø‚•%ñ؆ŽÁÞï·¡œê§tªQyØãƒ#1pÅ)ÝüX×¾C]ä®QÅE õ‚|ŸN"°ÐŽ1(ƒ_\ZWB"¬,|6‰Hê±4èwyNâ*"aKOØðbá:æÅ˜VQ'][ƒNFÜú–Š[í÷pùD¹ô¼ o½º(*C¢o×Ç×·•’Vgâ6„Î&>kezv€Ÿ{ð˜Ú~¥¦Ã‡Wc"ªáPî˜ínzãÒÞr…qÚalàÏØû8 ¼³m#:ã]嘇0>mÊ7SÿøìZàfÒ_ê&Ûbòt­;3• `åÓœC1'‹ÇžpŽÉA£sX3O=?”Ï›¶[¤p2½?9Ÿ Á æHý&  9Õï++öêd‡“Q×/Ç0#ÔÔÛf MÆ„6–†E—VHÑÓjÔPÀÊù5†ïi—¸{>¿V³Ó6áFEµ¿€4TÝûžçÑ½Ž’'å Ucyã¾@}¶:2û²[ÆÞì$߆ºv^`Qõ"^»Q>N)7î kÇSn7ËE±»¸yua²Œh"þúç €&ìòÛÛh5ÞÞæeij³‚z8jNI_ÜfÊÅåy^F‚%©ÙÿÿÅbá¡á8ìL^K=¼µË½ô#À¤Ú]£œ‹Er yÆbO…À;¬}ïT쳌!wP \ ‰¯û¿“¼¹;Ô›ð9ÌnF‡¼júƒ®²ËUǤõ”NIƦÀÞŠÄ RµY'Úç‘‹•ºø.;׊ï²­”} ­ŠYyøo+ê¬þË ]3S3 QÔ쉌™M»3œå~.dõò{·¤r,m«w®ñªN*Üÿó€½ócú}þ{ÀÊ‚´!Äl³]{!“ !RœÔ½»P‡ô'bú¸òÃmaµ…¹˜6ʇ³N7^1z¡°ÿ}÷Ãt¯2&ÐõD`þŠ‚}¼Ôô×KaûoXOUo|ïBf@‚<ƒ¹0&ý?ÏNHÎ endstream endobj 66 0 obj << /Length 2986 /Filter /FlateDecode >> stream xÚ¥Yëܶÿ~Å"ý¢+ne‘¢^ùvqœ"EÒ¤ðEáOâÞªÑc#iï¼ùë;/ê´kår…mØ¢(rf8/þfö›»«7ß™x£¢°ˆ µ¹Ûm2½ÉR&y±¹«6‚Ǿ®®·‰N‚ÑM×ïþzõîîê×+µ‰à¯Ú(•‡I”О,Ï7e{õác´©àã_7Qù扖¶›84q £fóþêïWß|ÎZiFóêÉý;J" ÿ)ü‡B¼ùN%Ë­I„iý×øy³ÍŠ0MóÍVÅab„ÔÏCÝ]ë<˜®·q”ý‘I0íÏ¸ÆµŽ—Œ²fÇKäìŸIçpê™·]­£Ô/˜úu*a+¿fœ*”l…RlÂ8ýºðzkâ$¸óÂïŽ]9Õ}·Æ!Óa¬ç`RòÄÜ Q¡Ž‹/2©Qi˜e9ÑŠ ³ßÍ&Ýݰ/š6Ë–*Õf»õlë¸HB]h6vâµ88Û®é"NÂÜäžÞnÕ›ÂLgÏz¦pNú7©ÆÛ4'*[´‰°L®·JÁin;/K‚wŸ&×hz%Wʼ·Áàí·ßòà‡ú~°Ã‰_jYþ—æAÛÃS•[“4Úl5J Y„÷“¦º{ÀàCßòHx¦Á#:·¼Ti1!Îk„óÊb>B”UÕÔ÷7kÚÕy¦Éḭ̀ ?´‡p56ž½™„È‚²çð³u72/Û43SVH#êbÛ›œø-mï#(¥H£øœòӵ΂ž',øá¾uS]ŽLi–·È ?]x‚…Bµd”³]e‡k° Oðie>­ú\œRF“ÃÂI>:…Y¼IÓbêÿÍ£çZ5u´4ÐâÜ48>AÙ·A®:?™†“ÁYœh5I‰ÂYú$¿0‘ ‹ª±¨ª(Zh‘¿Ú‘Ÿ÷×[tŸ]?8Ô®É8Uá§Ñ¶2Ú)lÅ¢—Á'ž±"¯ptî‰/*:S¡‚Ü5+z·¢ér‘ڀׄyþ…šÆ4 ‰Tê/,V4 ܳñVªÊU>]¥¸éL·yâ“Cræä—gžr^`À*3óõ³·“'!qpoGtR”'©w¿åOp#Ý7²tŸô³Ìö@&îkXßa\ÍĽG€ááQÇq>ã(~¦ kmÎuq{™w\p¥_õãu‚)Áyv¸à÷.Uo~®§u%%`õlÎD3û¼`í'òOwðìH‰(D€ _ ÝU<ϵ%ýá ¥¡«Î-ÎÈ ÉMhŒ:WCÇ/º~‰#O^ô|ep³IÜìÀåK\_%:4:%Z‘‘û‡Ž‚²Çæâüô Mw͉ V¦=M§ÃêýÏ®G&?¸CcKòi`OÊ^¢"T¹~æ°kÀ©×X˜(ŒŠ30! °F›ììÖùÂG›ŽŽ¢àh„ëß­Þ’) ¾gLó’oÂõfž£ÝS¶ü8 ½(qŽÇ{Ρà¯Oõ»51eÉ«“\éjưdc¤\w^Šº+ëÚ—v2(-.ˆ È<áÑôn8Š0×?°2u^@>,V|~ _˜%z{5¼@°lLðÞ‰[î}n>sV¼b֔ѢôK—·ƒêHo_¼~¾2kÈÙ)øu’ÇP ÅÌô‡Ÿß÷Íãj˜x‰V} ÆøÉç"L “ˆÛa¹Žh)@y‘¤UL.Lûî“mÁÂãk0(êX'íÁ`Ý“£V˜ñðãx,Ñ{þjevrãBþ9,ùQ!b˜n0Kïb¼âÝŽ¿Ìlõ_ˆý®<]ç&xžmšL7¥p#F!jc¯$WŒÎ}Ы ýc k¨0Qs C¹¦@u¹Ê—±³æÔg”¶àÒlkŒvRj=¸rê‡Ú‰ñ §/{ìC)ù·ª¡6ªïx[­{‚RY¨3}î ™xÂߎ­êÒ6 ÆoËò8Øòô ǸE$T@ÌNÝ…0.-‰Á/õ(Oyï‡Ê Ìuð£í8“ÓIzýÁÓÙ[üÊõŠl¾Œi:§Š?ç3¹¡‡Û©ö¨<’Š?í%¾pé*Ï –i3‹pù„“Dž3eP'æŽÃ଄[™zòÇÁ ™ ˜üEP%‚“?óÅt:ã1ßåÀ ÷í4KÑÖûÅ÷®Ÿxþ¡~\2\;eÙèiÈm7>=Ÿøß`PiÀ4bž²©O¼˜ÈÛøYwTÇã°²^h¹j¾½p(ŧìÇ«´žf qÁÔ AYÑ’ŽpèïÄé8Ü[vs8SüsbìÛU3BdØî*±/`Ä·ê~àiʰUV<Œò 8ðÄ+x%䛆ªN¢s’¹§z6ýau98;Éœå‡/´êßÄ~8É-)Ü(_š"q@}/«¤à›åY®Ð5£ƒ Ep ȉ_àÒâ?ü*T§zS§†¦ïé„1{›Ð =,6'³çû¥uãªË5˜úXž¹Ìk£ ÄzâÒ†ÔL³¯âËš)aé¸ï WðøŠ«2ög š<Ɖ'2%Ö:êÖñ623ÌP$á n%‡‰ÓÖ„ŽÏÚ/ÔìŽË-ô$¦Üóó8 +¹ .ϾФõeÑ…‹¡×Ïv|®£¤Q”îÈ/c@THà¸êÄg¹#ÖÑl%µVνU½l­ÐÑcd™ ËHR׋H•¢c¹U\ Š§”Ô3(ÁWR+­œPn<ÄÝHÚG.k\S»úL§ ÒßÄÆ„Ya¾¬±fš­¤´MÛÓonèW¡+Ÿå£²¯sR]Õ‚ë¹€óì¿^;áVi • \㪾TÚ@ªÜ®ÆÐǾkUýg!Ū®(€jîÝ6[i °K¦3zwTí˜8âÀ±E[ÝÏE ~àŠ®8žAóâ hÿÐÕ¿9ž†Kì7ð7;S͉êžòݳEÑ¿u†å/ó–KAžöýè„úýØ7”¨ð©xÅÝ,ðZªÁ †H©„{$vµ×žB…Rè—=«£Ølt…IT|¡kAž©X½Ê±¹ó¢\Àó`¸ÔÕœˆ¸;hH¹7ü;ƒt4 Hê;vÜ×£Áð.Cœ–çÁ¿xc˜QÛñ–Í··RœW ³6sê¦P§½ Vʆz‡ñ_,šSÅzV/¤K]ø.5 ëà§N6-à-¢ƒ»ásê(öØÈ²ÑMÒW/$}ÃðÞïlì@¸¡H‚DºfŸß½püzœïY¿,Í"T L,G¼<ºKxšÏ«Z[ÉWŠ0xVŽAn>wT,ƒš“ÿþ7Ü@ÀW1#¡:Ìõ´ ýúá—Ñ÷Y(6¡äx‚28– ˆjä†â/ƒk¬Gr(~òÚƒ!¦|rƒïdÔxE÷ÝW¼ÝJƒ>øû7Ým×K*I)1.‡!¡“ñM˜Áæ>I‡ða„²–ƒ%òÈÐÉ$æT1ʶî’0ä•ÖOÊnÏK0/.«Çó%>»üîÍÖZȔӱò]´½«SÊjË:ßúÓóMˆÝH!§ a0öb²½·lÃx¿ë[aÀØÍ[­£ó¢1—¢ñ' ÆŒnw”âñ­ÿië5}…; B(-ÝküÆ·”Á„?7 žŒ—Ý"Àå"¶&ëFZ“0Í‘«´àùarŸøÝÍU£CH¤«Þø ò»{5mŠnz7³„¥¶kÁ$4ÑGΕbGñõfoxô+á& *ïÏ@Ó[ÞC„¡­‡f͉!¶Àî|Oà@!ëa›Æ‹À¥.½Øœ–²ö0ç#šÕ˜,ÔˆÓœ1ðgä8# ‰þ"Ex"ï`Ô ¦ñ·!?o}ëƒþÈ,±ªy+'ÊÆÿLï͛˦v‚ý˜¾ âìà»N$góÐSêåÏÌG¬l8©h•„Q¦@ú‚~%béS™ÿ§ìyð endstream endobj 69 0 obj << /Length 2569 /Filter /FlateDecode >> stream xÚÉvÛ8òÞ_á#õÑÜ—ÜlÇIœ¶;[ÓyÝj –0æ¢Á8öe~}ªPEj13郠Pj_àóÙ/§üøÄ÷ÜÜËý“ÙÃI»až¤IäÆY~2+NæNàN¦±ç9o&Aæte9™±ç,qõLó ÷‚(wÎ…^Â,s¤¦­y² É_^ì]’ª¶¥¬d'aTSJó@£ÙÈþŽi:²–Âl¦|î3~ÕÔaTÒl»Q¼…!IœVòÇsß{K³À[ðæÓF­ðûÍd1û|â‡nLaˆ#fVµ“)H€HÃÈ):Q©;Üšøðg§{dŸ>l¸ö†)_ø®ç§tEÈòÜZüF\†;Â|†âL#çbGiÕ+Ë8`œ¹4^ÿw‚‡5,’ ólA“^ê0ÝI=µR‡“­àáT:YÃɇI wZI=½iÌË£ªiC–ªRµÕ2J\z‡ FÌàÕÝÕýÙdÅIÏkù¼‘…F"°TK-ô3.Ò{Üxïþêô«* IÀy.Ȳ@°)"íÏ«súþ\êR1O[›_öÂÛ…¬ZóŽü$wÃcGy0Ûw§§—î‹Zö©Ê^ÔòtÛ-O+Èb[Êé ÍæTÕ…üîÚÔjª²w%¾â€¿/“ÃPjÍl§ò {î‡ vÇ09ñ#7Œ’}mšºYšŸ’›$1+t2…ïc8>†,gM%·¤N˜^°;æ¼hp|ÐY³ì…8üß2=Œ†ùD[µZñΖ,ˆ­´kKjÁ˜ù«®^!Óí¡g¯6Œ¦˜F¢Øùôš‚Ý{A®rûHˆU¿—±øÊ®…1—c 7Hƒmžs¨ZY¥‘F}Œ ëë]…¿»R 1zBK¸g'$²%E‚åÐÛ·è/²»ßðG~ß™~ÆIÈ4´’l~Qâ~ph~ÁÏù¿Qõc „H {J Ë©ÚÊ2K',Yá´0 í±”¸áÉïS-·Z¶GÑð1(X™&¾¿û •†ö­@ÒÐ(ÉÖÖlÚïrn qXâüYµnhEû¨°ÐÌQª/g3.g3¸úú¡´ÞŠ€}€§9ß ¾‹ E&´ _k(Ûüèæ–°z— ³g ƒ<ë…7*ßÈ0¦Ck²,e‹n“zÖmðf+q¤´æ;:¸¦h±xä!Ñž‡y€Ÿ'QB’ˆPÙz â¾×ŒÄ~¼1¿dhf~³/·_nFÓeîÆ`ÇC¶ð±ïK÷óe”²¿3ØæJlKBÛ]¸5º[™NKBÇ´0|hgÐ0µ™nvô” ,Ö‚N8Ì´ýÝõ”„ÀDïËø/ÏÖšNŸÜ7ŠGr’GC³ Åy N 0ú+ÁÅ ‚©c ¨§õ_“[[Jsˆ¼² aÒÈ•áS¸ßÅ0 W€á™¡ñö÷®‰o=Y{ÔP“…Tr-Ç Ì …ú'<¬0ÏV(,뇧RkkÙ!Pغÿ ª£ :ØŠÆ5 ò¡+i…áÇ™}Æ`”k%—¥¥WOÆÙb*hÐп)šˆ‘ßbÁóE5rpÚl¹Ц«wrÜ»ÿ›j•¡éåí‡kš=@òÙ/˃ôâAŽ\‰BVÐ}Á ³<:%öT¸ççyÍAŽ/,I’bÅ)õ[Ø 瓨ÛégAeÉ’ð¯­@ÈEc3Eg¢+\Î>ýÉ–ŽwZ»„­Ëª!ÈWlÃdùRÒòø“ÔùXž,Fí±´Ývxâ"‰Ç ÝM Ž:e³íã¡ZK„å _섟׬·Äl"ó±‡hovS0DjÖ§)ô0_A‡Mg†›±\©óMÇç‰Ú¾æðÃÕš!Oëv]H·ÓÿÛ£,¾Wšr£Òèê0«ƒ:Úƒ>‡¶m×Ùt%çùºá6š(—Œb¤…øÅ-KâæarHxßx¥9·=0©Dݧ@X5ýˆï`6NûT6hÅú îldɛņ ;鿀HØ$…¹GI oXscèá+&±¢⥡K2<œrÌï…­¢¢¹sÞfõà9gP©MÛPÎÉvèA£²‚|¶·ÃWG‡œkYÕÖ§ðœO²¶/ °q¡k›÷®ZC¹»f„V,…âMû~ª­MQñˆÕIKˆ7B¯°˜×1à3®Âíƒ4-½T³”ÎJAÌñe…|¡©yó3WUzMw‚R¢èá½²oø±}Õh%^«GƸßXA<ñw]Kk¤žQn ïÜØ6s/JóÖôvÌenD+jH²ôf|yßß³Ä9«‹ÁàZÚý,kp»õZqce¦ÿ°¯AíF‚O¸Ø]Jþö#ý7Àê 7oøu_ð3ø¯ôÊÙÖj%ø†û]'çÿnÜ.®ñ„ä¢éˆ!Œ6¥u·£[/Q³†_mѽ5˜÷“û»áÆP^´W‡}ºº‡g(¡/0¹CCúƒ¶°žPÉmzdnäEö52ËúgŠ÷~¹œýò?Òµ0 endstream endobj 73 0 obj << /Length 2702 /Filter /FlateDecode >> stream xÚ•YIwÛ8¾çWø6Ô{H€ßÛ‰“ÉâNÜݯ§»IŒ)’á’Åy/ó×§¢dÙ¹Xd PË÷Uüìæ‰ûÜOd ü T'7«“HDa tœœÜ,OþtÞ›•iL™™vö÷Í+÷¹Ô'Ò‰—Hœ­E õÉ\Áz­xÁŸòïÙ\{žóVÌæJ)çlkÊ™Š.EAè;y3“Ž™Í¥“uUó§U+þͪmÝwi—WeZ°hmª­é`bì;ô ålè‹]}êº_¾|8CôyŸ ³ìݶZu8þÿ¤ íäfë"o;W 'œY gVöÌðyß÷³Ïy+Xá œ*J!½ÖÓº¢ia¾Ž+8`=ÓÒI׿˜À¢ž§‡e°Iø¨C:€-Pl½Ås xÍð¡Ûl…ÈR÷GŠšÀ™Üsö¬ý¶`eæRi!e`u’V'¢S¿¨ÓSx”á(zÖ˜mi’FNZ.A›$qÞÛá&_Ød Td“ÒȺ7Äÿµ«ÈÐ8˜UäïϨžùÊ2:q_ü–ë c ï6ÛãvöP%‹ï)íGZø2í}¡­/ :£åö =çfÃ2Œ3_Z‚ÏÎêºÈ3r~÷h|ËH Ž{ÊѪP÷=Eï#“$\ÇB‡®¦®€à оå:>ü›F}ç9ÆyÛ/0˜þŒÇëü3Z±êòrÍ3ÉŽhDž°£’œ<94<ƒƒZ»tØ•'5Ý0ÁÚoMCfa!€Õ“¡H„M®Y·´iÒrmŒ·l62lSsœß6ä—ðФG.€I4¢ë"o³ýc:Ã.ã0ìÈÁ×â¨ãd,š¿<é›qôq§«I Ä g·ªo‚ Ôòå ‰ž_‰ßí¬YWcÇs^ç¥Iµù}Ë…,,\5æS?èÆÜX|ã¹iË`·øÔ›–ËuE2|}=>“Rb|ÅÎ/Èz÷­£ï`1‡*ë+ôY­HËB¬©ÃùìV]æ¾è¡õqWé'· sÏ'Gžƒø°;n»¡£ÊÞKö+û0L΢#Õ1¶IÒ›¶ÂÃúšOYÄãÇ"èæ*ÌÂ(ÇŸaöqÝòïÈBlFœbé$ÜÑ ŠW˜Ž€Q~"Ôd½˜i ~¹ÄÞ÷ÇŠ4vùçç L §•‡† FÃIϳb;ï É£‡»ª¬ºŠkB+‚f¨íš>c3ÒìjºJ&Λ¼¼%O ÛÛœÇÓå2·«`×~o¯¹BYM 9(ðÆC=ÐïÆ"IF¢|ø"nÑPMñ¾˧"v­$™ÑQ~ µÐÒŸM:„R-F̈’S &ÿ.U¤hÌ:’2e=ò n59pFP½ôaöI<rbǧ´>0ÙÞ%‡“%{¡,ªtéÖ©5[ãônÛ~ëùàÿèc› {ÄÕ£‘¤§Œå$’Pg[å1p—)¡,³B[0HËzx‹PmS¬[c@0ÛÉ Æ^4CXr]6ƒbŽ&+.F¸’Ù”yFØŽå´q±¹þ>гf§-ÖQ6œ*…¾Á÷¡åƒR× —fKÊn1ÈEÕ3üati ÏkË?°lÒ—ðŒÆ@-‘wfiW¿´ߨï_˜;¶³bK‚è²/°.{&tBí'ÎKD~àA«„ù¥ê[Ê¡éí˜Nñ³ @´jÚ§Çï"êhr‰4”Y‹_·Áv)ºOC×ü!ËMIWCæ¡ÂC%ñX‰dB¨ è·X)•Ç:ðíÉáé)ÂHTðds[B*-Bu ®ç$rí¼­:CœR…¢"øöOŠhÀèž"~mÔÉ Ðƒ”‚_¨¬`$¡ý•D”cpò@>pÉ‘ì‚Sv\1œcOÕÑü} ¯ÔýÂæ—Á!˜Zw¹„¨LBà -êV¬ï…ÌÐÒŸ‰·týZ"8ÊÒ‰‚ã]Á @9,ÑÊù<Þ{hßñ„<Å+Ó„îí`ô×Ö4ÿjù¹çÌûW¡rZÍFàˆÀï†Û5> &ü}1`K* awF^ËCœúz߬ǺÇ|ÿCŸ6|Uزœ ‚/!æ]×(§ËF”¿Ú^£’ð½i¡j¢ÒyA}¸sysÅ+ÿÓ79ÝrOmkãCM´—\` m9Œ÷PM‡7l"ß®DÚ‹å­›bZs>î Kºt…·òÞÿÜ5x“þü\…qƒÍ…š\鉛ڠpŒº¡KèÐùnoBæù¶.ðu¼Ðìh¥:õÞEâ º©œïŽu¦Ú±’{·&jw Ç®ÂðÈ1œ‚x‡SÚþX'ÿ”Ó{ŠÖ&u(›W­»à{2×flÛp(p9‚^%"Žc{oãГ˛'ÿ pã4 endstream endobj 76 0 obj << /Length 1085 /Filter /FlateDecode >> stream xÚ}UKsÛ8 ¾çWø¶ôLL‰’¨Çî)M›Öm=É$ÞÍ!Û-Ñ'²ä¡¨xÒ_¿!ÛIÇÛ‹D‚$>–Áò",Äd¹ždÑ$K.ób²¬&OìI?¦3†lÉøtç‚-:÷óÙ´—°+"öe”Þ+óo(båÅ1ûüÝËá]Ýmw}׎rÕVã}¾8Þ°ªi`#s MçU7¬š©`‡­îKkvÎt- ¶ÚÕÝtå¬âÓ˯“(âI”Lf"æ2ÝŸãå¤'ј Ù·¡eä ,®àp9Íc6”SP÷ŒmÑ_™0]×ÙþM7Iú,Qä\ÆÉ$$c×]ë¬Y èc¯³ˆ¹ÿ1s•¬³¯$ïÖ$ߨ­îÑR–²¦ð鼑Á÷ÙEÌÓìh“ÿwÖ´¥v €IáQ˜’nþÝš «7èGœÀSÝ{ûq|R3îïç—tI2&ˆgŒá/Ũû) GŠ|‡³ÅÐlÑÈÐèWÄ•Ÿ¯\f'è¶»Á)DN5 $ì3!i¶¯àH‚‰jéh8ûCüTCI¤À ’?65 î!Ëjk~zeÉ®šMg«·ý9Œã´àB¤'Œ}àI ¦Ñ{vz-ÆéL©g_€ÃGÀŠä`é01öIJððÊØJ g¡Ê žçùÁ£åíÝõíLB¦è·ÃðTù¬6šëÎÒ¢$]ÓnH´D¢Y£ÚÍШ‘¬(¿]Óÿ®3­£%PŠ:Ù Öñ²,Íx’þRm¾¢d–°[kt똣d¡Æ”™ê,êBD¼Ñ‰ÙB$ɯ¼Í·2Í}ýÈ´`”'³Õƒ«‘nDa(Ï>y™JÀÉ4jÕhzµ¶SÄ„6µÏ Ûýûýž­™Q„—Þ…¸zcW:¨ôNY·yÐ{c]_¢ÙZ­ÁŠl¡W)WS+ókó Ǥ”Òà·œ‰FÎ\cÕ‡{œæÐÌÊ·@Ýœ%N–òXA]˜ö¹ ì8*Ø BŠ0 OØA‹àâ\nŠ‚ÇñÛÔ`Û‡„Öc){ògÞöθÁi,‚0gŸînp!Øw5ôªmò1?¨Ãc é‘§ô ¦Cz( Ð{¢4}Ÿ…79³]ßq½–JîÛw”û`çQéš×`SÄ”|Wï~‹n<¢û‘c‹EÁMSilhQÈ®HÔ˜•UèÜ+í}‘á¢ê|qáòh¹Ö•Å^†Â¥°˜*hÔºP½Óöžîœ½ñ½8Š €ôÆ:8x€¾¨iy*‡Ùÿ޼cƒ‡Æ‹Úr¬bKEÐ4dddÁo$û¨KšAйbN%vÕô~xIæ!ì!Úš–þóûùÃ=srSZSúÈá’Õ# Ö‘ànNÿ,—£'÷ÈA8ö.– Â*KÑLGÇéDžz€OŒ»$Ë¡q z) <»ø´¼ønßKð endstream endobj 93 0 obj << /Length1 2217 /Length2 17736 /Length3 0 /Length 19049 /Filter /FlateDecode >> stream xÚŒ÷Pœ[Ö ãîî4ÜÝÝ!8$¸4îî‚»»;w‚»»»»$¸^Μ™É™ïÿ«î­®¢ßgù³öZûm(HUè…m ¶6NôÌ L<QyMf&+ …ª¹“ð?r8 u ƒ£¹­ Ï?,D€N21§Cy[€Œ³€™ÀÌÁÃÌÉÃÄ`abâþ¡­@ÌÀÅÜ ϱµ:ÂQˆÚÚ¹;˜›š9}äùÏ#€ÊˆÀÌÍÍI÷/w€°5ÐÁÜÈÀ oàd´þÈhd`P±52:¹ÿO*>3'';FFWWWkG[Sj:€«¹“@ètpþ¢ P0°þ›@ÕÌÜño…Š­‰“«ð!°27Ú8~¸8ÛÙ*Òr€Ïv@›¿åþ6 ü»9fæÿ†û·÷_Ìmþål`ddkmg`ãnnc 01·>KÈ18¹9Ñ lŒÿ24°r´ýð7p10·20ü0øWé a%€ÁÃós4r0·srdp4·ú‹#ã_a>Ú,nc,jkm ´qr„û«>1s ÑGßÝÿ}¸–6¶®6žÿA&æ6Æ&Ñ0v¶cT³1·wJ‹ýÛæC÷Gf t°311qrp€ö ›‘ã_ TÝí€ÿR2ÿ%þààíigk0ù ô67~|Áy:¸NÎ@oÏ*þÁ13ŒÍœ†@Ss¸?Ñ?Ä@“¿ñÇù;˜»´˜>ÆÀô×ç¿O:flkcåþÇü_GÌøù‹Š¨ª í¿)ÿW)"bëð¤gçг°3˜™9ØœÞÿGÑÀüßuüÃWÚÆÄÀýw¹}úOÉ.ÿžª/5àc)Ø~L.@õgе™Ø™Œ>þ0ÿ÷¹üÿ›ò¿¢ü¿úÿ­HÂÙÊê_zª¿ þôÖæVîÿ¶ø˜\g§-·ýØ›ÿkªü{uEl­Œÿ¯NÚÉàc„mL­þÛFsG s7 ±¢¹“‘Ùßãò·\í¯E³2·*Ú:šÿuµè™™˜þîc»Œ,?®Ç™ü— ø±<ÿ›RÜÆÈÖø¯-cù8aw¸Cþ@ìOæu4ºýkŠŒ 6¶N.€rÞ[¸¿N”ƒÀ(ü—èoÄ`ùƒ8Œ¢€Qìâ0Šÿq2%þ f£äÄ`”úƒXŒÒÐG>¹?è#Ÿüô‘OáúÈ÷ù¿ˆë#ŸâôSåb0ªþAüÔþ |êÿEÜù þ |†ÐG>£ÿ¢¿N†Ñøðƒ!ð¿ð£ñŒÅƒÒ&à_Èü=ë_ÐåþÒÛ:;üÃÿÃÄôðƒ“Ù!Û'3w;³»ùŇÌüð£$‹ÀnVÿ€ä¬ÿÀÛ‚ñO(ö®Ø|ÌÞ?ôlmÿdÿp¶ýõGõvÔÁì>Þ*6V@“? acþ·ÔáúÄöQ¦ÝÇ%`ûÞ~¼Tíÿ?¨ÿ£1Ì<ÿÔúºü£ìæŽWç‡~\@ŒNfÀôþ£^'WÛ8|ðwþühË?NòÃüÑY>â¹ÿ¡óaëtø;Øÿ¬©‘³Ãy§]¤;üü¯7#è4‚[^°5âýfQû­ý¡Zß•~‚–b_#…šÞsÙá§ót"uUFÀ¦ÃpâpÊÚ®8Õ­Ð ñ«çiK=tpk¼R۳׋^¬òô~ÜÒÖÀdÁ©p]?!,½ªÐ׫½—º¿%x h§ E޽3’búƒkŸ¤[]ÙêØ÷…}¥ƒ*Yø—²úHµmÿâ9Š\ÃÌyR('zB´+7ä¹Û»Y´ìÉwb™XZ8ï³HÖBϯ[,Qóëª,Ž]¸ä¸_qÁoÑÆ¦)=EŽ’d°=KŠ"6ù³8C£‡V¾õÅÍ˪ã’ú(â8|+¥çO÷“ëD'ïÊv5Jw°R7šTP~"®ƒñ ¢(‘4‰ÿA6\¢—I`îûøJF¨§ jLû³›¨ëìB­“Æ+.‡‡9òpšèŽ}§#Ó‡ãåбÜ`ZR2ÑdƒlEá3Ö̸J®·¸ò°cd}§Vÿ{.CÑ=½¸E°W‘“µöO¼¶âij¡býQüåùkagŒÙ°VC5Æ-fàŠ^wÈî”Ëk|#çõ7:il¤óòL®!™”M¦y kG50)¥'cÍ3‚é~A¤Ù×ÌŽó2ÁU¥ ´3¶s r¸T$¼ÎlCª¯ÞÔ8`†ÿ×Eí1O“žsXüW-ëT]Æ!ƒ†Ùµß¶d˜«¶¡¸y¬}'9>Jb´  W9nS4E˜n{³m%¿´‰¬. —ÓÔA—:Ž5öʤ¯SUƒAd/1À‹.¦ÄÇWȯ²¾ŠRW±é|÷â2yµÏi¼ø[Ó >§¥~ê³Õö0r2´zÓ0³õ;pNo_\d—óˆµaRå®”ì£øÔ㤅‚ðN¹ Ú¡õ6>QžHˆ5qK’©·> ¹X† ;53ˆxy”w~Í3OçÍR¨Aø,KÌÈõ„Kz3R*%¼ÂÙ± (@Zž•Ÿ‰ít–4ìÊK3½bÅß /!(¢±÷ĤBDòÖVÀBÓp†57®ÁÅ£ÓêÿËJ­ºù›tÞ –k9ÞΘ,å×CýbÜéÒìŽjGc) DQò'¬fǃ#Ä™)Ucî9ƒ­‚p”€ ­¨1ƒXò$ÓZæ¶dhí£Dh¦cXÎs"åI]Tª´9l T²Qk× –6²6›Q‡mr¯ð÷iU´s9è„x)ÏrÍbý÷'¶~ÉDWôÆŠ½U/őӵz×߆–]ÕYððþ Å&¼QÆ‚d1V¤´gå„=¦`Ñž·¨4çɸÓðèt*J{H,EmyÏ”ŸJl*qµõku”¿ò!í¬·ôpXáÚ0r·Öi¿º¦;e\))ÔþBΧEë¯&F6Ð!ŸûùŒ q²–Aìe[®j§ Gû–f[èÁƒõSqåT"GÑ·+–ä5¨°N HZªÄ›4K?ýZ±Í7ÆÚ!°DK*´á¸¨hË»*$'ý;Ýc‘Þ§`œùm)Ÿ“/èzw¥£qõo˜0ÏèF]È>T$+p2.‹ŽHÈÞ)ƒÜö ®S[ž»9ßÑ~L8NÄ£ÊK…} T¢ïµ 8üJ–*OYËYÚ‚šäôuóBÛÐ׋=Q¾¸™´.€¦£ ¹“ðl儯:b"Q,*¢Ž®Mî·‰mBìÙHÇÏÎQлÓìáLR7¦ž{32ðòMg-¡ïí£eÒ…@¸acéXqX:€EçÎA¿ C·“[ f)ìeœ¥x÷«¼ª"oã`z  üaÝà­hL"´o?q©ì.Vƒ¢…M•4©;†f0>šX£×e{nHï­¥À‘yf{Ïò º[uÄ©a‹s ~Ñ÷隸!]ê¥z‹c¦GWâ˾°¢o¢$Ñ,BÞŸ‘UéÀåd#‘‡Š¨T“1x\d DfÒ˜S±6ؚΔfΕéøÈOË8/Ô Ë·\Ÿ.[6·8¥²sÚôAû¢ Û}?õ5R£:Àµî4ÎDÕeK/TæõI=L† Wc€@mÛf͆ô^øx³'õÇV<ú‹¾h¹»ý°éµ'k S5oe@¹1ÐXd¼6ß§ ”Õ_ÎÊíCY~Å÷>6å茭E®ˆ*ø!° UåWÑ}úüxYºjmÃ=ÆœúD|¿ŸóŒYª…ZqÞØ‹pèdÁ ÃÚ/¿î¾ãQôí€n[ðëU“ÐÁ“2†¢ˆ¹ÀゥÓÂ˳U—u‰yma3ËÛ”Æ[(\ÄP`©——4P„¡ ÒxJ.ÅÜl`mï¡l‹÷ÖþÈ.jB±Ì“MCÁå,èw¾Ëq5*ÓýÛ¥Ç ªýÏ,Éá-¯8«†¬L»ð£·ô8ªêÕžíU°zR—1áºÁZ@t+‘ÁÄä(¶…ë À^×SV‹€@'?0»˜U)~Š>í“ûôæy)NvÙ­ Œ€ fs=ŸSû9ÍéŠýÇ.kd?qTïD;îR+v rÏ‚—–rÚv»¿t$ú·²L‡¦[7³fî$»–ê£*C?8ƒ¥áT͆ Tão1ÖmO‡ýï¿EQý@Ð0vT“~à¿ÔyšME‘÷š…L‹5–yÐþR¦ŒT.éî‡ÜÄfL…²©½KÐìIŠeõ¨бúÁ¥—úzy%|ÉÏ?ùàp PßÓõ½£Ù·v»¥ÞWüâש&y|ËéiÌ2äò›j™ÖD\H•/­þYQ‰¶T¼ƒfgµ•N=èpYŠã³·Îü; ¾g1: š×ט®Jw–£pß$“N±Ën¢Äëê‡e»2W+gà ‘€9|THc  Ûù­.#Sa&@¨­Ú í(S¿JKD"¸cƒNŽbÎZ £ý½^è×NC^Mlcë¶Í* @¹íù­NÞ¡•§Õñ”b¢Æ‹ËöY›…«eÑò;îé[]l”i[0±iò¦íÆ" ¡FW»YhaiÛÕ\&€åö¨e1»®³&0¯˜°]¿•úó3ŽÖTHÜ„ž¶`”†Ó(ßP#oK$Bé2A¥õzÏìtêw¥éâQÚCÌݳÓq¶ …Sè î» ¡ËÔ"caWÚB+¦þÇ“2‚Öq{ûå„o7\lº Ó#;ÈÓbÙ/Üœ»Í]Sž•ÃÅéhå_IêõôéV¬–£i.ÛìAÒq²ö–[—Âr äDAMgàxl e`CžäZûì£ñ-Øuû¸ÁË”Õëd+9˜[¿blj)ζ'«Ñ¿ $:9-ø&­B„`³ 4‡ïòÙ“j8‰hóæ —<@ê¼äçCÕÞâ›à »º»{Iaäzž|WóÁâ³ê3x“¿&„LAéðC½p\]lYÚBÖ›nï{ž˜˜ïKs‰S ¶@Î~CÅ‹{ú‘ÉI‘eäNV0èÓŸ6úù6üÉ`Y…9í×$0pÐ#ïŒè¨kNŠs|ä^ïC—Ðè+zUç³£<§ßN‡ÿjAH»"f;ü[õy›¤,Ú-:t{¾³5B@ª$+‰Cšþ°/œ/Ë‘+Kúð5v*‚Íæ^£áN^ Z0÷X†|øœòü3œØŽÃS6 xS(Óe®,l(‹A]ÆŒ†b>ZÔUЦlʬG¯ë’” Œv =ȉ„˼•íNñˆ É< 8vG''=Þ®òi˜¨Œ ž°…“~ùL †¥É»$_w£„øÂ îÞ<ܬæ¨ß_Ik«W·²¹è“»]ëjÖ¶3©0Ë, F`ÉÞÔ~™»‡ñ[<¸|¨5÷—·«ß$‰asl{®úQJ³öŽ$åÝGTW8ñ‰¯^î¼uÙ‡jøˆÖç=ZÁýÍÜe0¦xB8`x/âÝDïŒnj"ß»ÖË û’Á@(ñ¼–Pš–Mš Ù‹ÝŠaÑAG r¥F9¡RQÆ„|’ŠQž¢R9nÚ¡½ÛÜó–zº> AkÆÅŒA2\\/ûÎæ IÛ?6|“›ri,:¶Ë{wJ$Ù×QïW0Ðÿ•L¸>'·´îrh/Þ"€ Ö©,Wðæ'»$Dîµ,¦Q™>{è¨P¥;•ÈJÃ${»çÜ÷º6ÐDí= þCæXÞ”t†œý‰ëZ¯Ã´\Ô‘E´“N63y>Kf¢mb’:ç 1„má i™ ´Ç¶µ<©¥ SšXÓ(Sñ~É'´‰ cð+`O·°Ÿís˜ƒp6Ú‚ðsÑŠ& ÏQ×Öý5R7§|†’}39ôæp°œ"¯“Ïu§„ßR0a|õÍB¨BÑ‹ÀòË—-_âí컣7ækï’l‘Eqêo#;_ŸT.¾.¡Ý˜îÖÆ|‹–}–ÌàŠDPnN…‰+rŸÝžî00k¹^9…]î{÷ÐÓºnÜïg0 ƒEj¨Ibµj1ÁñîöÌ*6å;–²Ë¨iÍ––1DW2"d=e|˜¯cÎÔöÛ[ž€'ô;¤[V³]•³ÍôCEÌ-T±‘þ87(j.˜Ù³>˜xŠ…äžý%¾9Û¾1“©pŸ“t~ûŒŸM2}åb$_W;æeÅð‡gŒºïO¨öùò4qcp2ˆ§¤Ž[Y¥°BA‚Je¢o{À9âÉF‰¢•i›Ô¶Ë UU·A©²¨‰_ÄeuW)ê»H½©„3Èö—eSzqÚ»ÎK¾â.¥?e‘o©‡N+äv,½YYÏpسhK÷ÝJŽh]ï<+ 2`¥îƒËUà<’á¬#†˜Ûfæ,Ý_­÷ çÅÙ|ÇAÕ·¥p$BV¤¤ÀÂvïÆ)ÓÔH–W_®ö-$Í4í<*5¡¤Ò^Z¸ü½Å§ÍØwæ·Z¯™‡Y)Èg;yÑ»-©÷¶á—ó²`}OxWÓv¦`EB5»œ™t©ü<'6ßž¥C z¿§øÛ„úÓ™Ë [Ødy·¸Œºï„w§u!/XÈ™C ’I$ðlüŒ·ÞMwæ"pM!0e,õ¸"Ö‚S£è„,½n&j:aq¤nx°UD]’ÊwË|[kOºXC˜O¨ùh7¿šãN° ýØ5‚QuD²ô-ןIÁQŽývdâ8VŽø·s}(Ç‚©žËœÜm¡xUó@ž4u½, «æõ„ëO4x9¥û}4Ïûî§ `þÑ€6=L±p¶pJ÷'Vyäat¯õÚÝu`A©ÝM#&º.—,sʳ;)cÂe_É gʼn ÏCËb(Á¨ïUÃE¶whµÒMSs€ LÚ6ˆ3>ªën u~¾DÆh‡g˜V…¨3° Š |dgP¼ Az6ä¨C™\µº£“aùû¼G¥^îÒýlCïÍâa4Ey±‘ïrðk¬eƱ©¼;ݺ{ÍpwC6Ÿ3¦Çƒ]E ‘L6[‹a±çàÆ¨!ò/_ºq 1 DoíæÎ€ðò§cZ.!ww%•SçÔË„IM·,ëãeV·Å›PsY’ÈJGçð©8ãðºe~ÑMÁßVí‰cê¾Æîë«ì2È1uÓG–k§L§Óð*­mf*ë²-{‘Ô͘~D~‹Oex¡‰ V͆ێWøÕož §<Òžõú”»·ù9„Zм”Ø_6L‹Á¸Kï§Æ(kã&$<ù‹˜®[6HÄ+¼È-‰€c!á'YØ4AÓ¨…Xûï'Él µ\(Ô}Ѫ…ã°ýF ]hë%)Ê*-“²#ã<§–lù¿1ÖT`’¼—yYù’VOFøN’*jº`áѶv7(õï&¤ìBÂá°y׆ö' :w 4꟣‰ä+VèT®Lõ`ôtr˜‚Â~œÐKŽhÎ?xÔÑJzÅÁäšèÅ9èˆKÆ®nدfD™Æ[ÃÎë4ÈÛä¿'øPU‹Õ2Ö߬È–£ú‡/ï\.+Wò®J¦ Èôª«"o¿¹ë­V¾7™æ[ûl¥é×~e‰8Úž ñ ‡œòÜ–1JVR~(@°·1¦Ú@^ÍpOýÕtg+6®¯Z&# ±ö[*ØCÙ`ífp–Pñ¥ö51eñ$tÄm CT¨í-"^Þn‚O+:’iR°ä8È öUõä&š6¨TY+ÏòÁ´²8ò3p;Á2¨“´ÌI·Æp᪺csy–f÷Å÷íÌáþlùÚëOŠ:¤BŒÈçn5¤á5)Ã+É*1)¤ªsrr6'¹ö”*Cиvé iÑ… ûÙTTºJ?Ñ8w8«DÎOYÖ&ñð”õ¶#ÌýÛ¥§FôɲîfUÞ˸çFdQ^Ì1±g¦u0è|„ù¥-~¿·‘BÅ\YQ5û8Ë„À]²I ÁCË–jxDjyØëógIe¢êA iDbRå/œWÅomk3 ³' Õ§¡—©»L´Buóªë ªƒ‚7Ø«þm2ånî>-\¸CÎv y^ˆ­‚ì—Õ¸ïäZÔŽ¯ Æ|™dQUS[ÇjåòsT\SˆD©†âJ§RhûP(N =&‡xg ¹½jcKƒÙ4û¹n»¾“ÙŸÍcô›µl'CUxÆÈ Äüïù…dï„÷Y²ÑšŠö²Ž*‘L奬?/§”—å"qÃ(ÆätàA7?Ûö &NÃ%¯|›úŒa¾: ]ÒÇ•¥¬¦RâŽÅr²KkIOñãfãW¸Þ`t:å6ª&Ÿý,±wôë«Ó°¢HýQxjgÌ þG”±™úÜóö¼Œ¼y#{¤ÏÞøKA>½h:´M²Šf\t.Æb¤?pR³ß8SPCû»¬À¤°T÷9#"Ñ}x‚?©Œ­òä*å0®íög¨Ù(³«yç¨åZ±”‘ÊÁ—‡J¸X뀎Þ3i¨YÑÊ|IœÆKü•Ç|Yêü’ ÃCÆîõ±†-¡+5廆?ØqDÉÅ'D`=„ÆÃªSø%A°8@-‘ÆÛ0Ãïh‰aÔ}ƒŸ^¾RöØ(0b‚=ÐDær«?k"WòY‰ÔãkuÏeäæ¶@Ón•s¸­Ua],4Xð€†@ùÄ› Œ“}ãhÒÁ‚ÙJëX-`MV4n ºKH0(( XUC{‡úS;³[äWY̬uäPÞä9›aí˜lÂ×_¯,]íŒIr«eƒ4©¿•–ÈYN|‚gÃÀ‘^xÍd²ÝK½ÅsÎéoå}ù[„#¹e@®$'6±Š ìŽuɾó›UÖÑkÕ×óM­g?"`HÍé:¥ye­·æ˜@ŠMW±¼«{Š‘E#¾G4.~ ÌŸfá¸ãy–ô‡•T®ëËÖ¦yí.ÄLÔS©:.(Ùçjm–IêYnWmBZjHï„Ep×ÓÙÉÐr û•ñô­0æ{ >Ѝ×Å9­VÅj¾_‚½'#DÛ1Õ–†È²‡iLêsÁ»zøÏÇøá¬ûn¸eÂ)<ÏÉäSÉV‰É„Þßäs£ýù;÷i ª0¨çnôfÔwŸ”3‡TU%¦Ë“÷iJ ¥®žôBÙÛóƒÈ ±ÁËÃ`û^tØãGA!Ä`‡(ï(ü°Û#ßX‡Ð&nÑ­PÀÎMñŽ~}­w‹–ò{®`†Yjs”§‡…ÐØôÛÜ â Oú²è—eM”C‘1d„§sïI-¦/(Ùñ>eø¥V}æŽê7&·®çeì°Çê÷Ðé·³pßË⣦VFϪ:/£p‚`pE‹5H"±Vë Ì&"}Ã.5Ϙ ›JP^Nk“ñ§âçZª ®ÈÒЩ0šŽ?¬´¼ü^Ï>Ë”‚L…‡&9ÓasþµRcéç7LjҢùfhšà΂â&Ì¡Ý 0bËܨj¡Ã©,JG`£mxÿ.~ÕAD!4ä#‰sÍçå„T‚W0:$Ó¾Áª´mâ$M˜«A&ö¤Ÿð’ Š$ß=ž™A ÿžCpnM¤4]‘”¥?çÀÛIE0$µÑÁ®÷†ÚÐ}±8á„sè• J±«—ýs-L, ŠŸ._áÇ[üÝ‘m1ž¨=Äò6x¢]±v3z­[ŽrÑŽµrGÉò™³}V#»=LîHí‰z¦àê+0©Ý›•v™¥B^ Í”‹Ï¥³ÒêŽOO›&Ç"–#l¾$,\;ä·ùü}th§-DQS <ÉùQ»ç!–›€~`©Q"¬Ë#¼³—ú‰« ¨M*wص¯Ü×îýŤ®ýâ “Ÿ'Í cŠ´šûú%¼ÃŽX<¸ø£ç6Êe£×«Åq°F,gù¬G…‰‚dœÇ¯Ãa=¬Ef›úûÙDB£ ±ˆ8ì¤ê¤›’lÖ{u¥¤¹i ß<´Ep¡ÜsZ¥"ÀNèW**ƨ“eêêRacx„Éw(…@ÈøÄ~¶–eåP?j€d|bB§¡)}ÿ±È2Y/ºÔ€Ü ^1Vò€E÷íîbÑÍųãólNæFa?5ÆwcuîahÂ~Ïßë¶Óå{"ÌY´oy-“YJ’®V ¢.8{Z‡ë¾ÝœtKS•~/«/¢hÚNN|H’âæ„ó×,n¿wÌôgÇ?=)LZ½KZ÷”uÜ °ŒÞ™‹øn:'·é´Åؿ禡>Ï]€ïÓðÊé… @Lª†wˆƒõ0sOƒRífÄ$„hØ™²>RG3`ÑjŽ¥Yqùó4£* ì [Ôíò!eIq_¯xgõ(ð7²âo.å•"ÑSfâ û¹7z1<ƒ]pý仃é¦|{àŽÖÜøÛë^üÓ:ö3¬* 9*¸ºÆ¸± eaˆÉrëýë+‘D% óîáC_%¼‰€9 j¡%ڨnjßUjr‡nŒ¡@%.>ï ¾÷5ŸýªLbš¾Xàü] ‰Nñ“ ÁÔ¦™úÌ1qâeFS½Œ nQŽ÷´®5ÍÝ/\3ÙIë¢-ÌÛO¸t‹TZUKÍF¡NÍËä{QHD4aB‡¿ÜŒäEt<ÔáÆì%Ó ^ym½À†Î!£#Ю~9¤›ÆGbùO«†-†{º–-Ä QK±öuEµ~1¨Öä½";–ÓÈ©PݸF6/–œqÏåÎB›ñ |„ ~DY–2²Õ‹ÅÀm(ψGéÄÉh…ÑŸ]2}q¸ÿ>%ï2bÕt2Üß”¬²àz;v=qaô…ƒ¶3t3¢I¿ÿ-Ú˜†J€ëíüÐJ]Ò;šçâ*¼{Üà+¶t”èú=¶ãaq&Ino>¯JoU¿Êý&ççO!¥ycEBc7ôwŸkl]ÊéR'nȬô%¥cqœu·¼¦²€‰¿tú: ÍŽ#­y–?ÁÐ÷n=ZE¤¯¹‹Ä|Ñìj×@Zõ‹¡õfm,åz+-@u˜^bÀ¨÷XãZ,Õ0’ƒ9¥{ÃJHN¸*~¬çú¦D\rú‡k3>Z‚ya”¢°ˆUæà^!4¿‡±º?ãþ Yz-BNTÅgÍêFÚš_$o%žÈՙЯ£Mib%ë5¨Ý[Ì•g`û¦Ç¶뮪ØI!¢Á0Juv½C‰n†>{ æDÑô>CaRX«/V¾2­–¹mJÖy‘ní2®…ª[u­òõeuxNMGàfW´{8•¸ãe„<ÃWº6'¯üuâKWë|Š-\³ìXp44.,ž¬$zÓ-Ÿjû—\†ÍýÁ¢Ùö É€û–)¯˜»Je @ô—_¢|5Õ·ùv¿Þ:FYéúêYpGÎ ¥`­/¨+Œ9\wŒƒÙ KÊ„;&Ý®% ¼ Á-&øTF~çkï1×ͱ¶º•äÑáÎy©hO"7PqÄñб]E9¸vF¥%[<§÷1ã£~“OŠñ€)oVz (Ñdie,Ÿ/ÓëM›Ùít·ö¥ 3B’nº¶ ã1ÌÆÚ\;aìΑÊ_öl¤Ty C„Âs¹LxìmáÔ¤A7¸ |g/Ã6ÌóCYH;먯ô¦ÞÈ¿AÃZ)Qèt¿®ék_«]›žhrR‡ç_ô.~‚%0H#wÕ[˜*÷ü™’–ÖF—Ã\ž¹°Úwk›VvÇA„Y¸“˜-€®ª¡"¢€¡Q(s©ŸŸÞø°2¤KÿËæ»ÓÔÄ‚øQŸ·g¯ü:O`ØÛ}븠 rB„æ™%» ü|Q_Z•zxnOÍ™šý8²±Ç,´€aÞ(\®ŠHóe<'ÝÖ»Ç&&%óö®ôsÈC4ÿˆ…s“Ù/`¢9vÜòG'eúP0“( 0‹!÷„4Dž¤e#þÛñõP ­¦<5™[303ÜÅ#KÞ]6Ãí©q#¡ :ê"³$i¤å‡Zªã™SŒm£’ò¬wnúÏ„Q66óa{Ç…éæØNÁ£sà*šT]R† oÖU)•겿nÚ‘•œe'3Ä’÷3Ó‰:î--tÙ¢#OÛ ¼äÈÖ{&ibVf»®¨I{G.ñ ºük dãw§ôÔŸEsP0{H¿Éz<ùA¸í½ÈŒQ&Q¿nLPG…O og:ŽKæïñÇ;çuÅ_EÕ |Ê뾊Ú~Þ=›Á|] ¹Ç¢äéÛWc‰„–1dÐļÜWB^AŸL¤ŽéÒÌâå' ™¸ºÇöýD²@Õ‡mßÙHó%£ÀY<¨`ì­;ˆL#ª›Ææ3â†*à ×ùöŒy]óQ5¹Ý)Ì¢\u.ýû©ˆ}eÏ—¡©lˆŽ®h&¿ÕÚ ï GruιÈ@tæ§*¢øâO>ˆkâÛ• @ÀÏ#åHØß®qœû¨“}¼R*´DÛÛ,OØDº]Û˜¹ÊeÒý ÕÞ­)îdt™å×{31Ü<ŠÑ4r l×2…•—ñ½X¶’ËêÍ`ï¤sóBÆÝÚ"Ž´[ÙTÑyy©&f½2ŸêV&ÃÐ/Ò_'¡6D2Õw¿û€ÕÀ*þ$óÁ}Ý^r>xy*ñc-‡Cé(!ÞtÂIÙCòEvzñjZ\Cw«/Úß°Pá_ª„d†¡RêÚˆÛ:aw z­J—$RᓵÑḭ̈¾ èDásyi×ãÜØ§üŠ˜ça*:’Rž ÍÒ”=![fXDÊ8Øí`Æ”ÑâóõpS"l2ŽhU¦ý §–'yʯÇ7¶‰{u*g¦‰ù‚´u+¼õØöÅc˜B”𳃪W1r¡gä·PÚ9JŸ)bÎ󄯱"VøEìý>kàzz*J£ ÄP*¿©jGÃhÈ<›Fù8b !1‰  Z¬G¥Z숿ǜø(\!òyLàýâ"¬ŸzäŒg×Õ‘x©vqXD‘ƒXz³#¾>×Fè7qîèO[Š?qÖ’uS4sDhYEýbö‡¬ÓÛÇ<_»ð•µÐsa³aü{ÓÞc«ìhi³˜ØtÖúíÒ‹´‚£Éi£;j*nVm£VÝUÅ’“1Îêd æ=JZâ¹õ0ŠÜ.n€ï™áZ´Ìˆºr¨#Óc]Æ‹ÚÕѧ=á‘̨Ð ¤ä¥’ºé‹ þŠ-çrôg†¬¾ä~6m°‘>F„üÝ ƒ~%”—ÀÆÃ^ØX²«×000ŠÝÏ+™È¤Wð—d¾ƒÛHÕü9qB_ôïà}ͽij@sˆ£h‚ø"Qo‡ÎO4OA&³ËýD°>?Â줃ð$Fš‡#'2MĘÉdWé+¤&û7|r‰ ò&À_º[í„*‚§CŠG˜^ ‰ Þzð›Jmg©?)n‹÷ÿú­BQò«­€Á„¤˜Ö%£R¼)Å~i´$’ɼ§üB žØqyç ìýXØK‚WéÌBxFyŽÅ LödVSXú-¹syas¦ué!¦¡•çÌsjI¾+S§^âŒÆ&/ÿÎhü èÌãušð“"Ï$&?ä¾`ÐtÈBpL3Úù¯ˆMN…£ëÄyœ£<¶RȆQ÷rº×ĬT¹dg°Áj¬œliüZ²Ç…ã*ì× œÒ´V`iå(Ót]½Z©aa&ßYû¶êt›«â(VÈ$×’ã¯Ë{ŠöÛÖ?õ˜F¯P¹[S”¿L¹¼@¡äVFè~Cƒ®n Ž+Þõ+!ü¡œMûMá§Z¼¾P…ѨMœ{sù†Yµ=^cl©çqîal¦®šO 1™ vIý˜ÆwNz0%NrÔR>ÿLF³H–±CE5¡D!uX ‚€ô‰DªôDŠ ‘ΖÉÏÏŠC ¦“JR¨;‰ƒ*Ñ3Ÿ‚°žN¨Ð9y¬+ñ= $ˆ•ú¤Ç+ÕÓû•ˆÚÓ‹¶`Ȇ%÷0Â*”5b!¥*dɵQ£]‰Lœ€¾UºP±ýHµ ^­ÉU[øh$õuÈ¥x%­ºI«s˜¼)‡·-Ó*lÁíÈ×d)”HçŒÖK ƒ¾¡ÿù N3¢JQhâm ´áM)ÎÇß4ç¡’½«FÊÍØë¥ªúa¼Žþ è4dIƒý—yÐHýF\®b_9œ°ˆ›×º<Ž÷¸âÄ5b8Ò‚ÌžðJk¾Á©°p¯F/u­Ãïú]øÑ ˜flLµüàÆ<·ê!S9Ã)œo™,e~ÅW®¾k´¦ÎnVfëê!`¼¦]=“©qjLõ%îN»¯zÈÛ Ø2B:²Ôžï†'ÉÀEåÌ6ïø/¦lýi">$ù!Ãw=t³Ê“ñˆJ°,žµaœz‘5t¸øøŠVµXÙÐc˜Š¼½Dwú!5—” üç¿G¥bÝx¹«QjO¥÷HeâlX¯Ì!Å.uî­¤6Í?E3†˜nãoL<ÒkØèõ€ÙÔÏÔbà±k’ŒPîi.±ey \áÃ[Þm ÏVKå^Ç"}Ç'Eeg¶G|ÿ6>á”ì¹ˆìª yâ6Ÿ±AŒ ¡$hRÈb8’ç¸ãïñ]›!º{„ašB\‘ÛãÀýò}QÛáATHÁ<Ò÷³}vJìiôTFµö)ÛJ¦NR;#êcÅŠ¶6ÂR,Wóï´r¬YÛ•ƒàWéàûx©Ç[:J$«|yêž!‚”5D¼O²OÈ\´8ŠÖ2ÝLñükŸÌ,X!@àëë­‘=&Ï÷Š%·¶©q”ŽqÍëe‘'Ä&w¶­Z»ÓÁF´@•÷a¥si(‡c+X¬÷¼›Š¨ÏZ¿Q’ÙóðsñPòºÏã_òTg½ñsèBQö¤®a¸`£..¿¸œ›n(lϨ¨Ž=¾*c“íÓßÕWÚ6çH¡‚ja VAÈèõ‰}V•¾ø93‹ñÔú ³NâWàm,WH…f£Î½Q¢ƒíSœƒïäû#•Bóô$÷÷ǃ¤8?ép<.È=oµ9ôJÆZ*AË¸Ž³ÖáÉ¿Ìà4CôÊ{‘7ùóÊp¥Óo„þo®‘o,A'Û›68 l©³«FâóCôsm_Nˆœï³òÈdöb“´z;y¡³]áY •HðŸ•3ùH'º‘Ç;ž~úç¿L±äBðÚ¸¼á.‘õØÐ´ŠÒSØÞ)cO2ƒ©Š®!7&{¥œ"£%ôƒÇ÷öÈÛ*ÒœZ3ùºê:Á}bø}Áh´€%5 ¨d³ŽKR(.[‚#rB¼J’w#Ëfï« ÚlKrp ã8Éà†É‚kº‹7¤æ/6áËkë”î_ÛEÿ‘áô^bѲ,¼…çÎÊåÇ…E%:׃:n6ÉòéTÙí!¸áü²‰”ß‘ª™v[ <:H=4iŒ{Ø&ñÄÞlìû÷9a;‹… »Ê®¦”[=„ ’0C3(O†ø¼ú„ÏBÙÏáÄοÚ;Ia’í`J38#4ÎÇ/@ÁQS•…ó‘—TQ£k¨ŸòØ®Ê|=fL;»õÀ"Æœ 3Ðúš\“¶<ÝyИbp!-˜ôæeBÛ–ªÕÐg­¬ˆ©WjMîr…¾1ÓÍnN@yW†Å=óäƒr4U’!d¥ÕšŒ#û&,Äù’À~kvÒ)<=PËá§×`¥º\D–º„vŸìf¡Ù¦ƒ§½ ßCác÷4d¼±êág3…‡ƒà4[+Äl7€¤Orì&Ñvõ+3r>p¶ÃÖ‰wTq)Ó¯!G§E§ „YOÿamjóéöS†ã+ûb~ (qs8ßÏjÒ«^F§9'Û/L9ÕƒYŸHäq×ñ=™2ÚaŠ£߉ñ.òN’ïäXb£¯É$¼D–Uå$“:EI}døÈ‰)¢Dû<ÒÉÍlÕm ñ›o}w‰‚#0zÉ c2æÐå[%ú2}Pì2TBZ!*Ôš2óä’fµïŠó©øI5 ³¨zæ'@/aQᦕ 8ºå!üòxŵûmÞ4Õ…ÔsRŒsé K3ŸÇXŽéÄoëœàÓrÓàn#Ÿ}‹ÑÐÚ0â–MÖ7Àá9lP¡=F·/y¾~‹›bT 'Â?Ö{–ý$MÄ€jÎ?î¬B{ßÙÿr!P¡šXàøËU¦6鮟n£"׿¨‡o§Ùüã×Þ¤™u÷„P³ïg0³¯_›ŒÖ¬muìÀ€Xî9ù^š]J+¡ƒZ }9|äg¶›¶ãCÔI26Ü™mAŽÓ±mtp¥Íê4˜ ‡ê%Sjï–äWø«…wŸ•FµD놲WÒÒ›¢UmßæÔү꼎!y£Û’ç79΋uqftœ/é;¯©4âU²ÅØá +YCÞ ý%¡ÊÚm£pàUØUâ{ÇÕjai"ë‚Âü`ËV÷Ñ/ʱfʽyÊ–~yÒ¯UyÁ&“VìŽÅJ³˜2¦<:íQvm)ýŒäcBz·%á¥ÇÉÏv~ôåA5!Þ3)J[{e³2ß'21†ˆ‘%êÍRY*ŽdFÕÌßíakßQ«'­C…øú­˜Žå †+Þÿ­+¥Ó»Öà ½˜›hÜ %täóœàkó;S wurçiäBŸ­Kb' [î4„ª÷<s‡å3$úâ2ö'¶é3zñcNHX†EÈ_±™ûí¹aâ-ƒ÷:´)nIljô,TÖLUþH‰S £‹R/,j«ÀR‰2›Íâb â§ãÚ«Vç7(ë GS›êÁ8r?æ# »ú8+³›5LœôPbdX©ð°[ ½áÚæýg*èÜàt½£kÃy•BWC§ºnþñþ|ß÷:—}E“vÖDcGÔ‚Ö‘òˆŽÁ5ãcª­Ð¯'üÏ(^²bvQ~çõ]ò/Â˪Q $ÒžŽÜ¥4éüïÒÐÈó~r‚“ÊܶÛLú<°{H ôýg’ØŠ»©ÕвÐMJ?——Þ0<®$Ô½ mN1EE~1à{ Ô¢’4Q:¥šëøæÍ©\« $ûÎwØ¢Ö7ªl˺›Å—²v0ØÈ5wÇo‘‡ù»é4 xN{Q¤;ò~Ð+áQu ø„_Ø`1k#_I]c½‘è°BåÒû›æ}èµUv¡y™™+vŽÉxuõ[–`žÇ§ÑßSÈ4]¶£ Dòލb r|Ö°Ádíže)ÄOj»BÚòÓÓ{´fDˆÎb»¤,‰99IJ©bc:ÖLýÓ*ÜÐ¥`ùY澘 s‰§“:ôÞK%Ýe6ZßÑ€;à^ý‹|)sPD‰† ñãQHÆZÎpª›o® Àigþ|}•ÝÊH¶²ô\òœ€ ºÈë6†ëÑ(®¸ÞMµ€…úmGåRŽö%XK¾Æ óu6¬Ù辺À”W1ŽEðe`X(ã’ôwNnÊ`kkFˆ‰Þ_b½eÃ&Ûs“Ñ.œ~  )\ á(Éíø âÖìzXIP”&¦¢½šè ’ÅL;ÕMT9­Üªµ!ãÔÒµ®øøö;8$öG'ŸBpxHš|®Zfû”òB¶¢lC\4<ë¼¶2viF§tµU?'Ô„ï ]¹¶“d¶ 0žÁÆù+®³d+a$N¨ÓáwS†]핯ß:©¤^æ¦ùªœÁ€˜9ݧ80 ºIUu[C bšš*ÉñšÂð¸áë$F:äE……”®Q0p|^gxI5Cò[áNMòz«ðDé?9îB"zd,ÅaeU`kÚêBª¢å|gß(üøÅñ»co©èNh"¼ÿC˜V®»6'A{6›mK,å_°"T7.£&ëtG "8ð`ØõÂÆ ZŠ1ú‘·ÿöýuœÅ§Äz°…(=)׸ÐrJ&e|ü Lka5²Gš‹<7˯/}>Y¶$¦ÜX…2‰+‰JCãüƒº¥ïú c§Rîã‚RY6´ØÃ½»öÆçò¾ÖŸ½Ë\ rcRf¯yNçuO´yÞN~blZ,úùF«’è#äâú/Œ=8·Œ‚>‘Ѫ›Ìf.øôŒWÜÛ#¿:¦“Õ>o_v‹–_šjà±AÇ“aG [`<½j"i¼À‚‰”É–ÄUÎïûNå¹…ž~C8›È[ª¤ <±Õ$žo&$²f£Ù¸8‰ºb€PÕðà±ðOâˆîGw*»†÷T¿d|e§8Õ ^ªºé8ÆÖ¼üŠ¥—æ£kÆùZqìïZ×ñCïEºxÈ«¼Pèîì'œs¨²µG3ƒ† :|bŽŸR¿Ž/UÈNÏïâG­!ŒGr2üR›Y­«âŠƒò|§ºB ke…¬ƒÜ«dâRC3§KÚªaU‡4u5ÌÃKòä}u‚P7Ë\Jô¼m¤šDêu ÿ¡B°…;Ãî­­•þbÁâýXHéÐ@0“s‰ï‹H¸©#­>˜‰û]jVÒóûÏð6O‚þ÷Ü{zpÑûˆgê#ã ÎâþÓÉ4¡ùv{M-^4ÒÙ³E‹¨:¬c™25¤$u$3 GÌ­¢Ô¦£5Ì_™¸Ý»,‚ŽïÆ&:,æˆ'IiIƒÀ<‹ßÁ1©æÊoSrÃ7&"¥¯{ŸSP9ˆ›åû"w49÷7^¢{&¼¬tQ."BóãYˆ&¢C~æÒžB8‰?‡¯;ž/å(Ù¼+ Ýñt°Ü¢–q ¨ßùšíÍz;pooCúÏǧ+— £z∠cyHƒZ³[= Ôؘ¯ºëz?17hîy ‡ÀO”ù‹&r×S1MØ!昃øÎä@îs¶Ùk_4¹®µâOqÏD÷d>To¶3Ž u ¥RX‚¤ÚÂ}HN¢œ4Š«P¥Wð`¦•E6*Š‚EÆJö‰àA/ˆNW~wzèaHM‹Äì3à<`nv¯•/¦[X9¸‰Œ–965¶åÑ¡çëÔ®ÿÄ7Ží*ˆ¯ä&@Pƒ¿ÛÑ“?ýñG-ͯ|¬xï9>f ãjæ³ ò´q0v «‹s5 ‹'99ƒ»3óÈá?kfu(0È¨ïº " ÓÔ¸%ZIIfäÉ‚ú¨Y:®FÄ$s8º?¯ü&s>1rùÝ"÷‰#å¶úެyÎöUîØ¥¤|ŽÚ´¡a@È]U¯™·±8ŠQ‚Ù·"¢c–š$gn÷vÉœØ9å}ƒ[ù70OD#£Qäõ|Ä ®cv-êÜtŒ’Æ´ä¢ô ~‘]Y8ÐßR¤ô úîÚ*²&[C¦­]+Ûi‰¢ôôx¦È-Z’¬vö°TÛ)$vÏÞ`y¢-Ù\6¾Ô'jBóÖ„--LÇÒîþLüØqþé\rþv>5Å„ X^¸D£‚çgÔå-b%¡üwЧ<$yO¡õ’[ßuç½ýŒ‹Œ5Ÿ[Ê5/Ø…¢FöÈå»ßÚÛ §åÞŠiÝ º+c–°4°ÚVÒ®C=\¡^Zp݈$çm“œþr§j:hÈå†ê<pcÜû„SS¡] t4? `.E§âE>˜ä6@ÛÐåí½Vã.Fð•þUàL•ã”çëØ‹Žð8Ðz˜±èHôaÈ-7°Õ÷ßõc&›,:u0~WÀäDE©›Kã#ÎñÃWd²Aáâ™Ëuk²Z 2?®ŽYeCìo˜À7<H;RAöB8’ÊæWQfŸÈЗâŽvj<Úw%'› ¥.¥PÝ ›½ÊŽ_\òˆÆ§awû3Ò ¹&ϬP}YÄçÙJ¯C/¨µCËQl|ó›tªÖ\À÷Èeÿ¬Ej.A>fí¶5y´§ÁˆŒ=n†ÞåJ…5ÒªzíÚ`ÏÂaÅäÉG±ö´‚ÏÕË0ÞD@/0[© $üh–âô¸@oDR›ñTï ‚·½ xDDc5Û \0´A=P[š×)~£‚ÿì™ÙA;‘I–À@~A6àN _-ÏÄîS@[¥N |€Þg5)Œs­±ÄûhÜñûɼ{(/þå?Árn_Óiîí­ò„É¥³?¡€sîÝj EAŸ yž7ßè´ ˜‡èèn°;þu‡á»Õñ²º®,&WÅ!Œ_ù½Õ|õ‚rÊ‘Z¾‰ßü(»H“‚bûà¿v‚õ‰")²X¥o׈ =¬ù´ôú ö€M‘(ÝÙþÍ^?1€uõE‰v.ï¤NFL@ÞQjš‰hyôPJ2ÕÓÚ ÀÄîšR&û?ËÐd:(ÍÖ É4.ew†cÂïš›v0'åò«‰H˜¥å2€d 7·h¹Æ:tѬnGIÏSd…~¢ µ®hwkê2¡¨RÖ[Šñœ\®—XÎ…g›(7tZÓ1VTqöú³“æ¯ç2¶ÿ8­C2Â{_ؘcƒæ¶ó*"=Tc¡ŒdRqÈ|Îm‚Œ‹=¹`Áq*C”TDûÑbÄèð·WuKo„:×^o° /ë^7&;S©U#„i~! p{žL9Ã}åk¢f”R?v :Ö³×ÊÆöå®z FcC ñ9OÙ;.}-ªEÞAñÅ0­†à“/®¾NLν%âgôaÿ“£ó¼ ±ˆ(­ÆIÌOJ Сä0`C’iø©4ìQbÆÔÎT: Fµkœ¦}2‚yé§+®Û  /HÑ#¿o ¨µKæ.ì¿De®0kŒý£ã&––1ÝÕTBá"ýqÓ´¼ÃékÝKÏgßþWtg‹OÇLVó ŽÞâ,¶ïϽµ” ÷MÕâüÔÜÊb" ÒÉ=Wð/CÛz’¸ÙÚóŸ*Z8ÝþMëæ(}Ëú xkÿÝÒˆ‘€ŸGEÐÍëõþ¨ îwË÷©OÎ+|_R'Ú²è/Сq)#DÕ¶ßíòìLl?@&Òô2‚cù˜DÌQÚ±ZH¢…nðÎ’<šy@¶êÓ/‹qÎ슈æò諯Ý=m”SÐ)*f i^±)Æ‹·¬žª;- “¢.÷±Ç¼û¢%ÎÞ@š-NŽRÀØêuFØÒêåÑÏòw-àQõ6Uܰ^mûà#‡PfN9|Æ)°Ñúrt ß/§ —¬û[ª[H8Í_jÕÞs>pŽÑF¿Þz'õì[C¾ªºéÛ ^Zd~?øÓû€ò²é¤2 (ÄûÔƒÎ0_…¬T–Mhâ—MÑz©[Õ¾ûl@A†Íá@§³§ÚiÆ„¡]©× ß*ÆRÚn+›à Œ¦y›%k‚«þ}q 0?Á÷ðì}®ýcMÖ㪲 pjþi7@F CUC{VoÜ7S̲Ìd{¥Š8äñJ½%‹É”Õ4ìQa`ú»6©bt±mü€ãÇB1ËZÜ&WÄôŽ“|/Æ'#~VhoZòDÛË„¤ JíÕYioË\€o8­¬ÿ2¿}äXñaC*µ¸h×?E®sîŽö¼ðÏ¢ÉÓ@ ú‚]Ûé]ßj•¯³N±,KÆP›äWtßX²±*ÛuTÿ¤>ÚR#ï5fîÿÅÛ„'ÏV)‡Ô Íæy¼Yª|”:…ÙÄïî[ã¹Qñ£ufédIyPtÃORnˆl¯·Ö²ud÷总§’Ñ÷Gâ–Úí™\d&Gk°Ò`[W–ß1kã ÚMGé–·7-«äL•:XÉÛãF£¦‚&ÈÔŠô€ø¿$÷AÛ{wmç•'5…¶µJ åj¤Xey^_NÇ»“ÔÑ“ì—è{sÝ_¿Ž%úÆ"g3, `lê‘î†aQ¦;®zÏúnq´Çaœ®&0Iâ•ÓßÊýFb&ÇÆz¢¼øâF3A­'äà «ÓAº_[?Ê"ò²¦ÁÉ®åË–6ümÊL£’3:‰Ûú÷*ô¬O"ø¸u],("[)AùnÛò‡Êú☭¤s¿~*©J˜=P?'˜¾ endstream endobj 95 0 obj << /Length1 2232 /Length2 15747 /Length3 0 /Length 17068 /Filter /FlateDecode >> stream xÚŒõtZ× ÇVc6;¶mÛ¶³cÛ¶5¶šÆ6Ûv£†›s^ô¼ßÿqïÈ;û™zæ³Öœk“)ªÐ ™ÚÅíí\è˜è¹"ršLÌFFzFFf822UKàìpdê@'gK{;îDˆ8\>l¢F.röviW €‰›‰ƒ›‘ÀÌÈÈõŸ@{'n€¨‘›¥)@Ž mot†#±wðt²4·pùàùÏW¥ €‰‹‹ƒöït€-ÐÉÒÄÈ gäb´ý`41²¨Ø›X]<ÿ§%¯…‹‹7ƒ»»;½‘­3½½“9?-ÀÝÒÅ  t:¹MIÈÙÿ-Ž  jaéü/‡Š½™‹»‘ða°±4Ú9¤¸Ú™ì)Y€‚Ðî_Á²ÿ  üûpLôLÿ-÷ïì¿ YÚýldbboë`dçiig0³´Äeé]<\hFv¦Ù8Ûä¹YÚüݺ@\H `ô¡ðßúœMœ,\œé-mþÒÈðW™c³3±·µÚ¹8ÃýÕŸ¨¥ÐäãÜ=þ}¹ÖvöîvÞÿAf–v¦fÉ0uu`P³³ttJ‰þ;æÃ÷Çft°122r°s€Ž ‡‰Ã_ªžÀ¿L™?4øz;Ø;Ì>d}-Í€ÿà¼Ü€'W ¯÷?ÿ‹à˜˜¦–&.c ¹¥ÜŸêf Ù¿ðÇý;Yzt?Æ Àø×ß¿é}L˜©½çŸð¿¯˜AEVSXQ˜æß’ÿë¶÷xÓ±±è˜Ù˜LL,\6F€ïÿÖQ4²üwŒr¥ìÌì\ÿj÷ãœþÓ²Û¿g€òß BøßZòö“ Pþt]F6F“¦ÿÏãþwÊÿ¿)ÿ«Êÿë ÿߎÄ]mlþöSþ+àÿÇodkiãùïˆÉuuùØ9û]°û¿¡À­®°½éÿõI¹}삹ÍÑÒYÜÒhªhébbñ¯qù—]í¯E³±´*Ú;[þõ´è˜ÿïc»L¬?žç™üÛüXžÿ¥³3±7ýkË˜ÙØFNNFžpŒ£ÄÌÆðfúXGS ÇßS ` ·³wùH|ˆó˜Ù;Áýu£ìl¡¿LÿBìá?ˆÀ òqDÿ .ƒØ#€Aüb0HüAÌÉ?ˆÀ õ}ðÉþA|rПüôÁ§ð_ÄùÁ§ø}0(ÿA *+€AõúP«ö}°«ÿq}°ýAìÆÐ»ÉÑ_÷Ä`úø¡ø_øq ÿ‘? šý øhÐÌÒí¹í]þ‘ðbþø!Ââ¿õC„…§ƒÅÇÓü'âÃfùøÑƒÕ?à‡4ëÀm6ÿ€âlÿ@¦q*³}¤Ú}Lâ?üjíÿ4ó‘lÿ?î1ÜÅ>~cìl€f„•éßV§ÿ9'Ö®>žûœ-Ó‡ô Ó‡Nç?Íý…€nÿ8¶pç—ó¿%?Úw¶1r¶øG‰–?œ/ƒ‹…ð·ñѲ‹»ý?>j¸þ~(vÿ™?Â=þ?êyþ~œ†×ßð¶ÖÄÕéC½ËßïêÇJÿÿýC zMàVíMxB¬êB:j„ðÜéö'ùæÈö5Ò¨è¼Wœ:]Ÿ S¨ª³‚¶œî„RFúPÖ÷Ä(oW _½OZ ÃÛ’”ÚŸ}^ ¾(Ïì·Ã-OcNÕÀâÓ© ø¼:ú¨Zƒ·‚vK“å9ºr") =¸ÿð¨(_[ÜW:¨f—)Ÿ¥‹U‹Ñ ,'Ë7Î^À&†r¡#€¡F½ô@ž¿½›CÍz'”þBç{ËRì­½Í÷¸àµQ¡Êì܃CŠ£M~‹:>Cî-|”*µä]V/]bF ¿ØÌ߉läÈZKÔ½Â[>6µ3†}l(R޼7o¢´K&3RåÓç¡’úîrÈUß§€$¢¢LÙßY4’ {"éǧ¯»¥é1Ù—ªæ xÓTqäFN‰ùCœ°)q*䃆0rRvƒI2ù›µ­zï, FiÒÔÞÜ«ßïÁ½4&üìŸÞÕÝѧ)¦TŸÕ½?8ÀÏëìkaù„9/$pec€âÜûM.L±ù¾¾+ÎÓLųlg±ÛxûÓD¿!—+CÜàâîpB¼«Ó"•,Ÿ«Å·¸… ÙaÑÉ•ü¶^ÅùhýR_ìæBÈžžy¸Ÿte“^jÔkŸY*ýîö$‹Ý±‚½ö•¸ÁF Û ‘w&è“g0L<ÚÊ1 ݰ¿–ãRf¡òjóF±/g°É¬ÍgÔƒÎÑx½|’èÌg¥êñwÒªHŠâ^ªF1)ÅFü–Ï!¥¾ø ¹¸Ÿ§ñÞš©¬‡Ø˜ÅõR[;“ÀÖÇË>$¼6!p$HJ×6L$ÌÏ.=ù×þÂ]£.Ϋ™,B¦Äò"DJG Âw?˜Õ‰³¸ÌÊdPpÐÊQŠÕÂÀ¯½fµÁˆ/ Å&_ƒEÓ†^qÊ8AƒGŸ”)u‘ËBÚ&Ñ ~¬Ìvg¼:\¢%M¬_sÕÇ(ø8´¯|¿e­'èÑœxC±Õ¡uÒGaq¡l麨·öz¶YKÐIW’ÕEµéªS{«Òç5VeR«Î ZšòýT]ï‹/Nê™0¾T=âûe’s°BƯÏv@ÓòµÑŒ•«‹c™° °ÔŒá qZÀ[œ@žAÙ´c ÙÁ$leì75ßÉ÷ !Îws_æ—ꤓNäšrO[š`,¦[½Š<Ë1ÿ4gsª’¿æ.ÄþY_4ü´]Ù5á·ýf’‡º$g[¶‰FdÆeÀ¯ø«ÚF¼èÛ]%?äòAZJSô> kR§L †Fû òÇú/?­¤_•þ÷aP5þj¿O¨›~T\X©¹tè!4SóáP_™:l3,'³™@œjS¾Þ ðk?ß˜Š›àÜUÔµ=J€"±Š*ÞÌd”E°·á}I~ä*qã³ë1ФôL“Hƒ¦äÂ-=Ä2e[ä-ØÔd-‡lgC#Š¿DÐÉ„ªû,}÷½«Ewy^O3»-õsCUæËŠ uËü8·~#?¾ÃÇ]J‹lÛsÃвvΈ_ýÍíãmEj»i:SÑ7CàÀœˆ}®sÝ76Ii’æš‹EÝЕ¢k³x"QÕØ´‹ÈBÄCêéH³sðý7â¬tCŠ¿Ð $ìÛ½ƒÓôÂjV°6" kÙ"‚ƒ¦A„‹€-U'^Y›”×"OdÓ=­“ð÷3«¢Z²»…q·¿ä#‹¥˜oHP£r±í©×}Š2Æ)ÁÜ ¸ŽX«7Zè/eÇc$:ØöÀ2#)ȃÆ$[‹¤r ÙEGKÀ¡Žcfs) }ö¢£+¾ZÁ=Ái'yùþ­Ð ¬;1 k=éf1ÿlkQIPP†Z¬C,²ÚÂ`„Nº3yÞ˜`²0¼ðZÛ4þò›ExjB]tü~ù³o›{ñÎà%Ù­²+ Åü×¹sö±7s'yeÙ¸= «Ò<—Ò4º¶p“„øÒ8ÏìØ£}Ö8hq‹¶\ÄPòCÑÙ^ÎKÀ‘»»·² /ßf•›oæ8²"ˆHñÌ,u”³ÐÒ×S3™Aš›J&¢ÀÊØÒ$»Ç¢=?’XƒOÔaz9º–—DÒ–Y£Žci¶Ò™z€Yg^„'µÊ#(’ï]¤¥„:»»Q3(Ö©m]˜/Š—¶ž¾ìÂ!£ü/eÇŒ;¢5jŽWY…ŽI>cÿ ¿óƒ iØW‘ )^¶ßÅðª^Î¥ g¾®²†©rËå]Ä92]sðàç÷‡íW?Ã68=ÑÞWW E>yn†TŸûèEÃðñYòWRdHSpÐ `Ó;´,þu©³ÎýÙ¢XíÛsÊï‘IÅ}ªˆMã&µÐß™O¿“¾xŠêÊ5|Rá’\¾TŠíXÈv2»‘(ÕÑec O!Ù[qÃÐ Õšj Â8Ä”ù©R¬ßàgך^)‡«ùLËI^Èa„8hJúöu#^ß…A5pÙsªÛ¿ûv)Ìuk‹’Œ7Õ ßH¨†h‡)»=.ðתv¦ÃJ ®eYP1QöÝ8Þ§âŽÄ’˜½[&I–PQslËË©$W;ÌdöÞ÷=ðŒŠ KvYÆLy£*pw@)?ß –PM×|ïtòϹrEPþÞê£jmƒÉßF±]'y6‡°É5D—LõØýìZ ×ãJƒnÓ`zû“µñ¸Å뛉¬sx惪4”7d…Û$îKèAŒ€F¤üC´ub<¤åŹ¬Ùµ™øá–:(Ž7 ?øïre~‰ÉÛàպױþÚTy3´ wƒ>·Ýµ³Ìù‹ô©›„3͇º`MOðÛlÓ,$?5>&w ¾ õ[P‚¢;žX#Wéí©|{È*oÁkÙ{±•&d»¦3ø«œîò/±ê†ÓìÙâ#¢Sj3lšL"P5¡È/S£`´,¨={©¿ÙIðºßˆ®£ø"öH†Ñž_áGRF\‹±¢ Z’¶$ºë×I’Š÷ºßt wöHïœøº¨&Jpï¹âx3íÑ„ÕP~¬pTÑç±}ÛÃnÚS–¤×sc«¡í‘x|b2?(=©pL³NáK ;¡h3u„ÅVwlHê\Teü7oSqœ-´F>ÌéQÆ]¬Âqï_1· Ì ­¯{‡æíïIä.æÀÖqæÛT< 8p­tI´ÍªG™µßHêÈ_ï:)—å5l=£8¿Õã¡»>Á„’ðU!ýläƒp¿c°ÔdíJqញòZýÕ3DüWZȦCógôÖ¤¾RÔ› XÂ"Süž # ¬_Q_¸wSjÅóÔõB˜šfÕ/iƒ‰ÃeìÅMŒpÛNqÞÇs7ÍX%ôÇ+¬)½û'¸×á`Òß6õè€ÒÍËÆ¸)c& µ¹/ã#÷Î4¨“þQOƒΙ9ƒ*uXÙG´F.ež– µ¿gÆÞZÉ®ÄYp^ÌQŠs‹7£É ä|—×ʆYrE­‡- cus\Mù·~óÜ[¶ átGbÀÙ‹̤›XßÊgÎG?Ú<¹-a,P1g¤¬¥'þ$%9Cdœñ~»€yù~¸[Õ¤+îv«vªAß`sGæ©cÞ0rjÅîWŒ*?±Nœ˜¨om#Rwá‰Ü¶N†ÿFH5Mfפ± ž¥À‚.‡’îYé?‚>èw­íØyöm•ÐRª 4´$WdL5“Ú#¸|@ï¹ü0•ê†Ð2Ô…U;3Ud^Ïv?2P}ä˪ÂsR`@Õm•9ˆå[+ܘ´Ú`žŽYª&Ç<=n¨I8ft ŒDí½Ç§\ëÔ/|X¯#.î½ñú«7['·ÛLÅ›8DþÄ<ã«ö=ƒûö’1Ùþ–¹ðžßÃÊ“‚kn¦Øg”¼ÍN”D~û~7í^ºó[Þsª?&ªgmÍI¸m1S,´o> è–›£Ñ§ MC:g7`XÓð¶Xž¹aˆœÉø5nuX¯â;ûv&î?ãµÐô3jgÑ ¶l³ÞÏ+SÖÛQHDyÖ‚”*šÛK^EZvÃßJ?çGòP"A#h þgªYÕi¿imp!Œ'EFÈø (iEL?J~?®]òþâM·Þ]ýwb˜`È.ªÎpM¶C<> pùÙ #y”åºod±L»‹nPLëæn‡¬ìõ’w_0OˆÞ®åo^{­ vX Ê:ÑWºŒ7Þ÷‹ZcA]òů<¯ê÷o“_x_»+éÐhGI'8¶ÀÑ´îÂ_ìÙÚÑnYÉÙ‰™I!ØÂ—)KT«AT6h!Usöe<ȇb•¾gË Dqãéý(&*À’ƈº8¤X¢¿³îñæUîû*°OÊ`\°Gf¢Ü¶c×AA¼w•‘Ï…ŽÎE¸.ìj šý+ƒ© üœX$¯O^ê*åsûBó¾Èø­‘ž4ÁKú²ò{{•šû­±ØÒ³?ÁôåÕ Ÿx|?ï aòŒq¨#:ȧ½Wøô[moï Øþ›MBúl„3α!Š&mØ†Þ #2sSD¿vÿã½#ùï'jy^aW wÑ£òÙaw´R€ià¹%ì!˜ ÓËaåŽÉ^aX$ ƒpÞŒ:¸Wè=ÝA|—#ˆÝù-—›îØÌ$í£Ü>cÓì›ùK¬’5ÅóÖN¿ý¤B@ÄâŠmoæg¸UFVÓöédx”î £h… 6§m;áËb5÷P<²Œq qˆÄûiÒ¤u)“HüRÿá¢%ºiŠØÕ@»È°K躹æucü«&(­ï仓ÖÌYI|TMnÙõ Ž9 ÈÕ0®š&¹ÅD{²B×áõÓö¼Æ$s­þ*öC(’—DõÙ ÀR>ovòûë«§Y§Ê;ñ ÿ3½¹á®0»Ä!Üëð‰pÊç—aSÍó„FôÛ¸VM1_Ú¬³ÐРj»ÁQ®Ò74öW(Kû²ÀDqÞú\–ùômð·]y2ÌM%(}÷Iìàè~ïLr±Êîk>rä1Þï |á²Úf)Ÿâ¸\¿…ÕÌj3™o–ÖÅ€øs¯^ÛÆüËÓJ½Ÿí™5œr!]±óžS»dí‰sêjäê‹vé~E9=„Þ[¯V/Q†Õ8 ß'ÓLG£Üf=Œe-pTg+Üki€Uz¬õZÚžJ{d:®{ÝÍn›vV=¿ÜsÔŠ+ÖÇ "± ƒ2‹†dÖPê)À¡©“‡€ }lŠªAÁÞ.-Tö,q+ÍpOê'BG԰뛇¸!'S/Ô¬Í}—‡ÓÕ‹øå‹½/úx•¸Rþ&w´J fR³¢… 4æäÁª[ëk†Z¡e=(çwìÕ‹v=ýûäK©ñþŽŠ¤`WäPê eÞÞ­«Ý&â nzð¿ÉôòÊç°•FUØdY£ÉN£|†§¥°vʸw¸nðѹw'®r‹–©á‚ÝB»ÎY2x?Þõ1´]WO#y’ßJ&XœÓv¤©:%A}•moîa‘j:½r¦‡g'J]éo›f ‘ÐÓîÜ$cHäzGrm<™ÔÍì_n_võåúf=Ÿ%L[oeñKÙ‰êÈ>Ël:l¡ÍسsèÅü,ë§!Jãã Û”¾ÑîA¼¯bÛL.˜è"Xnzp,Ñr —4úì÷ËS÷9]D *þRÛ²ª-%XAOÌžAt0hÐåóÕôõzÆUnN<;l‘7µ»m^ñ xmÇ ?³[mQ:¦OXr)i˜áËnbBÒ—n¨N2õП#S£ÙÒ @‘©dm3äôul0Z&Cû~bvABþðe8XÓÄ‚q´Ùc ެò…„§LnRqs9H¹ÐW²-?2Ú'«ºÐ«n¥£Ó“F_¼hJ@Ôàr0ï׳•Í#­h8)ž øeX¨ŸË¡F‘-é.èwÿháÏÂôklgî’\Ù‰œ§÷ýÀg†ðw©+áGôhíJR!ùÀÒY/'QŒ„²›•wmu0½õèâ |BRÍ<²T¹h³0]† ìÄJêzå8ÿP|W³¶@L)l‹(ÿ­³‹x_Õ¢"¦&*™%EzÄ~9tÛ“™4'ˆìß»µ÷½!Þd—§®8a(u :(pl…~†,'Lü[gF'•VϦöª“C¿ÒÉ—õ¶»a¤u†ßj6tއºÉIÄ9-÷`õ¹2›x“b@CÜg 4ùt¥6ÍÂù¦Y™nhü?…¿A'0;ì|Ö!ÆÂ¼Æ¶šßYƒßUIœ°/ Ÿ0Êž}âÊ"fj^XÏÍ4”* #æâMR¸“öpQœË!¹GID¶óôѣϖëf÷À]Î=/)aõ–®ï Ù}ÈuÿD-Áß ÞWç!!H[Ôä≷}Ó¹—±ù#þÁõÚþáë7“dSj”©–Ü)OýŽåÉs®Q.ßZ0…,»tê±H‡Y¨3«ÿäsü/ØÚ¡_|áNëÅ êÂ@4[˜†±rÐÂð€ý–2Ú‘à%ú ÜÍ;R;-`ìü“†íÌQ¾’etP–ð|šKò.0h¯hAöNpžüÚj˜º29}3ªU%„…U#?ÚÛzªÆå4Û´,ž”Œ„h†_£€Ï:H‡ß•3š.û¸ ŸÙ’ë©Ä)Ö ^#)X•ž¼ t;D#àÊŒH„vãÙˆ4"ïZ›­ºqËcŽF(£ßc_àPlÇc7g™ä—ù]¼î”§Apo!»ëVªÄ†Þ­¿­ñ£’Ñ)W½Ì¥ÂñSZs†O˜P)’²˜0Ï®ƒñ wËØÑLŘªìO÷ËÆÁÊ )‡õ’–ƒ« YËk7d¨÷ËÁ_l5¯ÁˆqiâÛlnøÙ–°Í”²6~ȶ1Ü1k‚ñµ‘73Ï$_T1Z_ê~ðP½]Ûò‚÷Òn4'@6²I¨™Û|çöâ†RaC¦ÒHÏ¡baEzõ«5æ©Æ—”7þ_ø®ì9(Тk_lJ÷TÞàûyŸ–5»r¯ÊxmÛùL2û©‡è¼<ªÃN9ß )žºž”ù’ê2#²Šç†NAÆúÞ ­ŒÐ{ Ÿk¼£á4òˆ³ƒ67ÉHÙ[Ï|¡jü]È·7ò„ÉC²¯›ºŒöºs›°¯ó*ØP®¶’14 :ÀÌË­i†I²á:—âš_b÷ÖWáŸYÙQ·å´C"ô1òŸc4k™}–­Ôû)麑«tÊÙ£¹c/jØÍ%Àϧȟº\ݯK[DZ°ãtk‡ÛçÔˆÙZ&+^ÝY ìJJAõuJáÏ\ìÿҜڥt|ûF¤Aëé1~Óñö»V-h°¦<ž/EÆç¤ÃG^¡[G/¡¥Á%Ë!P[‰%`n.%d×¼Êÿâó`WÕ’Sß$š“ž£µVó¾µî퉟›”4êyL“Õ+óy?\e(^®µ1$ù ‡‘Aöߦû±WiŽ‚'©Šç>´ o¿kªNô¥GÈôíÔÛUw'á³’¢#ªCøðd"2—i³ÿQaoLsÈZ”ÈV'i¶4²jÀ4YE±íHÙÐ&ðÙßÕ:¦iSí¨œO=ˆv÷xêg”× @`úÕ{ï]ðDS(ˆKµ| x a Ö“ä ºb"ºÓ‘,ÉÉ"A€÷yût52¨ÁP¢z9lF•>=¼ ɉÄÅq @g迊{^«ûIxûî²Üø š´ÄŸ"ŽpüfRåF y¿n,ܹfjî-8¹ò}º.í Ó%F™´—÷gÒb̘ñä‹Ù•.˜.¶Êóc4õƒ×p·ëݯGÙëÍþ^Óêä?dw8¥HêÙÒÄ__,÷^i2T ºaxð“õö;¢èMzK‹(rxƒc!S>‰9ã¥Àæ©DÕz*(wëV·_ØjÁ'+šð7ņ˜aØÈwéß~¤;§Ù7¤ë12\\´Äí>«auå^m;Ü`f™9IvϱûÚ`K’AÈ,ÂTÁOXí¹ãÃÀSŒ384'eÎ…D» ÒÉOÆ‚í(”=[èÍî?œ¬,Î:Ü–¦q£*äUm‹™ƒŽùÂ2híäÆBˆÅ¨k%Ó þ/¡ÌFïkVÂA×…msäÞZ¼±R¤ÿ›PΈL4Êr§æëCå‹XZëv|;Ò‚—8þÁ…¯›Æ¼úë¦É£lÙÒ/ÞWo!¤9ßì‚׃o“îp¹Ü½~Ásá4 šò)ĆíŽË s]ê`º…²*–+Ð]÷â^gŒíÛùMè¡ÊÆ(Ð%PZÀãÝÊÇßè£sÈÜÄз~½1}€_D¦Øx»EL©ôP\Õ‰)œ‰Ïûµ'Ÿ6e7r0«©ùËeÞ ¯G°ÔfÌ_‹.²àØrsrÏ Ír~)÷ºÃ‘G_Ì…±Æ ¨nÅrIÄè”Ï*SJÉÍÆdŒFV£¥Ž8­iÏ¡eáçÚýY×4áÒúZß-"h­n’÷ú"ˆcÂS;+ ³ˆ3ÜÞê@í%ª<Ê&·þH_᳕ét<Áîú"ƒå  Üz¡<ôë5ä„th 9m ¾l¶ Æi† tïóŠÜ<•’h5o¯}áí‚Å2#î‚å3¾–ÐÁÃ_Ί|BX s8hØÇÄI Ю#ŽìSVÙ`;qøíó7Ê{¨ÙjfX±K’À;»âÐRˆ iz…ä¿BQŠô÷åœ0/]ü̬1±C…S•6%,Ê~®˜ ‡óŒªàêú%Ù»äßI:Ì·úâÌÞq!þÉ×–çÔg1ù]hŸ/³[‡T½n»}mÖ™}Cį¡pÔGМïmüÈo½6J(¦3ÿ|øÅNq—šÙÃéSGþgõ\N)iÆ+Õ9šAØ ŠùÇÃÑ9¤Ê´D°Ý]C¬)àX1f±úàÀïXü´a±ŠøªÜÒÐe:ðŸ<ÕàD9˳¢ÅÁÍTÑ[i[…/‡óS©››/jXŒóÞ œ?ú _ˆqï¾è»!kæŒy,-.H2hêš_ ^`f½cLµ‚šâ×  ×íx•9KÆ‘È7?¯ «â~&" ¼ |FK$³ô”¥ñtª¥‹@Eµ£•TÑ@оÀ:'Pc¶„&“ÓªÛtâˆýäœ\:ʇ©v!a˜¾öâFhrެ®FûƒxÖ]£ilmKÆZÁ¥ƒN׸3ˆ:å0 à¬Nµv)ÁÅÙÃWwÁìóeóÎ×U г(ÙÛuN¦îmªš|,RÌ'j†jºß´^Äc‚H$³zu[^³÷êöÃà\x¬òtí´åà÷èW¬Âq/²¶[DeL¦[P±åëxÒZ¦RèŠ4ª” ñ+ñáý»KÑõ;Ò¹Í&Øx/"G5h\_²ó$·GÍÛVÐADÙP–}Á‚éi"¹³N¶@]Á±ˆ>€±& k‹q€\ -´+ëâÝ.WîÕ¸•»€P?yŒ3ˆÛT\|™Ì8%‰†.‹3tbÅsî* Š–š«»±ëš›÷l3²ª8ê­zÉ­¡ë3Ov¸ö˜5´}²»êýnÔ°ý]Ø{ÉÙŸ´£#$@¿ÌR2ÑÁÀi…è:‡©ì«¿ íïcÑS.mÀ1²"ŸöÊ}œücøý§†³ƒÏ§NÇ U²àOæIÐÒüÒºÉÙ/ ˆÈPuñ¤ÕÔ7®ßxéÒÛéÆïùØtÔ$¹&Á¹º­zLñ‰pgá<·nÄÔŽÍrbKŽ#í‚6A¨±½ØÌ£ñDrФ§bó¤_¸‹×4ñÓš½55ͨÑVInG§c¢_qÜ~ã-ŠPÂqÊé°ß®ŽÔ옰\ö8…Qw¦Íè¡s2_ h b«¤é`œ¨€ÈÝ’ßgàʹ“ÉH™xäE7ÎwPÛé"7™.7,%ÉörU?hÍã.§Ãjî¥V–%(v–XoDC.]‘æ Ÿ-}’C›ù¶L‡`6âAÙ 3± €Í5¯r2ðÜæ™²9ºUIÑöµ]-÷9üâ§ -2×c,ÍEéeόǂ²iDôV$ã`ãNïç©oÚ@çÖãþõ^À[†¬ò²±]œûÊá.,—Èžðï™HÕÆèÁ˜*¬EÏ<‘,’2Q= %UÖ•ç^j³ß!Ì5Á­¢Zóßsä‡)M#ôÝ0<¨q cΈõ‹VwÂ,y=œ^i1ÛË8‰O€Ø1°ò‘§»“ˆ…Y‰N,j~# ™ØBKâ$Æ2rÉÕ/ÛÜ& ß(V| › ò*å’C SéýIM”•øØÐÐ ]ÛI÷9$Ç.z~²àÜDPû~˜Ñ™ýÙG–§Ó£á ¾À¬“/þ÷÷JCÄLRÕŸÉÑ©ÔÞÒecه㷽è¬ZÔ?¬ã|5|6ßÛžYÜýªíÞ'Í ò=½Ó¾²ð £Â6éñ©4¶§0ÒÔ èeÀ<2—LÚ¿zŒ{­{´ß)ÑoI®ÆOÐy”{‚œ8ë;Zóš7T›ä­ìl~©:Îߦ€ßމ6´)©ÉCÛÂýFËÚgfúâÂDWKb:<†i1>º`Ö-„äÉèË2Ø#˜µ®fÞÑf²3É7m÷9à"þë¨f'*alÛ\J8p>rCxg·îö,¥6¼ ~,T¦+çÝ¿l#Ì;yÅa=Ì.#8Ç,â Š†X DŠOÿ|å-R‹BVkìJ:©õ!'Vik»Ú‘23væölð6Rb“jÊêhWù;ue& ¢¯?n ÝN2k Ù:·žMÙn·i¾†;»#VK4"ÅœªP•j—Ì'´[)… ŒÍǯBiy†rÄÌæ„ýÓëo#<éˆà@.†$®Bÿ3;í2ÞF9ÆÓù¹Ø'j¿ @Eæ[ ý¶û…¢'h]1*{¹mRÌ ï÷á`ggEµÄSR›¤Êt;=3VJãîìØûÏ™ ?½žÕ 2}—c7”=â.ôB9’|+Êj¤¨a)m_̬§fr©„íN—J?…(9˜ç -Ü!ð_Þ±¶…5 ¹obÌsâi½¶x!WrIœ¶ûèDi|y°¾¡h½Òw7#¹çÈC­§è»’òfø\WƒrЧ¡P¯¿8aV€›Šœ@O{ÃôKÜ5ÄùEØ5Ù@ö,î Ê ç„åd​մ„ôƒFèßÜúbãbÎSg±Äæd¾ÇÑý®nˆÝ"}CÅTŽi¸ö¢l>´¨¬–'-ðÉG˜ìEA Îèj=¶ç1êh\ß]4¸ÂGUâ»¶^ !QF$µ‡2´ :&MÌ› Uwï²ÓÌž÷°7X\æ2 )ÄÊ]75ãr’<#ÉÔ( »]D¢3Û4OÆp ÁrD×Dì{.$·Ž¼ÉÓ³åBt©_óv‹ª—  é@³`ãV"stR¯¢5~s¨Ç‚’œ9î EÀ*à£Éõ¡Iú“I‰è(+yBÈØl¼('ˆDSÐë¡aRtƒ X ºµqv¢­”¶0ÖXÉ_ø[4$J5‹ó×!œ¤Ï‡ KVdI9ºfs#×7ÎÀf$£'±ô>^¤°¹ë€\ŰҢŒò,œ<Ù÷¶‹š0÷×ä4éwÉ>?%|ÓÒºÍóé=ëúdŒ3l˜Ð%ˆ«­™Žòü 3MC>ÜÈuó¼+±Ú0àbmêß: {ŸŸ‘Û3‡.ÅrÙæ¥>þ•µðÛ[2­¢ í;—”3ÑÊŽ¦a+wüB¿)Ïý¯de•Î ¯5‘™”p»V¯‡a —Iÿ¾éeÌ€t£:•ɨfJó“âr£X>ÚÖò·ˆÛ%Ÿà¥{Á4Û妄³ÇQuÄh¼eUXœ6Å(Ÿ]zB¡àŸÖnÈ­}t´ qò­>\=m*Vþ æÌ7m‰’ÃXñ†L&Ðý…¯›šÄ©î_#©^©¡š)K#¨ˆý÷&w3œç‹¿‹ ׫°-Ôw€º?3)AÔì#ê«-W„ëéWRš¥èQœåÞfl>ªIVÊ â”²ÞÏKLH¼'`wîMÆ´Þ]³Ž–óß$Õ3é?PU‘¦+ÔF¼_sXÇ&Z&óуÂzå¦Qý’äÜêÈw #ôpõ¹w¸­ŒìuÏæ;ºí¹BurƒOeÙèßfÁ‰#îV°Õ#‹@ŸóÂcÑþÒU*ï7o`¬„6@Í‹îÃHäE 9zÂøá W!Ì“~Jyav/pþe.ð‘õ¾hü[þªkãŽ[c¢lý†ø€.Äh¿ß1õ0²"SÎBªW7ȯU†9ÿ¦Åð¸ÊXQPbKÚ%š -óz²>߯B¨þÛXz-j½€Y{©k0`ž[xá®ÂåË€žÓ)lF‰©0Õ•Ü0SNÆÞÒÅ¢aë–_Ù}ˆg ’‹¥c dð•Öµ«ú­çœø©Á:‘ZÚ @5O»sF™]+&åȃ'só`‹" ÙÛf‡]Т‹†Ÿ]n„˜¾œJã³Ü,‡Ô«ºÍcAKã Ñ@ðŠŒg”ƒ fÞOÝ(v€21¯‰×kQИcuÊŠÚØº‚À©›À ÉS¯Îƒ ö)䘷gšjwØ¡3ƒZŽŒ£!uß½µëz%`FD¼  ó0O¯¬aHðíìèÁœô™˜O"‰àÏ„Tbîoc¹æZl(£Ð`AÝçøï¬3·k9qÊSº2NˆgåùÊ_ËTðÅÔä1‘¬Õ:!p·1Ç ’´¾gM}Ò÷Ò¸@Î#¥ªir&ˆôY€òúá±GS8#ër(çjÍÞ…Eýé“!Q WEKýE^”ó1ðdßú­Žé¤zÏÞ¯,¤7ß±”²a©âñ5Ó¸C{‚ínAhÏ@™.cIý‹nXÔª—ïò€›–aäg͵Yo¨–ü·®méí9k-ÕÌϡƑqÓ9œ6?ù²W™AÒ¨‘BŽ@ ~¢ÅE84} yÈ&Í܆¸n²ƒ>÷¤º¨VND>ö¯ ¬$à´¼ ø&Rxýí÷áaÛm³‹"Ú¬þÅ·‹º:x\Ï>:8.À3Ÿõý(uû>ÆXÑ¿²À—æä0ã}SñYb‡j"_qNÿºR leÉÒ}Ük³ÝóÅžžP¢½ôóþ(@úm!ÊJ¡,Í ¿d@oÍjâ‘ÚîÓâçý»@·«RÝÙ"HÐâÏ$©Ó dËÒZ ôùú‰K‚N§ · «íMçž¾Pí‚yJ!?;hvBúY¦ß³ 0ÐÖÖ.BÊZAjæ8"Ýør–ÍÎy‘©BìJ,DuOÆj ަ:¹·é³odãwT+Ø‚+?½+jÉ/É]U6‹ð|xðTË>-HÓ³\§eýn ôÔu"KKwuÛf- ¢^~ïv¡þìyþ#xT&gŒ²/¼(¤âƒaä>> ßãUžƒfTð¾l(ÆRÇóŸ´â„Ý4¨hÖÏä'åÿx3 S õaf\FkE~j4¬ïú“"ŒÄྉâ¼I?Ѓv> 'd®ÄG/ñYÁ6¦:ÙW$ÑwܼE¸R–AÆ<=©‚\÷[m˜ŠLñ–˜"ÌO¸§²™̽ÝýXXé µn¢ø=p%³Âµ8ˆc‰è—O!ä°=&ß0òmmé"7;\[¼/;(Á}’ò˜Ö Qn3âä•ß1kãc¦زPˆü‹Ï u:›_¾f>rÿÆè¶È‚ã¸ßˆÒ6:ecû^g¤Ìû)"ÚAÿ⫝̸u‘j.’osuîÝ«,b3ì²Ê&Ï{õÈfïí;ãôñµÏè/_©©ž’´ƒb‚6>âZ!rŸÂëN(‘§Ú#D{t ª—ê ÃÕ—­ܬŒpìe0a×i¯™wr2R“É<κ/Sªa1[o—Ç}ñ;˜«GŸ«—‹¨+ÜWU ÙÞÞjÌ…eòP†‹òAêsX`×1=Ùr³t\óîl~oÌcéýNBî•3†¼!»(½Ûs3m«›&«´¿fª³ÉO»¾÷Áh¥ZÕÃÊ»8bôy~@ð7½zr€'’§lrŸ¶/åYÂJ`¸>û†W“Ë}nMÆé©]vn±½ê”ø˜I,zç~q p¼¥¯WïxÆo"ü‚l°rÖ¬“›Ož“‚ò[ù«¹ñ”ó»Y‰ÑJR_ÓªìÝ7•_7Ð%>Ãv£LJI_)A›«ÙmV{ Ý;dÈÅÌòŠ5l­¢O ùÅ0 ôU]ŠÇ%ÒmMÏÍ|ñ{k9-úù 8^.@bÄëÑA.nöé4[‡‘— 1"6· l»7iÆP‰M!™&ŽÎ LhNÛa¥—f½a/Úy{%¹eÊ]d³²¹‚=5v• ®‡mPŠ `•¥ÓÖÙê.íq7B$ÿH£f~ºBýŒ&W"P€“W"ËGç,×kñ3*³ Íœò†$$ä'ö÷7ÿêØ©Ÿ ­|zOÉÌ;×N1—<Cõ6ÒR³ãˆã=sŸ2sŸ’-”Möæg¥¼ ¬Ý{ b]—£\×1ã½Çý<“GÒ¼~8¡EÙ"`p8¹~ÿž‚òH‚$(á±+qR“§jÐbégT–I¿`(&–)=8·K²®¤D–}²Íê¢].Üiîú 5±jpÒ§ ^U¹ö{–YjˆûêÈf´ä"¥ ðæDJmÚܵvÏ>Vîø+Ÿ•4õ»Kd…)gLdEO•íIˆ6Œú<}4áý`G2ä<’@˦óç ¡Æ*ùÙìäùÌ ‡ØÑØËf耶ž¦~ås÷FÙŽª®+š/í¨54óN[D:ˆR+Ú>ÄoWÁt%´Tí-eÅ0zŠÌñÌóLŠ„RK¢~2IEª¹oRó¸É}…8\Œ.Ó¨ ßu¼w,áÆ Wy±ÒGRsÂh‰Ú¿¼ùõ…ŽeLc%­álwÂ5 `ÎhEDѺõ+„„U¤Æô6Y<“,ˬ«‹Ò©IT_ƒêÕB#ÕÑu¾Å‚(=)ˆD•šä]má®ZÝŽ“ÿ"ሮ){È¥zŸÌ!¢Î-hŒ>* á3üäÐçÙ¤d­0•è­H‰hy3}ÞV{4œæ·ƒC·.”=&ÈùL?Ñ(Á4Ý_35 ] •rŽëåa×.^JÕk¥D_Ç2åU•cããbô™7<9ë)Žóᨗœ=Aª‡g.ÉZ©uûœpÇBí£ðOÃûB¹‹óë]¨ì}r:Î7›ÛÔ¦UkI‘¹yð=Þ£Øþ/{îW**":ÁHGÀ×ÞW›¡P¨Fá|ê—ȉMÜÖ‹y¬)Ö;{Íx3èû}#§Uº³–±¹Y]Óx»É>rž1xûðÁBvÜĹºÖORêQ€öQ}ep\3½,Vµï ćõmܯüðJNŠxnnæ±á9+ÉŠ¦ÙUQ3[ç¿puy×B}:Џ|3„+ᬱtZÐLÞÆÝum~YýOP–´òýZ4k®ËN<‘âdpQõ**ECXBà`Ù,G;[»ú HCy€êç©ã|‰€óÍ'¦¹;û)“*¶}LŽPÜp›Y—+“jÓ›‘±c¾[hCnéq^Í#Íê`Aù>IxoÝ2½°Wb½Þ' Nþ¹‹CÞöçba¡V³Ó‰É“œéù.¹3ôZpxFµ í;Õ±{NÊ@ŸjhˆÏÂÆC•n»oçª>|Ýì»Ê¬Åõ¡cd7“ðHírnÈ6œr“:‚)Ê9ÅÔiµÓ››o•è8 ‘ï4ØhWMæì'ßÇ`r°uEІ Sc z  þ;CKÐÌËÂÛ‘M‰ò™½n˜E[!“6ƒ@2ëA…#U¿°8Þ`=ƒAã~G= æ'%,}w-‹uŒ³î„–OKVûº,ül[õS`ÑÑ_»ƒ'$qã ƒÓÖEó>%÷=srüdçÊvEß";‘XDøR©\«KšÒ¥Ç¸F»— Þܱæda4P©ú£i[¶$J;·ÎIÜb#)¹ª#–Þ³£(ãr‰–¶û `é¡þ£&QÙB´Lª’‹žtõÊòʽÀ Dá†æ-ºä!+ªÓ(oÜè³:k‡éDý‹ ‘Jäíñ ®(k6œ+˜bÝLRöw¯¦UýÇ$w½52:^ɹó§Ú‰1X’£¹¢o UMÁÇR¥W5'F#­DÑè¯ÞV,aÑì¾ÇhæmbS¶îïZ]O…jOÙ6Mä’riŒ[VêŸVå s ÂëÙÏÇ÷‹ŽO‹Ï]ÖÔЋ,È;V2@q‘ÃKLrýÙõƒ#Øa¬$™OqÜ …P‚Vs†sIþŸ(×þt‹£C6v‚—3Æ]RŸ<çjÖË´Ùß6øÕÔ?S—”»àáÑŸík‰%BÚES$Üüäná5{Ê 4‰i3úʦ€b²0Q‹£T ^c`E¦5'¡ºÜÉßó³om6zzØ NØCIýò6ÞDÑÝ V`²Åï¢õÊ:Ï·…ÅOòÃV2¢ž·Zȱ³õ1iÁ7\ŽóÆ…jrßc¦dš|uO¶*ùÀ1ì¦CôÛ°ÐDÍz¯L)?Q!¶(^ró;"Z§rU” yæ!̉ÔA¡(P³1‹§®Ãâ#1à ÒÛ á…R¤oæ¿»Ã\ÓU"‰Ô¦µñ&f(ï f3-—TžŸZ’ÃÈÔÍï·ÎšWÒ˜’ÒS.BŸ ˜Ó츛Qå endstream endobj 97 0 obj << /Length1 1835 /Length2 11867 /Length3 0 /Length 13032 /Filter /FlateDecode >> stream xÚ·T›Û-Lq·RŠ(^ ¸»;Å¡¸ Á¥xBq×bÅÝâRZܵEŠ;žsî9çÞÿ㽑1’o.Ûsí=×NBKõFƒEÜb’8ÀXØYÙ’ÊÊòìl66NV66tZZM0Ìô;:­6È †8ü+BÒd {²I™Âž•!;;'€G€W€ ÀÁÆÆÿŸ@ˆ³@ÊÔlPf(@@PtZIˆ£‡3ØÊö´Î æŒv~~^æ?Òâö g°¹©@Ùf ²ZÑÜÔ 1ƒ`ÿU‚AÈsÝÜÜXMí¡¬g+Ff€f PAAή Àï–*¦ö ¿ZcE§hZƒ¡:4 –07SgàÉ`69@ŸR\,@΀§ÕòJUGßÁJ0þÚ;+ûßåþÊþ]ìðG²©¹9ÄÞÑÔÁì`°Ûª2J¬0w3ÀÔÁâw ©ò”oêj ¶35{ øƒº)@F\ `úÔá_ýAÍÁŽ0(+l÷»Gàï2OÛ,í`! ±·9À è¿ùIAæOûîüëpm n^ÿA–` ËßmX¸8µÀN. y©¿bžLèÿج@07/'7ä¹›[/ éáúÃÉþÛüÔƒ—#Ä`ùÔÈl zú@÷‚šº‚0g׿ÿÐÙÙ`sÀ dv@ÿ§ú“dù'~:g°;@ŸíI~ì¶ß¯¿Ÿ Ÿfq°óø'ü#jɾUUVýWË;%$ î/N 7€‹ÀûôàóßuÞ˜‚ÿâñ¯\yKàw±ß|Ÿ6ê?œ]ÿÃ_Âøïb*'é‚ ÿ(Ý€›ÍüéýÿYï¤üÿÉüw•ÿ«Òÿ—‘Œ‹Ý~†?þ?~S{°Ç_OÒu=2äiþ7Tôçì*ƒ,À.öÿ땇™>ƒ¸ƒÕ“¤YعXÙ¸þ´ƒ¡2`wÅ0ÌÜúOÙüi×ú=pv`ÐüûŠyÊbcûßÓ”™Û>]#Ð'mþé2…>ìƒüAOCõß<¤Ì!¿§ƒ›`êìlêþtøOˆàÅþ4¦ ÷?Ô ²:@`O)€§ž}–gôßÍà Šÿ6ýxŸâ?ˆTúñ±€oþA ú?ˆÔøq€š#~>ÐìÄšÿ¸£§ù6ýÛò{O€ÿ‚ì è_ði!«¿!Ï «ßñÓþòÔø_ð© ›A^Ðö_ð‰€ý?ði€ÿ‚O‹CþŸ–sü‡ûS_ŽOº†ü‹íÓÐé_ði#þÅŒý‰ôòOÅ¡v¦Pë­àúäx"çþ/øÄÆóø_‚0wqv~RÌ“ü¤–ÿà?îfÈdŽ>7 1 ²©j½ª'ucÙB:J¾Òå`Í3B…õJO¯Åjd¤Ï+ËÌõ°ËÙt¨H8]e.;õÚ¬¡¬õàº`¡”Ùµ¢4‹ž}¼x6çuIF=‹Ó÷I'Q‚Bà³s/Üò¸h¢V½´8ÞôÕÝßãÜè ex‚[UÚ;+ Ó•Éøµ®«ÃšÌ4·¸Ïˆè³Öí£7" Â’TR©…Ú¯ÑcÝ*pWû‡ñzÈ»>ø+¸lÓ„Àð¤Ȥ¸P*´s°ï²>»þHÅ÷2“}.öâ·d…1ñªZåÄzóä‡!C|'¯µI¼eûOÏkr<ÇE‰dçìÜíp‹…Ì÷” ý"q—Píî°Ü—å²ur[…÷ÁŠóÓÝ«w.ŠIòúc}A ÌʱÂ¥›?}êhÛ"]-Cà›é+ñ6¥_¦3îûXæôÑØe,^0Oëpèó%[·jŠ,ò5ûéâqrb¹‚“˵°u;ý(ùz^ž\9§íítóN"ñ#ݱkÍSª"$=Ýì×.¼+Ü× •úí!ù>ež­öÜ«ßð>F@”™EûáA‘D¬ÍaÔe =¡ç¥ðÑp…*Ù%7gþ„_û ­pœè®…þ7?<ïÀ§TÐk=‘Šß¼Ôžì°âéÏéÅ€™c~ü%Òœ¤ê§Àe/Î6r¯ÎY?ÛÄD0àÕþ:‡°yŸo-ì²5¦¿©*†cíÃò|á#VÚ@à^lTD«øêYSÖÆ©*ÒéÌÖBaTVþ¢ôgœV¤$§éÂØ”úíÆ”fãÇdÚy+7}Ã(õ':Ô”Äð›õi_VMOö oe ª1ŒAñy´G'Mn*-eSr"çR>çǨ 1½z Ø­µUì6oË­ ±‘;ØÍÚ›ÒŠM½MÚ­#?›½cìrÓ <2×§c³‰?®Ö…ãõ¸²BžlM¬ÑœC‡ôÎßñerßrÖ`z;kŒÞKjÇ婽wºë ~ºÚAn «¨a‚÷ôNŒIг6ð0~ìOI“Ñø¸å‹Š²Íf6Š0‹M=önB5Åæ2–@ÞØŽ„¿xÛ7zÃ~ôzboêÎOºjŽ!GHºÔmzIB»»Èå7¹š}JCMé‹.›Tõp_àë[ŒÍMÂ}@j2î’ߦ§îb¬cõYVZ†•ö墿E=U½Ÿ WN®f>ηóÆ+Á+sÅ(¦ÅYÁמc/Pt#*ð=±l/óÔ¦VÜzELúÌx¶Ø#åošFqé‚EAã3—1¡û–MõBÇ6Šw§hlí.–iÏìi qSø7Xz³·^Úš* ¿#Y¼NÖ{Ãî5îÿœ„À!;ìãL¦Ì¼—™fÛH«%rÈúAv™W˜ÒäºÐÎNô!Ý þ¡‚Õ›ËúQÿç󛵚Ùß ‡ên©Skèï)Ò@MGèÀ´°æ]r²."BÛƒFlŸ ì÷°íyÝœÀfj^¿'XЪåO'þöD¬Åùü/+³¨yL[kñ°Az{©>ÑŠl‡ÆÚ•„£-( #ÀÏ<¾Ãal'¶±¡}v‡"n±ËºûBërz‘•}ˆî®ømÏ}ü6eXhÒ¨Ǫ́ê çÜ_G_ˆŽE:Ã…$·6Ÿ•£àMZª¢ê,Ãofº\³-]ÆDÚcËé*¸Ï1' ¯ëf¾£ùW±¬(éi¿-6ûÉ¥›©?Âæ2bC("=m[íWM¥ÛÛ©Ý^õ©?F+©ò"m üÞîFSŽlÀaòÁ#­¤Õ×÷x G\L‡sRŽzR* S6·I=›ü—TÊéHâeg´ØÅêBXüð‚ýòÏöÇd<ãi Úý´¾áì¾Yò¸;­f“£y W»ùTÈÉk˜hoÌlã*îôª< îãõ6å‡Iî¹ÕmÉuŒ/E›3µwê‰)®‘_SÚšgëz.ŽX&Wùá'}³”gZÒ·$†WÆ'äœb¤mýUTŽçT\^¯Ê€ÔaÀò–*‚˜"ó‡B7º#™³ÚEt¹÷Eî;M"3% È(·-þO¢Ka5·Õ^Bî»ÐW¤ ߘs´Œ •ÞˆÆÔõ½T‘,ßÖP¾˜Í`Í‹$`ãõ]†nanýâdúfóJ§;CjŸo÷ÍÉ”÷I&UƒLøÊÐHxãÉÞ¼Rœ ñ;t µDyšúæÄn½†ïD„öêN»Ï/sô‰b}-gqø™KxjÖ_³ßäNùº0Z~‘i0#‰²G‰¢bœÎŠO÷®xØ1l(=kƒµdS"iEãþÜEë$.±›d"¼Ö$à^n‚Ï×Qµb™OœíŠÀ©”ÛsÜ&Â6•C¦ F5ðÌ»ÿ‚ œœ¢’¶ÑFòÊ`;e Ô¬JÐVºŸäöÐQôöô›<ÝH:öž¯‡¡äÙHXìk —{ÎqÎwjÎ*ø¶nëW·×=ÌpšÜ»f?8:8ja*kë§]°î<×cí¦$ïU–UsxfÌüŠ Ê‡{.¤Ác¯³ëY2i1K݇Ëj†“ÿA8An̘ñ6åtÚ„+­ÃÊ×2çþùUrMìC¤—·ß]Iêk‡xrxý»û^•òquT€Ò‡ƒtË>÷m)†Ä€‡ìêùÙôðbdñØDQ«{®52pý†ÕyµâTZ¿ˆ¡ô¾áç9ön`¡¿g[âV”s9Îþê$M¾D1†<0{qϹótD‹vAêÍ_"䉨ÂvǕ֋¤Ä’²Ø~q*ãY•{V¼Š(‡<¸â+—Óý&&›í6@ ø—pok¢ü´ h™nxH ¾ŸÖKl¯ÅÍÇ ío½‰ qD°)óëìÛs놿.ƒËóЧ3î¦mZù½ÃÇÐ]½æ ›`Ÿtƒ/09É}”£¡kŠ ºÔÚ eÍ êÙÀLA(úTAÚ¾?vïý…Õ+ɼò½ÝÛÇÜP†Ï„óï$Q“_~%k$›{ÛøàH û…kú§–Fº8VF.ÒŽqåår'R)lE} œfGÃFënKu/™"àÇ¿·c<ÊÒâcë«4!¶sPúkXV¸Ç¨Äúû>£mEZÏl*æJ jôòÊ]ö‘5&ç‘êeHêÛ‡62š‹­ãXÌ4¦G$ê •7PËøÚܼïö~æ¶ìª×ÛïPßl¯ úuIï¿7;úÀ,YîtÚMr¯ûü‡|nZßt2¢s›ÁBý—€ÁÇõ[uÄÄ5v­ÙÙ⥣èϱéòŠtËÉÑÈUE³M:HŽ!Ó§¶È9£âÙ”¸ s†Ê›ÄßðpÐp .£üË&fTªì–ÆÆ=„ÉÎ <¹¥#ü‰=i†Í–Ù†m5£ÚÄá­?;C1‚ÛBM¾Æ=Ø~hm‘•¶ž¦Û} È}¾ZNj’±!Æÿ*b ¦gª™d¨Ãø‰ãÙQAOÂÔu©%Â"=A²iÑ4[_êàÞ¬hè¸kãˆo)ù©èîÄÙ¿:h ûL^–¶=î=¡ó6”-wDx[:F¬¢9žõˆÃhÕ¹&_ ‹\N¤´;ÿfd©fZ°âò{ÿ·OA>ö:é{,¿ê”×ÄG=¡&P3Ÿè̈¹ûnh£q´Ÿ”¹!Ú„£+ý¥$Éîðòµ¬‰Ù³ S ¾¼Ô†å“#-ÎçN©µÓçG§’HÔ%®Ïmðà"E“³n‡Åɧ¶¹Y ¡í†ý¤‚råÁmÕ¢vµÕæø›poò/Ϩ@¨¹ û,0öß$Àþ3¡„¸Å{Û[à–× òÞD<$m4ûyPÔ×>„Ÿù|²´xaŽ£­ƒ?ú” L%Ü8Ü¡1×ðûAÊMU›ÙÌ–¾>/L•Xï»)…6õŠOóݧ“ÚÇS("y–Ñ~¥°•äqNL­ÿ’èõîož(‚‘Ɔq­Î¾OÒåâ*€°;ŒîÓ]É"^Y«MÉ׃¤8×Âü4ç(¿úѤ15ðÄœß X;ãœS¢Q‚Jw‡±ý&uzY -|/eؤ“×FÑàò–ÅØ7ëó#ÝÁ•áÚÅN˜1#%ñe¸³Ž;Vy*ÏÜ< Wf Ò¡Nö‡¢™¬ßóëo.½ÎÏ5›¸pC:³¾D}VÉ9šÆ]En·ý±Úc±êÞ%o--Üø94ß0ÖРÛéƒÕ|(p{ƱD\þ +ÿ=bÊÃ~¯>ZeúL¬¹Ë½G“–º¿í*BôÓ/’º¡0Ò’¯þ!AÞ­ºo¦³µÛzö<—'öí½\Û>v«À˜²F~¥šãÂI¥TÄb Âl§—YÒ2ö¹Èi?®G’)¼>J!ƼZ:¨&y† ®šÅP´¬¢eX¼u•Z£æ CJfq ÇP<ò­ 3Û8ã¤v‘>UÛ‹OBeø!%$XcSÙ3Ôp³2'¿uÍ% Ï©_¹¯µ ‘ûª¢ÑnÞÇ1}×üÍŸ5diƒwFò£‘¤DöÚ‡ÝJá%çè “Ä‚t;§2Ã¥Ži†ân<[ ùOÑÏ“Žì‰—¿0Œ"“O° ^à™¼ñÕx¤V\z•¾ÞV$MK£«y}–ël@ÃF£ÿ-è>ëÈÙ÷c]OëS©S R¼I¶3 èR£,N‹¯¯¿ÍäÅ$»Æ’ο°³ýl&æ öútDP=&Â!36ŒÃc,¤‚0h®Þ‡¢eWqﻢ¶fà«>’µˆÌGiv·¡ŒÌ Bis|Œ¸¬îÒnaùó½°Ï ý&ǃñºŒêîG˱{Ñ=îhܬóÖ…¯P›¥äˆ÷³æØàÍë|»šò17Büóœ û¬=—jd…ô³Æƒï|»½OJVЦñžŸi;î (+ŽÄ{Ìö[ûsko7íJií<ÏØRM}¡;qRo$U¸ ê—N¶E¥_ýRw˜¼L Þ_³}µ”u+¦‘}ã­€Áøx&g€HŠLàÃ?éª%*%Äè7œxd˜—vŸw˜Ðr[º¾¼';ÞׇתI³+¯|±æñ.• ¨Lî]ÙÐñ*KØ„‡¤ )†õ|”Ïvˆœ³‹,dvžÕô }#‹(ô5… 0V¢ì»wž|¸¼ÎŽt!Õ4a¶ç›_Å6Pë ’?˜*û…~I|Iðj¨ä}›|fV±N‘‚ SzÏ7QÅ–4ê=6µß®JÁ¸â4¾…+“CKTÍ‚Ïv¯ÎoîEú0õ½Àx»Wø1÷þuRŤ*ÿVˆ¸ÏÑ'Œ5#faw㈮-¤–¨Î•O<ª¨ïm$æ7øDƒEƒv¶¤Z"ábÈô?žyHÅÏu Øë¿Š5û`ú˜èíÆˆ'o²ŠSÖ 65õ6탶±°*dh:Rsˆ‹Ñm{ˆµ®O‘‘ƒá;!À‹(Ø †;FÂéùëB&Þú#¹1ã+5¡3"vW¨ª_S æ³šÛî$ ]èM¢ÜǪ@ [GÞ-'õI¡~Š5w á3–t×PÄ;Ù1ŸJ½¦COó”鳊1F0ü/{íÙ†R¥ÔÄ «EÏœG…U8tì2š>Ò†¿Z9?­|Ö %£SnôˆÌÕ“Ì‹G3»Þh,ˆ|&îöB1ý² @V“Ž–+ͳIn§ãü^™ëáJyȘÄP34Å—>Ùµ‚üVTÍÝf5x<3o-þ]F²7K¥¹.bÐY­&"^Ö¡§ï|ú#©Ò Iït~™ìë·ÃYU+áû¨Lt#þš¼%|¾ïÞG¿Jž\íë°KøÂGù¢ž²º·­ÑZá¶¡ +›,‡Á&òÑl‹‰PØAÊl>džßËf×pTYû*¤ÝìWÚÏ>ù‰’‰2J†8ð$‰¥°{¡æï'„;p ±¤Æ¢Wú]Üí]7AÀwä¾ÏyWXEÙj—Xf6æ5L$1áx@š©y„Ÿ…Ìò1aÕ Ë“•0MU“²Éc.VUw÷X÷¼_¯t‰³K‡­øe ŒÙj¨üg!gž:Ç#Ã`~dÖ×'ˆIŠ5­w³šˆn;EP§÷š¥íÖ<Îóû'Jqt:zá=­)1€ «â¼:% ‘ˆ°÷ðŠ(iXb·œ3‡*|Ÿr é­÷ VPµD—7§ÕÍh'nç! ~É»"áù¦#ž+æ[yÍ.š÷‘£isïãžÉ%:‚›¶µÍ­3 ‰ìèV>Ét/ 4}ÁUÍÛ£y5ŽJ%%P÷.˜–…À”h#MÙ=î~ ŸÚX)éF”ì‹>ÓÀûY¶#C^w†ŸÍ\ŽåoøZ™ÈX]¹É3¡ÃfBçk •ÔBØŽ˜®ê¾½n±²ÌCЧ¢v$‰Ë‰q?õùÙ áõMø«¿~AãÚ I”ÊO™· YA}ðð¿ÞÏÞ5}¾àíÇ(žø©’¢(ÅøÚÛÚõƒw5õ‹7°Wô'![íMa¬Ïds¤Q5Æt†FŠIT°Äß®O8_¯oP B æQgêÞËLv³\0f#Òéa¯Uyƒ£êE}âˆÜÂxªVû_%Lù<™J9Æ@ØrÛñág2ßtö˜¬XêšÌ‰_†w”TÇçø¢²ñú\+r J°;º½Q¸Sf=@žt9‚••ÉÇ%S6 D÷¯<·œU¸ì‡T­Úú•©'<„§^o¤lvžã‡ù/â±Ç{'#æÞaïõ{›ùsêU"$oo;j·‰«»èd¹ë‘¥QcªŒ!2¾ˆÒ‚#7,/‹ Vû¤³é/“¶âfDxéPYÓ*à)ÐøèÃäšæµXL ~ )ˆÙ”Ä–u°:¡§ŒFÄt Læ0tŸ~aòuä±vPX^ÖeÈçï ·¯"wòÓ`í$ ôÌÉÈ^€íb‡J?¹lÌ­¼xeûuv"†⩬WÜÇÃEb<Oá”K/ÐßʦFÉ|ÛþUà­`øYQ¿7Ÿ7KQ¹ùå "5¢w£¡FÒùÎùFž0Áø,ê¤)’Ì?¤žª¥º¦Sú+ªˆ@òíë³çÏ JgXRÙÄ™ö&PâÔPfe'2õ“cW¥61່µž¥ÙR@f¡8vë…GëZÚSVpŸ¹IB» nª3¸˜”UÊü¨[á1õ̬/s؉ñu™ü·4e!epVqŠÛÙcØ\uOÞ[?¶ÁgUÄ÷qÅËõ˜4±ÏÜO£NåêŽ6±±\S/EÅ"´W·Íô~(‹œ];T–”¼G/Œ¿Ê‘Õx°N1¬u‘#ÛBÞæ'…ê/ýYØ’@}'WŽ©;SüÞhk­ÑBoÒæ.õß[#ÁÓÈ‹(¶†]‚¤?«÷ЋR5¾'AîàRtÎ༫ˆWöì}¿¨FÙ2Õœáë³íœú~ ¶$GA6÷eñqæ&ò£çÁ}Ø6xfZ4;ÊÝ7•lv¶±r'íKc4ž¦Gƒ{~)S²ÏjP{™ênA„Lcç.ëF0J†1nÈ@ÃõaèWãÞ®eÅjÇþ§¿õ¢iÞÜ“¸K¸3û· ›…À^HÃ;,Á^@ëÎú+cäyBAÿªYÕ\7–oD ´ÚDä-ì½ <\œ{ú¬%=ôF‹‚Û‰·xôCí«–{/%ìYŠàÁn‹o¤Óà–˜ŠÒÕo±7íß#àL–s„Pöx…æ™fk6ϹRkU㮿HÓKq`dú’ŽŒ-6¶Üd•§ó‹Dqæ%‡‚ä×óõiꞪû×¢}8eYÔ/pÓ'Áo‘ã:Fxs«U³åJ"‚Ä›­O´é¾2³{Lñ!-I9ë]W3œÉë jÓéT~©¹¸†+_aM·û$i»%¼6|ÛVQnùÞ#oϨYP¥öfó˜*ö¬úzÁ®â\ÈMkËOÖU§ÀNwT .àƒ]Ã}ï°ÓY3|‡døÃÀöK?P6ƒ€îŽvzd†6X<_Þ¥(ݽºM—aéÛDæ aNŠaoñø‰€‰ rœ$U˜°µç/BjùÝ•´ém[‰AØçéJ—ܤ7l,¥WóQÁ‚ÝŸ}¹¹®K;kŸ=âÉFcã"-/k)ÛÔ”ê’N(5LÈXº÷YúXb.Ìâ’??ÛFêàäÌ-òí'QùÐq$ÐCŒMD©ôÓÝ‘r¼‚~#ºböé’Öb«\Y’úm+êYíf¾Ù°O Ó²‚w§¶ÃËçIãmb³ç2›©†KÎX±i.QôAÆŸTó³M¡_/ýÙ»¹ï[ “;%} Šk&Y®'ñë8ÓM$O…X…ÛG·†§Ü?3TZæ¯uÕ°ÉO˜Ÿæ«Jûš‡’“^¹;Ê Ï½ÛkòÍ¡sá0H[þßú£¤aj'&DÙkû‹¯™«Æ¬7‘rû¶Ï»sÿ þxÆ;«N«&Vø¹þi³þdß§î×ÕÇ=%.fª/Ã45êj›ÊÙ³ÉÃÀlîÜäú%ÌwßÜ=-eÜ™+Þh¼þdã¾ð¢QÃù…AW\Ãå@/ú»áCDrN5l5µÏ”íØ ë3?…Å_~©ÉX £.¥õ¢Žë¥EÏ(k'fû”½y¥0åGWbú8Šo]S·bשÚ` ¿2¢ÿ}ò<'ÃCµ:z”\{æaÈ þ´­]‡â£2s“3ã­œ[x¡[Ï^«w_TØxQM¸áT°©=Æ_H­$|{Ð+c’϶HÁ7‡èû†ˆq\Ð U‡¨Šãè«2%ÎûO»Üž¾;;ú‚LÂA„QâI?XU|¼,›9hªŠ–¢4 qñRh…%Löraqbã%rQ«ÇB2§ú3tÙ…ÞQÍa´æ èŸú[Z¶(¸5yçÁÓqëtþV’¦4"û L!ZØŽ¼ÔÕ“u‹¸Ò;Ý‘:üò=ÔáëØîž=ë·|)ëw†_Ú'i†·ë­Dj,N<Ö”ƒIZnEÈ00=àîö£4 ÏÃSÇS ´ó¥ TL1Þ/Ô6ÓN«—ÒQîÎ)}€HuS`Å:€ÕµPŽ%y¤ßˆ™qÞ–ñÊ’BnŠOS­>Y{Û«g“»K!ÇǚоAèr8G“G@Õ"vörȯÍ%“ùç!¼ÜÀoMϺÔÜr$ätv0»àQdÿo‹H¯øS¯Sì¾²¯ÕôNÛÇ\ëÏ@³3±Øu±º¿’2%f/_HËÓû¤Ee›”q‰ñ‚èûH-Nãb3 ˾}?Þ¿Cƒ8.² ʵ€BØ¥~šóAn—G“|r:‚å– op6+O8[1T=]!SUms;Ú¥äßKJ!®ÝlÒvíz/r>åµ4-„¶º…'<qÔœZ|󌞙»4Ïa4à³òãÁfbM–££Žþ¦Ä|éM1Ò HÓ…QØ&H³›IIf6ʹžˆÎni>ïÛ ðÄ·ÿ1spLu­Âðù*ËÛ/ óòâÕpÃ\´ºcK2nò+dý*ø3Óè×¶Òyñ‘"ÔGˆß™[é{„90&•÷„%•Še‹˜Ç¬˜Iw®ä©ãN\É4ΟnjÕ6«KàÉ[áP5ln)b*'¬O:É03Ù—ì6 [~ã7¬©ŒÀpùh7tŽ›Ý·«ò»_$2ì;Áf½:æü 7œÒ¡+(¥]—ÏI0$iôË,ÄÎvcËH]r3/ÊÓ_©¥1 ˃§°ß$©¿C©˜ÓµÊ[…£ÇÂÔ}£LnèCGXg°¹SbðÓ~ÙÍŽûÐ*»¥¢„_>·¾#tš¹&%ëpè"\,_À½JÎp!y…4IÁ ©,›ØùÇIáföW8RÙp™=z7†ûþãæ‚Ä  ròîó®;thdJTõ jâ(ÑÔb:†r:«²ò&pe ‚;%ï0dumWÑÎ4»=è'‚eÛWW,ÔÌ’NÝÝù9P/Bs‰â„³n1G#£./¢ Ic£ð`– bs%æÝó5ÚN\p_#¹Cva`’Áhq_Ñt ±½er—ûJ–dàà2¶Ö•^r£¹95ܱù©k¤Œ0§ÜYaŠfMˆ†ö¤ªû†ÞÐdßdÿ‚^=„Ô wøÐÀ\)ODä¥Ê÷C”Ÿ‰j#â7‘J¤IcùÆ>k’Ë‘ÛÆokPÓcf?q…Îz ø*~T÷WÝfø|4)ä™Èü¢Ë¥Ýâ-¥ÇJJI.=½ÁÎ}ˆôŒ[‚Å@aç2—òFF:àQßÖÉ ([F.ÿRJË#†ç×A‚bÒ QÆ´ÌK •æX› 9¾o‚R½Õ0 ó”zéö+%+aHc3ËŸ<ŠV Å, £'ù¡pˆ_VzÂÚ<Ÿr¡—Ã,¤8KIn¾œ™ø*Lźî4[šTs­ªpž¤÷Ë_ pÛZ+õGÓ…é°s'ÇÆû´æ‘ÜÁt‰>~{œ`V#`fmð™ƒS;›CA”V`…\©ÝÝÛý¹‰ü2çY3šÒ8®g‘€v{/Õ_îJæ²_r}qï-É?ž*+) ´àGkszLÀÝ^+oPÊöŸLµeï\átMSTúJ +šÑw„wŽŠ#Úµ/n…é8"È£nýì…ÙÛ˜0/`É“=~aiÞ¾o¯˜œªÇ,ùØãíYùÞCZPh=ÚgW"G]xrø)&Ùææ*§HÆ¥å2KNÑÈò2»6™u5EÛ½éròcò _Z¡Ÿ<£°³b ¾¿¢‡ÒúÿŒí=ð9½bPî Ÿªu`©Æú2>Ý]ÍAÄxaØW×U?O} Ÿ’µ$»^‘mÑè@î€*ÒÒÆÒÄQ^Ñï[‡HÙ—å+AÁ7˜ïÅ7v&žó΢K¤ ÿctEÜ…ä¤ktåÕõ•V ‘¼°•É"e;Ë'+¥ÄÈWûó—%L¥c‡ˆa‡ÊBZG±üÚEe¿¾mQ·´Nĉ;Œ(x(à êTµC+ÀyšÒlÃT å4ó”Ã#Ÿq^ךE¶393’£$Ïw¿Ã‡sȹ™/ëÕè¶(»cª’­°”¬(Wí/š&ņ¢9ÕNã•Kr—ã*ó¹ý ó¥¤4˜óœ[óÎÛVðØÁÔzùEò©Å©××$T b¸½¢n 䎓ئ\vî#$)=ÖÀ'¬ì| ¯»Ç&üé}x+hkf™ÓDWª.èé1Ìã!iȻłÄ}\7¨Bp",!¨€*˜§o2ýZEŸ·ñÔåƒÐ2×]æzÝ+Tü:áh päæ^ìt"öŠüBWä…õÝàþBçG¯Æ%òešÚR#ßœUÿ×çñÓÆü8b}C¡jî³µõ ±Mhë º­Ç´EÌ÷¸œçª¬šU¢.[ŒHP±&Ö+p¹¸³>x`”Fëù H¤n«ƒ:jIVØ/ÿĘ¡'ùí³÷¢RÒ0K]—Àï¹ߊâûÐÕmmš1¢Â¹€óé‰Ìs´ËŸŒ÷îlƒN‹ß•¦rL ÒÖ†·¿¸gâ´éÅláa½¹&/ÿ®VÀÔ½3j¡Ba/a½úÀ0Y:IüÊ#1š#fü–Ðe†£(V hÇIè…`õ‹—ohwo>áX(#@‚ýij  / ÒjœæÎ}PØÿœPÞ?ÙøÎìZ÷¹ãÀÜ©,aç‹s·éo9öÖr7›l¼‚ïÆ$p¶À¿òHÏÚ(ÇúçÇñŒæÇ½s޾1ñâ·a Ù~m-/PÚ¨IÈ9·šˆ8]\cõ PüʆäYXìEû~§1È$l1éä¤:¹'$îkñ9s^FLœ‰mÆ £wTÍ ÞÑ®JÏrU-âX6=K6¬|Ò‡¶­;èÞ£¿º׫N$ˆ{äèµÀ3vSų êACdþ+ .MÛîùœóvc$ÉÜ$𻡶IØY¡†š¯ctBåP)¼"&aˆ˜te5Hi ´?²¿üͱoÕ\Ày÷…uüɺxë`Z«ž–Oº"ñÀ?¢¡Ò·E^ÅÎz ×í…˜S¾]c°•èòvíCçFáÎâ@w$kèô>¥xöLïcªŽŽü¦MˆMâ~æ'2³Ì=JÖ#¦Õ|¬×ÄY¬P­ÅëóN}'UéÍÌZí¨ÓíÛð•ä|ézþt)ŠÞ˜ô!P·ú·ç³€¯í\¤8x”ÂÈçCn&µÑ%jÙà‰Pc­_´šÃM˜%ü\ßck¦4ßnÆádý+3P_¥$“¸ZÏ÷sVcÂ' *AiD%É/Lz›ŠaþeãÒ¿Õ¹µNýKZÞôócF1éìy­Ï aÈu›@W³xä¹îÁÇB!)¡Òçy._ÔÇ |ɤ6>êûÉÿÀLbm endstream endobj 99 0 obj << /Length1 1385 /Length2 6013 /Length3 0 /Length 6958 /Filter /FlateDecode >> stream xÚtTÓoû7)8P”n†€€ÔF—Ȉ!)H (ŒmÀˆ ÆhQZº»ÃCD)AJJiAB)A$•øÏxžçÿ{Þ÷œ÷=;ç»ûê뺯Ïçà54ƒ 0vH(‹ƒêúúÚ²@HJ’˜ p.È¿j€€ë ÿ—ƒ: Ãu0ÑOƒêxºÁR@°¬"XNJ‚@ ÿrÄ`0/¨/ÔÁ ‘uŒ›/åàˆ#–ù×(‚äD‡!®H, Cõa8G¤+±"æ4ÆÀQHœï?R);âpnŠÞÞÞâ0Wq ÖAEXèÂ9o#=X/$øk` Ìùg2q€ÐÄåñGoŒ±ÇyðH Qá‚‚#ÑÄO4‰‹µõ€·Üè?ÎzDïÿ;Ýßè_‰PèßÁ08ãêCû¢Ð@{” x ª'ŽóÁ‰ahÄ/G˜‹†ó‚¡\`vD‡ßÀPˆFðïxp,Ê ç!îrù5¢Ä¯4Ä[ÖD#Ô1®®H4Îð«?  '^»¯ÄŸÍ:£1Þhÿ¿‚= °ÿ5ÂÓMÂr÷Djküu!ªÿÑ9 q@¼œ”<ˆt"}àŽ¿Ò›øº!«‰ø»aÜ€öÄ!({$ñàïóBqXOd€ÿÿ6üS€Á@ ŽÚ!PhÀ²ÕHû?2qùX”Ð DÄúõû÷é.^ ÚÅ÷?î¿÷+¡ ÕÕhˆü™øß655ŒПXSLRKJƒrÄCÀ?³ÂP»ý'Tm‚Aº%^Ó¿:öú ¡¿äþ3™†ˆZ$Pè? ·É€àÄøÿê¿Cþoÿ•åÿòÿnêéâòÛ,ôÛþ˜a®(ß¿DÐzâˆÐÇi€þoWsäÒê#(O×ÿ¶jã`D"@ÐD0‹¥ÅAÒô((ʉ0DáàŽ óGoú‹j.(4Òãúõ¶£@ ÿ²ùw&¾D\þ1Á<ˆdÃý^ã/I¤Ó?ûÐDÃ1ˆ_¼“”‘°X˜/€¸z¢$CD‘ ¤Ïod%ÄÑ1Hœ9hÁ~­ ’J8ýÒþ‘î‰Å ÿ†±è¿äßäF"}pÀÔ®êTÚ|ø Âá-¶4¨L¹•qh!)6øø5®[sÔf!É87gZ—êCï9µ¨¹æ}|ÿÝÿs O­¯ô¾tÕÇ.aâlŸt,Ùÿ€óÊ]I¡yš·b)¶›Ä+úÒ«ó7ÝÆt÷«;'“½¯2–Aåtš Z_=+ËÑcæT0ÛX¼k´ë5Y’ÙeÌ_tùc™nuEW¹õä]ui¾§¯wærW{tŽWðÒ7þpÜeM¥^N iª*³™¢‹Çù¥^ëYôþvZ êÌÆú…¼·Y½êE)[¬ÖÇ|TN9‘ŽÉ€uVº–¢¬¼#&0ýHJ¦#D>=ìÊ#‡(„ò,ôv`kãûG}£,S”ó}Ÿ]h^ 7 åðÝw|R¶óðÁ[ˆq´SÆS¸¥˜¸yr‚¡°‹þš7DsШNWöÉë~¼“Ѧhê(h}–Oàid¼ââšÆØÑ&Œ[ mw|Ž©Zȃ2Ç¥ÒqfÍo['¨aø¶‹¡ž; ÜÎÜäª,J•%;6ߥÒhÏý`rʧ±^%ó¶¢ïx8‡]oÑ)ë»F¶f´3Ôôz†_s›u?‹/‹ |1:h“©T²?d uháv³;îUŒR'cŒV²¨2jCû¬À:jwk¯L%p_  "õ $ׄäi‹Â½ÖÆßyA4yŒÁ=l“êþWÓæ¾=™~Ûj=}U¹ù¦RÍžúî-0¡\Õ,¹¨ojÆ)°?m±Õ¨>ú»%@¶Dïý~׺˜gÿƒãz |tëƒh¿T§QjùÚO(md¼r%þål1m% 0C3íL ¦œ6ÇZ(ÔÙãq·ÓŸ§'< |¼½ôþ$iô£¾ ‚cfãz±b¬¸7 Ø=áWBté~ÂL"/SÈ㩵kiù²(ÍT%ߤrh‘ª²O“NKíØ¹ìxwè¼[ïyq’›+qÖòÔ|îrsll›SAÚËŸabI^±)@â­f¯·ÀÙRè_û÷ÔK±¡—žOˆS@õÄ­vu¿D·Åߨ„¶ü8‹äQ\EX”Ç öVI?ßTH¿©ÁÇÉ3}#.ê|lurì£ñ~ö§:œí¹Òû{úƒl›£[×§Ó’*‘û‚6×Óˆ6ÄY*…1o½æc ðUR`éÚp뢤ŒÍ–óŽ.lö㶺(¦ïà'¼½Dz]½éAp›§®’!2½8€î6èæGKÒEþ€xX…6…íàBuïÔ‡¬AJݲÂM\0|º””‘)ãX!ö‹¤¯²ûÛÚ¥°ëµûè{û¯1ú]sÑü3cF)‰F WäKbl½Ú³”‚úy /“çá6G$MŸ1½€¬Ï"| ½õ ýVcÂÛO»ø3o}9^ S½,6ÉPµAá.iV}¸Ë4 wòØ, &5´´¸!³CqåKäI³ñk‰“6Ÿ¤o¬Qö>Ei(jž£çŒt-Oùeÿk$’æ"ϘµBr·ZDÖAtHâæÛ‚,ÞKö-ÀEíºã‚Á„$ë#ð6£ÀÍ$OL~äÏ™¥{Q<ìO½°ÏEcÖVá`­¥9v¡ôyÊzV©î†ÖךŠkO/ÕX~ EÆp(“½‰}1õzäA,4÷;¾®¯Ò¬1Ù-*Ê©¯+0DEÖ¯î]–éhGáÉzÐØ&ºÆ²€ùÔ{¯e§$ìâ¼µY­ä–€¯G™¶ÜãÏ*õæz,˸>Ò=§åŒð3­Zá±Oyì.2´]YLÒëk²…{Ã3–憽ŸFÙIzŠí[:€CáÑáRw³c¼}÷ÍU¤éÒ׸‚V_/)R¾.~&ú€ã쫸IbÉ’¨¡…è;ïÅ×ç9[Bk*Kãq;ú︞î¸èrɶL;㼫־Àr¬Š‡D«<ù‘“ä²1°ÇíërŽrÔÉš¥ÿÉ̓½ªý„xÖúë&ò­ñ²O$ ؘ¡¹ÌÑ*„RÊQžL½ ö¯žká’Ëžô“¦§ël…κ;ã ÙšRŸˆ´þ ÜMs™Œ~ƒÚ"Ì;ò©/ügð åp3pv£d4â*¢à]ÆÖÕ ywdÓ¿,ŽÛëæâ¸®vNõŽœôëÉpüpÔ ub‘~=Ï×Äfz­øDñ¦i·Ï#k¿&,¯ºh“Ç‘Ïlþ¥u¶”뜕»ÁìEeYïYî[É •öÛ“G­¾åw´RÍ2ÍÎþnì+þO Ä<Ğرt}ŒŸg^u/ÿŠ^¿Ö–(¥r–H¤iYÙ;êI c×Àí¾åŽGL·h°ÇRŽxò„».¶´š?¯ÿЬ.qg>™Ì@ÐùtvìUÉꎱٳmiçÓß@>H-oºó„fMm´ÉyøNß“ó)Îù7œ½¿¤b'¢»º¨Æö>u*¹"Ë2¯KE1 Üx>sp0.j{°’賌üµŽÎ7lÐ{z3©”Ï>ÒR éŽ-]Þ ‘vzÁMeJíLçÏ«s›Úׄ 6*µƒÊYê/ì%‡Ê¹G}BŽ\®ŸvÖÑwøQÌ”¶+1Ý)7:¥Žd…Sjà­üeaŸ*¡>i‰›ŽD„ˆàP lù•¿ºþÝö’ÏÂ×WÂï‡üù¾3ÊîLHtwô¤­uÝ+ïw&2‹/1op •…ÿÊÑiA'du„¡$Û¼_äê àì‘?%aP’æªfû$NØäË}d¸BÒœ,)âª][žÝ¼(Ë?oÊ!Pt`êöp¹\=›ÖîDË/XyY‚Z˜аyW|~™)‰Å¹/º:Pñ(ا^ËÆÃˆX9oøEÕK&rHÓŽ¦ûÈ–ªvÚ³1Âsoð]²¤|W°7’%˜©Cfq- 6+·5úxŽ€3tëŠ:žIQuqìóœì“‚˜êPÞ'áþPž*Zo“«g—ü‘½u—ÔÔ¬™p¾kµMiïMñõh\3%(Ú&.7)ö¾´˜R¿OpsªŠop4ÎûŸEjÿÐãÊ/“]H×Q"˜ïp-ΑÆÔÔòpY%ÜڀƥA \üâ1Z};ø`Ódµ‘†PjÄËô(ËNÄP£qÇûøgAÏ ÎøÐCãmÛ¡Ëâ!Úš;}FOÄ©ÐMꪼå¿÷y œéh2zt$WGs/@µòpÁƒ#"òïŠòéÂÃ× ©oª¥ß°P=}Ì\Æ®ˆ™É+o3„¶í\ô;–$‹·êe˼þ¥…P̸ác\¾ºÈ©®h†·úĽÎòɕǸðóko¹¸&‚PawÀ^ñÒ¬;Šj©Wº|RÜÕæƒï‡ Î¦cÅÙÎz“g ¨)¦†¤T)EÓHã þ¹ âá?™ô§ê¶lôø¸¨">ÊœÖØâæ^Ô¶ø©8Ü3—zȲ>¨å‹?°Q"Ì÷Š Ê$oP«2A€__ÓÇ] – ©»ùŒñ6 íä]ò\_õ|“s¿lý•¹e%Å\íkunhêÌ–Ó¾°ñ¡­*YAªÚˆ!׿³Ç®øÝäF#vË{Å §aÎulß”JÅâC8ª"ýr)6¤¶¨0‹a~Råîìò&)R7Zúdœf *8#’ú-‡& y*²Õûš yÝ3¸ÒOG(šÂ®õ‘E=FuwF‡ØqZûâ\×øpâ*’ÅP¤Q<µ ‰«4ú<û…bƒdKP…+ãásnñU/^æA¹…ç×è}¯ú¯¾a~Y!ë;»ïzêa~f?‰²üþ™|—ÿÃ…ŸÑøO¬–íéŠd»Gõ~ÃÜιh7Ù3vãäKKÝJCp’û^x•‡ñLʹ©F|Û;âýØ—áx`;׆S@Î9±ðã®F5ú† ÿV™ +Ñ è£š¹Z%–fD>ÉôÕŸ–¨Ý"#°½«"SÁãcÉuÕÏ"4¾neý̬Öõ¼XoîÅl7ä`±#•»Ù_N÷Œ©ZêÁuଭo4Û±:Rp¥>›=ÛÇÖÛCõðí?e2uŽM¾Õ¯,m‘´N…aCŽ Ø¸DYÙ¹R­Š~.f*VnÙØ÷Á½³§|¼îò5Wµê*H3N~ŽR6w÷´ë5áWƒ3£-×Ì9?çènNv'Kå¡_@;¡q¶‹Ònë*M-ëÌww„9ïÅ5ÍB"‹Ëî—lOgýhèq„‚µD7­mšÚË{?°±Ô8•ÊŠví–Ê­V»q¶¥vI÷Œ+ ¨ï—«}8~ÕÓ•¹³VPDlôðµ eâå'ANÖ¢’%}džž0mÄ'@…ÑøíܾÛEÇÚ¹¢‡§P‹Áüb¨Í›@‡ì—ídû¸êE_¥úøÎùí½‘Ìú‘±¸iqø.½ˆœT© Iª¶Ÿ[ñ¤ðL*[èÔ[9Ê ;ÇÖ~+Ú÷\œÐ×"ûô‚UÍwî&'¶Ðí™>é‘Lp˜©oßm?$ÍN뢴»Mþ¢Pë4 ½Ica»· Þ^à^ìOñ Ò…œ”>ó/u°çö¤ÛoèŠ=*±*G;À[GfŸ ËÞ¾±ß<ÂeélJÝ4O¾™90as’’ïoµ3Ù÷äp/vŠÄº½_QEßà5Û‘ÿ8µvj€ ÕúÜü–Ö”T¤ZÁ ¸ƒ[Äu'L¯•¦k¤Þ°Ò‰ö6ð-v+˜‹Âßç©:[QRÖÒá \›¬5 Œ¹`—>ò®Û¯«Â÷üÊ|¸Û9>¬>Ó[Lž]Ÿ îC56R³HÐl°ßEPÑøP<º/–X"@^–>3à•OzJ]•^TN¸ëmçTn> Š|V±(!ìX,7díöaÀB¼¢ä§Z|L¾ÉwñØó¸I%þŸGìž½yá|ñ¹gpõ›>>":x ³R–IYœÛàÑ ]¨Õ^¸Ä˜ë$W.0iàðxÙ4¡¶[nƒÏ™È.?×ébb½v»ÊÊ;v¢‘y_ðÞThVËÞ;íÏâß.P3Yv€ÉÛ¬@-­]˜ÕêcŽBž R7gdh¸ªý‰ð‹~ýólÆc§#3-q0ö–ŸåÛâ%oß—k˜pCŸÞŒ½ÍJßN/jù)å»’t'zZTu+êrDR(¡s,ˆ5±—ú/AoŒ¶˜éù´õ-‡ ×W±U=02_ÝõIX!³éÆ@Z)‰u’§“°EksÕ„QÀc<@4›<€JÚd3üP¥¡ ùã‡Wµ>>-‡ô6æÍxZ,Y„Žûfìßgû‰×dür ´ù ï“”êÔEv™æ<öI¨Eã\heÍs¸€ÈúvËk|$uä üòß³ÇGäF5 ³,Bó9ü»úÚ«òCñ™#¬¦Ž1ž±Ãñð©i—Ûw\OÆ¥!‹ Š«ôá\f_ô0‡—åô|´Æ×YW½×Õø½¾ð©.4c¶õ8¢ã •­'æYe e6™4÷ÈkOÓÎÛ .8h…Z†™«ˆQMuÆÄ£¥ã×Oó.1 ô¨* c£’ØQµö·Fó”ú9=ÑïymBKIKk'_œz5^È <½UrÄ@ªÂG²õ%b:ò6V$´ïs’u 95”gõêrT»•êlç;{ÖÂZʦM¶~"Ò/`f^ÁÛ½€TÐÜ!](ùÜè¦;…báb‚€+0jP¸Œ»¤µ ðr&°Áùn¡c¿°k­\ø¬5XŒ×J«’¨ó—>FxÛfjÔìgG4SÈ$s¶Rú}Tùñ?o³ƒù endstream endobj 101 0 obj << /Length1 1505 /Length2 7770 /Length3 0 /Length 8774 /Filter /FlateDecode >> stream xÚtTÔ[û.‚¤´JH 3tIwwI 043À -HwRÒ ‚J7ÒÒ H#`Ð]ÿQÏ÷?ç|÷®uïšµ~³Ÿ·öûìý¼›‰^K—KÚnU€Ã\`n(@V]]Yñqƒ@¼xLLzHgè_f<&¨;ÂýG€¬;‚DÙä HTœ:Pñp€ù`AQ°(àDþwÈA<lêÜ8 ŠÀc’…»ú¸;ØÙ#QÛüg `µf€ED„8§¤] îÖ@‚´‡º v´†8táÖP¤Ï¿J°ŠÛ#‘®¢<<^^^Ü7ÜÝN‚à倴è@PwO¨ àa€Äú‡7@ÏÞñÇ® ·EzAÜ¡”ÁÙÁ C 2<`6Pwjs€®²@Ó û¬ö'€ð×ÙÀÜàÿ-÷Wö¯B°ßÉkk¸‹+æã³Ø:8Cš jÜHo$'³ùqFÀQùOˆƒ3Ä ð»s@AZAü‹ÂÚÝÁ‰àF88ÿ¢Èó« ê”åa6²p( ‰ÀûÕŸœƒ;Ôuì><nÖ ÷‚ùýl`6¶¿HØx¸òèÃÜ< Êr… LxÛì H€HXˆO˜u@½­íy~•×óq…þv‚™Q üý\á®[ ¨¿ƒ-õ‡ç‡€xBHw¨¿ß?ÿFx`0ÀÆÁ °‚Ú9Àðþ®Ž2Cmÿ`Ôå»;xž€PÚ@¿~ÿ»2CÉËsöù;ü÷ýò(Ꙩ¨¨süaü¿>¸7À‹—ÀÅ+€Á`@µðÿw-ˆÃ_m€þÎU†Ù¨øßí¢Îé?-{þ¥Ö¿¦ƒ ðïbp”l¡Ö¿Un Y£>àÿo­ÿNù¿IüW•ÿ—Êÿ»!gçßnÖßþÿà qqpöù+¥Z$jÔá¨9€ýw¨!ôÏÔªCm<\þÛ«Œ„ &Af‡R3˜ŸÄÿÇî€Ppð†Úh9 ­íÿhæ]ÿ׬9;À Zp„ïÇ•ý—5`ÖN¨æš6äïkü…¡¨yúwò0k¸Í¯Áã@ÜÝ!>x¨«G!€5¡6PïßÒðpÃàHT ÅÙ` wÇûuÍÂü½_¦ßèWG<6ÿ€‡@Aã? €ÇéoˆRìUÙýU ñˆ*…ü ÿEÇÚÃÝÅ÷· Q\ÿƒ?*P¨7Ôonn-êXÚ|V-Måŵ1"޹›~fÄË5RdŽƒì‘·XIÒÍΚW-W˜ë+˜;¶iȸå|™9ô[¯¥«óá?á¢Sز£³z>}{rgò…ß)5Ã4Q#Z¾aª ­h©{šM q;®¤].ÑS–š®Ù^ÌÊ„Tš5Z۫˲ÔȨE ¾¯ê ß[õëmQ°ä®º$„¬ÅšF¥id0¨Š·žã%yU/÷ ô/tÓtÄ©xoì1†#IäÅú©åø±«  ¯rK=¿eúY)Þ—%ÓUϧסÀë—-H~¿KazÄ6rÌŠ²÷‚¨¥ ãk±=<0íœO 3D8-w’!Â.ÚÏF|QA'°õýLÄÀ8ùéæòÀºó½ö±&Ö,àSû×eÏ¥ucÓ+­M¸¸ ó Ó÷ó»IÙ½¬A÷Nß+‚ÓĽszŠÒ[ÃDõí§Âµ/ÕÒ|,i½¨Ë°ˆ¸¨<”6I¤=s;â<âtcW†ÂóµÊ¨q ìc¨®E•“ÒFM¯QŠ2ËϰLK³–FÏ—ùUiD'ôàOb¿¡} B‡ |¬”cCãægµ*E·Fj˜‹6t‡.¿ÇI8£cd÷…Mq½îjšuç"†K$4f²·¢‘,?ƒ˜1„›hÐH(Ž®>£Wלð}ÈOOkäik³|+KòœOèÈÀ™a p~ûùɹfù¹T‹FJµ ÛÀ:G'TXÎ^X¤üÛåqAž«ïZ^†Ún¦Bö3³©õôæf—'TÆW'ù[çSuf]ɧ€Ã“h‹{Ëeð•“õëá¹òvñn×\?OÉS|Sê&Ŷ4³³íí, 9.%røž~ ðfWx˜<„³rþÚR°¥È`›ËÞò·DV§êeÒÊ“·äb”­pnޱ,î rÆ?[ˆsŽi+«g9>·¸ò4€£m0õ“Øç—ök;ܼÏ0ÿÒ[þÚù(C*$´wð„ä×ݤ«˜â¤÷—Z¢™u—VR9è.@4–3òµÃÛѺ˜7 Ðõcz¶Šû©TD³öø¼‰¿Ð\""R67w¾2=- <ÊùôîåT9Ó-A¦&1CÕw/¯ÊË›lS‹ùjùæªúŸ¶¡½DZ$¸ÛÀm¤[{ƒ‡„5ˆƒqÀ:WôÇ?pˆO‡Ã>àŽÏ>·•׫ü¼ª¡¯êCêN\6v }¹© ì6èã¤ï>Ê:1ê/’%¹ëv2¸Øë£ðÄ­sލ·3 ÝÙ1 oûd£íEÖ&u›ãøË†„si5UY*oM¹Ý×O阮z›mR8ê<~Oš¬~ª‚5 s®[h¨.Ìg÷åJi>2~>[éŽåä¼{³S/c¬-À—Žåß®-ÔŠÐ4 >å§t¿¹¤­Š|,<ó œ’g¼\`9sžæÒ¸ªF=ÊÄøôÈ~?*ÀKãסÕ+9½àt>p÷ŽXÕ£[Ÿ }þaÙ³&)‹QH:û.椟~RsBf)W_ã"ºbAx¸C*J@¿]´}9*±£®CŽg†h Ìfã–s ០¦ÓIMï”)5~6g‘_“š×ð~ò ,V`ðê£áà v3£W’—’§8 hª&‘!áhŽRÚÂ,!Ð/MÈU£¦wA[â d„³ç¾¥8mû|Dp™ ç滸¹…¹w+“º,Nº¡!yD ¹áb°ì¬MvÉ&"l+iäž:—í¨=7>ïq<µ{sVYêoYµ¼–UmÏHž±É˜‘ §ÔÃEÊ"Þeg¡`ä+ê²~:tzÙLx’M)Ú€÷Ø´Lþdýx¢Âª“ûÛ\ùŠåb]¼Ïaþ5ÓØKz?Ûò€ V¯Gúþ꽡‚W8÷eè^‚Ðç ~|ëùRÍ\T¯–É£y¡‘¿öVŠ· `â‘l˜îб¸ûÑû@åãÓ°ò˜ÞµX@²3‰éE"+®:–ï‚“.käóÆh•ÂO`s}Çu«-hˆ o0 G•¨dã!AU?óí:מ|‹ÑÏ“æëBÏŽLß)ÕýÖX[àNÓõ3죄Âs±!P™ªvn•)EÛB qýlÀ?Óiàç¥[bêeâÛKÅ7Ÿˆ5®xwéG%‰+?Ÿ”ùH# x\»|ýhòE€™%üd¾ÊŸ$¬Ãîõ“¯_ƒVj›V•0ØüèN„Lÿø1IåÃ^ЫïÐý8ÖOý”Í2°ÇYqÅhöüãzÍÉA].·ß#³¢çÓΕõ¸äŸJIȵ=åÇ' Z¨—{s¥t¢õ§æ`9Ÿ¸Ö'Pö.}¹U·ÆíZín m›_WáÏLÚTPS¼œ½7¿(UÖŽ=(“KÉ0ó]6É"8‹Ü.oÑC6¤Ï0ÉÈ^©'úµ÷U&=k÷jDÿÙ e!Іèº–i£Y›ÁJ–Tó‰ôÄ“DåvƒoàA–„K̇éLæe¬cïX¹»1ɘϳhp|òÂÎë[o'¼•Æ…ø,b¾ÍFM½3å›?×eZL¯xœæˆå-`dh,—U°…MyÜ(Ît¶ïŒ‹*|gßW?#S)…ý2"o“Wsç£ÎCVúm ÕìÕ U´ñ×éÉÈ®󝨳„û?ÄèAìTxXhHÅÚK¼Ö[rç*ac¢çO“æéð>T¨ŠÄ„&ÐìN‘.ì¸daO¼ê‚=(ôŸJpI²Õ3ô—b5ˆ$÷aQO°—Äy9LÞ´;œO¡L…g©mt0 ›¨^wD Šsêž7á7õ~mG„î¶äÇ>ÈÙj¦×¢ouŽƒü:;,F;E9‰M_UÑ»åÕ1f„ÇW6ÇÓƒ‘¬Wh¹Ú|tN&e÷pÓ#¿dîäó×äŽ9XˆÒ2ûF"œ¥'ÒøØ#WÑ¥¼8¥ÐŸz·¯/ðä…Î}šHaÓœ—ë¤$1:2˜2ˆ½+îlæØÉï¬ãDzAääö<§ÈtûšØ™c&D“ªùBR!Ù¸b8üSÉ%${'¿ÆÔ9gWHÂúû¥T¾˜ö)®íUuÞEOBÁû¦˜¡c„úÂßZº³Çh]ÀÇÏ [ kûÏÐé[Ùþ)ô¬Ý‚çËßû°óàÛ]­©^¤Ãæ1NYÍ¢÷— .ÅuuJ^ùž‚}xƒ}Ø5êàœ {±»ÍqŠ÷ö¡‹ÀáàoœeºN‹¡Ä›I«*ÁLŠÚkÃt‚œV«0Õ®‡YëNG!GÀˆ°w¤x—wç+C»›Ë–µ³×§´÷ñõ¥¶ÜQذïöÖ¯oË `‡òq&ü @Fì+>–ö’†7Ýê#Í%á…èv“'ÖÙéÚ[euÛO¸Wž‹r3P¾mª-öÆ£Žv2i=z»<ËÄ„vßBÁU¥Tëq9Æû~ç ¢ˆ… åo,ó½”6‰$KOjÃJ¯ËCDÅÑz%5?ø l>8%ÖcC(Qôâk¹’m`ݘŸv7ÀFÔjéÑŠóm(:|©Å“ùè:ãg­…BöZ¿2âÉê>‰ÚŸ«€QÊ}Ã=ˆ¹äšeæ}Íà«'òÔñ­Ú`ýWW2³ ù·£ùŠj_Þrǹ˜¼Ø³¸Žnðçò]8 H˜·ÙóFüK×´¾1@Àtºøøèw¦¶ÕpwoîÙV‘ŽE½ ŠÛ²ï%ó~Ò½hü”§¾ql¹Ö)âgájG&Ñœ6’ehp®™tLeØG:ac7Ø4Ã-ÎÒØÙY•ÜØtÊY“ºö”#asÄm/…#w|êEÖ‰TVJ¢¿öÞM‡K®È”ÜTþ૽Êu\‚8gÌ‚62úWóƺµ×á0 ŒâõàØÍÕT Ø‹‘[°NÙ;“cÈŠ.pHtPîãì§ÐW›wXnµÉ~|·Æ™f׳pzÆ»„Ü©ž‡V3=}æ¨ZÄà“q& |2,%8å<<×ʾHÈŠ3%,Qåßêù¨|ðàŽi’~!f@@…Q4ùí¾0}Ç _\wQûé›ÂY¦ÎÀ®þzVí-_ú Û•“Õâ÷$ˆgríÊ­”ãÙ`KqÊ>IùÜÀ„IbJÏæá1ðý¹÷Dî£/êck­/¸CÄ^pà:áûTùnhv|ö| ZÛž›Lq)ŒYh-«G}TSH3êwb)¾W¡_ÌQÇh?ÛÄ/",%_.=ö`ù0âR~ygÃÝ¸Žš{Ûãc¡ú#O“Ø’ïŶCÌ— ¡Šµg>hèRÛ ’r—û…Ù”Lð*·¢Ÿ©üäˆ//'´S/6Ƥ<[ûb]é'ßë Ã/ÆS˜êx%!KŽ\Ó+è¢öÉ/3ÎÁÃ÷øU ™å¾z~ž¤YÅNA§Ô6^&^&²÷›É ej;ðN4 ñLdO†ê˺IõÄ2o¯Ér_²À ‹BH˜’_‚ @4ª‚ȶhÊŸþfÞWÁž:¶ lÈBâB„ÚÈVÑå¢,";ÎÂPê°{ë]¾ƒfjkÛ€QéÜr2’Ù;ÐÊa¼ ©ÉfÐáv·1x(o™Þ(„2á üÇðÝB¯+‹Ÿ† ©åõO÷Í>å©ðçE쌻ëÊ¿Æç@«ä|G Jy]’*gx£PÃ!{;,å°°ùd2 W ãG€pPò£o¤çóœrîèû¶úµŒ÷̽»ý\¶Ñj-Ãã£/è€[A&Ÿ78‡÷¯µ/otjòÞŒÎ×ßí%ˆ Œ$ªd3цêö[ÿ­4)lrÏOlŠ}~|ú3y§Zøáó­­žåÐÄŒXÚ»vÀËdzÇ‘Jñ]ަro¸Pt çÀ|óäÕRÛÛNñq'©&„²©¥¥´ò3œ· \)JßÐ×îS[Y¾^ù üt! "m-Þgú¬ý>ÎÜ5s´·Û#a–\«ËŸÉSKE>—àÑ&‹½]{Èσû@×$ÐmÏÕòS%eá^P´³\åròøK?—Ž×#(Eôštv§óáø pÔw¯#š“BQmX Ç ûjçûÍú2Ž´æS˜<[¹N ~}šàݯúýü°Õ}:ªÌI¾T’AÄÇV—íeËÇ k&»1ï‹Û=òD^V;ðâÌMmfò‡@’› ×HÍØúC Oc©<%ÊÛI«Äg—S‘ŠONw?e˜ª ¤>¹˜¿œB‹Ä³-Fçé$$Ñ<9ñINü¢·6$’þ4îÒLs³Ï2ÙñÍö\-˜˜#2"Ãða‹M‰FÆÚ\kl©óR¸¼Ræã¼…¹ÙJa³/ÎG‡58-¼€Tû¥>©^,mùñÅŒ2´Í· / ¤Yòê—^¹M¤à;znœu„°Å“Õ’òÿ¬Þ'œ ‹i¦¼}:EíÐÓFåléA³™Œ oò°˜­ÕCg3×ÅüÄEóò¿æ¼i¢Ñ(ÿpLöÎQÕé=ã{q:˜Ðw¾“'{|Ígˆz×À±‹FüŸ×¼aÃ:J’äÜ€|×°’\`‡q'yÚÅ"TBë Ðâó¡r?“Å·s©»h¯`\Õŕݫºüoç:ë'ýF¦ãŠ÷žPwiþ´-–µä›»mJBÉN*ã….;=öøjˆ5`ø¸·ãÑh"Áñ‹®^#ÓÒþiŸeí‘zíïå×®Ì:Qº*Óæ€Œ‘õÉ÷££¶MÊè‚ø/YIkÙl9¤½Éàל2¥B?‰CßjNÉõÉ6FœZGMk‡4ÃúKŒ)c¥Îìaé)¢ìû¥›uÑRÚ’)!ï´ä)äuM«b.^ígóÖs‹«C«dk).ÃÕíµµ_äŽ{«¦½”óœ5ÛŽmÊ›9¹¨/©XQ)g¯·Z\`8·ÿL6³ï`h!pàeÊ# ˆê°^Yù£CÆ`ZÄ{nÌŸ€ Þ´½{ÆL—¯]ÑŸÚ®»Éî'l#{™}Ô—¤(‘™A=KËõÉÏU³_ìþlAg‘°tïä1¢¥É ~gÀú/ÇS íÔ)F ÛoÇ™‚²Ôu®^äq椻 ÆCEï‘ 8/_Þ|ÒúÙÒ9DÈœ"uÎó°2‹²&ãä;žü ovãLRìÓÝ2ÆÙΞŒö•¸‰‚’¼9‡?Ÿ•‡ï‚“nû)²L%–LœØW7ÁŸ†âLs,¥ß8a÷éJ:6*­¦ÎŠrèâË5ˆšq(ëõ?茱}˜hj j:`÷æÔ¿[ùj¬<^ƒôÇ몃Ëu9 n%8&?’ÑvËÍ^ /\,ù§8¯ÄþÖå”Ú-0åî81Êû²Ø¿#º=*F™Q?|ï‹?×7MÌFòñÖ¶»‘ QfA¯–GÆ=ÞîåG6t=¯ò6V+» ôÞátšb®XWÕ–З¥1’¸ßoÐâªôe+ ‰xœˆ}ƒ‡‘ºüá'+Ä”G@Tè§å*ïj ¶µãò$Z ز¹™Ÿ”LO¾ŽÉžmóîžR”üOþ€r'à¤âÓ:‹$…ÚÑ6×–Ä™ú¼ i¦â(ÛX޳ª!Έ×.$Ù‰ÊN‰2P5q¼´;íq»Câ$U‡•û*DwX1/оp¿À@*ò®^mr«³c¾ë8c3IÉ3(´¯å{”¡,¯+Ä­{IWu#þR5>’¾Sk®²€¯guKìo8†nä=ë-Uí1é¡\:Y8y¥ê1f‰›¼­Àá~6å´BØLsÐÓ´´Â<î9çxÌ@W·dª:†éý„Ÿ‚ò¤Ò­sËÃþ+nR#>Çdnw§E.:•£\ÓþýÑ™wÏ$—^EœÜ :2´¤Z>öë˜ò§qVÉvjùàä5™ 7VF•ðXÀM{/^™§ ¶ñ.zÞóìòÎÙI%½ÈäùðH‚ò‚ÝÔíBŸÚ÷Æ71§ûÍ2+÷Ê õmÎ)ìóbÜŸÚ9Ú‚v jÞ+”[˜qoÅôFó@{·fõš ®(›{2ϼóƒ»CE¡»‡Øoò$/ÉJ÷×Wz¦ •Ôâ­Ù-|SÆ¥£“°Àü¸Qq ßi À™Äd¿ªSßÑŽÏýàŸ¶±‡ÆÖ?ÃKÜóU£Z5O=K'ÎMø-êóoñ­—úÔŽQƒ­/QÞB± ýCo° ‘_ïæTyƇ٘f¿ÓN}àFc?y;…W€³¿.˜ÏPãþWZ¡Âó'ÚXô§Ôþ%lO£â?»àm^¦H’ë#޾0çÚ‘ö M¤))@ÑzHnÇ\Ü$m4ZàN‘¬ô ¹:gnâ@wöa¾ŠÜÛd_0c‚Ö3¼—Þ(jºsDfhtà5<Ý¥ âÚT,…YPĬ§IwïÉéQƒc )O¹êyÞc†þ0w“yÔI[uÏo$)fÑtcÙ^¥{ñiLhû¤ Á¤…Å‚îû­$OÐçW•›)õ¿ ã$a¦Yzvµ¯u†skÃÚ²™n|ÕYÇ}ކe WRüø-ÊùâÍ÷9dsƒÔj¯#srkXNˆbRç8%ª2 ȶŸ}m«‡ŽZAˆ!²:æîÝ8œ•dqŒ{%Nžíç³µ™1ØÓ‚–Úè䦯‰|îãzá4,ÛfJScͨDÓô_§·’#R€DFÁ%/aÔƒ’áË·¬ÝÛIq*kÖ­ªÓ[½t/ò,ºxávzϺãçLˆp9hºÍ\,Ú-؉©ãk{{)nnN¥&Hºs?->k£ì0ts+&¯Ûô©ý&}gäÝ韹`|°]Úçq…¯NÄ´­+9„ÀÛwÚ²yLK9y˜íX@±i"ƒæˆf]Mq,IÙ‹Zé)̇çèjýl@¥z;™ ª ïߪ.äWâÇО$UÆÍ\ø$ÏÝ™Oxﯺ„OÑw×+Zá½uÑÅv~дÁ·÷NTC³sÃfªYúœáâø(4Ëjo¾e ‘¨´&öæ:,ß*z ó4@ j6L{ÏC5 £­§‘xiäô<Ó²m‰!,gŒ.ÅøyÍTu«ú“Öä'D”ÜôK¬[ï[Ùô“£)ž‰ßå®ð¶K*¿þ°è9è§£?Ž1""KÙ;ÅF;5À–ÀaÑ©UÌÏÎ:@›=ª'™‡…ÛûhŒñÉ‚ë ÉwÀ^ëZ8+½qªk2g¯–0K#¸êÓf]¸F/¤uD¥WZ°åâ¤Ø(dÌ÷aäl£ÿhïºT»šé.H›Æ4"™ϺYm¼ßI˜­ÁÄ„ rxw`¿s[½þ‰CªoÉ·yGWå͇ô,‡”½sŽäÌݸԗd«q„‚4iœEÒBW¢~îu V² ÒÞì·ÇÈñÝžìíŠÓÂ/ ‘"¿€Û¦%u¡ôï5†Ý‹gzh®“± –4&_å@›E$oW•]êo•*­/•XÄ?}Þ9z³:¹ILÛ®oØl鬓ßä<è(ÿðzªÐ%´ê QÝô†ÀÊäóv» ̵Õ¢29•>¾À{7¶ŒÒy¬C:uòÃõC\Xù;~G¦X5‰ØÒlz i£ü™¢ß™˜ÙÔâ£Ç¾}~6ÉJ¶ÝqÓDW. °|ïãŸõè—–T×Ç-íÛÐôwèÕ»äè)­NpN¨ÃU˜wómmÐöR‘zk?#ðU#_§¬è;‚Vb¾Š´ë½áö͇M]n˧6øêýE¸V:ñž\ŒßpLßD¤ eŸ)~KgK%ÔǼÉ)Žç‡> stream xÚŒ¶P\iÐ.Œ‡àî2¸»»»wÜwMp·ààîÁà®Á!ÜÉî~›ì÷ÿU÷UÃyºûí~ÚÎ{¨ÈTÕ™Ä,œÌ€ÒNŽnLl̬ü ¥7l¬VVfVVv** 7{à?b*- +ÈÆÉ‘ÿ W ©X&iê¶SrrÈ»ÛØ8lÜül<ü¬¬vVV¾ÿ1tråHšzØX”˜òNŽ@•„“³·«•µ8Ìÿ<hÍél||<Œˆ9]mÌMJ¦nÖ@pDsS{€º“¹ ÐÍû?.h­ÝÜœùYX<==™M@ÌN®VÂtŒO7kÀ èê´üJ lêü;3f*€†µ èo¹º“¥›§©+ØÛ˜AàîŽ@W88@]N â tüÛXñoFÀ?µ°1³ýëîŸÓ¿Ù8þuØÔÜÜÉÁÙÔÑÛÆÑ `ic¨H+2»y¹1L-~šÚƒœÀçM=LmìMÍÀ17H‹©LÁ þ“ÈÜÕÆÙ Ä ²±ÿ•"Ë/7à*K9ZH898Ý@¿øIÚ¸ÍÁe÷fù»³vŽNžŽ¾ÿKG Ë_IX¸;³h:Ú¸¸å$ÿ1‹~ˬ€n.VVV>Ðô2·fùå^ÃÛø—’í—œ¿¯³“3ÀœÐ߯þ‡à 2õÜ\Ýþ¾*þ‹ØØ6æn3 •#Âoï`1Ðòo n¾«@Ÿ<{lÖ_ÿ>‚ÇËÂÉÑÞû·ù_ýe‘WÔU”dø;ãuââN^_&NV;+€í×ñ€üÿëFÕÔæœ•s´tðýÍ\¦ÿaìñÏÐþ³t€ÿúRvO-@û{È X¹XÍÁ?lÿÏ£þבÿ¿ ÿååÿ6äÿ›´»½ý_jÚ¿ôÿµ©ƒ½÷?à¡uw/€’x ÿ·©6ðï¥UZظ;üo­œ›)xÄ­ìÿ-£ HÚÆ h¡jãfný÷´ü-×üµeö6Ž@U'Í¯× € Üšÿ¥¯–¹øÕä_* xsþRÊÑÜÉâ׊±sqL]]M½ÀM#.€/x-€^ 1€…ÙÑÉ |NÏ`éäŠð«£Ü\±_¢¿7€Eü7â°HüF¼à ûø,Rÿ"V‹ôoÄ`‘ùØ,²¿€Eî7â°ÈÿF`. ¿˜‹âoæ¢ô¹(ÿF`.*ÿ"^0ÕßÌEí7syó¹¨ÿF`.¿˜‹æoæ¢õ¹hÿFàèºÿ">pt½ßliú/âG7gËd÷ÛœŠÙo¦kæjjn_F–n¿åÿÊÿ^¨àèæÿ".°3s'{ð0ý“ó—ÄÁá7‹_SÆbñ²ƒ9ZØ] ð+ù·˜ð·_pþÀÿÄec3O£)Èú÷Lü:ãâÞáßnÀ)[þ†`Ë? ç/hó‡O0þ ¹8~Aß,Ø~ ~;çúeîäîúG4°Õìÿ7;NpG­½­ŽX€eÄg§iûWÆî.+ïðGjàªþöÌ>ê^à?ôàÜ~“vúœŒóo5Ø™3ø^vüÏp²ý#ýïp€c9]Á÷ï¦ÜÉlœ~7š\g{÷?zü«ž.¿»÷ ¹A½‹þ/ö_B'7 …™ý¸ppþVü/:|ÿhþ+fûÕí?zÅ.ýo.\àC  ƒÍ‡—ë— ÐãŽq€Àã¿IsÙÿ9„llàÔ‡ß8,nÖ®À?JÍþËÀÆÞâñ—ÛÍÓé`·î@pç=þ€`²žøŸöú‚#zÿÁôùÍìÉèúw¨ÿ¼ÈÍÝ]ÁuûëªïÕÿà¿>œ€@/ 9Â✓¹@˜mmXë]µ¡'ÓθÐ4ÕŽö:&ßE×6÷”Wïéª>†¬»Þˆ½êF[Ù’¢½]"}ö=jª{õ®9Y­åÑïÉ8ñÍÔN ÂÂ$NÿDÁ‘Ø—>â×DL¢»~Ï.~ZÁvÐMòT9.î¼(ªy˜wž½2^_úÊ–GßÎí¨íVq+ >•}cŠÕŒ1.ž¡Ê5ËšÅ#‡sc"†§Ç8÷B¹¾™Æø4ñB*ŸÈ€àËQè«·Áw?ë³Z®ÁêħÄ×Ã#†¾Æ¢ößO•Ç÷-)\é_ðj,$ý„̘¶Â„ƼϞYeó&Ú±¡§Æct±m;ç= Œ†°s;¹¦´ËØ•\»ªÅ8Ó­†ÃH¼ßn)¾Úz£Õei›F´Ä÷íË `Y×ú(¨±Ë÷±Îeuh¸ŸéömZóÝPÃðV—¿v±HŸ‘•'½”µ~ÔÊ2&ql™ÛT§6P qÉã=ï¬i¸ oÈ…øÛf+«/lä(Ñ)WŽßEœEý¹rûÆ ú¼½'†aèK(·ò‹YGÚùy¾5‡”ÉÇ·´¹™R]‘¹kñ4jµÀú™Ð2–ó fÉRoRŤM®…‹ÊBN9™žùÊ¡(ƒoÛ{¾|æS­ Í–®|5²íãh¦±ýúàAñÐð^¾‹ý͛ϟŰœ´îÏ+<#ćâ¾kð„åF¶¿ úÔ RI—‹†*ºÝšíymFq¢!îAæÐª­!ô°5ÖYôäÉX&'IES¸¨Ô§p øÎoÑpA²°¿:H'òº!ˆ½¶MåŽé#ÚjÕÇÝeh ã¶¡­‹Ÿâ„êwy>=ó߯¶ÈF¦¶(}í+ Š9{\1éÐö‰Ôdó[AWëB´1Q?-£×4=Åê–ˆj2gúëǃ£0â¯Ú8X±„Çe¥4× °^æ’³m7}²DHã…*AµkXׂៅ :u!)×%E"4_Oî>q¿ÿôÍK&WÍqà3aFþ¶MÕ\J6Ùü‚";n~vú­Â@:²Ëpxó}ôhxˆ-ÁY¬ÁÚøÔ‹7˜ªR¹daLü5è4è?'ÅPäQ«˜a{k%äÇ!äÝÊ ¨{|yà¸k(‚µ&{&;fçdg “¯¢YJ‡Q¤ç­<É¥¹Râ=/Ô#(ýª^‚ÔÇ÷ÆÓ§L¾ f‘°±–úÁ§¿¶8œÕ5Ü/|\²>_Ë [¯8‚¯¯¯®ÎÂ7¹âI=ÂA4ÍÕß~Åë¥*ÈÉ6K|%ä6q' ±„Š,ÀÞÔèïªàÎvÀñ˜¡)k“S'ëVQ;5íãG2÷3Àœ„Ê`Ýå,È ¹y—S…ÓƒL?ÓøV®9¯úìKÕvÿ®y4ë:ñçK%ù{¥Oº¬å£ñ¾Üëx)sw=(×O.CäøB·Ð)Yßt˜Wð‡èºqe†|M#$ôÄe²ÛHˆ½—iQ¢hÞö°«°Nk¥UrË©RRÚ?<”72%ãnèwâÍdž¢ïàñFç©Ù©¬R̪|ÞÝÊâ§3º;(•³÷âù¬¹'¥ç¼›á¦Ïh¡/BîëFþ<õÂ×1^².Ò›¯‚cN‡72qûÝàÜê“[µHéVÜDïGG8#϶äÝVÊ e‰ÆÌ‚ñ%•›¹ ÑBmv/Ò}^2E‹o•[„NGÛlZ,1ƒâB¢5?NÈX“ºts|î)Oî'o‚¨z+:¦†°=¿¯}g7t*ëYT?‹ÈY ºïçŠ;œJÃáò׳¡À/¤ZÀ—zs߆t.­ˆ¥‘KÂð¹Ô/=©K™Ž¦««²e|îJøñ„i’¶iGŸ[垬•êæ|·U0(Ø =Ìg°amê‹:©É•ŽzE´gßVàT8¬˜Q±.~€¥0É8zÕ››¼žÌbyÝ“eßF¥*ÅžËO¢%F§.®È²+X†sÊ…Y&‘-–¿~›e/Pé;Ò‰HKѼ ë( —D ñ"Œ×÷Í‚SzW¯.í¶±ö9”™ØÏ@?'%Dc̹é4môõŸD‰mÈÞÛJû/ÜAŸsjŒÚnMݲIáEUØŽrY² ¤/HS¾rx“P¤o™£*)ÍOÊôé=¯êC;”¿4ûLÄH½ư/»ÿLÞ-/\ „YÐ×'òßÓ¢K€YQ\¶ÁgÌ= ^+>{ƒÓˆSØÖ";]Ö¦šÅ¼ß¦3äuS„g¬?®£Ž;põC-§ YCõåÚ#4ç8̘äüs‰ Ô5Ð:ù¡1Ùç"!,Æ„ÁÞ—þ¨v;—`,j‰ËÍA »®jê1僯9†m\ýi «_ï3 }Ùö@,FU¼À™sÐ[ßÕ²Ñ×Áj8ûZZ ¹­cÓ(È•*Ì*Ù6Œ­¼¼ŸçHB{Þ†[}2Ú%—ÞxP¾ÓÈ5{üØ®gOkoUÙ•µdö­"v•¬q¿l6uvÄàûó½)§nõhà3ߦ‹Vacñh! ddw’²ˆËtDñIì‚U‘¿WÀ?G¤˜íƒo‡~^æŠU˜Wê¡,Ù­$ÃÃG)§hó“:YlÁŠð»£=·7ä;ù×ñÒ*õ—‚ ¯wŽTÇ TâÄÄð†=Þ&®}³Ï£Þ«¿ÓÝ™¯£Y‡Ð^šÜ ¥îÌc VüÄÇÎ`±ym³øÍýµY6A·ï@¯˜láì'HoæKý¯¦ÍU761÷в,$g± f}Î|õv3Ïs€[iÁ©2ÏšHr´v±<Œ$`û³³A§>†î¦ ‚Ñ*—TåØÊ~26Ñ'㕦T™úÛïçA´$bHö ˜S§l&+¼îÌWî §[‹äWÂçŒ>CuSTN-Uë9^Ѓ¬@!èsƒøÚlÒ^§3ûi뫟‰±õ^ZÞ×õKèSYä†>xiÅΗ]ÈYÄoÓoúJ˜]Åù")±u%*$ØzÝÊ,D)nKx!&í”ßÍD+TCæL äwÎ$ÛK?ÐÂ!.Ä(_EA l|/´øYÞýx™Tö´Nß%Ø_”û~«3 ³ ÔYÄ'X/,!e®ug½Ñ6ÔK…­–<.]è¤ÚÖ»9…HY–ÐF>ÅÁÑz«Ê7Ïw¬ â{Ic²UA‚|캤}ϯœRx<š¾Hi …³ EúhD¬½NÍÎé‰QjK9î}†Yë¹Þ¬Âgö’¿C®Rô sxL»‡^Ãp•¥ÈÄ»,F­æuÄPŠÚûnBiú² œ‹Ø}#eÀ…q¾’IhÁ[u*/ÊÍ <ñUð oÒçŽõ] 3Ÿu¯û0Ot]€þ­5 DH…Ñ· ºïT~ ŒKCjJå_ýŒ9ŸVíœE•¡©­†ÔSG•[Üp£Êß~IýØ©_BÇÓKÝþ”c=Tƒ K3³lÚýU£ç‚FÇ5pf=ÅÑØñ=´¼b." ’QÓ5ÿ¶Œ|­è!–×ç/¡R´¬2ÃãÍØËj.Pq¥)v4MçÙhÙ‚ .„Ž ÛîÁnöŠlÉ:½®1‚4—Äù^—o…Á"ÛÑ“>lê Dùªl=$À!(uö1DŽÏò©JKÃaïíi/¦ë)áIšCj;,ÎÊ\ <ÚÏÀ(?ºžå…5Ó(ÙÔŠ ½¦é*N÷XMÿŽ¾Þ½ž%pXš€)²‘TÝ÷LJ÷d3rð3º;%ÓŸð¨öÍ ¥ªI3…ÄGå ƒÔáØnWÓÍèÖ(£újo­Ët™vBÔ]z›r”TueJg'Hø`b‰ aJ§pu!p¢ÃE¹‚’V×§h î>& #fõ„6 IÊÚ¾ËCÛa»b‡x­¤"ì2w /MÎUUåNØ¥U.Ù÷ P§VQî-eT_è,§¶¥}2MDò¶äÌ!DÕe©S_`[“Na€Ž¼˜ÁYÒ!D[Z5e}W¦bdÞÞ­[üÓ XÙædù^ç°©!fJ?ç"¿³Xús¬§f l‘Ë”¦¢WìÑX*¦^Íêhk>û?ÝÔ74êöÖÇ!ÍÌSÙŽ ɶŸE«È¾ÀőߨW;~˜¸)ßè‘‹Rl¸B@¹øª u™FÂZ$˜+]0Låd¤ºëB4¹/ëu†iy]VºX yÔÛ{'mÈ:%ÚËx8Wˆ†bŠe“ùIG]_Ûe?{(âJ“f9ûœçÀ²º§ÜëiÕîácß”<8©ªgBãΦûFˆÁ ÖG*vÐ&Y §™[ÎwH¼îÞ+”®—©«WïÝ,ýÍ]z¸º¼ÈžW g³ï:Q4+ ÛÝrèvmøe/sÚUÂ{—i+*ÁÄÒZí?]&áp„ËÝ÷7z™dø#¾_ôú„f‡gÊêPÅkžx,tB OúlámŒˆÇzS)kl6~å«Ô9ÚiuÀ’OºÃašæ»%¶Ùš—]I¶œ}¶k|Ã|”yýìA4àÀŒA3¦¾Õ-Ù2ºhïýDŠÇ“Œ“‡¤{='ñ¥¢Ïá Þèk•Œ;—±Læ«»úE¶¢GT7–˜ÄŸ±£›çœ‘5lŽÆ’ÂþÎp »–eV|Ö”Ä%}†¢gJ÷& Fßšdn¸>ÃxµÀl˹ºœ‰•pXŠ…¬ë¢Û¸—u¯n÷\¶MÃÐuE; –¼¾á]² yõ¦z,憎tÄT–ÀˆE·ÙlZV0Ôl½9Á§?Sìþ¯¾‡Ç§„†Þ«¡PjªC¹íi5”üU%TÊ+šÐe 4ßFŽ6õ¥ÕK±¸L®Ó¼ÞßÏš¤“2ÑGrSs¢;Á³E7–¡í¹\ül¯w¢ ï#[Çe½}à"°“pÒÄýNŠÀ¦ü˜{n%b¿.£ßh‰›ð”%Û{êÑÄô<£h9J¿j< Íä[û¨Tv~·'Aì±) !R®Ï®Í¥¢i.†¿ípõÞèc~ÔŽ_ êî™öWØWé;Žï@qXéQ|QªìEôJ}®¢ßcD 7îñž:3)NQæ?BŸ)˜LêJ¨ºMRóNW;†@e"Í#-ýFO‘ôIØsÏjÃßK”Í,Ö[ÛײÈ_Ç.k¾nõ™º²:´3ÝŽKp¯“ΙJìÁÔyð^m,+Ÿ„z o…´ºyáÑa7ìNà,‘ÍËËœ¿Ì0êštQ:Õ~ü yr€t[˜”4É#|L×_p•.ë˜ Õ\R!ÆC~à+ùö »Û³RßÀ{ÐNQУŸœÎ$ËüÒSЛ/Ï ˜‹E:RÇÅ©hƒÌ‡ßÉ:'{Èéå—ÕyP:—tIªà‰öaÏl—‘‰©¿-ŠíË#1|ÞèhjÇXºNUÎÝ¡äö¨U'ÐÐE¤XÆ«TL{á/>ÝÉ„˜ ¹9¾í¹”ƵВQœcdØÃa—Ëü,Ø0bi,u©ëº´ŽéC-¿¿×#)÷ “,uEâ¸bdd~ÚWZ¶¥Ô¶6ÙVj~™Ïz øÜ8Ñ’”ŸõKknÖAõŸ*–pÄí×ÜG´Ä{†úŸ”¢ê/E>ݪp3M1ž¨‘Ó€"}û`°Gð|k4“ ML(þºÓïð @Ò 7YÖ}†ûE­ïyòM–Ç ™€Ec)Ç©ú(™­úÉ2U£›|â+áá\•—ÓÄ®ZkÁÝø^†ÕMp­Ât›gŸºê ƒì³î¡¹œÚÑô÷r'¥Ð•©Kh0mJ£ j”Õºä.egÆ~L’vŠhðŸˆ.HŸáî)¿ ¾R×éZe­,§k±ÞОƒ nã´l’–l°Ž_f^ø¢Eg¤;ÅDîèéÿ̈¡§Ü(…=)ù£êQ1ö ,°Þ§{ææœ£õ›Â×·“Ÿ?u¿s™ÄãJgzuņBkfûEÓè$Õ¼ “EÕœCã–C4 MÛ[¹~âÒ2~„ž-⣗cõÇ™®7 ÷]À†?ãÐ\òé¿rß–þh =ºX~­º^2L'•Á‹ò¤YøñÁ“®òÜ 3jÛe†Ö¢°©j;Âú•ËbáÇV2S“h‚´ Oüy…ŸÚä;¨Ý²‡€Þ¥È/<Ä?¿Wq¶N3ª?ȲlÖ¡µ¸[Œã,~î\‘½W?qNÿ‹EÃBò“üGƒ•/8$D—8æÇKxAO÷¨~p#ní¶lSý™b{®?£°+;§*âÊ{t3*úA¾¾¬ Ÿx¯µ–ðáÃS¦ZXþÊš f—?LÈÒ²ˆ9à ÕFÍëå–qu.¾·w¡]_ c˲É{æz?~±Ú×8h]Ý62+Õ[¦­¥§Äx•ßíÓaGÅ$o…a)“¹Vôèú ¾¥ÆuM³“ 4a‰öG`²@rûŒØ_¢Ž>G}Tà$  V`Ÿ_Õ.TßQ«+“¡ íÅé]yÀý2ùmTêŒ}aRV•§ ·ŠäDw[{ˆ©VzCJ)qÞ0cP×ä1M_GŸnuÃ+!Uã­œàÈz @«š†³Z¡òýâ¨[§‚gmî2f‹þï¢d{óiûbF•¸{ ˆ•+ Tn+£sá-,°»ê Ú]Èú˜¹ä#$»qYq ³iVÒ™{D)¸2’Átå´oÒ­Ø?¶-œîî­û$¼!%d9Ô7wFƒ¶GQ¬õq$¨‘_íûaóÉïçÏ+àAÛzh$'S4EeÄw’ªˆÍ²9ñXãÓò-ÉÁûÄ©1”D²¶gyç§õ³£S7¨ÓK=p©„Ñ[¢¶L&öj1ª¼ÚÄpb1  ô¾Ð¶µÕ±§UŸbVöïIèù`¦ ³ôZ~þ \Ô®§öD§ iIl]†@‘o¸önUÈsäbìÈÊ¡^ñ™(Œ6B¾½¹-Û^w>Å 5ñQ E"¿×˜ÈêM­Ç6pÿ07Ž5eú½—P]SªÒÀ3,uª 9#Ñ>þЇ³Ôüöf@‘“ò‚}Yºîó‘§à‚ÉfÉJùgãžE$Ö,¹É«³½Ð{˦U«\ígû'n§ZBÈíÔ+„ñù?±6k9´2_°çt¡¢·<¤vùÌx¼ÖÁ_¶g{ÞIhëHuÂþÙ½ À¶˜¶ÞŠ=ê¹Çó‡z`§oóÞÉ}x>îÔtú!ÌÑíBqt›M>7ý\®•D‡Ö‹-/›é,j·LÅ~u"Þºº& Tça~S›†0à ÏŠ‚J à:Vűãn²/òTÇYdOi–p7›ûØRp‰c²QªF\?†Ÿ L!õT‰©¾|«ƒ ý@]TnÀq˜vKŒ5=ÓkYD SS™b·}0mBFÝ‹¬u•–Ç®E ¿Ãq¯½¢uOWb¶{IñæQ3ýÓÛËbýÒ§GÿÐ(;Ÿùìx‘Q¾ºÊ¶Â© ÔÖv7ëÔ¡¸jŽT|Öû ©yÿ[µlˈY9Oº}ÔeòúœY¡KP{ž!‹ö´0æ*¶×›+Œ’J[lˆ¯²\E›=œÄ«Å^5;ÑlT”GDª\²í7[LÓRNÒ,‡æmr(¤Sò÷ïç×g1çÒ„ü›÷k?ŠÿpíËäÙÍE{+.÷®„§Šàð*a’[ûåð,Ü'.M’[/ 'c_g:üM›JæBß´MwÌÇjÒeª]Þ³L á6ub£iÉÛ&wï78ŠÂ »$Gj-øqo÷öY·dI÷„±³ ä݇{Ñ8¹·©“EIèù1íUX¾Æy¬¨¿½Åá‰Ã¢NŸ¼bu`Kjs##4.Ô­U%Aê_ažâTÆGq© »ÛœŒº½M}P¯]G_ÿ*Â.,Ô°†pÌIBÝè!;Ppê#2 #sDºÜ8ócNgõÖV>:˜Oø¾²§ P…V[^ ¨‘žQe¨^.«¨¥0€pÇî&ª…|E¯·~1Erh¬´Û—Èv\–cý š?­,ÖÔÀ=WÞ~´SÜ÷“fÞ-1 ™št¦v,UâUëcµÉ™û·Ëåz§qTüpArÿdÞî>³µhæʾ1+Ê‚šT`gÑÂHì|±ÏNJîe؆0ÖÐØR?,„€Â :7lüÐ"F”üRüp})…‰OÏ•-î;¡RÀ)nò•®hæ§4®‹–ìŠÓwQñ“ï|ÐÖ²d¤ÒÃfÕ:’xm\Ö^y—îziÚ¼7Ò€=Ò«ˆr3½N´ÃytT ´‚!ÜWÀóDR”)±ˆÒò‰ÔDýq^rQõ%÷vT`ÇCŠK7±N„o¡”ð-yqáÔ'4æ™X~‚ÅÁêxžAJO^m£–Buž1ÿ4×jÞÝçI¦c=™m }žFÞ'ó—C ¿!ß”5Sè$ùóS‹ƱÚy'C±‰½9“1Z&öQáv)I1§§ #Ö¤ŽÇ¸—Ôw=Ü.\9Y_Q‡D„ºB‰Ï9” èý~ ±Ž6ü¶/O±^tDP|ê&Ñ Uƒ[œ@Bž¸’E´ÊÖv Uu¾aGz(6§¯.A¤g• øæ=ˆ•ìmJß_‡xÂcž›s”gœç,Ïb£–ù˜«•B!/  ½bÉX~ý‚ˆ!ÊYú­«/€ŸˆRx-ÝГ‚/-¼¢} /žZ)V€”ÖWskÓì\ŠQ Áø­Š‘G&¿HØøiOÚ-¢€íšW¹š–‡¨%ÌÛ„l õšRMH£üä(ØPªŒB0lâ ¨gþ‡M¿Û;R ÌP„9¿ÐÙY¹ YMEÝ˶BC‘’eIʱú„¤úWJ´î3»ûÂW±k¬…')Âôò¤£µJ[B?ïÞ•ø%¡²½›š~ÝêŸ×¼øÞ8Á”y_Y,¼^Ÿesô@6/MíL™Q¡Qv2` –ü­³Ýw‹ª‘»ëý늛–R©ýâg¥YzK3•´eÝ…X*}rã.&û:·ö*ƒzt8)mkdí;dFÊòÞŽ“«Œô˜™ß ÑŠ¦èå›ÉÃmÂúÕõ¤Uëó0@_>//Â|u<Þèà–DË@VgÈX¡|>ûüqK.ÃêîÐAem|-_&™®Ÿ½›Ìk­nMÿ(?É>‚n×wdñÔÛ¡QñŽQŽáÛ>»våt|p¡@ÝL½Óòôžà¸¯y x:´þrk¢Vƒî&h—¥yŸöaÕS3þz™E#p™í®ŽÈ*É˸&[ÝÆhz9`…Y-­ül|™ÏÏâü°àúS̹ÀùåƒÓôšÁ¬˜~®¸3r°¥ !ù”2¥.îß¡ßé‹Ít¹“£·¯§(…ÊB^ø¶4£ µ(ŽX‘ª é´Úr'%f¤ÄDx ‹qa»[h›µË^?D±Åˆ&AÔ3ç­¸JžÀ³3øòy0P¹/{dž#á˜8 œ/˜‚¬¥•Ï>âa¥›»Ð?9Í ¾ùâî‘í£-÷C§E–(ãK3œRΤ‹åT¨2RÑÀ±)òE•]Y`ÎKr{Éç^_Ô³Ž×‚YüF$¿’ÃÄÿ =®wÚ˜š$ºx0Maßzƾ=yv[챸ϭ3²qá!¡‰}÷=4 Ļ㠀G½ò²,B ËÞÌI]«šÈ{ÙÖ÷“4w11A½ŒI¨QXçù8lÛŽ½<´Œ°Ÿý|?ë×%«×lÚØ–äK>M)¨‹:TnUõ¤ÉÜí\Í\n¨Ø:ÄBH¼¬É͸ËjÙªKÅQ6¯"¨ünÑè{ТŽðCͨò–ͬ(Í&T`J_Ô¢ypèm(âDcäiØòU;[tq¹Û­jTç…\$冱3üÆ!ðÙ81¶€,½»ÿò,Q€iKÒ!çñÈ )[,y€d/ŸD í?†A˜FB[ LŸÆ © ¾õVrs&í=Vàl-Ð&åwÉú·|fSìÓ+Ï[õErñäiÂßÅae*•B›e&𤀛óÚ¾ÈJ¦å¡évYœ«Úsê€hïáR’#i!+Þ?õT3,‹›u†Ó9Ñ3«ÀõMu¢P%„3ndÐÑÎèYïºlÈMs˜ƒæãû‹–';ÌÃgý˜…Òì…|d1<×È­²3 ,|Öº?TmF'n¯ƒ?HÕ$Q7ó±I­>ÎÝ\ÕïiÔПLLeÿ€Ÿ÷Úñn OÀwÙÜí†+ÑãCi1Ñgk !Ì …мÀ3.Dm^0¤|(ø:Et³(2çdlJõÔ†ëVµé‰Ëghva !†Å]/BBš}ޡɶlNiÙg+ÒŠþpWuþIºÚ-At €Å“?J¤ß‘Ìü"×bñTŒR‰¶¢ÛpùËÑGñb¦oˆ.e\°NpY—Ì(„ÚŸU¢ÊæW•oµd8§ËÚŠÖ¸Q©Ï©}¬Ø8퇴”6ìµ.Ã8Y@¬ÎIøP4—óv¢9÷îâ윂ÚÍ:rG!}PG€´ºÕt`‡í@\¹×(êɱªœ]ŸœÏH×ÈáRX TìµsÂê—’Ž$/-ˆÅ¶oÁµ¶Pá¾Ç7RBéÆÊµÕ¾Q H‰»ëØ¢¨\ºÏ$’~&$¼ßÛ½’AÞP<øwß_Û‡†Á¥Ê‹¼ïJÎËMFÉÕïPÊ Óu›†ï ¤·×Îåä]x¼Õ`ìž½: Zhz4í̼"›îÿ^c13…£ÇÍÛN\·|^âÔ²uõ},²$ »Û¥•Ky]&zHK¶Sš3ɿ什¾+vjô†™|„‹Ôe(ñ:SÚ]:¾ÍÇtÃZ¦Â’k<|±öaÝMÓÆ ²”UÆî]Œõôœ0;ŒÛi:§f,l]QbŽSî9†käˆë£¥ñ§áW¤m±=™º‚Ëǯ¯^Œ¿Xóø„\?¢ë,º+D×RÒLpÄ›ŽX?<Õ.‰UiÑ÷–÷p¼æÅã$Ny¼Æ¦aM޶«c`— ÕIà{Kßòªéýš}!£ÃøÎww«¡Õñ.i7X}Þ¼,ûޤáÇ‘ã6|ùyî‘󨼱 _/ z}"L¤ì`àBÿ"-ßB{ÐÈCÆÎ g]À—¹ýdÀkW#²*¨é£6€¿_`É3Þ….žôDŠÈpùí—‚œ‡ËBò^£VJÇ€X¾B÷àAË]LÅ‹¨Á- y–0ù<BFnT Í&}–Ô3:•xs.ŸÔ±‹ÔK*\Íj7‘“KÞŠ‹X߆ªVŒ KC¢Â' 4–jº« ¹ÞÞaa[;ÂäȪ”MóPÖñ¡ÇFå“¶•+ºÝE{Maßרgá C…Pî0+ì²tU?£©*©/÷iÂr“¿0|]åÖ‰ð’—9áSô3…˜j.áVÔ^AB5öAMßyí{u›ÙG}Æ'“Pâ{“Q[žBG­[ªN1ŒÁ›+ëÊø [TL^k”ä¹9¾•XõÍ0?´­Í#?žË¤¬‰Z댺|—¯»µ6­«pþËÎ|Á$3ªôåD­Í;mœž>ÛV¶Íh`ÔÆÓÄûÝøíìW±0â„HóšnºW?lKØZÀ¯~žªTMàæ¡vü¸à÷á#í–ö•胘Ô¾w«ù` õOÒÐ/ÉCÌvoÒŠø½Ïß^i;ˆGJHèÃ%½ÃAoõ€< -㋊Û`ô1ÖÆßýdýu¸ÙûðæTìõ*bÛY³Yš±þö¤Ü”NTxC}‡µU¼ýÖ I±J¼Ö6ŒOJJ¿ÿòÊ×êŸ2ŸÛKjŸ-Ö»sSãèoóMÏàµÅJVç~˜KžˆGé¬g¢Y”§S^k•†ºcÙ“7ë?è!‹ >¢ƒ?õ³Œ°½BëÏF”"«{¬9¢#Æ‚ªÊîÏð; M}«_µöåm>ëôûÊAH¤˜Šl•±‡5„|½M¢ØbC×™R×CR2bS—4Fþ™˜ 6a¹sNb%Önz0¢2!¹?·„4’è¾€° 8¬îi˜¤Ü0ê³p¤^(éf~¼»+¤èwÕ #Æe: )÷ͽLÖù­ÔœÎcr€µEDÂè(°æø[ö@?Ô­Áaœ¹ðB:.*‚uû€¦\¯ph p%{ s—Nÿ&72å†Þr”Q·pCF\–‘ލBóG˃ÉÞMU6e>5ä~J†‰ÕTûÝwvŒŒOq8B‹Nx{‚ÝùÇ¥ïâl€ÏžŸàžrú ß\¢N›ÎþôçÉoZ†wœRBW]îñ:Êd.æòLÞsˆ¼^ ìOÜ“ ¯§P3êÒ‰8H OpÞ'…"8gMbš DxÔk‚‰\€Þ‘jÊ")%ap~M ëæÙÄo}V•¢¾è¸ÂcÉ2?8Ä·Èû'Ý:·„©Ã-œX†yµÑ—’óAÓ1,u^#ìîNBä8Ƨ•sj¥²²­ÖËýä¸AnÊk‘®ù5™»Z€ lÆÌ–Ä*rá÷û,LÝXZ cާ®fMòâÍuÔ8f²ŒrªŠ_ÞZ*:MØy;ßû³9˜w¢zصÈÞ‘åÌ9SœpOuïç|«)©Ù ¿YózUs\(à †½-•Úè¹<›çQB˜ŸftwæQ‡5‡s˜ÌŠ’ #¹UEC‹—¾œ=Ú­,X– ÌMÊ~àï­yÍÍ–Ü–0ñÔê}Šœþ~Àþ?›*7^ šáXTðxG8§1‚ËacÛwj€8’ÛOj‚)ÛH¹Ïa¶ðXHû½f$ë,@?þj•Þ{èÖÁ9‚ºŽf™~ü5CÇ“S»å…¸üøè² 2™¾ÁÙ­ôdd‡”0îY¸Ã±g!E.g£Œ>rÕü-Q™c¬˜tà 5ÎW 쇩é]6C+r]oS“ï" ì…ÙÝófH‰Å-Ó´ôX+G³»v"2nÆR鑱íW|’JhhÜÉź(4_ŠŠÉ: cÒ’˜„ ã[¯H¾"ð&·<ß)la¤íÛ+U?ÕЈÌrÿ¢ eExú²ŒŠŸAp78—'k¾×ÙõJ4/çVÀZ#HøÕGØ<·'Z³AîKþ_ø+5¢‡ÉÞsýc8ŠoæÄž‘hQ¢þP-P€¿U ÔjPrÐ5*X¹_ÃÉüÔ¹W@¸AÖœx™³t<¦Q›á™Õ!=;ô2 <=‹n¿NÑßsÁdƒ¤‡”œ³@æŒ[ôñµèõËð5ß r7´ °è†÷VØ~U°w’·¾ßf¢³·\ -8†ù^©S×áêÖm:X2Xz[%vü#W“zÙSmÕLîqn1NêÙ84ý2r{5éMé’ÄâÚ›»>jêÔÇ´‹¡óz1ˆ1¸bò7ì+„F~p®Î)ti*uouöœÙdBÌyt?¤î‘†|ëã–;pʸ׸ËêK¯GÃ#Ü~ ÓÆ‘§Ã{E‹'~öâ-ô~úéÑýîù΋^o |^Ä|÷ܵjzJ­?ʰJ7)åä˰KÛÈ&ÝÎaÁZbOþ?ªEAU´……0¯=Õß'2…/ÿ´'eœ%¼^>=ÅQ¯;<ÏÚ½#>µ™ü‰þ%d ¥ðx4•úÜ÷Ť›Ê)*ì^¥׳µ”â۱觬Së㎛K(VÂHmøFŠÊwB$b»‡óÍF Ôs÷tÄ„Ç÷T;§L?.DžMÍgV´®†)Þµ8ÛÈYT]b4J6Mð$Mà€NÛ_]ĬÈÏ3˜3¦h!(=B«@‰a·pÈV(z.è“5b $×*º¾@àá\!)ß©×8\é”_û!:=¯6ªCʵ»öé¸Õ `UÈ:œG\¬#©¦÷¯á*²Lá´vôæQɆwUÊ@ßà*[;ÝP¸üpÏþÀÔ ¾EÔÊUM]&™²½ðš&Ýõè4•7“È;ÿ>‹&Bà­QV™ëAì›}íù`ñ-{šŠ¬ÉZYéMPè¨/bSæ]dh±•ÀRåóÕj0’»;³òÝ0Mæw—ö8c†MUºMÞ¬ÓÆGrô«©–ΙE§}7_C› ìð ¬jïwq!¨*˜ï..ηÊÏó#:fªk¾íc9’©óSžöðy;RfÆiÓ6³Í¼3–Ô®-®¨UÉ#ݯ'ÜLgxhx©Z+ A`… ‘|È[ºôŒ ;ª¤@­(@ø*…º5\8fQ’Q†FAºv”Ðö¢Ðyà™´‘˜ÿNôóBØ©½ñU/‘à€púç¦ÊQNÞµ$§ØsS¡i š+íŽ5Ukªj5iP7mfE«|ÝTÿu®¼åÌø„ÌØ¢6@ñ#oT ˆHí — Ç´ñ&¡;B“°…vLxÇæ!7S¿¦v@@ÀÄÕ¾Þ÷Ìjã«§š…¯™¤CVŸ¿&È­E©j50Gh³óWÍi5õÑC· ’±šø%B`{âÔöñzŸ“ŒÃC8EؤCϼ‘ uÕψ9EØÊXÇÀ4B ñb £¥-ížP]ϧNV?-¥>;ŒåŒxДÐÛ¢é>+ÇøQ[¨#ÞÒ }ìX=¥<’ÕB1„„½ò@»^îÝ3Õ;Àqe©„¨ä%ý ëW¥úÐ_ØczZØ!òg̯ q.WGI\ýƒ[¤ÞvlÜÃí?»Knñ?÷^{µ‡¶jày¶ñᲂ kîËk¨CzèB1[Ÿ×ß¹Ž'//Û%ó]kÑ­+½ˆIçÔï-_YV²F>ÙÀG Êi¤ à!‹¤ø>·<Ä4›`°3* ðc;2Q¤`¸ wp4+þtIvJÓ̸ã•Ðy#þ^ÀXÐK>Ùh¼ï9^˃ÒñŸdïäʘФ´àÐ1oÚF8]Ã5a<æÛÎ |Æ\c3ü #ÄT½\›D.5Eh"mP'ZŸFxž’0 Â­Á°äÇd>´âkn(UhóbÔÐçFêÃÐcœMN/D &©ÈA 5QRÛúŒôœü ¯-çódÿÛµjNƒlá®—Të‰ýÁÁw^Œ¨¹‘žëk•\¹Q.Æ»@æZ/A&ÎÇöê"Ë–WF¼©]_“¦{$x¸a:[ö[ô?¥‘IšíÖ64iùfQ- °sØ$Uk¾”E¶$¡µ*<ì«•º$"ºãÕŸõN xK8}‰Ùb¸_·Lji°`¥øÄgþáÅs¯‘èÙÊbœ¸“êpé+Ò”ÑÈžÀÒ9óOæüZµm¨ù²¥ VàÝùJr–1θ*/;䨶ðÕù¬0C©ÓGÃÞvÃL{ºÿWâÐ_6?xšLŸ+)èr[°Ü\ÿ8ÁÅàÑ‹—1ìKŠš[Š–:2a„jW9¸5Ñj]ÍÚ¶…ÍíÕ:Oµ½œOçƒ;ÂFìú?’:zêÖ”µŠjˆê/hFROdVrû ò[@7[=·HÀ›uz'ê8K²“Ú×útÇé@9yìºO<78ѾEe<‰×[N"0B®=wãJ(7ìÀaÕSÃ!älA´tz51YS‘°YÕ±V»#….ýþ ~9RÅî'tÁ[êHŽf 7ùmZ¼||»iïï_V?û¶·éŠ2‚⧃+ä‡ùr˜>‚°¦W·?Ô}«5 Uq3‹ÎÕ›œÞªŒ¹ýùE K.†õ2ƒJtõ™7÷J†Š¨¹¬úËO÷, é=Ç—éÚ©O™k‘NŠÜeÃ¡Žœz¢ùÝÓï‰P”4îZ’4êDYº£'de??KÜ~™íØM+4Ûª-oß™ùi|½ý•˜½t×À‚qÆç3ŸJÞç„â‘u¦m•’㊆«3 ÁšÐÄ\½HP®œ~w+2æÓäõÓ,RƒÎÓJ :ÀìµòcŠš‹œ|³zø |‘Ù3Czæ·ÓÙG®Õmó#æ×›WFìG²3žžÎÒ½£ÉCAåò þc¼H#µ­ô+´6 nŽé¬®ž"ôØ,§%®ÚÆÍXˆ¡Ñ5 _amÄ£ âÞÒÏÀÊÚÖÏ ÊÉXÅãíZÐ@®Žû·W¦¶wHîÅ ªÜx$Òá4+»*½“ÞݳGÂt@¥ç%8©Ãÿ!Ù\}$Q²v V>±ÿâ«ëž’OÏÛz-‹5À ~'IŠígÇ'ue¸}¾ùÐølÎw”"[Û7MæWý~ïM-IÂáuŠVkY]Dð€óLB>T3#MV'êáÇyõŽ!ˆ{ï²Çé/vAºêcž—3”¹?4è«Åª +ûhҤ׀gZìQ¹q}Éž$ùÜíŽ0Gé.i`kj‘áˆrå»lc‰®º)΂÷4Þ'§ùä6³Ì.íº˜õOp“o åÔ“@I»ì/9…Ø{ ¿*ÚË1ã·»¿6±¨É9›B7Î|'#ÈmyŒ¨±èŸjƒ“}¼bõ$9Ò¡¯ª˜N´©©WÜñ0W5u‹¢+OºæE²~ÅýEsŸE©Ijgz0kÈŸÑÉø›é":ò8$(×p#{ÐÊûI ²–ÝO=¥€²².j‚·1B7É®¹y;- â(ú|µù”¯õXáZÇ&œÎO”eÎÅê°žÌZ;¢äÿL!³ÞC^ÍS^*€Ó®ÌÐO“]pº¹…ÃÞKÛJT©e  XVC¥@ëIØýúlcÒ>ÓJSê³cçµA²mG^ª¦å<±Ðé'vú{s»KçÄàSgŠEÈžƒQÒü‚³áÉâ€{5¤V©ÉG E„ýœnôÐä·mróHu¾§MX#3ŽGAq¡éw—­ÏÛ»‹~Ó S%ãM7ÚÞѼÜšIÅëdµŽi{…î5½F–må*ðÑͤ".ýYû‰.á¨]¾”ÉË 5»Áާz}¿mÑO23<XÜ!»·ˆE³8¥Rüå}-/í.¤ÉÛ<2¥8œƒ¿Õï¿J sdkžüd ¨?6|b x’ ˆÀdQÞØÇij˪CD`Ê6?WcØÌ·Å¶,9ÏV—‰Nòœ¦Õ´x!X©+§gˆš=Prç ´zÀ{µËøž&à)¬]²4R[¨Ý~Ê3’ë/­¬l8)Ÿ‹~M"Ê>®›Nú<¶ýì7Ñ;ñ"µÝ.è"å˜ì¤KÓÍÈ ´„@(¢çÞ`C¹Õ§xÏjcÙ?g_k¦£bˆù‡&ôpSVF¯:ƒz<0DÄaŽ+kÄþ¼¯U’l©ûZ¶®¤²’¬+ÝŽ›*âºØ`D„údá´áTZǧÕŒ¾­"‰M°ux£ð!À™Ñþ,TaÙy¹1qU`=‹)9’t2ë;Ìáe+ÓB ßû—&ôÓJƒÂü¡l¶çŸê2/Á’C»Oy»Æd\dã1}gùE%—•¦TêÝ f|ÎG· 4ÏÖ‘T¼hbø´^¶°dÔhE3ÔŒm`¤óš®ZŒù úH6–Å‘UÛQIã3ß»á]r¹b9hnDcf0R‘øs§3q6„+'ûæ:¨C}Ì:½Bx0ÍÕ.|µ”­Nèur6ÅÖ—"cLhMx:¾(¯r„PþØzI6&×sÞÝqÁÝMÈnËžT}䜪jÈ®µ(êß šMëi 8’€}>*X 'Xu!ÂbïgÒµv¥,¥„ã…öÅ0XK2CÚ5ãÑ=Àâ¢IP&_˜›£§"H¡ð9»bÃg?&=Ÿ²Äœ¸ÚZÍ7¤¥q %lbòH¼k/q½q¾dAj9óâ*6»Q Wÿ6E “Ì:MV:E(›·ÞfÅðÄr¬ $w<¿Û+oŸ\ýß•Z˜Ûx}®@øŸâÅ§ê€Ø¶Ä|°£ÙfÜŠpSZ$ª8rö´ŽÐˆ6†‚Ð IË@­xü‹Ù³Yî#§ÝKÓ¹(›ä5Ýg3ƒ~šz 0.'™ 4ÜŽëE+S<‡ã+~sgÚ™S8¯ku-Œ@µ’€8 £™2:Äžì/îotÛÏí‡7ðRÁ~ö™¸"T\þ2…¯íΊÔr)¶Ú]DÐä4AÈ8+À† ê®åD xZÑÇÀ5ßLæC Š‰a¡±sˆqò0ñÖ}%œz$¼$ë·Œ[Î’gÃ÷Ìúö­ïqöþÄÞº¾•!žd0¡öfâ Ŧƒv‚€pz®ÿÖ=ê $c8mU…ÓÆäùÆíÚ¿ØOêþ¦q“‹\¶lIŸ¡íÚ±€1n| óÃ{÷ â=ëv 1ª”X@oŠ|ìäîÊäÇ«ï¿*ˆ³³MÈD{UÖ@>u_è–ªu¬_ô=€šï›9fàˆƒc†Ú]pÂ`ëp°>ªDåêMê^ŽIs{†¾F¦a9VOü°ðu9¸(/dɇ¯yÅ—ku,øÍª±›õ採O²ŸxÊ~àÀ#µp4íµ‡)Õ²{Ò?ƒëFq¿¼5 ƒ¾FÍnÛi}\ª!iNÃ~ܳ\€ôñé±g©ü‚v؈¬Ù'&,%v`9EzÒAŽú•“_É—£sʱ’;qœóéLÒâ„шÐ|kÊ‹*,yÎÚÝ÷÷TTöjWɃ>ž#`º¥óÐŒsp%Ñ¥> t®®i“yœù´)‚ÓбhžÔ}ðÓS#Á'+P›`Tˤ¹wZ\CDyêJaV3ì\vD Qú2â¦q¢’ìï’¢ f²EÅÕ©Ö{º”Mu¿õÅ2 š¸²¦Ùzu4çàÁb”3s[àãѳþàx#þ^ŠQGÈ^ÃÖ”µæõu¤«÷]µìFî6òÂi â¨çzÉ<•ÕçŠØKVпÒ6¬)|¡-Yw¯¦ký0Õõ²Ùl(GÎeªR:%nßSyc`þØö'*>ä)Gzß·‹«ë’ ØÙ‡nma@™ôBczQ·ÊÔi€€b>ëóMÑÌ¡ÿÖÏû§•Z$ó c0|Fo^FX6?˜Ò¯,ÃCÉ©¾te© ( g,CÓ—Êø²\ ìá—‘EÝÚo„WÞÔ;ëü½¯$“Æ"eÞLcYøBñÖ¹ý&ª¡›d;»o¹yMjFƒ|®E6êŸW[¯Ô‘c´5^2h–ý.\'ÖÖcŤoÖ¦ÙUÈÿ; ªîN‚îf” X¥-/‰ÅP¹×·@^„ ÷LÖH” Êsã„£þ„3©Æó 'êçÀ¨¡‚4‹ÜÇ·œäùP»­Ò»ðNãùaÆI©õO‰Žã—Œ QcìÎ#]?ã)½;Å–¬æ­<‰$̤Ñ7|Éh§-–QêåM7ÊF™yµE_gü¢µó?ž™ÃE°>Ñy•?©(FH[a…/øp;ä7~)N^3tw^çÛè¤ Ø)VïÁøòLÏ¥I¬ÐÿÞú?MnønkGõ£¹øŸqôô×Y­Š/º:¾(*îÅÃ` ·a!©Z§vòºLþÍ.r¼ú ¨¡w£i‹SQŽ¡ ¿mYq£¬Ék øv¤p+`Þ:œ79p-™á,šø/œ¡B1‹ˆ4Ë´9¤Ûãû·n#kÈÖÒ— s"P¾·,†6úÙ\ó>Ÿsù¦±Ãð‚¦ú´ ¼/‚·BôZ8ôqrˆÃº<b_+ý·íù®ê“½Íw*šœ¸ÁÜœ³ª·?al¡ZÝS°+ ýS½ºRÞdüÐvÕ;—#hÐd´˜yƘúÚ.‹Ð¦'†§«Ð&dI%4áP/О+a9Ê8Ô=\ô¯veˇOô\{”¨`\¹µvô |íåÏ ªÅêLÑʲУr-Ù–äŸNE­¦oò[¾ñ#l”19ë™Æ Ðé;xø£ÛIu1UóPa¢¨` ³¶’o&À‹Ë5²s Â0[…ZNI$ÎÈÅ3TÞ_vLq[(I;K/w1pê„&U·‘q1Ɔ,¯3,5¹ôùpâ—hoÈF˘ª²”Fý*OÌMœìc”`²ð2¨D…#äûaR‡q壃@bxó‚*Ÿ·Ÿf¦£$wªŸXÎ=t ³;»©ur&}7ÉHíô0v+ṃA6 ËGл0™UlÂìt³?I爤zyœ 0£vç$6âÆŸÃØ/Õ¡¨YÁä?FlT;•n6—]éÅ5h?Li˜¼.Gzs­ä¢†–=pã(Ǹï«:®æèîÆÝp33«Ø1yx¶øÒõISW ƒ¢Ðzx­bŽâNµÆüŸB0œ<‚¬ïÖîì|ù¹éÓ?¢[³ƒ=i$Û4YUÖ~|ëJOÕ˜µãçs=+*PÙ’2~ëuœtèoù»€°4  ð¡m1Ú&§#ûjŸÔ“¨0;Íc Ý >ä$–H¸¶ÉŽxqÓ¥aÞü8øï—rE#ì6 ²xíÜ´ o¼ðG-œ4êºÿBÈP+EM¬Q B)ek¢•tωlv÷_l¿3Ÿ¸‹P¿·ƒŸÄf*”3”«$(r…T^íS“yÖ™ì˜F^·š† ܲ.ÊqÞä«Ç`ú.JXEž•_Ö·Òù ­ÕûñåÜñK°ÖulcßÓÙÚ l£Ÿ vÏçÆY•ÕmÐýD5õ­YÛ–ü”ÊÔ«^éqîuf4^¹!ﲈUA¿µpøôgÝ™’0Èõ‹0ÀÀ“ëlÓêJ‡áÓIÞr¢xLôz0õ_7aØñω²H㘪öÃ|°|³X ÑJ´Ý3œ3žE¤¬Ð„¾1˜DËlð<¾po­OacØ„ðŠñ\©ƒ´ÂF$bÉàA…`­Ëñá\ã°}()í»r.ãã:LÔw0EÁÕß2è›u”¶îTÔkVO]w×™3“µ;aÞ— "ëáZô¬A„Þ€'NGŒûx|óFHZTù²—¼lᥰô³B‹ó Râ7šœEÕ «¿¤O k}Td*4ó%K Óö¹Ã mnM¬…:sÿ5Ç>Ò-,ÂîÇ]“bàÄñê!1F¸Òº\¸ß:‰\ÉþF7Ý”ÊÈщ! ^¤¦|ˆ`еÁ±u9V©\buœæ¸"JQþŠñ¸¼Œ®ÁùD´ 1™j"é>ŒSg,†."àóî˜%O鯫¿T (bTÓÞ—°’R~oE#û“Úÿ¶UÑ“±úâ «~ï›(\1íu*ð)$ÎQÿ¾6]ÿz¹¥G'¶L#?Ë?e*c[Ù¦çè%F¸‡ø±ŒM)zYÍ[ä7¥ù¤88‚ÙëÀ¬u f,–‰5aþf1Á°¸í\º'íexÙ„Ëý";}!do”R`ë%Êò |Ôc"Ê©ÊÑû¢GÐìY·ùb3=SÔt˜tú›*k[Ò·T, À8”Ð\ác; ,±·õ¼ªÁè(gç£NM+PhÕ wºh]ű‡W{ÞÕ c?©¤ú†À?ƒb[J~-:äË=1J+ ÔˆÊ_ºÆ»4ïÒæ)3³F.ñÕƒŸ)i·Õ1nsWPD&ð¶¢rÞÊïtÄö‘GQÀn¦Ö`+¸iÕ¨\å¹eCµM#i„Ub.=·F™Cò6Ù•©•Ó/É«€|XsôñÖ‡ê$ †4ñÄ3yQ,ƒÈ²s«‹[×jѦ,Îu$ŽpæD=¶13»'懘uÞ w®Úk m„k À8ÿ{¨HU<·³¥0b±¯ÅÂmãý»«AXÀŠÌŽÍrºR[˜™W:À!™‹7†ÔYMê¤ø#¡_QœËI L­á]ƒdZˆéµl“kíʶL=Ÿdúgá.Àør±MÌ!?UÕkt~˽b…b²}}”ú|zeþqt“ÒÈÖh,_‹`×YÊä½3Gá»rõ6]¯æ,†Š +Ûr-E"ÞlúÄö›9=5¦½`7!uó>Õ£¹Šó4ã*‡¬¶Ï¨Û00ÄÜ*£¦þ fNÀ׿6Ô¸S]-ßjÀm *[7EÚ]ñõ-¿F Å¹¨BÒ¢¢Ù9¯2àmutj;ºgô=ªZ9.°‘:d‰Í}#Î?›&ür}ýË¢^t 2X6tʡȑaY·®¿½ZNùj™Èú¢Ñǃ«…’¹d#KãRêÕpw­[ÛòGWíB)]x5»ì«tQùåð3ŸL‚\`›;½ =rnS'iš*ÿà#¹·r¥hCˆdLnX5!nr–ë{u$ãOŒCŒòy}ØÄõ=µÉ€¯§­¸qÁ:QAk—R"Ð5ù>°ø`´î]#.Uíz%k˜ä&Ÿ;5B[§Ô¤ÓÎ= ­^+VßÛ-C1«lì†ø«G+jàu*¶Ž­-ƒDõ_.F¿,þ~¾ÆIÙÅDC…û 5âÀkºh+Ò+]ά{UÚ¶ýÚ¨)¬ÑUÿ°)ÉÏ¡”' Ô®eÄl$s»/oqea+ø“|åÆEºEë%‡¡†Ÿ4GhÀ¯ôèE«![!ÁV4žoÚNؼÆû6JóÓŽù <~ kQz“p)zJ>_HRÚm»){²tÜí™3¥¤íb(byÙ[#ÀX Ü¡ùPÀæ’÷”߈C 1wÂ’ v­bŠxc9¥Ð=±Àê!Ú¡[ÌW„FÖ³OÎïSj+ya²*Vy“^rÀ A-ØÓ›*Uˆˆ ÈÞb÷q7[ò/$»ò/ƒßòÎ¥ÇM9?Rýß’¿ÈÈæíòË›€é|»¹ù9ªk:…K;k0_⼃[¸-–þå vß÷G Z¥Lî­¯¢˜+Õ#]þöIÊÒÐÍxéqY׌»×·ÈÊéí"¸C;Íi‹ÿK4S(^-¾ÝÍ“0àˆÂÀá®kÈŽZ¬[©êoö‹‚BÑ΢58ž½ép pÖLúJémü$Cz¸™èNa¸ :2ÕéþtËé©úóÏ,µž%ElÔ“’œc‹0ÿùû£©ÜÄríü "ï%ƒŸQú"ßlifÞ%×[dJN[-È·èü-«mž¬§–ŒúVÏÈ<Âÿ†×Ï䢫þ7?å§p’KšŒ¤‡˜½óˆ|}ûyÛõû¬û»3m#ÒÉk(È=¬€l¨‘àZ-%fÏ-ÊD˜×Æþm÷‡ïþ:çɹÆ:ÚpXXüÁrã/V¢Oõ1y¤r&ÅÀôSâ]¨åH uË™ø ìÊr7‰ñüge|[Ü®£0넟åÑ+o:' †C)Û2ŽÍ¥ì+â»PãõCû¥ƒýtH’Í+Þ–îiDæôœià@`ݤ#ë"$N§q™s€±>6F~Ô)’…gB“§Ï‹B!¢¬ªì ŒyAë0HJil@y‚yKïåî-XQÖu³zJ¡ÉsD R᜚å@,.Ê ³dR<l7 z6[žs‰£ñ³o‚Û oÀ>â¶ç#Œ}gµ.yøù8ÚGt‰’½ÕWëê20­(—çí`)¨Ç–c<‰#:{NjѺíóµpw„~¨æ;ïnï–õ@L2ôBÙÖø=Yú‚‰z7‹ºÓxæˆçj~Œé¤°Ö*ö 3I]~x¸_ë„8¹Ï.–îUDöi"ßLKjÏHQ¶ŠL^øñ°@TiB]…8°]¤È^yÁJ1Æò¾^Ü©Ð!’ø«ŠRÕÞ+q"5æ¦:ã°bõ¡ÀZÁ3ëâØðaJÓÃÕôO¼úËrÂÍ&;£„®ßSø×eõpút¹#š–“šdؘKü©Ýª˜ÜéRʽÚ7,ÊÌ­m(·Ë½åg2~5ôáZbþºGsµÄŞ掺£gK¤ç¶öùÆ"_ñJ¾¿PXhx#±>`’îxþ’øK Æ5rS’’¹£ Hè°4D3'´®jº«³¸ œg££&“b£ÅÙÕDÐSóņ#0   ¢o™IiqTCü€#RÑ—ÖÁÖi>7gºÇ_Ç\-Ï9çæ¼%œëq/µú…Mª™ÈßÕ‰OÈð:’µtQðˆÖNŒ!œdÚ L‘ÅÝH˜C)ÒÒòþ #{ÐAo zf ?žÔU\«¦wÕœÛk /XÄâ{ŠÀhÙ Q²Ý™x(Ü«”¥dÍêÕgœ4; þ½ÚBâ‚#ÿ‚ؼw±Yë¨{dôꜞFÏ™YZ#ÔtÁÒø+!Uˆì~àOJ¤LÆĮµFÆÌpi2¼j„nõ°”p Sú™E¤ÿ–\xeÓ Ú,‡ÊÖ5Rô¢ÏP Æ8©øXù;>hÏÜÃηB=‡X±I¥á:¦Ùäi´‡Ò9÷r×u{55ŠF]x:˜ÛaÔ}ݪ”ÔÚ›…éðѵÆÐ)¿æóiÓŪGü°ì]ÔAu›4Öe/ŸÞàÄ>ËÒdutp\\öyáRj6q¹˜¢¾n; ÅHªm°ì·ñÒ ej-ï üÕ«ÓÐG:ˆTT:Fff2+‘D˹•?¥ @ùo ÐÊB©ÈI,bPu,¸¾†™_ÈÃy@~Cî „‘ˆÓZ.§åT§eÌ[ ¹´–ƒ áÕzî(=C6'AЯ>রª±×AUõ¶&㘽Kv“áÈ‚|øŸ“dÞ?#¨øcàÁ_ ›Ý<%9x«Œm DM&+5Ã[ ?z•*¸Ô$`å ¯sb ›ß>S†z<ƒð:"ÜHýÃî#ÞËNêš¾wTNÖ5±È­vò^<Ý8ÅÓ¡ñÞ.Gç¬f§ƒŒ Ÿzxw»æ Æ #˜càËèÚÅŘUv_=<ž¾ðð×ér&>ÜáÓPÉ”'®~`…@®¼nñÚG‚¸/c¬ ¿Å‚&c÷¥s)N±ÂÄü©Ú¸,b¡nFóIcúÓ\°¤ái3)ÖylŠõÃ!ŸAö>M·&™&g8´Õ`•Žd–4Ñîw¯Ú-ú‹v DBL癞Ú`i$8ómÂà6iXh@h9 aÕ >Ì*¸3'«H³ÙimÙ±dhMŽbÁZ¡¥‡F¹íyüUngÛjP­X 4ºØ@%uD¨ÞLôJ’æ¯ 0›"xgĤyŒëýUêõcEÎNíÕFôyçÖ›q‰¯[Ûþ%©a¢ƒY›ŒêÎû/ | Mp{°»¿ÁsíÎ3U‰ÆfdÈÙq<zLsÍ-r(õT/òÌ¿´üÖ²~ô™n}³ñÔî­›ºÅÜG-Q?r×C9žji¨‡_Lr5Gb…¹°3Ìòž™T¹þijUÊÊte~,NÓ¡@Á¾‘=LØ»›Mûy3܈ôÝdŒ:Ô´Ö )øá- Éy¹òÞîz6Øè+pî-Œ XÜK;C™Ù©ECTáÔ,vŒ4×*JökΩ]Ê®¯˜ÚŠ-Tæeá5s®2OXw4æyyo•þþŒ¨G·ã8l¶¼Äü¦×ÈJÍ»Ôÿ endstream endobj 105 0 obj << /Length1 2033 /Length2 13456 /Length3 0 /Length 14696 /Filter /FlateDecode >> stream xÚ·PÚ¶-ŠÜ=@‚»»»;N4îÜÝÝà<¸CîÜ‚kGöÞ÷dŸûÕ{Eô˜¶Æ˜kÎP)«1ˆ˜Ú%mÁN ,ŒÌ¼1UV33#33+"…:ÈÉø‘Bèà²óþ+@Ìhäôj7rzS°d­,lN^.^ff+33ÏÿÚ:ðÄ\@¦F€¬-èˆH!fkçî2·pz=æ>¨Mh,<<\ô¥Dl€ #0@ÁÈÉhóz¢‰‘5@ÍÖtrÿ¯ÔüNNv¼LL®®®ŒF6ŽŒ¶æ‚4ôW“@ètpš~ (ÙÿVƈHP·9þmW³5sr5r^ Ö  Øñ5Ãl t¼P“‘(ÙÁËÿ@ø§7F–ÿ”û'ûw!ø¯d#[;#°;l0YJ’òŒNnNô#°éï@#kGÛ×|##µ‘ñkÀ_Ì’"*£WÿÈs4qÙ992:‚¬Kdú]æµË`S1[ ØÉñ7?qÐäµíîL߬ØÖìù0MÍ~‹0u¶cÒƒì2âÿ„¼šÿØÌNfff.vÐt3±`ú]^ÝÝø—“å·ùU·§­ÀìUÐd|ýèéhä898½=ÿíøo„ÈÂ0™8Œæ 0âŸê¯f Ùßøõò@n]æ×Ùc0ÿþúÏ'½×ñ2µ[»ÿ ÿë~™DÔ¥¤54éþVüŸ¨¨­À“ÀÀÊÁàáæpq0¼ÿ»Š²èÌReÀf¶ž¿É¾vé»üsÿÔÿì à¿k)Ú¾-@ýgÆ?2s0›¼~cùžô¿Rþÿüw•ÿÛŒÿoB’ÎÖÖ¹©ÿòÿÜF6 k÷^gÖÙéuþl_·ü¿Cµ€ï¬Ðäló¿½2NF¯{ 6·þOAŽ’ 7 ©2ÈÉÄâïaùÛ®ñ{ɬA` ²­#è÷«``afþ_¾×Í2±z}9_'ò/ðuqþûH °‰­éï cåà98¹#2¿+À“åuMnÍ0€‰lëôšx•ç 0³u@ü}£œ\&±ß¦¿€Iâ?ˆ‹À$ù±˜¤ÿ 6“ÌÄ`’ûƒ^«(ýq¿æ©þA¯yj;€Iý?ˆçõyµ4À‡´&¨´ýòz4ˆSÜiC\øŽ;0Qx$RßOŒð–A]x×ëÉÞKÓÏ º²S–"×Þ™U9ëεOÊ­¾¿|y,xnGe·šSé±|Š!J#ò£_É EžqÖ,þ;8'â7´˜gnh3×7Ó˜9/¤²qtˆÞÇQlEž:¬Ñ÷³«ꬎ]ï tð‰¡¯1Ç&)=E÷“eñæ=K‹ÖÆRfq;Æ7mY¬÷©=vUï.ô))&x© ð™ ±e""×[¥ãmJÈâáØ³ÎVd×Ýd.¸ZŒé•âA/JÖ\õªH<;Ý9õûðÔ8uhCT-p’êIÁ½!Ä9õ”¨¡;æƒQxkMVGV±›yP %ˆ[:|˜gÖ¹ú¬ª“ ¯¸ ÉÌœËzL…ºlÑZcŸ]™dØtîŽ;šÚèC&Q46ú ì×´&åˆ#ÑEàÖg;ßð´ÁF‘'e¦ç¶°5*# èÕí!ÑdTï·õ»"Þ…öna—k”¿ˆTWærgb"HÃÇDß7A…lŽ;ãJ}ßä_à ٔ ~¦οԪì¹ÿzyªWÀÀÌÏXn®&І¬hˆ¥“­+:ÍA¤ÏÓЋýÌ["×J ëõSÑ?ðų7 °â[>'A¿Ný˾ O°Ã’Y?Åí(¹N¥ÿ™êCïÁ‰ÏAPX;ˆy˜À]gXùÚ©f+ Wð¥vaÅn„ÅOM³Ò;f·¸k­ÜèÒ”Ù¢oÞÓLJßn–Õõd,'ù!'Èœcà´òÐ)â}À[") ßÈO'—34ülj“ø(A¦Ÿ¡d{!æðäIìi#®;)ˆ‚¶ø]©Xrý.õÅ] ¾Df£g2Jõ5¨ÛÝtNÆãzLgübÌR‹HP¸"¥ ^ænŠüéò¤¾š”çB:Â0•>*,ÎÍ.¸|#î*ñL¨Éw¤˜ ÎGšÓïé'LWõD’±§P„ãÍKŒÜ¿œŠ×Mêo7•ÂÅ\óà¦s0€’è"¿ÊºU#óvì®Lœj{«îM˜îð|ªþ~àt`­ñ€ãAV®Gâ ôKˆÖŒtýÎ+vöf’:_âJª{ S¶ l•ñÉcx²Þ_ t#Ø»¶%›Y/’C“ý-õsˆn\[v:±FX¯À¬ûi>Ç5Ž]âY³jŽÆmóå s{k)V¬?U2ÃFFY7VÒ¤“Ì‹ˆíXÁûM²sRUh|i_5ˆ·ŸùT»5!N46|…Ȭ‹£+&Yͱ”ö—±ƒÔû¸ð¾¸N$øÐµ@‰½YÏMÖ4ÆæÒÿa•‘]v-ËWa‚‚¨Ø•H{‰²%õ¶«¸pcÑ+#~¦—$T£ðÅd¼j=u¸ÔzÆg3sÊ"Vuq½ñ{N, ©Î†‹ÆUúëve/ ÍÁfT›³ÖùÏYĘ˜”íFˆ{¸W²Ñ½Ž©Äcuñi°îÑ>‹„^žªþùQœ} Ù#)¢)1\–2·„ð~x!¾C©¬)„OõFØa%È/©Â\ìHÂ/8‡ìÔñoÛ ÆI ³§,¨ì*¦¶èÜ’\Æ?x× EŒaHͱaˆó¦øë‰i̛Ή¥¥la?·[pøáõ¸É„&ÉÑ·@˰>W3‹Þ!³Öׇó^úÂ`Ï#Ü:¹|YC®m{.†Ïmò wUwH0ÁæYWÆ¡ÞÎæ·ânƒ¯æK*ç”fJ(hbOQ]’ÆoãøZ9í 7·£Ñˆ3O/ùÖkœv% 2«"܈tÇ. ?@Q ù».e%,VìÛþ÷>^³·6P‚êV5›oœƒj´…ÀáMÎß´ )„ÑT¸‰¯\¥ØÌ‰}ŸùÚ‘L‹àšW¬GlÆ [XŸ46/¯»8¤ŠÍEPök«_S©^EZNAäØÎ±+”ƒ½åŸcè Îx•ž™Æ o…ö¦s¦£wp p†Ù›£>Ë"¢Š"GŒ ½ÿ¬m4[#ƒ çcÎŒ+£’HpɿƗòËÅ‹ÿ„~Fjq[Ø)ÊþCp¤àæpŒ ^%E 5ɇ+—¤‘].o–HëÏ"ÕrKU¾¤œEo’“õºÑéÒ6j­ã® 8q.©’ ޾³­ZѪ#¡®*ÓËîEãäP]`Ðí¦–¨<‘%csä…Ҋ䮌!Ãê<—I86(NFÚ4˜|/?gd\¾Dé ¾ÈTé ¡l!Jt«Ú9kñ§¢v†[‰•Ö˜Ùk1,&=pÚ‡ÙÂÓ¦ÚÑ1Þ˜[Zëä:X8Å|bãe-rZ<_t§$’L#s忱'=E=©i“dT˜FõÄ/ÛäKa?ÇW ¹ôai+~£“MتÆêç¤Ì}œñ+–ÉóÜív¢LpeY辄q‚¿Où#„{g&Ç£¶?KÊ6”§klæ>^彯*z!–[ˆ—™~?ÚWW £y³Ú©ŸÃM ›—Ì(vv"&ã*Å—c*´h¹å¶Œó‹ƒZ¿ÏJ²"ƒiéõí‚ú%˜<.9Ó±î´DðT26NÍÓU¼¦Šä§)þ‰òÓD»Fªn¹½dA¦dªH‰>¡é´ç¹p~Û<»¹xjUýâ¦XV ½„ñÆïk4σËõ’Ù½-8€qkÒŠ¡}Ò•2EôJMðœTE›Öùõ¤Áˆ/ÁŠJ‡øKänF#JêÙo4wÚ¨›Èd›t¾ºXGè(%Ó«ö˜_žgüâ[vƒÌq1Á“ .ßÀaà°(½sPioî_RÍDâ°Wâ¾o>^­L‘á¨0=ìLîrËy29êOiÈËÔ6]¥¤å;³25 ÍÏQxP6Œ fÆ…T;ÁÄë‘7… X›SOKS*Ñö“9L±&i•$8bQj5Ô-V­]:yÚˆ h ïgÆÞÛ‰e¤£ÓQ7+D#̶/)ÿÒŒˆW²Ët23lÍýÁœÝWç[ÅÍQ¡-BÝOuÊ"›ŽDƒLX•8-0’°‹ŽÞ4²ÇÈÿX}HE3jÀ¾HüÕ[N;¯š®ÑtNPßdM3‚s“YBgÀ‰~è ‹€¦t ô(‘ÖWNçp€1Љ@ܢϴ»)nàaÒn‰_PâÊ/‚­¹À÷Ø2×ËÇúÍàÅ.#$írAœ»¼|+ò*W¡n»Þ͆—ñ„Þ§M§Æ,\âå.2@ûtŸ©CgÑ£)rü}”ð…Ý—¸Žp±e4–k0†'̳ê±FU§Üyä[zÊY¿¥"Òš„•±+ÛßóYäEk>O`’Ën×A6žu]>÷ž7Ûáá1㌰!¾}’ÅĈ“ãÒ‘gTte¶+ÃRúVhÆÒ©—j˜›—‰:R&[*/g b¤‘3|† $…?€.¯®Ìáp—é–½`é7*ÚàSÝÆÓ¹ãÑ+ó• ¦xà‹PJ±óƒ¢HX2;œ†£ž1Ÿy$Iƒ<ï^ä-NÅRÕ˜–ÑBò4Þ­ï,n÷ƒ‰CÛ†qpš]Iç”P9~B_LÐñQçî°‘Å–SÓ¸¸ê ßÃTW*¸¬ÃâzÕQ:öE~C®âü@ÖgN6ÑMpÅØôSš.F§ØÎØ’Þ–'Ú²¢nñ¯¶•#@…Ö¾DéFƒ" qSˆ•éÔG츪Ô}o*®~¨3‡~<ÕkÙ×´áŸòRbÜ“àq5Vƒjuì…÷ˆÝœKj kLg5?ƒ*œ{Äæ,EßX7†7qH%m¹XŽÓ"dAõy·þ?vÎÒÙÆŽó“#îVcÀU)ÛàÁ3ç8ÑÒw£†uókè{YÊ–ð!©é^râÆC÷V̹𓉠LŒO ëüœ^DÚIæ‹? µëûNÏò‹$vgWÜ¢„:ë*ˆ¡¸ÇÍ—y𨟌ÄìGüà>l[¸Z&¥ާ&ÑDܲÁ J9êF_I#SJš– ¢ÊKÂGŽ{w=rëœfëVuÉÕbIKï…Ÿ:­¾¤7!)¹²2Ñnt³/Üãé§dB›ÞO–g‰™ño$]ÞjHÃäÎÑá?Riçß D_éø‡ç`E‡…ÎyíbòPÂgvô£®™9p¡m~ñUiÿnbÈs„©`îœ0é†Cu¼Å×Mð÷URu–à= îHõM y@`­×|!Bž‘…34A•LÅy)|@ÅúmfœyJ°€gð´ÚPóŒô¸ õhƒ³VÇt‘‡W†úXÖ¦ŒÂVµízA gü˜É^Õ’>J¦*Ǹ ƒkíŽÚBLèýe2‹¿f~12(Dh;ß_VÔ,(— ëˆXµ ä¹-MÞÀnD™KdÞÿ©‘û+Ã\ôüaPÇ8¶ðµ÷qþcØ.®z&œ:’BJf re­¿á©ÝLhž¡G¤ç3UFf¨rØ)]z<â(ÿO~§ùxÅôÅî±ukiâÜUǬ^SG ZÍØ1¼ŸBÙoåe´Qó5eòºiM}QŽ´&æ× Ÿl¬Ì\JŸWG±ƒQPxÔít„cô1Æ KsA\vMŸY¿$ù«È®çª+´ëBiÂ5Þ£QÕë~±ZÒµ ²"?v+Ha¦‡qݲõ¨¿ÈhZy#óÃYQTê²þ,¯_S«'’ìç 0ýCÛ%“·ãûxVú õ²7KØIs×¶ãbjhÜ­3lØîÞ^ã`Š{èÇB<± Yˆ\?Êõ.…0 "˜­Ü±Nøô0"ÝßÇ.¸ìÄ*r äK0‹dE[˜¯o0®3T?ÝؼpòDW"¸(ÿ Á’ª~ÜÚQƧ@«3Ó£ˆQròó‰iÙÙ·6k±‚ÿ‘‡)8<—´ÙHêýE8Ô`¢©në¶ìR ›r¯”–üþÛ¼oMzäÜ/º<¼÷ñ¬» ƒ´2Ñ,˜S÷zbƒz&tû¾~“‘­ °´#÷U; DÌ-íÁ·yóLJžálH—/£/mZ5Ëè‹ÔuÛ/á çŒO©ú¢—¾.6} Ëeé­†'1Cä—ÒIÑ0¢K@Nd0¡ýRnZ>¢‘¡Ò˜—ýV˜i*lÞÚæ7¶BèéÞÖ÷›‡L—^S ªM †‘DÕÈe|œ» ^ý9½æŸ.|oµÎ庵ÖÔ¶í‹/p3~æ„iÖhÇ® MÍÝst¾‘>vW¦Kõ¬±cÄ?8“bçgK!µ³*@+QvÂhóówë ÕånÜ-"û)`5̤ª8yp¹î)Ó›h~=Ði=D–ê<,ø§Ê %Õ_¯ôÔ½ú&™Ó<6´ÂÕöjb /ÁD«„SV÷Ï}Qo€3QôûQ}³w¤"s’Y V LƯ·öë\dVow‡¡š óT0×0/³ Åkg/YÝ9&ç[~I7 ŠË1Š*S®¡þdI¡\Ü<4,ˆ†Ø(¥e$ï7)•–²Ýxv_|³WFÙná| AÙA"ü=Ò?j†â!šÇä£2ò;)êwkÈý?Êƒ7a‡»º±“¦Ð!<‚`ÞFæ¤Ð½KØö%jÆ^j(×ü!ž½DÐÅ"µ”s+íþC­ý@½n|êó0¤c,C¯Z$Üçn±úº\{^Dh7  œžê´§‡X-tH«»R«Úã.݆:¹á£á»€€U\¦«H†àåÛýºÕ}UI3Œ°ƒdš;sK‘Õ*·cQeSþê­"ý©húi2´Þ<—Ù›$Y²¸ZZþªZ&µ:¨¡(…1ïĺ˪l›"¬tЦGï~¸@Hr"H\Çëž2¢å}›ÖQTô'"ÞêÙ#µÀlj,ð"Å<“Û䘊`ä –Û|À™¤ƒ cosŸ.ÅYƒÍŠþ.:ûSW›´¹=ñ¡‚˜Áð#2),1î|<ެ¨„Á«ìZUSÁÁô=†eÔíg×* aNkeÔ 5£!ãÍŠSW¢!þùOhöþMC ˜eÇ€ö˜\ªfmø’ƒïm¶±×”j žƒñ]{\•œiïP­ ÜL³Ò^4 fºy*¤{ì¹kX‡ '0ØÎó¿]\ÌûÌf\å0ú©¥ÃÑ á S¢u„Ç}ì›ÔëÊ2ÖZÏ#ËW\+²[Ä1êýÉoÓn³ n›F”Bn°ƒßsà=¯¹$ÆØ™9VA‡(؆ˆÛÇþ1–¥ÕHËíIg#¦±ÐÄפâôL´•¥[®³^މa9Þॠ­ÂN:´+Æ£œXø‰g»½ó ä䯚©Í=}´YòR¯ºU£I,pNd€FÀð‡Üw¼j«È*hîS6`2t´tK!Ès,"¸ ÛWnÙ ëSçd@Ф®WQ¡¯È1åÑ•ù ½—(BgÎ’+ÏC£„_ÂL—DR‘ö6Qº9[ïëòäÚZÞÇpöÊíUœ†û—,¢Í¿IèÕÁIE÷­Øš:E2²Y9Ý$ÅþZÃßÓ|~i-ࡾØ)£)'éÁlÂ1PhÐnùU8$V.lPŒøÜÙɦ^œ[®·(å*—•oí¨6ùÑ“Çð'TLë1,| _Ê M¸)wÔbØðhCLiÃú÷o—Çp8ñ§ºsíÅs>}`:eÅqËE"ÿ™¥ùv´|çr= §CòN MLZ€%z¦RZpqÄÁ¯ÎñSÌ«Îi"Ô‰áæÞË’Žâë|óϬѣ‹?gz4ÏÂãv…uoº»TS¤1÷=Ë-ðâœN.0Óåè¼15Í)Q„ÆÕ{•øµw)f€Hyì+|­ó#š¥”×$QÍÞû>Ôå›’›¤X®ˆ¸e†ß槆Í~÷ø¬J‘­˜/Ùsê2Ó¼°Œ×N–jÏ]OóóÈkòËו Àlõë‘tK º%¯YÙ%ãïì”s¨gcNb…(FלÎkÜÅö¨;?ÈÕ׬ºû;-Øìšn,‘älm™g¥ÂèUF¿ÌO|`’Ôµ«ÓÀ/šúožoMî2 ƒã‹=`Í®ÍÉe1÷•qãî »u‚12‘“T°rQ‹A¸Š¡ún^VoíÖ·7;§Õù¼6¦Ùßím¨òvñéÆKÇx8¸meÕ¾·çwŽý~5 K K]|´Oò¹<°‚– ût{¿á”ÿmþ´ßâ}‰ä_ùÞ÷ØQÕM å1ŠQ††Dv‰—Éðps™{H=².Oóžªr¾B×'/$> ñsÜm¨Ð,IžX$Œ…ˆ:ûs’=âQ³ÓTã§7ÚãËd±¢öððâ„Ôkñ¼ªRßPøíEú*¶‹óX¯o3ôòä¦öú­ž-Ú£a Ftši-‚??Ý©ªj%§©êý¨p™åM6ûÖ£Ýí6S6ºy)]Y—h©Ô`À‘†—Z2жø4@‚˜YM7©oÓ`œ0lV CÍP9AXŽa°ùna˜hu‘õ†k!vàÛ eÑcaŒFv«Ê«èzíðÝÇ6?kaDtÆþÜìnž¦Æô©ÊRWOÎKX4»T.¥Ó>#DGy¿¼ó)U¬´ó¨¦¹à}ˆµƒÛî”q-vùRâ®õÜéÓMH½?Ð Ôj°ÉOj¿c Véín(K>ÂSáž–‰#Ñ]Ã)ë  ”ºc¸³ûU©¶ïßZ:O ÞJàqÓÈámÖØßþ ï}}„€ƒa’®¥yìÂ,»—r¢¾÷)ð^V•Î=_cuÖ¢‘ØãHiµ–+(ÕaꦃIAïŽu‡½Ãû˜ 7#¦þï.UePàkV—Ò œ¯øt‚v2hbep6_ŸiÔ–š z[{’üŠz´3¦gåα$Y>ø¤¯¡BöÔvàWÛª-øò^ÕÂ?§<ðÅÇYÁÇ]‡ÉYÊÄd&7nc|+•±bñhFÈ“&˜fqÀËßYâË=!}‚¯\r•UÀ뀨üúΉET*ætô:'+@nhûœìˆgO¢é§/3Ì8‚åô»òм‰Ðv"¼5šÈh0KÏúm•axk":OT¢\m8 >fŒ˜Ã¾0\óÍ€dFAo1ÃÞý™ªJ‘Ð@þu±Û$>È¥4—‡!-Öñü-XþSiýÅO1¹3™°Úè)Ÿ]2ù¬b5­ „*>ŠûñT9 ¿ ùņu¬±ë›rñÙ㶦loè>L••Ò6ôU}ÖqSÁz„Ÿ¥/…vóõ_v$½¦]½Õ¡óq5›†x³É‹Q°ÏV›ª€y¿à£œA§ñ‹š7ÄÃ&­è wjÙfJ™‹¢¡ª~¹õ§bµ7bòÁ~ ~ú¤\@žø”„xd&=Ô¶C!åS©ˆÅ(rvÜ¢!Î6ë-ñÓ‹Ù÷Þß}wBº’†kíœcxÁ˜|f}1I½‹R®¨}88ÌÀFš·_>:)ÝÑÏŸBi¥l9j“[hŒúUâeª1Éf ¢hg›R§ç礡 YïÊåh·µÈ.:òXGä öwü'¼öÑtPçÌ^ ƒö&ŽÞFìä›»Â@•Fè¢UvëÅatŸž"6\]8ð‰sMF·"J~§â^m¸5íéÚg[~PvÀÝ‹ÛW¥-Leÿi–5^ÜÛ|bÓ´r “ÎP:œà˼¡J™·|Ì "M¯Æ_ÈWdï¥ëe¼c3–ý!X{1¯.àëMo¶ —«5}CZø™¤{á°ŸX†pök^ÉOÔ ýjáŽÕTh]£Hý ‡S}{à0ig9.ÝDüí,5Pq[2›x ¿øôÃ)}Ù̇²‹Ì¦œÂþ<Š‹j›Î¬°áƒ¿2|J8ÉJwòE¿ó9-2ñôDZ¨¢]%ª`([e¤iÉáMzË¢Ã/¡1~òð‹%ƒI³{Ä9T3þn€Ë®'´ÙñêH©r÷œç†„M¤ža¢U|ª[ºÂ]»v¼±‚§z—ÞØZy ýrkÉó63Ø‹½G,ÉYPHÃò~ª"¾‹WJT„r!éG¬÷9䲨 äfGÅsvœV•c±_¼ V¡sâÁÉâ8É}4QÖ»fžÂ‹Î¦Wê“@{¨NùYÁx99š#jÑ/&÷3±ø)Í×lE5.§T[Ò8‡¨§îÎ/qp£)Ì$ç.É,C8?nD?¬˧åº7ò² UT¯]Ñ6-ÖÄeÐÈ×O.³„6ßó¯ò©˜- c(¬[*˜ +_]‘N (hæ×‹¨iÞ«¿¾ä‚©öO\ІoÞ‹E|"£_ðÔ1êØì•ÓðZås¬9_'gðôV6:x‡ê0q¸«uQrŠb¥]>ì)÷êÍ2ÿ—x¹ƒš¦þÚ<¬€á’ZWdìp¡6E~o“äˆDÂÁOXd;Vzðæ 4àdñf<ÿ%¡§™õS¬ž!Oçèõi&ñº³ù·HÐcr_‰ÝÅRt¸í#¥×Ç”¹`ûº)j@º¦£Övã—R£8‚¼ûÉN®kŽ‘£7¦Åu¿bhõJ ¤®>HîˆJJ´ô*M•ÝWÈm‡‡&çä›À}¨#A-3]›|c¢› ºG1)7º-&e<Ö˜ Þè§­Ûë}‡úaëK¶ÿÝUüÕeÊù„–çcŒAëÎl¶V”E0Qù¶àúX¤Ýüé NJa/?;ņ¸™€­ÇãÃP à+2T“¸úv(mõ¡&ˆxK½2p=H¾ó±[ˆ×XzE;¤r¾g@VáDX¦xy”‚Gqhc%n\(hí¦ó¨·‹»·ÀQÃu‰Ä ÉD¦ '=aóò{DÌU?ì»à³UݳFúèðñ-ö u„`ßMt|<«¡ª¥ñƒì¸!eÈbÂûx­7ý’™_³š%$ f 1[ðÉ)Z/¾‡tâŠ÷?¬Î(v³=o€¤G,ˆß¸Ó€‚¶e\…¿0Ú÷ξǎ&œºË2áúÔkÒñ!Âx«÷dOî¾ÑPO¤ÁÏZ§ž†òDå•`íÅŸÒœ’žiºN¿—`ÎseÛ´¥" ’¤1'àÓ%3ͨß0 ?Š×Hßf'-,lÍ^·SüYÞÛDv‡c•ÞL(Y„¾GzGûÃ5+µ§?·Ñ5>@ß'Lã½|Ó˜‚U0›k¦¡Þ/Ú€ Ž‘Úì,ö­„ºŽ¥h&hH1÷1÷j­tÍ6å:?E}%9¢Æ; s‰J»ŽÄ#: Zê)±©ã^_Ana 45Ä]Ǫ¬h þE\ädòÖ4Yu~!¹§ÓÊOÀ'†cýä;ýiþf¸ˆŒ8@ '{NÔWž†h$ùfZŒ" k(ÿ£ž¶O‘ѽ>Xš¤)¢Ü¨û&i¾Ñ‡7Q?Gl?ËwA´Ä6ÎM;=D²˜slÑvËB)‡`ýR²À˜&ö¯^9Ÿ¿Aå.l$J;£ù½ (Í'æ)w±]§Pqc¯hå‘àmTI Æ'!öTk1Š ÁŸ;8¤@ ùÙ Oü.áò„QºÛÕÉÍ<&QEðó,ĸì–5Né]º(™qX™~W»þ5»{=EŒ7Í/jºA´Cêk9SÞŒ¯åž÷i)**ªo1ä©.”ŸÙ6ÍIßnôèGdÀËhràä?*ªVÝh(9Ð݇dDfý:»[íĤ°öþD°¦L::·›S×ûù’±n[H`N÷µËKxž0k©Èð\q7ÞÞ” ¶× ýÏóL!VŒž+׋é~{Éw{Ú/&™ªNaŒõ?óÏz5‚™JL¯çfãˆm¾÷æãÈì*-[Z ÇHÉ]ý’ÓÜ}·?i«³^lG×o·‰°úe\Ðv+Ž[KÃëœÆ…ï:¥l­&û"I…øfèठU¯æC‹' Ü[üÖ`÷1rXƒ÷Q{GÚ& ?1Ý·¹dÓÂk¬ÖN%î—·Í6Q6Òéãäa¼ŸÍ…ê÷Ê_hæ¾à^Ž¢sŽ0œm›ÕÜ ¨D‘¸“ª®NbÄìç9%¥9¹U¢×îlþ mË„ÖuÐ\_ÌbØ¿°RáQÌ@̤bt¤À´+É\˜™J5Ø«<±}ûæ§WjmS7ê4$«(UÙÇRç7›^~Eé·0}ÇÝIÐö+º>žÖÊÿ\%žŒî1œxÏ…ƒÆ(ŠìzÑ…\j”<ômŽ›Ž)õ%*˜.ï±î-ý['<ñe`hu¾åöí3éàHÞÒ%[…‘ÞÚÚ¨ÛÛg¹a¼l+ÍA‚?ìËAeÏÆßðѨ‡ëÓ·±'uŽfrÆËeÅ×îNV’ðÉœWØ`ZЊ`¿¿£‚–ýP³›GœÜ=‡a±Ðt³‡öù§—vúGZÓeía½Ò"D–•¹õåb±wŽS&ßæ~É(Üçø¬ R¡M?@7+õk*¯ê®Æ—åy8¢Ãò l4àRòw™¾ôÚ°œ‚Ù*]Ö}ilÕJË,œ%Ra®j,XYÃã¦ÿj×EÔŒZ §ÕEÎ'’»BÒ‹áÙûLý–+™f­Næçäý-û!4Ò²"ÉÇ…"Uy|—89óñ'`¹JÇÕ› sÝaÀMèE½ü‚‚ó7e•ä=Á ‰mŸÆ%ïj-)a‘zâswV=Ð.q̳ì2XL–Ó§¿Ÿ(ÆÛÉý â)JvçšÙî§ÊLsÜ‹¦Oƒ…£ÝT?Œ U9õÎuƒu¤îœÔäÕ`  ž½ ã~ žr¡O<¿v'n˜YŸéÿ¶/!l)ñƒê¥­²M˜öh¹ô'i¦ß”¶'ÿSå¯ûܘþÌ—h{üà8z›XÊ8¦÷…éž:vkeP=×™lÂÃ@M2?f4ÍÅÚ[Ð=%½¹•û¸¿¹74FG¢_¡µq>¢s:ÿÏíÞ´/]-¯}:h{Ub:„ÖÏÝâ`g’±¶Êe½ïá=1”húÕ0%ç÷~W;ëÊ‚ïÞ—%kžœ“¬Ýª¶¦¤–ÈÑlL9Ðê6ís5úd' 1´&䂎–ˆÂn] š¨yõϧä¡nÌ»»‡zZÌ!±+K'=÷GËlÓS‘¨—Ô›GM6§D2~ ¡œ^æ=&ë›ì’™×V·ÁLÒ™¹)^ ‘¡Lt%ìt²ÈÞXæyJk¡èu ±Ú +}Ïèå ÐXG¤¾Y I?‚ºØ)Pºû¿Ø²#‰2D.ªÜ±» ý9Ì ·n ÈI‡Á²Vì3,îjY2—•!Р¨‘Bíá­!Çb´Úg|nê.ÖÒª wRy”þ±ÍÈnñ G”VF‚OW »P¼Ã–ãÂë,0rû1έä*æ§ïÝç1K­Þ©ðænK¯.å´e·4—•™oZeãlËs˜2¾Ÿ ÞÁZ2ê4Úgøù§Pµœl»ƒ¶˜Ò–¸."³BôfÈ:󗨱_ß]ÛÔf&ÙÕC‚p™/ƒApEPý ¬ƒ³]áÙòH pÞò6S|( ¶Ë‚5ÞvˆÔÕ'—²ZöBE&É­ërž,ßXõ:¨dñš°Ç`úV‘´>D~2¦×cF%uÑN-ж9MÍ 'Þ ßÅÒr@$+eÀˆUªó¯+ĆUŸÿ¸;JA.+U6`€&= b}_ÝœN…§6†ÊÚâ üi÷”Å‹GtñZþ«°Ú†ÙdúF.“Ja±lÿ‡"Tq{3Fbƒ-.BtÓl¤«SìÔÍ5›*âYapoe|‘™ß£íGå4 ¹ÛÔé­×ÏᙣZ Å²eSÇ)vSу÷ª9Æ$ú럲"íL!~dkx ,¾ ©,-5Œ±èD{„ý5še^§M)Ð1–àó<"}vg·`,­ã£Ýl¿YaT™Êä…ó^r¬‹ â.kÒ|Ñ,Îvç¯mSŒKYy8½´qØaÉËâðmÊð»ÔF1/FfÂ._¡cNJø,Îfmqp*â–Âø6Â'–7INìý%äÝITé×!)¨Ød+Wänø~ÀäQèÌä#'¾œ“F—{í•#%6åYì§V=çkjœ®Û`’FÂBŽˆ¿«Hd¸TÒ ]´/T¢ì'Ï|;9Øt‰‚¼‚X? (™”°´A;Š—$:ÚoGµPЕk)M{¤p¤ß§õSw!?Ó™øƒgÿX²ú|8îIg˜÷4á[ôÅUŒ˜ÊÃâ¾`"$N4w=™[·“Gj$ÅS*]ù±\ÂOš´V £ÛÍ“U¯:êÏNd“Á8¡Çø&j-}u}0JÞ¶Ë^eðïÇï)T0Ô6 Ûx«k‰…”úA4×ùlqv(úŽ–|ûè%+‚|ƒâ!ÃÍê ëRäÖ÷ûƒ- Èì SB…í´€ÃÃð>irRü«-©ø= CbëÀK´ª»VuÖíù¹œ›DúKDÔ•Å••èlmTsç_|Ïó"VÂÕ§lR25l(ZÔÕ QÁßß}®éµ¹×}91ÛÛ&a{ï9ÂE55îbl}¼¡™xFÅ0]ט*;#JrãÆ‘Œ€.?iï¿ ž#ÛĦ–oŽÉÊY!Ûž Õ—W:vð9š"¤°VíJî§“"…‘rÖÝF'ÀÉߨ(T¤²° ¬ÃMzÓ>!«,“Ѱb¸/_§¶ÔhqCÉv'2Õâ…ªµ(r¦×¼8·ûü®ÀzøúÍšéÞÝ=fеÉÍV¡8PG«ë£ÙßÚ|SgIY!ÎÕ^ÓGΙ¯þ¥Ä«ô8Ý›üoQ;­´Z¢€ÒBÂ$w#…'ø¼M‘¼þMcD_I朑:¾–A0|’ðÓ£¥‰ E†É¾ñ1·YÓžÝx@U\JËÞi>h¡s¬O£–zËkH&žQÃË™'™IÕ¤ä¡fQ¿œNËCoEÿ}Þc0UÄÕ´?˹?k<ª Å;ÍU03€_æMªÀ"²Ü&ØLÅo¤{¶ƒÄ¸ñé#dæ$´DRþš@`æÕŠ %|Ÿ=úÇ»2xì8HHò@­†ÿZ’Áls—J8“1b:MƒG :­þžïe[[ª5~Ú袲´µYàçnþQî§ J,'áØ$3=—òâZÖ|¤ ?§í79£Ø ãfGÌÐ2¶ê.ýØAW41]¼e-Úørb§JH~'z§^HƒbùÕ»‹£0‰Œ•_¢Ô:›Ïa Þ„ÑÇÐÎ=kÐ…?§9B”Ó“Ä ­Àá|±Œ§êÆ@–YˆìWŠÅ…òd))Tkv²®Ìkº„Dl¨=ý$g™Á+ꊆAþÁ­ŸÇfñɇ‹±Súœ"ÀXÍsìòM²qSÖ@‘å$¤ê%̰Ä" zžH·4Ý=“A.¹Åæ87Rá‚ÅØeEމ;ÆVÏôÛ+ëïZRÎÞ,æ5¢ÝtPr‰éT|âYÇdã篴£iìeˆ7êÒ}âoÙú ©CZkÊØ´¢\Ÿ; Ž Ræ–—Œsõ††:@¥\Œ> stream xÚvT”k×6JwJH ¥€tHwww  034 Ý­t—” !Ý")Ò¥ÒHK}è9ï‰÷ÿ×ú¾5k=ó\»î½÷}í½u-V K˜HuaådãH©hrò88¸Ù88¸0´Á.ö ?Å º 'g0 *ø)'¹ËƒLÚÜåÁN(ºÚ8¹œ/9ù98\ÿ1„9 ¤ÍÝÀ–6€" rÆ`‚9ÀÀÖ6.ÇüçÀdp ð±üvH@@N` 9 bîb‚<œ4·hÁ€` ü_!…m\\ÙÙÝÝÝÙÌ!Îl0'kQ&€;ØÅ  r9¹,¿ ¨šC@TƆÁж;ÿ!ׂY¹¸›;{0u~ðp…Z‚œ‡´”j èÆÊ°þì €“ó¯pzÿ †þv6as( µXíA5Ye6€9Ôò—¡¹½3ìÁßÜÍlonñ`ð;ss€¬„Àü¡À?Ës:\œÙœÁö¿Jdÿæ¡Ë2PK)‚º8cüÊOì>´ÎþÇÍÚAaîP¯?jiõ«KWv(ØÑ¤ ý§Éƒão™5ÈÀËÁÁÁ'À 9@@ö_áµá ßJÎ_⇠|¼`«‡"@>`+ÐÆ—³¹àâä òñú§â߃“` º,@Ö`(ÆßÑÄ «?ðÃå;=FÜãpüúýõfò@/KÔþ·ùïûe—ÑÒÐ0”yñGÅé$%a/Vnn+/@€‡ÀÇ#ðùwusðŸYpüíªµ‚þHö¡KÿIØíÏûgüs6˜ÿŽ¥ { -Àø7Ç9x9€Îÿ3Ó»üÿþ+ÊÿÆñÿNHÖÕÞþ·šñ·þÿQ›CÀöð? 8ëêòÀØÃ@ÿÛTôÇ̪€,Á®ÿÖ*¸˜?ÌÔÚþ¯6‚eÁ Ku° Ðæ²ü!×ù5dö`(Hæ þµU¬œÿ¥{˜, ÝÃæp~`äoèapþ}¤ ³ü5a\¼/æNNæp Ž"qñò¼8FÑäñ›Ãv6(ÌåÁðPžÀ æ„ñëFùøì*¿D¿?€]ó/$ð 3ÿñØ-þFvà_èWæì–ÿ€œvÐ?àCX«@^;øð!°ýßó!ôÀîôø“ëoø¯6]œÁo¢>ôè?ø÷Ö<@@ŒùP(ض:¸õ²R‚ÜukTd’aK/•‰ÕkÞ©Íõ'jSEfàŠÓ¹DÒ§n¼Å Æ3ñê[¯Ý¦ZÔ°æ–kï›Wqšã[-sŸ‰ûÇ v%jú(Ñ)XµÅ·½o½uì›u(2¼utåÇQÏ#¼tï•ó¨é+ù2:³¥±]ñR ó¦d‚õµN´q@ÑC®EÖ4)-Š +%3Á‘îÔÙù$AÎØ=µbÜ Ÿ½×Ü…^†«\o®¦=—Ê´¹œ;ÉèÉ I)φǟyI~KV$™õ*~…×È6Ä•w«˜e²1§HÃhºåßãe;ªÔ…*½w¾ùÌÚ6´}ávä)Û*U‹µ­b çÑ%Ò Ñ €%~Âg>Æ3<ïð¾œvÝW/J'[øcs´/7E¾yâ”B„Á(¨k˜]ëÃâê¡5WÐÕ~d'ÓáÔÃ_'i€o€³³¢>)–$·÷ù‹z_;îRF×vЍYÔ+´­-d¯…p —Ñ3²Ú*ë×cº…Å*ò×è6gÇá†rm‰ÀãhíJýµ” k;G,y’=lâ¸3¯ò[v ¯ðKÑËPÍý+¢äîgzÓ;g<ßΙ=Öm&ZWxÂê(Ü“°ã…³¥ùgŽ ¸uI¾¹¥ÿp«@Åvrû¼®Sm¢"ÛSÏr³²ó±Y¯=:è˜E»fšÚâ#šÙ2Û ¶ ùËŸøŒ–?)4Ä…™JfnòïX‚):µ¢.ük_äX›.hÐ&Aäü³˜ü(&×jpŸ–u¿’@@%ìó¨S³ÉXïý˜¨=øš1¡îüUb]UÑšÙ°à!£“–xÚé“Go+nÕ¤ ÃÉX7G hb1èÎä‚U 0´švÒ+¬ûT ¼ÕùÀN”÷¸õrÛú+U›úÞ3˜óXT£oÀHÏ÷&ÔåˆKÓö'qÆý˜·… q^‘rƒ‘W¸"n󬢟°ˆ>ÞøŠ7¢FñÒLFLŸ®½i«AçÁx{<ç>š¥’Ç.:Kç"Ví 3?“±´: ‹ŠÌs&Íš–^F#Äcõ‚›&i4%n@(p©ýÝcåpdüV±Û¾eax?ì4]|r&ëùJÁýíàœ•¿øõöª¿_ù ƒpJŒ^…l›I¨BåØiùÕKüñ¨Qgwš±DyR5f•Á ÚÇU¹n’„ÑgúÖD™¬Š’¡&>–ã1’ 5OÁwmÐîÄBy[¡ÄhW Õ`-Ÿ'›!~ïóHM µxñ§˜3Œ•½Rª|5Ï-fŽœ/-”i²aúº7œDÔ.ïN·ÈiA.ìUÌÇ%WOÏCÔ¹62œõlÁ¿¶Àá½X3 J|®wBê7Ò ÜÇâÞ.ò!ÈO'(>»˜ÙuéˆggóYq;«H áŒÉPÝÛâ–T±ŽBv¥ä9ÅÉeÕD11O´Ÿ›T5Lp$-,Ô hÎb­¿šíŠŠ›–“h;?ÀÁË/üÔ’Tì^¤g Ý½Ü´áàBóÃ{jÔfà*3迒Ϩ¾ œ·ÔÈÍPˆo“¾O¾ÌgË¢æ1Öp¶˜ªí޸Юԣ¡‘äóüD_A§!ÆÁ—¤Û?~&©ëýmÿD3¬åÜaqŒ\e'À-ñZ²Ø?½§fÙêH\‹Ì:]¶@²Žë þ˜Qæ7”0èÏB]¬PIyPÑ-k'„u¡IÉ;³ _öÍØ;v†t…z±CÛóÑ‹9¯?H/“CiH:T;­³f!XîóÐÉ¢ötÐaʦÝ% ßlÏkî»»NÄ»:5« I¦*Dq)+~¶l=¯åõrSïB¿¡×JV]DŽ„Hj’9ÐÙ´,¡àãìt¬+½Z ;ëP9=Ÿ÷Ö‘Ž\N+ŽbÙgî›?êšP÷€´gW:Qí&Åðf~òz¡6„5W^x• m„ 7‚¿EZqyÞÐb®ÆOnʃDíYËb`ȧ>ƒþ ‘Uüþ›Y‰l8j#è‹®©,d1B$ÿ ˜:àçÏK”è¢t»a¶óÃë-éwŒŤK<âú"þãÜÀ-÷KüÕCµ[hv´Ý—Ö²3o[€D„îžm¬÷IÆÏó™ãVtI4;Ö¹¯ßž>ÿîŠôZc¿o'ô^‰T¥&ÓÃb8­­K êQ£kB„³¶ÁBþª$ÄÄr©[øaùç³’³˜(‘»ü¦ól×&ýQMØÉ”Yê×嬺WÓO Íè ÙE=ë-øæ³oŸÛ~U Ca‰ oÁ¾ñ\ot·³-Ls0‰ë•ç?WÕ)ÝaŒu)‘]<¿ž/º©ßq—cCfœ–Tq«lavHáõÍuiÔ±OcÂWš>FK|“¹~kÆMµî ¢Þ¤wîqí·k:k\r„H“~C _©ÕÏ ‚’æËÍB0/…pÆÓíŸf¦ñ¾|Å¥"¢GòLÉÞûóìsÖ–‘ù’Q„LÍ*˜ ?>ú˜ÆÖùÅfCR³pUvûS]Œ9ŽîÓpM‘…ϼ%FM:=®Íâ ·hö«8#ý”ÈÐïi n i¬y¦u_Ù:™ZDŒ­Õ3 ÊŽáL{ux$èõÌXábFíÖ Ÿ¾DÑFü,øbEÚ~)÷T&L¼v.¶Ê l¥ˆôÁ1¼ ïÕÈ^¬~Þd–奿¢ËuõIEX°Y{/ ‘Jý°Ã¿£!U™>5ãcr@Õî^1Ë{?âͯãv3ˆ[ÿR\K‹9¦²[eŸö9ÐoŸr͙߾°æï(Ky´žƒ@¯>#ؼ™|OFêöE'L]ˆ p‘$åêζÕõoÊê©nþôS”ÆUÎ" Ä€À¼y†5ª½8‡p/ ËizñtÚ7‚Ì}j1ßA Å Ý]ªYäv«¥;¡ú9hþöÍçp±¬Õâ¡ùv•’"27ÖÓ Pá+9*b@CŠ˜X­.ÖkûR9#Ú¬)!úN¿Üb”ä=Æ:‰BŒø ÞúÐeíÒ“N«±«ÆÓtà°t˜€B ’$ÚdÞ…»TÜ…-š=MŒ°®¢ÉÑ‹ån)Û>^E,ýÙ-¼™Ÿ†¾¥3ÏŠk"jëÉ‚¡\ˆ†®ðQoW³ñ5nÿ/^ÔEЫóé™öu®$ÑáÛ £‚—5Y›gÅñ½†9BÎZ²LžÕ%'êû–NtX.’©Ê'6ø£»a§º‰2Ž•ë1ä¼ HìÚê6êëâ’ŽeÝ‚êpÊÕç(cGŽ ¼—]¼UÛùøé9PŒòb½Ñ´öÐ][hÄÓvD?¼lÍ,GL}ô¤á4ª%ÜÜz”jW®S+nØ@ô‘œˆ×ÌÕ¿ÿ¦Â¡¥¡Á¡n±,mÊ,#Žj¾|Wi\ic­Q’à$¾Š" Ò;¹~Ph‰>ÓûÒtÏ‚x ôM¿².pE—ùhü$…¼ºLF ôªºè­T '‡µ‚Áï¹äâò|X–áëdWº>神üˆ)WýL²ûL‚ÈT×ÉÙâó‘x•ÁI ©ŸúÜíF(¿Vã>y¿BX–DúP^rŠˆ&Q+Ú;‚¡ù$/(Ýw@ -&TJ«E¥³ªùì«@ðÎ7ddEy¢¢qá§rj:<¶–å­5–üŸ¤)¶ŒÕ×À] ¥Üë‚)êõ)ª¹|)¹¬KKúÊ5«y«ì“Ÿ6S÷žE‹MOÍN­=ö‚M¬Q­ß¡ 6-Bž¡Ï¥†|vÝù€MãðJ,» è¦ïÏ‚>âk^~K]øQø]ø ! åɱŽwÚ©¨dyÞ¾–LûJ ÈdzÛûeƒçð;ÿMiäž\û×(¶f¹&”Ä8úÚõÃ-ö7]Hî EÁçăŒª"Œ#Ü3½¢9'OÍß¼ rU—ùòî$)ÇÒ{w]q_¯'ÃEVNÚbr§oÜ dÔQš#>Y¯=R ýŽkýýDœký»£@½]íjõˆœÑÒ½ŠYLZ*Ýèoþüd½ K ;œ„ãT5³xEJ¬®iUÕ+€Q†2ªÎRVX¸_%níÛ™w+&Ÿ¶ë •…^q¤%p£è¾/ ²hÿKä¶z#[âàÔEÅ’œÔÛ^bûüD>&{ݰŒõ!*|<ÆÙºÛÔŸDÎ4Kì°Ö;ƒ4”O†‘-g¥›ÙbeÆêÈ‹ñ_é !×qÃjߨ `¥ dí2޽u%hëÐw°ÐNG*k®²¿+ ðc[ª; þ9ƒéГã±²îQªõâŽ;j»_¼ñÌeϦ®–Ø+ o¨51¼#*㳬âտDZ ’PéF¯š èCºÑ°ÃÁòPNùt³-ñ&§A|è\ÑíŒp#ÝY3AÿjÚ£é–'{ÿ&½{_ŠÌë’H"ƒ5{9„þÝ˼´ßu›×´Q_ã«;t?(Më蕨¿äDßhÊ$sûº:ØÀ“ˆJÝî@ëªÄˆ µñ á¥Z(䙿Jшúçm\æˆf%oŒhŸ”ð>/&=Jt×Rg¥ë¦s/BS'í*GŽÑ¬ÍNmKFm6É”Õ4\bÑÈ4 0ÏS¿@ëj‘(² V])¬QÔyŒ5Uèò|×é¾÷E¡=ÞU;ÚÌ—|ßcø´ùMºéÇÓN#L³0•äBÜ9ìpƒ/2ˆJ›ª¸?~%†Þq@«åš%›ÉBÈ|òùit5;tEÕÜÀüéþûÆd™ŒêlÑ&Ùâ&­ÃNk—-cÓSáž]$¹ÅÔÜɳ¾À '™êöåÛÒ—qSP©ÃÞ•NâW݉ý/(jD.4ënQ!$­9«xÕ'ñœ‘³ ò2‹A“>9‰ÐÙÐçÛmÑ}ײ*À#eDkèÞŒºñ’ªÛJV½ ü‘¤ ©ê£q;ûhÑ€1¾’OøÜ¹“ÁPŒfOcŸì˜<5£ÍÚ²ƒ3ÓMzLÝ<õÂbþ1dß–úäGýBUÈâuÞ³™86Ã_äôI?éX9%ËM÷}²Z‘öC8<òiËCÚ¬ÖQÃݪØ!¹M¶äKãU £âkñçˆ>Ÿ»E$©hÌnŽ™öóÛ­îÔØawn'¸¶µÕPÁÏ ïÙ…“…ƒòúǯ¸ƒ'#¤2*Fqà[QbÔýZt8ã èþZ‚Ñù¾àÝyÛ1Ý×}T¹ŒÕ?~æÙˆQ¿èÖµ¼aåKoLìz+dõñ1»ä¹™PuxFÃ¥d­ØM„ÜÜ!móüc‘ f ¸JHô4¶ù­$½þ~T¬ï2†Š¡V°ÄÁE”,)?ÛåRô3N X(] M䢤JÕé]ÿú¼ Éíl˜à ²?ôg­´câú.ÊJ>aɔƞ¢ÞhúSíŒÉ:¬[«ŸAËôgEmÏ9”é&y ö‰%Õ¬ç“#ÙYƒ_)=r¯IäÛŸ² —w“F2Ô3îäiè(wH@jÙk̯¹¦¤ãÌîAḃno¿0™©»óòë-Kž‡Vp ôàæLÿtóÃõö†”.W_ý³±<_.9¸87NajKá? ›ò^0:´H 8n·Þ+m#J¢E ¢W³âoÂKuë$ã6¿N÷“‘bÁæ87³W»Ó^OQ¿¾Y ­R1Â7å'dø±ãÀû©p»|+²æÀ}ßì G'‡.Žüê-®Ç˜gŠKð‘ŠøKÚÞD Ûûƒ°yOɤDd„Èîö‹¬Àé\(¿Æ£üpu䮑ŸÇ¸ô›È˜6Íý®ù tàs)¾ôø <<{•©å0“yùXú&û~GéÊDÌþl)T"PÆZëKÓ—#ù¯¥I¯¤©” HR>0ƒ"juša•e‹Q‡ÕP÷?ñ=þicýh=õæ¨Z Û+À¤%qm„ÀL` ^â”ZYœ¼”Žm4xÍ|§9/HSô¨)÷ˆ£d–!Ń?Ž8+•Êáä&^…vÿQK‘Бô$Q¯25Sœn|.îÎ0ÄSH¢ )4g«ß¤¾ Ð-ÚÖrsÆAÜ¡½÷ªÞ=`Õ{û‚®Qåb4KõÚcz$|‚á&TXӤȊF^|ßYq¬cDª÷¼ƒº‰§ðË]‚kî•Ì”ë™Â8ÕÜÌÂj¥Ð;ŒÃÐýÑøRÌÐâ¡àî0/vü©ò°Ë— v5âϵ÷éÛ\ðb´%¿a†c§àïÏÊ$¤Jb‹€mKn†ŒÓWYPá·ÞÊ2ùg;²Òs‘˜«ÉfUªÔël1÷R©Ï CÑE“L•ÐOW{µ²•Ò„QA¨e Aïß­«ÎRv«ôŠêEi@ÜðZ‹&õ~ÒæÉAG2†l5!‡S6Ï>m«È# 'iL1öiáfÔ"2ˆbu~Lv>¼läƒN¥Ø" ˆ—Ƕ“_£#›;Wà;x×2mÌÄ·òä²)D¯xÏÍqØjLMå»]ïªÒÛkiöó0yVùQ.ÞÏöS¦ÌIË"-`ŒÞ39¬äyV²§ªp{! 2a•­³äçr‘Ø£:ÌÙçÁÁ»þ¢¼5oØ Ì9X?=þP”umìúègàç°íK¸ßáåÇÏr”J¦Žœ´p¢yzßh¡5ž ,‰˜V©s8VÈ’-ĨŠ\^ÙQz·÷Q[ ÔÎ¥š¼8+ŸñJ–ØDWIÂe"!ÓKœì¤¥CPB;g$ÏÒ!€=é’‹%kÍ·iW×î(Öˆ@fRv Â+†9Ö-7‘u®&ªà0©ÜpíÈ—èÏÕ'~÷˜.x ¬3(@ZüjyýéLI:ÆÝrž³³3Û:3¬—ï3ËjˆrÓçëýh ouo˜ ë™:#eöüÖ¼6}óÖaslnª|À<ň?WVä¦Wdü ìÈRUÉerúË…f’Ý*81Gø6—}¯c¹K‹X‹KÕ„7ƒ²Pʉ?Ïê.úý:ÅŠ4¹çÚl;3OíÒcïM«üÔŬ¤é e%»çb:lTnÕ½qŠE"|QÒRxç9çÕA²ɸ¬(ç;ª0«`FAQÄÉ|)­”Ž·Íopp#IíÐt‰ot°M/´sÍ*Š…füäãçˆÂ׬:L&åÉõÂÎ2ÞÍ\ ò=S7¨¦²ôù$íÐÕø$ÅÝ#¥|›þ+†^ã­R‘*`‘Ùþ‚¯…xa•ŸöÉ ­‘ÇykØ|œ‹Õd-†©O—Š»úP+vY´‡ê=Y,Ió«Cļ@Ú5ØïVk•Uæ;üâ8sp¿O*ÁÕ":…%œ°ÚF%‡£ƒv–eŽxØâù‘Òb7ýûÊÆ0/7vŸø×(CxØŠ6¢glæ×çï:¾=Kw÷ãš}ž?ðBó††&—yµ;>xÖsGÏ#ÈÆ?í¨¸ÂR¯X“ÀÐdg™j¹ÚßZ©ÕóÙŸž^“ &úÆæ¥{ S¸!xnš\N;øœªíàú…åí"‘ùºïŠæŒ,a¬-Åj;çžj8ÓA3I?…VÉЫ’éîû f|8à$¦p¡àY–¦¹ºzh¼nÎ=‹•€áLº€š7«Áàïv…hžŒxújMyá,îdU餼§6`VÄË·à“»™wƒñN3%V"ê(£…ʨìä›w8 Ј.jÚ3›˜/%·¹9ˆôÁýWƒd"‰™¦¨o5xI}XXrga g÷2]=;m¨Ü0p;Ÿ–âųu ñWAÅA?…îNxÛ¿[úyõ, 4!Õ4S… #É~ÅEv쥹c®áEWoV<ì)üæY0\;IÑÙEÜ¿Ûi¸€ÍQK£öºŽs^׷ܜɿkD,c¢  ¯øŽüh;!Ѹç°\¤íXÎWG8”$°ºñýY}#Q`öÏÉ…[ÖÌ—–YdiS)Iì2Ž'DmÑ$zðàRVc9r’ƒšò ²]¡ïÍ Š¾c!•F.¦‡Êí»pµ†w‹(YœüŸzÆl3*cÆ*Wªî§Ð>l6¢¨RVå\ù 6à«ò?nl3” MKtT±Ñºÿ”š ZvBÐjCß~ú~lîsÞTz­Ù`MÀª£ ì˜qò°ò†Ñ°³ž½>†e•H½¨:rí—0vžŽm“¢ÎhM‰ÒyÖKÚëñûÐ`´D»ÅÌÕ-öð½?µ£T•½_[Ìo°Úêu¼‹ìIƯ^××BGYKvŒ`0tÇ­w¶fR6»#‰ˆþêKŽ‚Äi&ÆBë¸àŠ`?wmûQ°ïËd_Ü‚Eu„ýlM1›mÖÃçï*ûØ`Ã(O¼õç/ûôæš,WÚq$FÉÇ$ž0¡>ÕlPÏ!Ééív1†‘U6Ê%óo>·$C‹‰O]ê›/tÏS÷ч’ñE˜øDšâŵ†CÉß´ÿØ è‡?GSÓ*e04æÌ«Æ秉W“lÿÜ|ªì5‡k ÿ¹bʸÍàĈ4æ”å62Ò?Iyžœ’JAlœ u9´ÅŒÛQqÐæp˜ òÉ^ :¾×>¥úÊŸê(uxÿ#ÝW»Õs"ᙞߣ¬Å†Ÿ[Ééî~sž¼ ÐO5?lo8}UÆì³Hqèñ=1‘gHF`A *ðŠj. ú[6†ØØðÛèfg ¸ D&²‰5rå¢P…(ÍÛ0!ü ´è™e“Ýk|÷:¤–%…‰à6 uVtšh²j£ÁTfŸQß­y«§…ÉÓdBŠ0Óì~v°ÆDñãúq5‰¨E5{þêiNÅñÄù%3›ˆ»S#¯xf6We¿`×GÁ\+RÍ$¢•±ØÙÍÏ‹R*ï;ž„>ý‚º´Gè+¾S´¡q’XÙûØ%üD|ú©ùzn—aÒá1¶Ü:Í··Ç¢".Ë{Å#2Íõþ^z&z¡ßËdÛV(hO›É:<ÞèÕÉÔ%­¥¥³{+Æ0ðå'áèA¦$Ó?+©žWo\zTiW"gsV»¬bÈA¢‚S¶‘E}ÓœQ'b6ÉzÊæìʧ—ݪ¿ïÄÚàèå{¹…´¡ƒ"ð~;Zß“ QºÈÆÞ;¨Jñ䵯ÇQ·°ÏJªW—éš¿†CHMÐK_i÷~S¿b3gG1ãL¢ˆ±.‰Åß^îœ:íVí‹oBðš¥_GÎáL{~<÷#U x_ Fr{ŠæSMåFâ§$·ÜHž½•Ðçp oáIërÍ'c™)¦r}ËT0ǺÊaG)NÈx‰Ç¯xü$À×?^%Ÿ¼Õþ KºþrŸ,E2mŽä§xðÌ÷hrïI]¦ó\NuïÏ‚øcüÒ§@Ò½Æb=üIî`=*ÛÜ¡*4ÚÎ2ƒƒ9<Ä.ѯøÊUá/òÚšîPÞ‡Œ§³‰¼£÷ã¨P¸ÑíTûĤ§;¹u+lP·¾?S×åÏP%:Ö—àþ¬¸™BYsΩ´¼¢Ók{óTu[‚”QÞ¶J˜hZÙ¥ï:é™2@ÃÆ £hè)6¡|î@í^ij@ÂhvBÁCÙuÁЦT¸Ô2‚.òÏóÒ¹d·Úy»m¢(­¹°‹O^Jòé Ä %@³5q8ZCW7z™¾ÿnÑÂ!‚¥nî}rG³ÁAa–êhIòÒO®"Es¡½š»ðf¥dÙâbÔ÷êû®/ƒ¥ë$†>Ë £1ĦÞˆSŒ³ZZW}Åvß—Ôp¶+-Q¢VQHIñv| ÿˆWa]ŒÖ¢¯£þ îôEô$k.+ä'ƒ3gŒ›Ñ¶ Ý×ËãrXÒ”žO°ß2GÑLö ¨¯ÖhGL[èiˆ{¨]¿ìÿŒ†$@6o†Œù £p¸˜ ÷ãËNW6äzªÆ«YõV»¢áÂŒ¥™ ¥…„ûîxÔ%«ÿ‘¢r endstream endobj 109 0 obj << /Length1 1426 /Length2 6511 /Length3 0 /Length 7483 /Filter /FlateDecode >> stream xÚt4ÜkׯÞ{ A ‰^G/Dï]tQØÁŒÞ£÷¢wÑ… :!zôD ‚ ½“ä¼ç|ç½w­{׬õŸgÿvyö~öoofF-]n˜HEpyøÄ²ê:¢>>>>~pKwáêòóùߊKx@ ÀlXìÀP¼¢#aíÙyW°'À„I< €ï×ïï“’[60(ÄëóßÍåÕ72VRSàü]ðߪ§Oažna7¿È'ÂAüþEËüW|ÿø*Cma±?É"_é? »ÿÕ}¶¿ƒðïX0$cA¶nÊ'Ägüÿ¿iþÛåÿÆî_Qþÿï|Ü ßZ¶_êÿCké†xý¥GòÕ ä¾: 9Ðÿ6}ú3®ê °›Ók•–ÈÚAþ~D0\ì ²Ñ#¬íÿPå®ÿkÀ `(H ÿZ(n ßéSeíˆ\p$«@È¡ù÷•òPk˜Í¯éâXººZzá![Œ”„>@äÚ€<3ÀË…!.dy~[˜+Þ¯~ Šx‘kéøGð:CÜàÈ8¼p;rþÿF€^„½+è'dr¼Øoù_ÙY»¹º"gó7{©ÿGþ½@ O5Þü,ÌZ"Ä¡6¤í¼F†Öƒ{sTrŠyóY;·Ï¼k»Û%v {uÖ‹×S™”Á$Ÿ¿È³H/0Üø|k®Çoy©Ýzå{m‘¨3±ÙŠ÷iœªo¬è›L]/=.·žô–A#z3ê{æ<7Q"­òsEϺÞòÅá°ÙMí­jaUüëòIîXýÓ ’iæ|«ìj&,7=Ù¡'ñôÉéYîØƒJ"'žß^¬ÀkãUþ¸‹ï¥J=~x'Í#cjzô²á Ÿ§Û¯TîÍù”¾^qN¡jYsJB¶Ù¼75tÎ]w~š³0‰³ÑPó¢S(GǬ´(%9•0&a f~VYñTþ)ÒlçÒLßiBDj‰,zŽì&êÒÚáÂ[)´R³S뛪üdžõ\Êî*Q=F(9{+̰~â]I~Þ÷/o`H§üš­´î ‘PÂfóLÔâÕ¼J¾SK§ýÙ?«{®Ì ·Z¦m-œóH¥ÅòÕzîœB¥a­IÙô¦Jf¤äääíÓƒ¾/ÝLìzö‰Åc沤Ğh¯¨Ùt¾x¥puÂÙ9•V¢%¾8¡|à¸'õõ‰RV;Sø0³Fl«„(«ÕÑŽ"y¬qwJçK«~›UBsðÞ£ª¦Ã–ãð}KÐi2<¯±gy-X"î÷à®Z`Ã/“^Ýý½”YQã°c®÷×dq;¯ÿóñÈ3¦Ì=tL’M~Ñ…0 †ÛLYñ…õF»­ÈÆt`ñðOþ¹‘û‰ …~z¢Û¯}„eÝÒG¸,ž”ôT+ud¢öx!”ó>v–õBt+jý3¬þ’šÍÇjÔÖvçZëowÝÅÞ* ez_R2“¼(?' ùÞDh¦òNYWÓ„w|ºÚÝ5À­R%\O2onê o}Ì®^Õöå1šÓ Fl©Äð×W‰tIÄU~š6@3cÝQНœ´‚mGk¦[ØéÓüÔ#3µŠ·íøÇk!@»Øáu…“Ñ ¢ïË΄©(~?c|J›RÒ U4ÊŸŒÌ¡“F‘wÐ>Ú;] %}A]õo¦ÆÞ6ÎAA£+[HÛ/&.âÖ•ëšp’B­ß+ aÅÙ» ‰è(l^/%7 ãÔ™§ P¼qÎñ’»G§4æîéãHf­F…QpôhÛþб4Iv¿‡2·IaG]ÃŽM5j.5ÍŽ±×"%Ñ&­N>\¸ÿTc¥R±Ãð$^L¼ #D‡j½™×mû k¸(‡iâøí4&Þ®ßä‘ÕÕ}DþVßœF*ñðãà„-TSÎБ³Óȇžûú(ÛÝíN-qí'Ï^[:Ö?roÂÒ)§˜ËÕo!iÉ%É}¼×¶Þ0ÃcnÄò6m1Œ.¶L+RDx1ÔÝڑز‰W-êÐáM£<µ¸#›Ê kº®ˆËЄŠÒþÔ±{øJB®íÕmÎ8 "› gðБïüDŽbÖË’í™ý¬o«Žb µ³ÁG ¯‚û¤7¥¼bœ\ÜVÍbÏÎEÐü²çvD¤ûß¼gÖ ›éš^ߎL•Ý×÷ºÑs¾ìDÌ]5ÅEþ°¸Ná,ýj)< /M ÿJň5­™ x8 ž‹y´\gº*säìú(ÁC(¹Ô”xÈ‘aº9Û˜ íC»0!:{î?£c,È îç…£öå(?¢5)ølÄ¥Eöº£Wyá Æ<û·¼ë–²7÷Þ¿®ïõ÷ŽöŒ~_àô2” ÛðTÁ *ùTV^ÓS%ìÏAÁ©8ÄžÆp°=Ÿnf<zaç•Ï7ìnÂèPëBŽM‰Ò!Ô‚ÕæJ? Ä òÖ÷l”Tº¨g‚›´€Îá›ŒíºØ»ƒk«ãü:\2Q4½«E›ZjAƃ¶–´ Pí‰k”±û´1È x2 CŠÏmiÿY¯bÖ…ûÝ"¤žÜç o>¢ÆDÈU-ÜÏGïÐÝÉAvv³ÂJ½‡LÜ.gm¿«;ü·Ç@óxtëëË…râU}'¼œÎ¸G¸¹†~dáÛ†*œz>»$Šm¯hë o2dŒváŽQ'f= ¿Éï_Xaö÷qµÀ=ß)ë¦bdöd“Ü1™ï;ˆl dÉt7ÀJOgÃ(Ð3?P=å.p”Šù1ø=c*‰gMÂÆ‡}fÍç©ý=NÁÊíx7}\|ŽÚŠm´5ñK§—¯%Ó3Ã_¼eäÆ{½>(j˜9ÂéÌ"xêN¹AÓpªiÞ|ûZÏÙ=V.Ô<5¢§›!&c‘ðØóQÚ»}N[Èñ†gR"Mþ–HWµä: PWø í¡+å¥:m¸7@pu…ÏìŽ0µpÄ0=T¶xyè3ùn.?Mf_‹üNÈM®Òü’UêË îÈ…ê|»ëò¤“ ¦üNûÅÔËymy7[fÏÛlNL8¨¨OñÙ¬\]Œ\hÜPÍF+”èíúç{P¨‹œEò^T‰¿Õ˜×–¡´AmÛ›™1Jùô]Û‘Í—rüƒÅY€n!ïÀЙ¨åKƒ‹fVØ‚;“>cå^‰#½½¶TüQ~9ûVTŠ‹Jþ£† ÒÀé!®ÕþE]3J–À=—ñaŽ]ŽÅAÃ Ž¸xp9$ü§®­F2yª‹1n5+ºtÿª Æ9BßäsäÚ#w\€z×›;+ˆXÔ3Š'¾'–qgè'hÒ&€tYˆH'“Óé÷”uð¾–±ná'G)“é2¤—Иò©Çb¼ÛÏ¿Æ:©ÜèT«îš—d4âÁïÈösEU]»¢§zíòbC7ƒUçR2‡(P¼c¡€já¤iÀM}@8Or“¡(ùc=Ž^‚Ã8·56d¹+/ŠD:Ó›“ã’y´;J›¾ØÝ'F¶¦»—føCwQ0Žr Øgq†¼j…±ÈÆû¼ÌϹœ¨*êÀ9{$[º«ëp JªúÈÑÈÒVBá¥ñúL.ÖžB%»‚Ò¥?½ [å8'?ÙÑmà©WíCÎòš2 Òžšå7«jq€äÍÈôŒÁ'›}øÏ¬jÌØµcIçl¡ØñCÎöA$›ˆªt‰QÓ„Ï1§¢â»\>µµ’7è*ÄòÁü&ÏÞȵøÈõŠ|n¥ë:¥eU \Î9ß¼z<:¤ŠO@9O0 ¸æzǸR(7É ð[¶¥ ÊwzJ«ñJt¡Ï“PN3ܳ:R¾•mJ2OñXny¡ª†ÅGVy©?½€2¶ëº9z¹3 ½]”óÆ›-ùLË*xðle%DÛ—e¶´e sª±E‡ÚZÀ‘eªm^%/@Ði”ðÈäS§ÉË{ßQ3ú,r¡•a<1•†Øæ'3³Sx|UD3_rí~nÐtYàÑy@×Þûì´iË4bBÑKÊší^*+½Š1Ö'¼¨!:J„ôdß5n¶ г…ã ™~Ñ+2bÀ†?~_—×´úª[£YjO=w€`Ÿp‡µæ£Ew† †“¬©»óýy¹PCuºÅ,2!雌ÆÐ½ñ‚o&Ò×Û¯Ý2 ¶ž­LS ´~”¹[ <‚ö¸¬UvÆ¿Qþ^$2ÆUéT‹öE¾d·IXìIÊÔu©ˆRØ}™ÔêvÐÄq•Ï—ñ7y±RSC…\ÎZ§z/—!£¹ø¶v9Ê·í+])RLé‹O§f§ä¼Æk ÔöÔŸàÉ/qõ ZÏvùîàÝ÷K$Š ÂÜ”¼üZCÑ0âIi¥zÀ}€Öue¾y`þì C_Æ@ä§¶?ˆòá¼Ê°-¯ª Cær?Qý4TMx:C™…ÒÆ·%…¹Ð¬ÌÃ[4JÙ²u ޤ'[Ÿ(ÏÑD…V¶d*]&x1I©’–¤æâû2üßccÎ’“ÑÂj²{âuü ²D8“®ˆ.‚ÜÇpD7—×>—ý`xOûqßÏ )büÓ/˜¬?«~'ÇÌúUñ7ÆYÿòX)? +â´&—9°|´À=trÏD§›Ñø‹+cá™bùc‘‚:ÙMNqÕÄéÝÈ—o×.–ül04ìÊ8Š£-[̧èI(#sA¥ÉïöÇ–7zƒ^ëu÷–7±*("†ƒ<Úe!˜û[å•os†]€ ]Ú¶y@ŒÕÞÖè1Ó”ï»ÒÚ2¿2 -l²õFÐ5˜ÇdÐÉÓcŒ×Ý07½e#°UñŽþbþ?³ž5¥®í°‘PPÏ?fÒFÕ\p`DF4fÜ”|cL<5ajÓ«/6ÅûÅ7ÿxÊ`¬]Ï‚Œj‰åþ#‹ÌJªPI`ú•7ù¨âœâšgÿ6/Z$SmCqµÂÙ ³´î1Gblõ½O§ÄóçŒ~ÀæÄW,Yd—¨ƒª{_»íSŸ¨¶?/¯rû‡¹0@ç=Ír»ô°”GÄæ´Bý^%Tà¯Ýä4£Æ\‡:| ËŠ *aåéØorÇò<°§(•ˆµÇR ëûTi]OÇ ¹ ŒØšæƒB;„ÅÂ+}Ó=ÊC‰1éNÜ}žÒGhS‹ãá“&ïùQÚ"qc4èâeç­^¥q‚·Z3 8cÎ+ ¤n~«Ù¹1oc mÉÉrï$-Ðspü"ç›?s£¤ÖÅÊ]…&«_>Öõzgj¥?h‚¾Öêè3îÔöŽkÔÍ›Tú´ Ž^i/â;ö|ã› wÚC3õpt`1f^û#]µ”ÀM¥ø‹ìÏâ&a§Ãç?… øKrÓxZƆ÷5gm·Çm¸ÚÁw”4šÊˆˆÍ«"eÍjòñ%öOŽ G>‘ûï$">¼³!øãt)/±¡YŸµÏvwA ªŽ£™t·OÍùcU=Âݧ/d$”—'ç%Bºï£Kýæzqƒç÷,'Õ^±I%q#Ô7n²x°ªÒ ][_Âýõôµ§²QØÍ0³È0¶ßW™ÔUµoK =Ù0ýøúmØêÓ‚;ºÈ~ÁA¦ï ‹–U³ªÔîä9žî8•Ñ}öÀ/X²æ¬±çÊ}üжՓù–óÁŠš`^Š×ÕÎ{œØ‡q©Gºð¦¸PÎqìc‡ræö¾µÙ«¹ínW—Í\•šì ÷ µ/jˆ»‚6ˆ>žÑlbŸ)í¥¾ zþ‹T×7å„Õ’’QÄätÖ˜%ç©»ªX° ÿH5«|ò=ÈÆiñÊÒÅS1a»QP]b¿ýaµL!W Ÿávv«”ĘRõ ½–&‡¼ ³ÅÔF¶W$9 ˆØŽ|øÑo9èDbdÔT7 ¢*/]ù‘ùVo‘6Ó4öÆòÑ>³ÜQYdet\K&eØäV³×>c„U‰Ãsž2†Æ”]¶ ±ÚÏë×6¸Œ%É|ññ¯xMP{¢žéÄ’ôæf¯¸«h°¡?/¶{ñ…â¨ÍÔâþø¢/¯4™iêa¥½#š I¢h^ûñ}t3Áíê‹°~¨¸÷:à@ñÍÓhcüUõáÈìkMú«˜ ÐñõfNàTPâ·n){˜ŽWˆÔRº{^O“ñ­4kýg§“WšÐ†ôqçœIÊÞ×Výç^#xü«8ù·þ4,Ò#õ‰à˜¼ÛsIôÑüÃø…Ø·®÷Fœåª}‹™AñQ ݽˆPïÞFoÇÀ€ 3o®H·˜À–z|ó8‚ ŠØ;¯«–¦JS¼üðzwÎBwÃ]ò–on²ü—èÊoòˆö°üsïÛ§'Á%ϙ؜7µÛJNó˜t´;wJt]€ž‘ÃÅ\_w€¶ƒ&Š/:Ì[ª[º<¯;öR–ΈŠc´=lT ;.‘.œ#}<ʹôÅ#+/ƒ×"è5§¡ÆQ˜Á¨ÚN§ž²”ÑÀV›£0CŸëª]i‹er8.ÂEò‚䫺dõ­Ô¥ÛWA{KÅ»2ÔÙWaEC…3é57V¢Ÿ|Evº¶w-ÈSÈzPe~ö¿ã‡?‘ÞwýäÇòº9=N ­šÿüŠ"z¬ÍFUNÃ64¡z#@˜¯/Pða+‹ðË“:A±•7ÃS·'#«d_ ßhêßéV‹•å°f°(Ä<<Ô[“6ˆ9nïrŸi°/#J2>– “ç¼Gñ¡·Z‹=Ù‚ÖÑgOõ­&7.2øÒ¬É²jZݘ©‘;?*o¼Yà&õƒÁ© )]wÂA7ø›T¯{vƒ"Z²Y¾ÇaÔ¥»ïÕõPGà• U7¯Uˆ–r½WxÝr†Hó˜L:@¼m¨~Öž*Åt8LT ‚ Æp\oe‚V©éÁÂé€ÞfgC‚U]ÏŸ}‡äÛæ»_Ë¿…d8Å úGî›Ny›QPG{­RòKoß¿ÍòS j¸žZ«ã ~Z¡¶¼Î¦œËI4ddѹTeïÁòxÈ0XH#žŒ†þ"r:¶-O`ŒZzÑê\KßänCÅþ"ùy[Ó}ì(Â4*,Å;Ñ™5YX{E«ZL&ëpµUŒ©ÄH×»¿ênÐù4Sá¿2RÙ8lÇ#ªvóE÷‚ oÖ¸‰É[e(QåCä4/n|Êó«D uêÔõc$žöéÊ}Š#ÂU¢jV]B ê‚.Ô”30‡ëD·K43÷"ÄGè86ÕC׋¤S ÷Óä® ¥tIÊ˃¦‰¯'‹Gë…–Rˆ#ú±.ç“3¹ ëÆÝ‹'îÍœ6—4#hX?ÈWºVÝ,˜(Ö§ŽžÉßpG.Q‰IÂf‡µ~|„ùSO[¶8ážT†`-Yû νº4æ~³† b瓆Râ ç*›ú‘üH^¬½eF}'A6Ïw™¶Ô 8ám”Ÿ9þ V9‚ûõhVzø_•XZm>v1] ©?z,<5š›_”&ÑÎ’Ó-èŒg!qo?u`ƒôAÐÎùwmÔ÷ H[+<ÁO§FU¼ŠXuЛ’ ‹6T(9ú¦ãB¶;bù-Œöù-Xëôs¼©h{i€E©à”S¯šaŽÎÏxû‚XÑ]wåRË£¡Z<ÞhŸ‡±ÙCÝT~x’±¸à¡'>oâ&¤ñ…»\÷Ò(’;¿OžÌ#ÚŽ0 ºÖe{+ÙP\†jýÉÔjLE¹lÂ"ðŽÌ7•AÀÞQv›îP~kZ`2­‰ ö²”?6ç¶M‰\ÏK¶ÿ´´^®Ð:†~ŸL«ög«Vuȉ˜ñ;)«Ï®\/Fœ+D wNwMn²æ;œ†Ì²œ¶àËO—Á?–ÈcÆ lÁø²‰EÍG€P‚aÑ+üHч{7{&jõ#ÏÜs}Ñ=ýĹ93ÿn+£uiî4mià!ƒ&ÅWk ü«•¨é{ïj̈…¶[±1[.ZÒ9‘øg^s/E vqðw8v(¤µ¤E‡H'žêº913Õu> stream xÚ¸TÔ[6ŽHK—’Hw# ÝÝHH 3À ÒÝ‚ Ò’J·4 ÒÒ"È7z½ï}ïûÿ¯õ}kÖšùg?{Ÿ½÷yö™YÃH§¥Ë)m ³)À N^.Q€¬º®/€‡‡Ÿ‹‡‡‡‘QŒ€€þÆq @.p0 *ú_ Y%‰ÉY"Du â ðòx…Dy…Eyx|<<"a.¢9K7°5@  ƒ‚à8Œ²0'O°­¹Ïß +€WDD˜ã·;@ÚäZBê–;#rG %  ‚AÏ…`yf‡@8‰rs»»»sY:¹`.¶¬w0 ‚ƒ\Ü@Ö€_%4,AJãÂaèÙáta6wK @À@Žtq…Zƒ\ÈݺÊjM'ô/²Ú_ÀŸæx¹xÿî÷¯@`èogK æèd õCm6` © Æ…ð@p,¡Ö¿ˆ–8 éoéf †XZ! ¿S·(Hk,‘þ©t;!à\p0äWܿ Û,µ–…9:‚ 8ίüäÀ. ²ïžÜ× s‡zÿ½²C­m~•aíêÄ­;»‚”åþpÎ?˜-ä䀜  ÷¯ ô<@¿¿ad ¾ÞN0'€ ² /Ø„üÀñ†[ºW¯÷þ½ÂáåXƒ€È Åù':ÙüµFž¿ Ø`ƒ”/€ç×ë?O¦H…YàÏ还[QÞP_^‡ýOÉÿ1ÊÈÀ<Þœ|"N!//¯@XXàûï8Z–à?yü—¯2Ôù+]dŸþNÙíXþ +àß±4`Hå‚,ÿý ùÆûÿ,÷ß.ÿ*ÿåÿ*ôÿÍHÁùmgù‹ðÿ±[:‚!žHåº"S CÎô©ÏA®:Èìêø¿Ve„%r¤¡¶HEsò pñü…ƒá `µ´ûK5áú¿æ †‚´`pð¯éÅÃó?6ä·)Íß&r†þ½¯<³þ5l|‚BKKOäY#W‚o^äTZƒ<~‹ÀÍ…!.d¾˜ ίƒåE*†ÛÊè‡XÂí~Ùþ‚y„~Á.ÿð!K ²AüÌÿþë¸ÿÆ‘ér#™¿æôL‰y€á$Fž÷ß8/€Ûö×í r9»þ·‚,þß(tC]áÿЀ+vB¶äoLÓú««ÿÙ]è7òKÁ‚ý«@Wd^¿lòßëß7äâ,ÌÁ€bÁöµÁíWÕÒTG1ÖÖ;#âúÃL_{Û©af*N9ËXXW>NÓš/ œó¡b;¼óxñ.;`5U)"ß¿)sÌ™÷áûé;[­5ŒÒv\8-b“è(A›†ÀÂÍ„9éùÜMˆpÿöÛ/·ðmc‘=€# è‚.• #Ó¹‡eDǰŽ2zAKìb’¬?~‹޽”i¦øî¹i›1´²ò>{ ?ÿ$_µ·J¨2”„‚ÔK….g8q‚,![¥ ŽÂ$#x![šOOQèÊ´zßBxõÇtþ@[ ¿kƒ­†lÀÍ—#®u0Á9ñœžÕjó­,½ïÜxš#ì8ªÓd«¬Q.†Òªø!¹½hä´ŒºÎ¥;õiXqÉ¥‘êbc4æË ~³/®,b2xùLSÄ!O?½‘Ò‚Ð: Û<_¼y– ¡d$ÑR¾¯Ag¿î:ü„ƒëüM?¸Üðqôl§ù}ûPOØ1Œá†l* Þ°#s¯o7¡IYðb†È€M^Q£úÖeΗ7í§“›ƒ¦ÕÖ©(f,%2?AgÀO§GôQOm%]ÛH4DÚšŸÄá°”æíb…ÐÈkñÀfñ”§þÐîùŽnoårÌ͇e¦šÛilgQ¬Á¬‚ˆ7îÅßìÈM Ï­æÊüÔ÷3')yù"×&æGìùöYÃQ®¡t]¸1$"¹kÊoÓüÍM‡ñ@,uz÷Ä~osʶ‡RÃõÚ1‰Õ¢è }p!¤¼1N°Uve€,BßdÀR­ý¬Ë¥gĦñì;.¯É¥˜ÀV€“ÙNƒÆ‘Ó2g91ó|ˆÿf¥º?“ˆ7n¸ŸÞùSb<ˉ†@¾9(ŠM#ÎDRu‘<Ï„!ª9’¨îZÑéø¢—z…¤µ†š[eÐ xy¿0Páé7-þåO܆šBï=¥a]5‡/÷¶MŸ;Sɪ·`„ ¬Ÿ†6åÅÍŽäjÉ«Ýòmšóµ<¨l)…)¥xãð>ô˜¢ ý°ËÜÕîJáÓûº¸~®ñ˜F'S>ù¤è £%nõìSòf:ä±Âù ?5"T;Þ·´ 9Vߊ*Ç}Ùà x²W¦€¢Â¥¬`j7›YX»Íø£lõ½ƒÇu¾—Ij Ûj8ýa¥™ŸNÅÓ2ÇÐ-Âpq°j™æ‡©X:åѵӵ?¶ëý4GL?Ëèù–>è*Åò¤ Á6RL2ý@ÿu¶·Ïæù¹¶¯%ÿg…Èý”ÎÓ§hT˜SˆD¥çÒ%=•but‹«?ñd[‡Hƒ `uiKn­9û‰’=uÉÅ’³kć—%8‚6‹Ë;_ЗoLÉ|8©s€î¦#›2_ˆ–­-g‡C?-eΑ3H>œMÐá@LceÙ–V¾Ò2C-«Ëp_È$)²Vþ äåÀ¼äòøOù!`_wH_K¹ÎÆ[u¬tN‚{8jTÕžwÀ½ïö.nÜ$¯åÇ×=µi Pzj…µh²×ãUðO™bÄÁVÄ-¸NÔñzCrzjóÕ;lÂŒHÎnùìÙV¾wFƆLÊðîœïu÷ÀBœÏ†YöÔsu£Ú|ðíô[)S íÓ¤(¥°3sÅ—{ªá7šâ~–KÍéK–!+Z0ù¨Õ‡_Pg2Øð…±œï›,Òaì_^7ÍïL¿€µš}dhbŠþ|zbJô’·Õoa ~Ç¿±aÆšI§÷¹Ïßïu½âpa¢n< C—>O,n'åÆÕ E7GZð$CHFœh)ß º”¡·‰U™W3ÞN2yYJbÊ1Êéçë>9ðA*w:•=Š:Œï¶h9æý°´Y?ýiÖ» O£4åÈŽþ½ìëq¥åãºFyàÖç ƒÅ­±Á .ËÒLÓ³ÉY\Ôƒ+D$)ÝŽP(áN3ܭǼCçëHH¼.Àì¾Ö¶Ó%ö»xªË¡Ëöwb…uÆ©;][nó´"¸žD±ä J‰žNb”r>n’ì)x³'Du‚M+V²¬¼e%é}@+…ît;5©£B1Ã…:Z; _šZDï:fX?tÄÊ?™ß)´f®èýÜEÅÙÒˆûž…›ªÀø-Ö7l¡‹*z~ù!®ãpH•ñ e_¾þÓñî³…àðiÃ8Œtµ"2KM©p¦Uuùì´1‡5ýÓ9‡ýãÐÈ3¥´­07뉹úHô­§T&±Æ-óYöxÍÄE)B·äCµäJ! KQPHߥƒÆó£î…ùg;2¾u©_ê–z1×tXgÇÍøæ yP¥on÷ƒÛP¢Ç¾B|ƒ`Óï÷K(´?·’Uçy¾"ñIŠ[t{L|Äþ2¾ —¶/Y¾;S»p?Q}`ï#wå ùb>äþ(3tAK¶þ«›Æá6½¢/nÑ>Þ!fnŽiožôÃøîèdvŸíj–­ƒÙok‘Š%á@Uªç¤^«.¹æâ?齙ˆC ÕE,]zSjB(¼¸—뼦Ôzƒ}Z"äîÑp|_ç‘?pjŒ¤4Ö½n>•\«À ¯{¿N1ß,½•Üò®é¬SºÍ3AÑ ð€©çÓ„hE°Õ¿JãŠlŠ:QÜÃÑ^)ñ² c•Äéc&zxhæÔ—÷H‚»ˆ‰#¼N·ŸôûtJXßÙ{êeÆô68~I[§p.±•¢H8M8šïnͼ'â…ÞöY/\vÕ»ñ²5¡?=½FÃv&=à2>«•³¯Ò?P½ ñ°ÏkåÂæÀ½b·â­ž«ý†Û«œ‘S;Ò6¾Ïp٨Š…µŸt0?›0êXÃqîór_áGç D³É >I³ûV‹Mõ6•-“`øy_ÛË–n"œí ¬eÝ>r†SãGÀÁháh%ìäi\¿ª»¶íJŒS6¯ ~ ×\dø«±ž½\5ƒˆ—gïïn®ñH!–cx¦Œ¤û\ôEñm¥æoµ›ÀÔ~”[NÝý±´C˜˜ðDTAO.à¸ûÔS£oY¿}¡Î×Ë;@)º°æUÍÍw(/‰´_ñ+ÏÇ¢‚òx=,S|K³þØ9¢)nϲô¹öWF¯àéG*µ-ó†”ù=üeOž¾Î7\hÓO"úM’žÐÉ=‘Ÿ LtrªR`+/9¯YMw;rÑœ¶ƒ CMÝ· b«¢Ú7=ïÜ–lÏe]U£±A!ëId²L´c§ñ&kã ÃfX”N´í­VeÛ 0TíA]2hdöZ0>‘¦Ydņ^Œ?¨›ÕkO&ê͈_R[ÃWÙ;:ùj&.¹5):…?{µÜÌ×C÷tU?ìÚ' %õ ÆwAƒà=›IýÈ]g­ßË›)ñ»èLäï™AM­^Œx¦È·bÚXß­ÏIl84ì¶NÒþÕïÄ}ìËù‰d? gÏâ&¥V5¤ÍSúq}åV(¡¢úÐ2Ì“ŸŠÐÉ^oD墧váÚQRtákù¿mÍ9:ª„Áꥪk6RîÌw¥§üø‹7´É¾vÉМ½d8‘Ïo%·lj2•”ï¼òvG¯2'ä¿,T8´îªx%“±³•µ/]RN¼Þá\;~á¶7ÔüˆyxÖåçq©Èp—K\¸;Îå›×2ö`$¹©äáòx§ÂhF2°º&3!PüQå;º‡÷³ w”qapo»côEèÏÖÆú Ò.;i')ª‰ïvÊØ“ø•þÏò^z2;îßeè q¢3ïD-Ön_<ßb.ÒÈR¬?ZGO—ÀGí/í¶7­'†žòJ¨äyI.Èø‹k\…Üë°‚âÑÄx;?´2b‘ _xʶÕùaÔ¡Ä“ÿ ¶y…² ð?PÚìÁ‹“sßh¹2-ðÇí Š'Û³~í-ŸH6TØå°@±žAÄÅ@f°¾mG‰È¾ðr`pp`0Ø«"C;Ú4ç]W¶É¢=O•:>ýÁÿê"Íé1D»êu’ö—Œ4«õ2n§Ó{ §¯©õ’œ;&Ÿ¢™ÿœ•&Jì‚î‘hÏ`Þå;ªÆz3y‰=›íÊÁp<Ù4 Œ“×ïe¿ùÆÌF~ëlè¯wz‚xF5ípÂ%YÊçHÁš3ók 4ªÃëÜõ´\½Èáí­ãÕWZ9Q윯*Kóô£ÒjÎõ¯´èÛTÇBCÙËÛ§Œ:AÂ$’<å,)X`k*ªLµz1[L‘wÄ,FÊœñÑ‹·ç‡b³dÛ_¤'°”Dëß¾^7R¢±âMjØhSônvÔ13šÌ¤ÀçÀyÍ P2“ª$·pb@)ét‚é9™ÖBªµÊ¨ ÞØ38 †q±p‘§¨:¯eW÷R£Þ¤MyÈ|7Ü_ëXÜkuÊ{ûÙtjrôMÀ= ä·²<ïœ sûíú ƒ…¯6A æ¢ß‹¢ >›|ËS˜«Š0ÿ+?ÂÝú·õÝ®3?Õ¥çÞÙêÓ«ü’ãbJÕOL¿‹>§#%r{B˜Žn¸!†,ó8;¢Ø$ŽKk]YL2—N¯ Àõ  N¾ÿBßtëmP¢ø¤aäÏ·‰‚õÝ‘þ.þê OñªP¶Í+Ùû/Íð:ýTÒ.5yæÆ«þ¢”›Ó{/Î.çs?P« îåi%1 #¨®Š^bª¶‹§“1´bM®¬ô_ëÄ®—uSR{Ü:†oÎe_ÖIv©µq'*Ð ésUóHlc ž±/«jOóPÐM—OŠï|ƒ]=ò€©˜®,£q¿Ò\áòÊñGì û çl —Ö±W6UTvßÐGÖéÃ3ßΕxnêKÂÔË–¼Qt±ÝÐÇè#aˆ K‹fò©ŽkèŠÄz™²¢X¶5ÿ4'm/¯ CÝíó‹ýCDqÐæïÛx>ôÛA–é˜i¿6êÈóG!šó ”áŽø\Ñob+±uL:N¤Ã4žÙ?ù‚õ“9p»¯·’d¿[Ì÷1ÁqÈ u¿WÀ9ÑyP\äEHè&‰q†­j¸mZiÿNAOé6‰Tt¶^E2`–Ùò‚žq@ÕÇB[Õ÷SþûÍW¹Ðì¤|ßS&ÿÛ¾§"\·sÅmÛV”n2@v?ù.vIÜ‚EáL‘3Ã-‰ ¨í¶²Â¶¨d"y>CW_s 8€oÏ'ëhRø©\SX"ÀáùµCa~iê°asPí!My6YÏ3ýâÚKOÕ`ÖöKðøü„a¸O¨(¿¥N"˜ S¬ÉDØå…kŽ5¶0°2¬£Ÿz÷›žD;¶¼â£x0ð0§íc,Y¡5¥E”j(†QêÅÏÇî0'’³¯tò}Z¯„$aÆûìµD6N*é³ÞÙ&ÉD¾Šë_Ð:Œ=“1ÓŽÓ,MâÿÞÅ&ó€¿.ÈÚvŸ¡iMy÷.×\ôÓbçq:C÷šE /§™6w_ágõ:Žäü»Á»SÕ ÷h ÷í¶î›FYwaß~mÛ-7ßå{6y5š:ÀŽF¸ î)«6Ï® §PÉûYª)UÀ¨ž ¸úQÔ0ï†:û‚²…Ûjs²÷DÝ@lˆGðnŒÝAù3ßs ›TßÒ&áÄU_ã?"¬±ü®5Ͼ,´¨×‡¾¸þËÙaüNîà²iµH»\ÔX#b²:Öy˜ °ÙÚϤ'Œ~˜J‰/P8*<Æ|ÎàUpƒB¥œg ªD›[aóè£vÅZŒ…&… 8r¬NÚér>7&ŽÃ¿?¦òˆ¹©úrH¼dkÙ]ãó«:KH™hÕ¦àšÖV°{¯ùD„—è:ß’¸N¨Úö”úÒ×¢¿~õû/…^%±A wêñ3O+áR“G\ë1ºTiØÌQ §uÚR‡ëÖî ”žQÔ/ôé~—Ì®‡C>dtKü?xêcö¶¿1›}›üˆu6ƒÓ»I3®¥ZsîšP§¤§žÀãýÎÖãpí~¬3wÛ‰„ö[ÝÛ¶œ,úe,«ã /±–šteÏÙòÑß ïF8¹”8¨ã6IaHõ€˜º_ó§¤Cz‡"º—_úiXw¸t¯VºËèñ5¸â¤Ëƒ¯ØûªáÅÆ'Ì”X¤5-Åç韶­Âµk)ÏŽ«u!Ĺöý€x J/L7 ÂUÿ—Œ\$ª^/4Hó"ƒ·o6/Éåw196A|SDâêa$¬¤œ*ÀAƒO¢S”ú |“ÍxÃ?¾O¢'èÒ~Þú:Hóö|2A€MÓëG+°ùÔ˜\nÄt³¶OŠá4ÊUõ³‡¢$i[ kO.¾«Ñh)^ÑzõDróéëÒÙ$ŽïÔ4½S,í—_s“Ž»Ý$fóõ¯‹ÏDFËf5 HV娦ñõ.ŒÙ—v²`uìt¯2gl_‚¸™ëuj–ùrà.ÓLª³‡+͆Œ&)›h„j¹U91aÅf:¤;IûT•ʲ&:æLÚž|´/êy»ÛØr†ÆÈÛ”Ìõ/Ÿ(àÍ}Eßí ;A18FKºÖ.Ý›\ð¡RÈâå´vw­sãv~/§;ã"Û6Õ]ÍÌÊôËè)=# åñ‚sÀF_!Îéå ì=#¥öH)Ù|zžIžZÿE^­”±KXc5ûˆñµ-w<"+T¾Ð²ps›8|rÙéZÌ(.|é9\ ¾ó/dkž9ThNchgJX—ÙE”:Î7iÙÏVÛ(pÅIzt„?"7ñ ££lûé=ï„Éê}Ré–É–€zÜЊ1|é~7™Ž6(A¦±#&šÇèv›É²ƒe41—t­>cf¸ 9?6Z:!©ˆ÷(¢wV›QAcì hm6[ËÜä{§0y š| ÁŠœ@°QÒ†(ôr͵¦´Xçä,·>¶f>ÍgÓ¬‘H-¡Ÿ¯}w^@ºU—îq$hΟóyi($#î³›">ÄŽuýü¨mÆü&ÉÁGn½+þr½€\!V%¥gÖ ¸½ƒõ(h*Ô‰“FYó{çqªYZtéлçã7àbbUª|rÛI`9IˆÈSaj 1‹¹%¼kr›Kw½ÁÞß]ÛÑœ»öeÉM¤Äæ°Æ Îz°+lAsK¥`E2 8lïï2kEuž+Ü ÆÁ Ó||j¼(‰æ¶B| {Z¢ jŒ$µšäíLŠë4Ñy¬æ?eÞÕàºdƒ^¼R >ö­¤þnøQÑ"¡M ñxM,¶°kùYIü ¸Ü­šÂŸùé+fbë~g¥+GÌfÍO¸_‹¨}Þæ™¸èÿœAøB endstream endobj 113 0 obj << /Length1 1371 /Length2 5903 /Length3 0 /Length 6848 /Filter /FlateDecode >> stream xÚuT“ݶ-ÒÄÒAŠzBèUz/ÒA 1 JIè½W‘¢‘* "M:H/RD)"½Wo,çœûŸ÷ÆxodŒäÛs͵öZ{Ïù…›ÝÐDHŽ~€Ð@£pB" °,PUßÄR‹À`Q7·)çŒø ¸Í,’ý_U ŠÃcjPž§FuÜ"b@IY)Y0( Ëü‹ˆÆÈÕ H8PÔA£X·*ÚÕƒ´wÀá·ù×#Æ‘‘‘üTvA`0( ¨Å9 \ð; Î@4 ‰Àyÿ£Ÿ¼ç*+,ìéé ‚º`AhŒ½¿ Љs#°Œü50ðÔñg2€hê€ÄþÁMÐv8O(ÄÎH…Åg¸£à ¿9ÐD[hàŠ@ý!ëý!ÿž P$òïr³B¢~'Ca0´‹+åDÙíΠ†ç…BQð_D¨3χz@‘ÎÐxÂïΡ@ e# ?àßñ°0 Ò‡a‘οFþUÊê(¸*ÚÅÂa¿úSCb0ü±{ ÿ¹Y'Úåûwa‡DÁí~ ww6C!ÝÜÚj)xðÌJ€e$%Åe€7  æ ü«¼©·+âwP䌟Àß×í ´ÃðGÚ!ð?_,ÔÄaÜþ¾ÿ;ðÏ@DGÂpÀ{$ ðŸêxa÷g¿| Ò ãµ'ÿúüûÉ//8åìýúïû6ÕWUSÑ¿õgâÇTTÐ^@_!10PHFB(""-”’’úÿ³Œ!ù· ðrµQvh ÌŸnñÇô¯Ž=þ €ï¯9øÿ¬uW-È÷‘[ƒ%À0ü—Èÿ·Ô§üßþ«ÊÿKäÿ݆»³óï0ßïøÿ†º ½ÿð¢uÇá  ÆÛõßT ÄÓê#àHw—ÿŽjã x#(£ìñbÅÿàH¬Ò 7Dâ`$ó7ûe5g$ aˆÆ"½[ðY`ðÅðþ‚9áßX¼.‡xûüs_u ÿå3Q I ƒzÀx9‰âïÛWoH8Âë·’Â ‡OâgôÚ¡1€_×  » QîØ_(à•aî Þa¿€ßö_ëßvF ¼0Àô&æø*¬ñ¨R™ÅSèÛéç/Íщ–Q8žÉg¾z—35GÝTîÃË®÷¥N½ˆ™ðcØ8ô²nÍžKÕzŠ#Pï\PÙÊí=ÞmµGÜ„£™í‡¤Ò¢¨7Ý ¼!†ð>¶˜8 —j[._*8oÆ.[ɬ]€…Tì©,¸‡Ê9Ík„±–ì\_pï-­©âi0twSm³¡sÂXdü¡JcÓ±÷$>ãýìlOvWgšØNžn{…dY-{N_R7ý£l:,ŠÄê‹”D¦ç.ö×{5´:7)Û㔄8Kd_ö–}ŠÏŠfõQn?ôðªÚ'¥¬¤ˆU4¾‹0¨È£æaiøL+nq¬êg"½æ-·oº³çUû’:Õµ¬uóì\£´ HŒM¹©`jj¡ÎUóÉjõd5™¬›±ÙÔ„ ¨ÍyéÌ¡½¹àÐm‡¤‚N1¹‡jÏý‹6øJÓÃc—L‰hŸ¢('ÃA*æqÙ/ÉŒÔRC’û ²MÉ&z£ñ(¦Á³iâ`ùS·/¬­T1¼ñ‡´_\_9Kyƒí¹ª¿Ëi™õ€Ž{©¸SÁ⣷²D ¼*ž–„Òöbä6¶÷ÇÉÓ¨ƒÞ3“¹j)ry‡Vïuˆ±ÙŸÁ19a? oÊJfêÿÌl¹,þAµÃœ-Põ³U`<䀹î¨-A‹vV zšÚCOâ ¤<yÜá2ž¹è—ÇX%µÚãõõ†#Ɔmõ%QšXX §iÑkÐc¦B¿]Sªáìnèrƒ¹æB×%š<ÔUòžËÁÛ(™lGý ,1DþÚõë66¸Ul>Q®‘û±ïÿ’Çd¹4¥ÓOØ‹—]_.‡é—J˜ ¸ (D#Û/AìƒÍ”ú% ëúyÀ#Ýc£"cIÌU«O1œgÝ}k>]'¦í{ìò‘Þ 6*S¹¯½NûÀÅwo6¹qY5±åÀöÈfŠŠk ¾¼ð¸¢”)"@Øšˆùv9Æò…ȶIrbÈ¢o°%…fÂÚÒeÛÒXñ¹wC&»&PΛDýCwfÿÁÄÏ¢ýÚW"-BÙAMæš ÍYaPK A™SæÕ½Xαڸe «àŸarÈ¡œøb°«íJíM×Ó75 %ïTôÑ =ïÃȹ¬@ê»IÇjü –4 ˆRº k‚V?žWv¨³ˆGµØ&P6­Ô¤ÇÎßþéÇ=k5Æ?FÖ]à—®³ÒÄÏÙ3’ Âöm3×ü‘)uÅ‘ä(;ZÀ›ÎÛŸž>!>#ZXHøúéZ¦§Žt+†,º%{àš†·&_Ř\;Ì4Ýå m˜¤)=n/¦ô3ŸÛÔèÛ|ãö½aOÛ\œnù”éCD Tì+Q­Eö›¾îÏ;jÏ^L ò¼r`ïš}75̼îöÓXE`©Õ=¥P^xN eÞ7>Þ™ª’âuH2ÚK¬¯&*9ÂzºXÀì]‰Îx#›>ÈGÍ¡¶”£uáÜÙÍlã%hȰP0Z{cyn ;õû[•*kî.Ä2Ö;~:^ü±8‘f|ÌVQ¾õÆe‹'áÕ«.›µÈB”EhÈõnXþâs žÆk’ç?'­¨M–œ‚ §Fª,·ŸÒpuMõΔçì¨1(xNŸwYEBßæÐ}“îXh5ÄÏÈòÅq¥~:|°xà†ðL g]‚flÆ©€¦in.pó·s‰¼ËYÿý´<üyyšlÛ]÷óÑÅ—•KïÞøÔjp°Î4p0<ç1úîŠ49l̾ܮ¶ aIà[ Vñ0¼É#ê\À³ãÊ ªÍpC÷Ž7Þã€È=ùº¼¥5 9{f_vVhzRpÓqd=Ò»?Éyžû<)Qþkl]ö|þÌí #ôà`ä ?x±úIÛÞ¸¤Rûû}þJÏ Á$ A%¦¡—ÉSÊŠ¥íÏ eûñ˵¯„Ôf¥òŽG«¦uy¯±Ÿ¸¿Ôr¬Ÿi½\—/^ {È,ÜzÑh§¹ï0¹Ð•X•c”OA“@Lñɧ@á¬ïõ`˜VKRfÁBú¸È¢º›x¦,?« ÍPª4;i¬Òw¢íÿpë™ýîçÈÇê%{#U‚ZW”ÕL¤õçbŸJ[4áPĈ¼YóWÆ‘²ù›ƶyfø?¼ó>än…®æqmò{ß´(ŽUȰú~V²­¡àú™6"?އ†ÅÈ|¾k®`ã¹Õ|Ù–£l§=OÍ'/fʹdâœ+ãêàEt} .…jz[*ßv‹zq—,GJ×4Jñ ¿íôK?ƒC¾EqQ¶IÔ]'×mõW· óµÞ·¤—³%u-l£$=J¶”±_—˜'†S…_¶×÷¥×°{õ†:)m¨É|Ð%a½”ÌÑ CLG'PQäªøôréE½pó×4‹I³_@õœ¾Ô®ìV7]—ßìó8½­ò5µ‡)òçF,Ê“½Ëør˜í®6Û»ËoH`Ó·Rø ëMyêKÔ7ÆÏãG÷/±|žìì,Ùc0Uqû Fc½¥$˜Ô¨Göu ¤Oʹ×õ­tÍ­4~ìl̬;B¬\ew÷x‰Mõ-¡Å²¥Æ–O[Þíj}qKs)ˆ ßžÚA-m»¶ZYƒ é±(LJ[àµtÙW›Ã2 &ÈŒ—å)=GŸúqxtŸ›®.~¦Ñº\4\fÔ¸œö´~ ¾B‹ålâ0«ú!šÚ§êNÅ7éE5Ï<¸Øˆ:÷!ES‹ŸµF-‡™­} F€u¡I|u)§!OÆÇ¡™RtUw;|ý,öóT¬*÷¡2éôZ…­wš¬ÚÛì–ç{¹Ê„¥Â«­˜ÓÈIC†8ý!-ë=FNäɹ‡¥Ê»r?î8æxt:‘ˆ›.Ìô^ûÉ#kdÝã7C±õÑ,T¬¢?ÏyÉ"b^'*oA]»»J8g_O>åo¡¦á^Þ]ú¦ví¹¢ÿÉ•š…ÎT÷Ü{!’oì¯,Ô×뛹vö1 U>…»äK»ä¿º•‘=…nøŽU•îymZjåV·×$…Ì¥æ&ŠqJ4è…¡éœÌ8-â‡`´ÉôM!J¸1OI?U=©héâtÝìêÿQž¦SB¤YVg'«>½5õSÜ2ý㯸µ­â¥Y»Ô¸UŠCG2ÎGÉ Îž¾)/ ‡h-е>Ù¹¡DO<ûJ]‚ùmçÑäT4C˜u3ü-F£Ûð)¹k[LøtðQ1„g¡IL”NÄ£Þ•ZÙ`ud ~ü£¾j]  "9î%|»–ã,7)i*¨ßOFZÜümûŽÞˇÑ‰n”láîǧuû÷D/Îúî#fä€ó§`¥6û#>°@ÇpsájKÞ󓘰ók¬…¸m¨Ù{ÙÉk Btʰ˜ˆöÊÔµ/9ÊÌ”ºÄIwHLƒ«0º'!¥ôÕÐRþyÿ[ßÌëÄ€üζ–œ'u÷¡#^Ë” „eøZv…o+·¹úáBDâŠë¾ š%Õ§Ð|m‹ÊŸ„ø%½í®[3µ«ùës3V:M÷•øîõá¾K˜wdßMÐåDä™:{ü—RIu¤bd´…ºjœÏ:¸òL_Ä]@«‡qNœÛ{TÜ».*úpºÁ锓™RIošùªœÐϲñî”c!$ƒ¼mÛò*­îÊæÄü7î!“¥b«¯QkÌJ(§xþsÅŽ3q‚æ”ÉYûm²£D…hêÛ•™?\æóØòûû’6ÊÂ{…$_J1ÁçªNyêt¡ÙNn‰•‡Áˆ–‰~ãõ[:² Š›Ã„X¸zÉ|THOM’µp¶ªý/s‚¢î¨ôÑlRì&é7\ëÞãÆ\’o>Zmƪ4ÉX"Ç'wE®ê ^ÃòLŒ½«;o^”‹ôgÃÊôÎ’-‚÷ŠÔ~Í;WƒËF‡k¨÷˃ëÝ6+UÊúÓä4¢Ï™T*›ßÞ³ø“'n˵6wýGÕzV™J£Š1ûŒ‚1 ²<­éÖ—{è‘ÊxÙf< ºã±–@¿ µÅ¦›T5ºs"O(íÓÍñƃŽׂèKÙ“…9HVÇ“Ž.‰D¹²ÇÅïE?Ùê5ç¾´Cýp<Ù|Ï@Œtq¬% öˆìkÑÞ{$¥')ÖQ`x†¯gÔ¿,.¨‘S«ñÔ#>d×Ç?¾‚„f,¿RëIŠùÀÞEÐ2Á1 ®óÆûAû-ç©l㑞O@ZØT:(m5Òèç)BÁÂnýø~ú‚´“©jaRÐۀ砎Æê܃‡EP%,’k%%zA;—»çìÉD±ã¹r{\¦ÙVJW>»’ ¿1G0e¹oË,½¯ SW¸^»hCͦι¾…( Å%Eå;¿²…Ú4*ôý×§H4Û±$¹Lj£³‚DlÖ `™IµgZ¦TØk®w¬$·Žwy&€žýd÷@zîVï*.j 措u3”ÐgÿhŒ “Ÿ„NfÕ¶‘äô#Gïæ/EV´ ÛÏ÷ùMa×ëøÑÉþ‹¹·>yÚPÕ1ÒN_u¯(}V\#œW &´*í™]WVÚÔ¨éÇâØ –•ýÉz¾7'ËÈÍQü„Ï•TœàMÓvn¾3¹©ä) k¾6×5añ¢¾;hVU{e ×ðÓ³cšþ³ÿ[(Ýzæ{ô‡MÝô÷ïOêÇõL×È%/Û¨¾íÝã[F„wg<àÄ¥½ßZ}¡Èë’Ì‹À9“¨‹yv¶è¥ÇJ‰…ÂõZtxÝw'¿Ò{l×K’ïèÙ\ª!Jv’ Päðoäf©”\ª8Q†Š0åO…ø{ß>µ¸]:ïÎôóÛ éͼIêã~NûåìFž÷'ØbKmlTB[àC ŸÉ§0Ìô&©êBÙÌk¶¡ÞÛûÒ­—* îE¥Yz…Žy0J$s‘ï¥Ü•£„ÏVú‹;Ë¡$ÔVoÎ*ïΞ6U­B‘mWiÐjú­(ª ²ˆ*ò}A¿‚— üdK­ƒÌÛÞÖ|×Öëp×ü!Û–ä ÊW¸˜¸ íüàŸ•LàS»Ñ¨·uû‚,fÃ3™<ÈpvsõòåÆÝÚ"R‚Œ«J¡w›8оU5¯Þv‰™ZÌOí˘;¶ÍRAæÕ÷XÓ«)Ë¡Òï,OÚ?¹Zx]šŽ¸.PG~Û·íäz—XîÍyÓs‰a0ª©-åï´v×,j;.c ½ó’ŠZÌRç©ØóS²&é‚Bdµ—GlŒâÊåxC¿aG9ò9+˶¼^Ê¿~V;3ipïãY×ðšõ¥÷Ý«Á_»7¢™¸DÀRDwüÕï«(qINXŒ½ {ýui£!gõMÖXºì¦\äež¿öÃ2/¿ž<ûcœË«¶ÕúÎnc³Ofïjßy€ôÈ +éÇs%¬T_·#Üß¡hêœB¯¥àâÔ…_Q!t‹/¬®}Œ£mž½†½¸–ãv4 £@R\fšKÏSq‘c˜DIÕQÝ=ª÷cŽNEwÌ.d8ìÁ ÝÕ¨èœ/ÝØoâ3Ý ª äýdø˜<ø8LcDKÁÿ´ßZ™™ÒýåV"™¼œuø–PÖ™?¼,Êg´’¬L“†ßËëcΣ83H» ½wlðpX9 /¤étÑ¥³¯~¦’¨Êïó]CõHßEh#/±ÐwIݳ–ª7Žò–wÈwnKšº|ëw}0–¦¯’ë^é·£SæXÿpleçRKNù2 Å ¤â¸”Ü}÷%k€íhû2eÂgYŠ;འG+ª-á=WÁúé“Ö®X>"…U*:Èü°a¿I¹FãA¡&D9É ¥P|÷§—E,PQ#âÈþk‰"Uûäå]þ˜úÔ8Ï¡C6:Þ²q g½ž-Yu1A÷Ìí 1OÙÒqÞ–#宇ö¦Í[Ÿ$†+XéË=4o ~j5»šêÓ©mØn¹ňYéDz¿æÎ'o"DPç¾mDóE|Y ±Êê£ëê¦ #‰ 7g¹$_H…ÄòÁ2ÌË|+س—õc$”Âühìž{ži\Þ»|]YMYÉÜ^­¾j:pm.ÿ »÷á…÷S«;îèܶs5Òdö÷j`—5·Ó©Zög¼pä¹ 5YÜJïÉ=â_Ì™ùUC¬T¢fÔLª¼Ëû~;øB¼Cö endstream endobj 115 0 obj << /Length1 2230 /Length2 18112 /Length3 0 /Length 19445 /Filter /FlateDecode >> stream xÚŒ÷tœëÞ ǶÙLlÛ¶ÆÉÄž˜Õ$›ÆjÔØ¶ÝØvÃÆ|³Ï>çtŸçûÖzß5kÍÜ¿¿y]÷P’ª¨3Šš;š¥\Y™Xøâв¬,v&6JJ kW;àè”Z@µ£ß?$Ä]€&®ï4 ×wAEG€œ›€•ÀÊÅÇÊÍÇÂ`caáý £ @ÂÄÝÚ Èst‚(ż\¬-­\ßýüç@cF `åååfø—:@ÔèbmfâP4qµÚ¿{43±¨;šY]½þÇ€•««3³‡‡“‰=ˆÉÑÅRˆ–àaíjP‚€.î@sÀ_)”LìÿN  ae ú›¡îháêaâ¼ì¬Í€ w7s  àÝ;@]V ìtø[XáoÀ¿‹`ebý¯¹kÿeÈÚá_Ê&ffŽöN&^Ö– k; @YJÉÕÓ•`â`þ— ‰Èñ]ßÄÝÄÚÎÄô]à_¡›¤DU&ïþ;?™‹µ“+ˆ dm÷WŽÌ™y/³¤ƒ¹¸£½=ÐÁ„ðW|Ö.@³÷º{1ÿ»¹¶Ž>ÿAÖæ¥aîæÄ¬é`í씕ø·Ì; áÍè àdaaáaã@O3+æ¿hx9ÿÅdý‹üžƒŸ“£Àâ=  ŸµðýÁd⸺¸ý|þÉø_„ÀÊ 0·6s˜-­þX'-þÆïýw±ö|dy?VË_Ÿÿ>¼O˜¹£ƒ×ñµ˜YOANTN–þß)ÿ—)&æè ðadç0²q²XYÙ8Üï~ÿkGÅÄúßqüCWÖÁÂÀûw¸ïuúOÈîÿžš/-àm)9¾O.@ógÐõY8YÌÞ¿Xÿ?û¿TþÿMù_Vþ_ýÿF$åfg÷/>Íßÿ?|{k;¯K¼O®›ëû(:¾ï‚ÃÿÕþ½ºŠ@sk7ûÿË•u5yßQË÷‰fdå`báø›n ’²öš«X»šYý=5Ó5ÿÚ7;k Š#Èú¯æ]‹…åÿðÞ—ÌÌöý½æ¿XÀ÷ú_¿’fŽæ-'ÀÄÅÅÄ á½×ïˆàÃú¾•æ@Ï 3€™ÉÁÑõ]ðž£ÀÂÑá¯Ærq˜Eÿ"ý¸Ìâ€Yââ0Kþq³˜¥ÿ 6³ÌÄ`–ýƒ8Ìr€Yáz÷§ø½ûSúƒÞý)ÿñ°˜Uþ wjл?õ?èÝŸÆôžŸæôî]뿈÷Ý»ÉôîÝôz÷nö_ÄùÎ3s´{oÒ(QìíÿèÿÕ=fóÀ÷ ÿ@¶÷ ß»g²ú‡È{ÿyGÖÿà¾kXþ¾{ü£Ëñž—•—“Ðáï´ê¿§gûøžƒÝ?à{‚öàûÁÁüSïG³ãgï²ï—Ù?Øï¡:ýa¿ë:½ß'v@ ×?TÖSÿ>þK~oÓûú;þ£Tï×)³ó!û»7g7Ç÷EüEVÖ÷¸ü¾g ú|·ûGøý¼avµrþ‰ù}˜]=ÿ¡ð^·À÷ò¸ÿ¾áñÖ¼k{þ¾›÷ú|/‡÷Ÿ ß-y]þvõ?Ëjææò^תï³ðü¯kôš!,Í;šñ‡ØÔ„´ÝW‰z0îM°q \E]ÃiïJ⻨‰ <üfÏ^íšÝ~ØÄ8a+~k´ÕÁa±5ÜðM‹æÃYªkƒ¶0ÝaðÂ|<)¸±íËwvê³;˜[âœ7© y\‹ÌÐâ28_îÍeI P5UÜ•[ÃR7übB‚˜ˆ‰†ÅãáaG‚iÍh¯«™í¥]‰Lœ&K=¤õ²qn,—2€[o¥#;É_g }=ìá"7žÌPîöHâ=}¡ ºn ¤1© “ógÊîN]É\íÆÈªY6É nBö§BŠo~!»Ø„Íö4¥Þ6ä§ë”(n‰ZJÖ(ôfç¤.í)+“Æ”‚Gì[„—šþRÔ.ï«P=<`¨JΜI+dMÇlPQÿí³À:m?ìkÍ ÖN¼  –k³`g´4éZ­YÐÖ‹*ƒHIŠuùôá„UrÉ”îÌM¦q¤,B°ïJ}ÚÚbæ¥y‡h4Üà-¤V"Ïû¹ú—õ[zŠ]æ…vê[(±fõ˜E|b™ßd®sŒ¡C¨ÈdŸˆÚQ®ÿó á(9õΚҾZ÷ФÚkëZ2ŠËåÏyßH²µ–Tã…OÀÖáØÀ®Ê~°s•º€NûaÔ¸ùç×´m(ßÉOá½éÜë­&W,†µ`2Ÿš*Û!hE–þ0ƒÔxRòk70w–Lž$Ÿcù1»4 `"›¦¯TK×qx¡š³rJ‰Åß'ÍAƒ†…Ï¢GC1q4§ãN@§ýs¢õºäPo¥óªÉOPÈÔoB­3ø“ÂÇV1Íû@f±Sc 5ùÆæ{²ð'ܾ'â­o0†s Våߟd]qüЈӰ;XT ¢* ÷¨j7¿”¼Ÿx·v¦Å-ТT=ÉÌ>'.oø+Y•GQ²œ/‡K”ïmÒ‡Ç:Ÿ].; ñÇ3_ÞêÔçg(‚µ€!yè™WY³Ÿ÷hE§í“ÑSÐpΡø2%©ÝÅ/J,Ãöœ\$RäQ5 rã9SÂÑ .4\S&¾d£Ây'ä˱K‰Ržˆ|±Í‰ýI²ùû§9ó'ˆ2ƒ,Ëß}Al£·ƒßôŸ")7&µi‚±8Ýdq6¨~®›çËÂXhWµ¹–¤>@w³³‘Ü@˜^•dAk¡@ÔO«ûR¾)©¨G>¤J2~9²ÚÔI‹’ÕîP ÆŒ§’M[µ ¼ÕÇjqscTX‘ç$“¦ÁjLNFåº"A)ˆƒ°ÌœmQS{aÏ[ñS4ó3î¹J‰/x L“.©Ôg¶švp1˜÷¬å%ϴƵñ‹Ÿê§xÈÞíCDì¼5/™ÒÚ2¨h(É×-º +úœÀ1‘1jeÌgI¨jù­àÀÖUi3eˆ—¬™¼\‚î’b°´-cÛËK?PÌ« V ‰æãEö%SUÔãšùrú»uÃ|jË·|°..N¾XaõOh.äl7`à¡ðè±ô¿ N;úGÜq~„Õ|Þ8Yìë~Õ4@ÒDÁåñ›ØÝŠÁ¬\Ýs„“Aâ<à'þÓÙÌo³¸#üJ¿Øì˜I}PZDë•Àd(€ 7}œý6kh©d§Åwy"ƒ¸úHS€õH2mCÁôå!S|wXèç½¹Ë.z—n®w{Ò¸! ÍÓZ©WB‰piåÊ#¨ , $‚çZÁñ“Vžèþ~öÙÙ¬0¯H«ðkã‰ßú`ŸÊʨ,õ«š¤ÕjË äÓ¢ÖOà¤Ngù~Ö­Ÿíœe¨ „¢ ØoPR:áj–E•'íCØÊ•ä‰0H[ G¿ºHóàÁZž$\¯žŽLvå‰?M¤òù-¡µó2+.Xœ¶Âè,ÙY\å3>JMø.zuˆ¢¬WxaªɨUÌl¯<uì£o{­%Ç̆©3æZbHpM†Ñ ä¼k›d’XâÜ2w±?UO©7®8~fÖ5†¥¶¤åÄ)=âÓ¯ ²BÍÖMr‘n'MnöðVϹôZ›eÖ™Ô[z—Vl8âO~¥‰0àAÌû‘­vÐ y­r]w©mU×¶8Þîm …†-»˜Ûé½R{¸¯0áK&.Yåá'¶ŸÑß^xTÁRÁNåôÛ=”C•ÏmPþ«Gû5½ƒø¬¿{çí¼«#XVm_ªI-²W‰>,¾.ÏY»´WÓ}19Y‰ãk>Ú…Üßãô]ÐaDF‚æ)~WP¨+àhÚ>òø’w®çs<AÊÏß £lÌd§`¨X¿-в¹rI(iÕ(GL×x–lJr‚¹`HìϱÓëáF%UÅIÇA)ò³oåWõú?‚ÕØq‡±Í…HuW&bOx[#Tk`&’™µæÌk·*ÀáÖzè_ÅV!°+´ñ©‚e/σV‰doœ2EoŠ0­èšK½ ÚÐU½‡è„W·F¨Uèš¶ÅÚlóÒT{1®¶ßé­´(JŒ4,‹NÜ^ ®Í¼y…Ï ëf¼ž«iøä²U¯ž_1.Þûs—ãö ÝŽ»”Q©&/°|ìHŸU4Ȳ˜ÓÙnð4ømÝ|Ÿ¶á )ôx˜·J9ÒôB3Ý¥!œ6΄…lªÅTçÑ0fmº.S^öztG.Ãhl)H€ [a±F‹ ‘X#)ðŽ L—u“Ä v–"´DœáLëñ–ÆÇÕ¡~ºž’Öué ¢˜ÏÝœgÿVØíê¿ÇjçI´â;±!¶†ÏØ3# ç±%bº?³;­ìAõµóEGG*©e.»_ýÆOFæb ¿åp7S={`§ß'þ¼øi“/?yësµ/ã (È+{ž¸3*Q”DD’Œœ¯a_NE)üžG”|ßÇ’Ç™ì@ÒRòɽ\(ŽŽÔ€ þìÔ@Ï1æ¿y>Ùé2LË/Çßüm:bSŽ­þø§—ëÜ50ï35ËÁ˜~ñ1†b»+Q\ eׯÀÀ¡½}бKû¼4qŸ(l·S^D(J2„ŽtVŒñ¾Åôkà yMtÙïæâì¥]‹‡­ÐX'uI𔵇4Ûˆi!¾„€NêÍ”ÌÄ]'¤ûìLТN*GØaÿ,Õ™«{‡&ûÕ°snsÏ í¦^‚鶇€‹f{›HV?ç—Ö2#6ß5ž_…Ãþ£c¶5*[·ŽßNÂÑ~m î¡cÇÀÿN+tOŸÿƒö»lxceœç^“óc³Ñ Ê1b÷4íÑ5FÐ~dëq$ˆïí¥‰u6Í´Yâ;ï ®ß¨”q8ä|g9ËÙAã®CžÚjp—ìm„S—µºð˜7§30±VÝÜùê xmõ†¬š)§Å»U&äèúÌIÅvyy’‡ÓÖ¨§=IñÚ©¨Ê§2Ù6Ö¥Ö5áñý¶•ù·»ˆM“àÄÛ¦‘B²HXá]©G¯ÒÏ&˜?©Us~¸æø‘¨3èÁýó ÊÅb³Þœ€æ¼3¢KSÓòôØéélÎëeèªA±!hÝÆÐPd‡X ¨ ŽÌQaÔ1ˆp? é´1ó’LjŠ 3"".Ÿ¢¶ˆQ’“PíÎØði먀˜ØÁô‹u¡w–¯ùéˆ/o!Ǥ5–uÈŸ¨-z…k=Z#]2äóôæž\ïn¨ §!rÈÁ^h·u¿2x}è÷ŽžêŒ†Ýÿ^IÉJš\6˜ÓPU¦Mæä6ù H²¿6Qsa-ÞØqy~®Â§A4ÌlDvmØzS3dù=.ïŠqî3׉j)VûD6·Qtw.aqOº¹!èP¢º€¹Ã÷|™HÓ ÿ1ª×¿X=äþÁ& m$ѶLÑ’h‡ù¯Vfõ÷í#M°9 ÝÉÞÇ$‰Hç Z%Ó¼è6ãg+zõ×qohÄo˜œÛE®!s£ªÎc§Ki?¥mÍ&n·Î| 2á}‹ÔZ ^ÀÑq °ÜÅE­)Pi8s½x…xNDyxQYGï PªJ‡"#sÕG”‡DÝ……£S“r6Zç všãµlA‚vî¦ë“ùà<þ5C½úíF”>?‹k…¨¨¼‰da±3nªP´µÚÕ­5Ecεòé×Àf(†$üÚn¤ož3‚ ¾¨úSÚMG´èLCIãÛÆÒÆ£UY÷Œ]Â3îóOèòmµô Ö\ ï6Ðe?tñkÃ1}÷Q@GG䟨C€Ó£óüR•Î[ììpáZîŠF,ƒˆFp(¿Gâë]É,~öYU©÷PÛLÑ&Îä±7pîrÍ6ÁLÐ{ðâÆd÷AÆxΘ7å–£ýa2zCfIÚ0ƒ™ÚNûMûezäù`ˆ“δ÷Yi{2¦Žj¶Òo¹‘<“nažû1Lð œÙ÷±^¼P‡-ãÓì¨6N©‡hê/BÛ¡aj Eõé ˜Šv[ ü²f!á²Ãßå¡c€= 0¶OòÌõ[òúÈBÄ1©³KÃQ ‹§Õ êJÈœ=R‚ë´‘¤ä <à@ßáÅñÄYËêd#¥ŠyUˆ&Ì›U>‚ÜâÌ"èŒÄ}MÑçÎXhs#Ü‘ºµŠ „-­~Åœõ No×WEûó”zë×v¹ˆ…ÅjƒkûîÃ^…Ñ¢ÜÛ-³ïŠÓ9¶B 2²åÈ"‘QeµÑÓ±îs֪̥Ì$œEd¢A€Yèø<çz^É©Ÿl}°cMCûâu±ÊÍÃjç0+f~‚Y>† \ˆlÖ²)p vBvÌ9@Æðlb±‡v]”}ݾý.àÕèyb¾÷¬ÑžKãùr(Ù4™oÅÞS¯™Á,ø†Ï¡êd-´¥•»‚R:…¥v6IÓ¹Ô^ Á ý7_aÏÚž€ªª Ü'ç˜K­Wb§°\ƒ©BÔø„ùŽ{™Þ_O¢”G¿š8\?s˜¡w ëHmU¹;þJëµ£›É™ˆ9Qs<ŒüÀóSù,‹fýÀV׳|¹Q:Éå/e’ q@š#Úí,7 U¹¼ËàpGÛ–Ÿ{Š_ê{°;°}£Ý+‹£ƒ6Ã=©éß^~cÔ ­vN=d|±*ùÃMf Oæ\a`Òü z Ñžàìul9»rùÐbLä¨ç؃&íÇîMÑ;¹]ýMRãq]Éû /Íp|HZ7Â’BhÕ-Hôä^,Ô[½Üúx55Ôë&ZS^¯/GZ8Órú‡ÂàÙÛÁÂ%ŒŠ}e zÌùJ©“ˆƒW@Ç<Î8¨|„¯ßS)½>÷(X^Ç„ü.ÒÍÕƒ¦áyÆÞYS·3Vx¸°"Ô:°†yÏ µîðÛËÀBÆèÅ_ ÅKF3šyœŒöÃÜ›kÌ9SÉè§’.ÒÉtkHϬ$|bŸ€c$/ñë5$qSß詼rD´ÆÖ4þêdnLÛîĤ‚ÝÌ7ùuÖ«ö¯»r&¼õÞkÚ] üѤIs‰*h8™GŒ }ó•Ì›ŽZvÏUJ‡j;Xv€¼rÑc¥½–þš,§“5¶²?§Ð”¥ˆî çn2=ÁtïËvÓBc"Ëp]-”-Êsdå0RèmŠsŠèpOâ*„ÄIdó‡’X©ÜU׎—+ê”·Óæ¡¢$²ÂØ&áž±„éÊYæU»ÕvkTX‘jþqÚb¤ù× wO<ô²œº25íüšdƒ_I®ƒ7?+áãu¯Bc4_p\¥‡M®Ñ­ÁôÝúèeþÒäŠs¤W _|©ºdQµÖº£»ù•9ƒª‚ºŠT·«¤*…Õ:¤íM2 ;ïW­7 ö²„½¼žOLƒ=§,4q¾Äi£«Þˆ †i®2rUWŽ–š[èeqj’]/Hµ-ð=ÎíE•ÆÚ>)l]ï4C¾èÍéN+¬(_~/¸ó’û¡šHKÔ¥ÉF! 3ØfE-¯ü¡ j %ãŒä­GÔá#Ìt_W|7à¼À6ÙÓaßÁùÃI*tD‚•×y­¡MóÑ2‘çç!Sá Ù Ê¡ŽHë×ÛÊrÅw·µ¯1.©³3‘|aƒ<l›_Ù„Ãñ4Ò ÎU¿ëÀË6?…ÔŠIAËuP¹´é™ÂãŒT)«ðÏú;Kñš ‘ß/33KÅo™Oë0W,0eHíDþ¶nÕ¯·pQ£Œ%W4¢›•.E”Š[Âßñá§ÚÉšéØÐ2ùòæÓ¨¶ó$íS;àCÅ0©I+†kJCÀû ŽØÒ´‰}äùS«aK¦ÈBž_êžH°ób‘ÇEoÒfù+ï£üPLßvØ‘;ò˜ÙVâ"@´´†˜Å«P·Ö·%)ëѬØjý‹7šI¼þ”ŠA¢¸ø¦CK’é;æî~5Hú)_Y ÓŸ\« $É܈ Îà é¾<*ÅspÛÄæÀµ†É蔂 õf‡S-“*×éŒë„ŸW¾Àfª„E‰#Ї´f]ý¦U˜“”XFëYýyN ®>æHàªl _ªÿ VCyééúéhhºÿ¦¿‹$ú¶ÁµLXü{­Š…nÑí·QøU&“ÓqÒÅ p Óî8¢±tÉO‚%ÊÓ¦iÝÓþžsyí—Ö«ô˜õ”ƒ\f][W‘Ž&ÞΫ^U"£™:d€ïkZX¥›¦QܘYq_o9>9%-¬L÷oþ|Ççâö2iø õì­?ò{ìßP&iž g%|ú–«ññ §Áv³Ð…PdfŽ¥:Ìú–•$°Å/Öç!¬IŽ@‰Ó;! Éx5“•z<¢\IIòzŠV„)ö’wÒN:Y³9·;9Fü­»nĸ̮FTˆm5ú;A©9™Box鉯¥„¦B¾ÆoÏD߯†¥@Òw ˳™>»ÞS98mNqs„|œ¸ÓŽf†NŸÛIV£o·ë±m”nŒM·ˆß l¢‚/Ùµ÷»Ôp¡ž„®_%sPLC-P†õi}Œ[ë5,°Áû×niì ²`C³&#]ƒÅ°Ï„kÅ: äÂ>Û¶>>~!ÇRL+ú°"ƒÒ&¶]Ù>ó4%˲L ùoá æã3BÔUŒ ëO|¡ØËåˆlúá>¼£E¸qÏųœv ”et“QðÅ&¬lK›ø*T`ºÒ“ùTŒÂ“–s^$x’`ðÊšƒùý¸ËI»=æYpâ¼õ‡£w”ýŒæùÏòb˜Ë)ÁNiŒâþ§ŸüiŒn^ã\©ø´î8¢ßNs$iˆ 뾩o¢ÏIÜöCf[û ^¬}[9œP烦éÂÌïŒRU÷dŒEüí*M¯ïSîböV"W8ùc/k9i¦•’$—f‹LX*ÛI¤QÇß]¥7)(•L/—ïÛ{$¸ÀomV~÷Cî÷ÛiåSNÄëk[Qsq„<®ºè uU;7ÕJ50ÿ“éÕÜcÓ§çÎYÑ4€@d%èxOáp{º·•´YŠÉFO㞎'/Oß¼¿&{$ª€p¢ø>›%ü˜`üˇ(X»³ÿy.³z„~,rÛ…}3‹|š,¶[¤²¦ÕD›”^I!ï'¤¦F®ÞÓ«xfÅ‘æ2ÇÂòù‹“¹ÍŒ°_ÕW#¦LîøH.ÔSöµo/z,“ 4°—ºÌA(°n$û7ÄãñÙíÐÙé ¿5nzï81*§‚›ØÖL˜û(N×"Ú´èO*Ž Z‹¦½$JÓæôñ>æÛ)³Ûøùº^êfr$Iè•JçõGälôpš ¢ãé4¥ºtŒÀUÃiwõ»b’! ›¤ãƒ£Héæå$¤âŸuwWtöÇÚÌu¸›=vú£“Ð-ºÏ©­S¯…_ÌÇo°¾xÙýþ±ýÄ5zµ?µÀ".Ñó&}Ga€G¯ü5·Ï\ùëÕ—dº#)Û=¥fe:¦+pû›âÊñ›xÀ†›6ŠÒŽkuÊxÕÙzŸCRÒlÒ†¤EÎ/ܯhj÷[!ºä±z)÷ŸÚÆ~3ŠÆa:cÙ¯ÒØ42"è÷Q¤Þþ QÖ?·¾'Fëï@Õ’îu… |¯KË.Bº8ëäEhè!3å»LÔÖ™÷¯Ê“QpŽoCfÄ¡>Í®ÚtEÞ‹wà¿—v¢àú Ç²ìé ›íô;ZÇ©ífPÇÈ®ÐG0›Xjšiôë¸ oBü¯7¡¨ý{­ÕfÖE‹ß¢~X~«º5¤zMª\ô&&ã×õ½àcqõO89ì±Ë*iu݉žh°4–ª×Ê Âœ´šÝP"W)§ÒBõPÄ:îlæÃ=á;ê"÷~ Ô^Am%^ûýYÅ®|£ç=6Gôº÷/ù¢‹YÇnhè8†îæÀU,aûµÞD¼ð3Fg?Zc(5ŒÒ[=~|4 Ðø‰å•ÞåõgîËoAY7ŒÉ RH&ªd¶hBl¨_¯š8C ß°yúëpzÒ„Üíï~Îù⤔5QÚÜHˆ}ÒßÜÈje—¿¤5¤üʸµªç/1,¸])Æÿƒ77æ FèêǤ|›#™±Äæ…¦YXEd½nûÁ”ð#‰R÷éYβlÂÂõÊNq3t>민iÁC®œŸÜañÚ÷ºòíŶËÂ^ˆhQ^oìŠã>ºc­Â#º"í¢bŸ©ñ^LÖ0*Žw¾½Ù¶û‡-™~)«Q“¸\ˆ¼à)•ëëÈzº¢÷¸ÿa–GŸƒ G¨üÄ>táŒ?˜˜øÀ¦¼zðéÌNйyÕ^è'ü=R±=èó™âE¨Å·é‡äÛOèÙ^¥½šY[ÉH ¡&F =7Æcë,¦Äž+A²K–¥du¹˜ Ý&² t]¨X~B‹iÎÍoRUVg=¾;lY)WðÞÙº~ñZ88Ð;È¿L™i±mse÷–g–ȬÌ"͉:ܵÏÍñ¾ìÛ‹E²ËÈÍöÏ׎/-3æN4"BëO\– HáEü2äˆsz÷ñCÖõðÍCL #SÍ(× ™í¹K˜q‹Xè3Št¦áj_Ø~ó¤ä:ª~ýŽÄDZFZÆþSÒlNx&QM|\(\ñï µsJ±5Eç/ÆÕgsjrñ¡oÛÏž¿gŠžÅГ³P#†¯ö$…™¡[c”bÕ™Ê.dXß³;¹q% æþ½ø•}ñ1H´ã{þÑÇlu}:ÆÖ—dŠ…F]¸ Fß`Úéå·ü ›°J“wæ£Ô­–gÕ†Mî^y¬ W«ïÔŽÜ5Ý éçŒd·×†£3‰ûïøØã͉|½Ü³«0m y‰×²&²›˜<_¬#ÝD†Úùjd²×íÍ6''L#e”V‰§ûê)sÃ[:b«ÑbžÙB<˜BˆÒÞô›â¨©œèäV4¾ïçÝÞ¡ ºµQB$ í®³¡Œ“*lô6ÕÑT2TØ­í$9ÏÎWRdŠìÑøOMôŒžÛe€jã0ö“º‹ÖVª›œp‹ua'—œƒôú¶vUO•˜NtR±UŽzæâ"í"XÝÙh+~¡:ù§ç# 9ðž-°-!Êó˜JÜémÏR· t£En%’A’aõJh66ª_ˆCgRfT鬕-F†]+ÕB,-Í–6Òí<'SP~[í*Þ!‚ O¥Ìžåo ñi±Î"©›èÂñÉ­h‚Ïê€.`dOàM™Žêk+Ç.üƘ5\?ÎÖ#’5\¦¸¦É£géÚ†-#mL~~Í?Yœ>L^ATB‹íÏ` Âå¶üà$m®œýiþCl®gÝ¿'VÅÍžÌ(ä´(”äE,ų…°EF[šHNé–…s¸/GÀ†ïëÔ=+hv–<1¯Fï$W«íP¢$"Mo¹šíðq-ÚÃQËKfÆÇ}À„–RkVb@ñ¨§® g«TY®ônᢠÖ<Ùï;t¼p7ÑÖ¥ •mâb]YÎ'0“‡jB‰[ªmd²@±úÀeW„AÜØÐhM[yOû3Q<‡í¹9º´z¯EÈn×"FôŒWän”ošG|üPµhã䢗!y-O€”žÕ­Š;!ó·i¡Wìñ,mÜç °Ï~é"¹ìnl(Ú  ß&¹Ä&ÌSºuÒp©.ÔXyr²Ï¹¡ À·!ž)ÏŸw/qú8m6STP&cЋ5œR,K’éÑ$Rž;}•(öÆ™+¼…u‘,žéfù5K[ÖRr9×)ê>ÌèáoÚZUöìûQ–ÅõЍjºV©0´ÚŶ Ï»šZÇIsUÉèL¿òl j±O—Ĥûî'Îè~!7ÜAwlc(¢t·Žóï=p Y d_»4ôcº½}¤ãüv\†îS£\µºaîëb”õthï*—1çڑV6„:W)¥ŽJJ—ЩÛV2 ¬”:r…7ƒ¶(=w£æu’n6·âÑR$ŸÿÊzÒÞWžÖŠîäÑùQ³¹ ª1¤Fl³ˆâDh §¶ÇÖG˜úËNëåÑ´WkaË$À3èfo#©sûÑŸnO?D){g.ÜÆ(Ö}„,KfáÕEþj=. ù“åT¤!)Q Š™Â·í£0ÄmÐαåe9“gRöÎÓJçž*Cô¡"÷º‹!‚¯?žŽL}½’'Üš€ÜÇê–ÇJ«Až‰!u tì« —ÂÀñ9=NÖª‰Í³î†_õƒÙÍE¨æG2:Ë NËì‘'Ò)aFr#Ž?‚}TÅß>^€ >Ú|f÷ªVúÂPX’^••w«k‘1x!ŸÖÙ!ÚÁiÇmY³žÌt×*Ù°~âØ™He›;æ&媜Oç(Ö¤Û|Â70s:ÀÅ8Œ«@'ÌJoq_и Ås¸bY€1"Î;ÔVH}Xñ´NP˜ûb'üfUÜI(•M N‚°­«áUé6OñéXJ¤øË×iôК—C”À ²èÚos™Òº©æ0ætÌÊ(¯¬J#ýˆe¶¼^IFõŸ6‚¤$N­–ü…í8°:ˆ¾R+úb/,;'Í%E¼ºû\g3ËÐ(‡cÇ#µ:œ¨d´û£o,B–à:-5qRü@Ëìh‡Ù› :Ù¡þÆ­¶ 70qÉ5÷üõâoG¸›Œ$ó—A5wñ8סÕ;Kõ°Å1 |"²æL+%ÖkŒtg“iüÜ\’vãÐ@Åc÷ÛÖÛö3ÿ¬¯ÄWl‡Ö)ˆŒ%˜bäâQ5_7ÈǤ]ÕÝÇ%s»T²½˜”矾£~\Ô(G±òZÍ|‹É1TiÌbrA·@â[¸ƒ5µìòû¥(ªbÅ„«ÛP6¼¦Oüf£8Åø!Ñ!hgoÀåʤÁn&‘“^kóP+å2! ‰âîSã%§s‹Mö([È[ê[ÿ—‰=áK«ï,[õ‰±Öͱ(Ýœ¡_TQgx{öÒí-uèMê !‹ #O.N]æõcTèçïæÝ6‰ÉΑèjTÕç´¬õaC‚ì“<‘=ŠìqvîJ/Ï䨶¯böù=xDŒ,P;xpŸe÷†¦èÄôÏCiÖ3o¨ÌÇÐ?$Ën6 ûÁ‚>ßi¡–Ü1ìÎÞcÛœW¨€–)‚ËéµbZ™¥»t3¹Tç,çÁªÕ5tA6%:>k©åñu,'¥À@„Ä>¡|ܾihš.›=Cw¦ü$AÛÔÎ* KmÓ?@l›ÝŽ1~³˜‚—Ð/.ɨN™‚@ï¶ÔF’ºŒ-@Ø?†b_>èŒö±DbüZü«µ Ýó¶(±ø•‹¦W¹vÓÙ$5³¿qøëø=mà±7W9óX—–”ÂÈ‹AyµÕŠiÀbo\àñpçœË‡\`Õ>„"»©¯w´ÿõ¨W†8Ûû¹A‚Õô3ÛÔ.RHÑà4Å5q vØØ¦‰" @AÔÄ÷Šò* W¦œ°™ü]dÅôf±Üh›¿É;_´.Ë¢¬1 1¹ xâ /DÞê–I'Äœ¦„Ô‚zœÜsË%ŠrOØÎw{’¨sÂÜÌîð$Öq^ëÒú š›gnóÂÄÏDŽ­õ½MÝIXÏB{…nµxŲº¿6’É"¾ØfkÙŽE±5¥7òãÄáw?ÚÚž¬î’Ð÷ØÖµ¡56sŒXûÓ±üÚ¾ÎvN]õ~r?Þc¾7ˆ˜¸?$Ð^U œ>3PJ{µÔ¨™5îæ}£Ò¡èx¥)ЊK#@´¥ ÃRQ´Hõ(+]?µ #¾‰£˜•¶–Åø$Ù5GýâƲbÁ&«ÆŠRµý_݆-{WH×(ïÈèîAQ{[ræÓÔð¶yZY#…‡3›3’Ô•-Œ¶yXCq¼dCeòó–U¬øÆ÷tŸ¨:Ài\ï¢@¿\•IåL ïX3ª”´KjeÈ$\[WGJ…ãÔ|ÒÁ…5÷KMÉYÊžkÖJF¼¼ ÙLÄd Z!jÐB gt¤cJgÃŽaò;È·•²C>Œ†­eìe4¶Cyy&ÁÐâ¸mÛ=:WñTHwòáÃÉ«Ó xÎíìlD(mFêqLXhè–bÙötüÄ]lKí‘­~9ð’”RI´YimZQ”~'˘uÇå>]—>¯+ç¾lfv+“+/žë‚XRzQÞ<ºsL;’3®)9ÜVž×¯ ‚ºÇ.L¡KŸYdGN³ò·-5&Óê=°ð™ø¬Ôgν²˜Ø±â¯ÇÅêÚ±æ«o77xÄ[Ú>O^Uô–6EdJC°ÌsP’÷Á¸“˜Ðæ-Fd{R»M…3IB•2D|72³VPr‡ø]Ë ¦âçÞRGÚ¥çShºüJéÁ2çh& y‰¸&ΔˆXÝÍ6>6]»µ±U¾Á¨#›õ¶òÄú ”w¸•ÈÂÖfD±Ž#iÀ¯[{  žŒÖî-ýÐ0£-V÷X¿ÌŒR”¯×+ z’ŠGòðÿš…öÓ„ÚŠµ’F˜%Z?—× õÚÒ Eê‰9"©eÆ:ÔíQÜ¿þ[”¨JC¬^ƒ{M½÷Úp”"lµ~)â€Ó5„À4öô+~,DçöÞÓ‹Ë·®&üÁM/횯ºVº¢¸‚È®èj3ç$…T1Ü4~k¸ k\!01Óm¨Y ~Øq¦ŒÿPy­Ç… ͦÕåÂúýµaŽ5ä ±Eü~Ï2ßHàía-8‰^²m޳?×!1]Ç: ÐÀ )Qy™0§g”œq‰%†,ìÇ<ÝYÔ}…²†$VÁ€ ñ_‡Ls6 J.ýVÎkVÉÚN! >s vðDžºša£|‹…ºR#¥T¾2µ·ôc½Å§õÕMC]ÐAKzCEðÉÙýˆ·Å/Yê›oÖ#Ï…D“‡Ê_ð[íNÃO›ý0abÈÙoÉõuï5ûíÆ]B8‚Y†¥wô£—† oªAá2¡Q˹²iŘë‘DöËBí‰ðí¼`& ‡ñÉj\µãˆ/_ž©7¨?MWñªçgN€»x~ètN¹wÍN°k ÷ Wtï5å`ñŽØÍeseÐpigcX[3Ež·ÎôŠä¼ä[N¾»=F‹Ñ@óÓÌñÆ™ŸmëUà Q´Ø(}“β±8’Æ7mԳƴÀ¡u‡Hˆ†åCâdI¡yá_0ƒ÷i¡Œa<š"¢nQVÑÒêûÅ`iò)Nìº-iÀzó&¤ÀÁM 8{§9ú›=Ä/æ=Ì:òGì“ʘ†ûla‹6Œ,xbát£¦é£_Í”Ì{¨ ù‹e7¯%óq'8*º¤ùææ†j~9_`/.¢™¢ð¼ˆÆºzúù3|ë…RMį*õš9g­“愌3òÆòŒgª$ gýùëèVeÁ³w¡Iǃ‰|H|iñr˜˜×þ8´ÕØÀ)F˜ßž„UjÍkºìžI_ÁÊÌ üíQΊ;]íyêº>nîÕNì–Šÿ@§÷滢/Ûœá2¼TnïêÙ/ÞMK]¥·%8F¡• u«Zíñ ÝñáïÁ΄¼¸>¤E+à/&¬vøµ×ÌJN’L,+Æœ¼2ë¹8¢I™Gs0T)Ý-qcÖ")Îзšn-Á.ÂþK>↟Ïä$äTvóœÜëpl9"Ðâ–Ÿe7šÌn‹?ð­êÑ¢¯¡F^‰“°Àº+ßÎÈãæ‘}/2Ûé^ÓÉ'ÒPcØ@¤¼ÕÖšr b¡åú¤:az=RÚ©7»ÍŠ91¡ ÿ)J"Iþô“¶2”üôói?GÛ ä¯HÈ$ïº^Ó=â߯ic<ˆ¹¼£`fQ>j UŽ_ K×4d&â^\AýêMõ¥²!a Aœ7«ç¢‡“Ž­[÷ŠVˆë%Õâ~-Êïo¹ª“ç5± ‰.¸Ï{zÔð&/‘fÃu"îå·R`´Èk¿ý꡸SM!áW_ÿЮ.Ki2®’)–I+—I Ej>%5Å»IQì ÄÀ¨†’Â<§ß|PÈ ­ï†Õ[†鱟 ¬.¶’[´ìj&l¬˜ö ÊRxdáT”ò¯õR?\„.¹‹Ó‰i¾JË}ÃM›‹á íLÙKÌÍTñh˜l!¨Òô >åuaSˆëè¬^õê´ Ÿ¸ü2›q¢>Cßìòõù€rNÓ²(sYx—û‹1oëô¹;)®Uâ2âˆA…eCÈN—®ì‘Z?9×ÑYY5<ëטŽ[¼ uCJ²Ùz„x'îm"é++t}‘¸Õ‡at=¤Ó@¯r.ÌïDüKì6œµØpxÒD<¸û ᣮ_BÛ™â(¼‘l&g·ÇP” àZ÷PÄ E^­Ò”»@Þ¥Åj]‚hßåüév“Ê€Y3‹ëaÂsO]N_ÅáHs y†–‹+ Ý5wyAÌÜ^Í­ÌN,]ßTȈKb‰ºÇ.y7 ´B¤SÄӛ⬧MCK ‡‘:øuS¢.\£üàŽãÅ÷4%î•vÉ!R£±¼È sOf}]š5‚RÕ_]´‚ËD~°X@Xr`¤àÕ\¶•¥º…,CØ (˜rŽT7ªºÔg&Ö±Ë6ç.I,­TÌ×_¡<m@Yu]J®bZ¹ Kæoן„¾f u%Üx·üfñ_”@Þô‘»&›•¯Ë±þ°um§‹¨á«¿üñs'zvÄž EcDïx“Ÿ§à»¢ûþåÀ/Ž4þOZU( †îY¡±uç­}ä‘3GPšÖ³|(ˆ¤¯UôÛkb;„ø¨‰àä&{¬0iÏ{®4ØQ›Zó~ù]Áïöy]cÉŠÔXBàìD½P¾ù\øzz ºTk”f®À´'Þxâ©`‚4ºê…>0†âŽÀíX¶6ûmƒãkM Txá32ZêÊ,³:KzG¾D•òƒ•×·sH(®Ÿ5Å=¥‹EÙQS§ÎÌõ>‰fJìùŸ*< ¡š Ä&Mb§/óâÖ/¿ò²Äy½yÈN¯ÖëºsoÿY;¡Ñô³ìÞ_Çé­é¦K×Þoä°Ù(ó.0…j¯CÂ-ƧUÙµÖwÈO>>FSÊQ} áÔ{§®Kv˜ºWò³ æ¼‡8:£ÆÛ™“w9­|öÍ€)^!s9©¯€7ˆÀTŒ=IVZg«TÇš;0ÃÅ@Öóü(gZ b`–HYEüêSu£I°]0¯·¥Ûúizí„lÐ&w‚—y¤¶ÞÞ³Ït'lÞ„¯Û6¿'õð£so{Szþ ŠÚÀÍòÂõ5xëä>ª„æ–ûUD°ÀÈHTÙ†ø(/Â¥ ¬f†Õ†o]uçe]o/ðeÕWîMü÷µu»?0ã6¥?ö)á¹Ýë–ñIÜõ¨ýèùÔo¹g=µ!á(dÝøLô‡tÝTÇ®öéJëkž‡§÷ÔáÁzÜïŒÏª½}QÌÍA» ˜¿¿Zƒ>´†ÿôphBÕ[eJiå³,7é––“È6¦ô]«~(¢ ;ê3ù¢kxÚºŒë…g"HÌÞÉklLÉó¥ãjœ7Á»{Á!å>º]"0Ú‡¸ÃÒþþ¥OG \!­qæ¢êg^ãjX»^¹Ç[üWt w!ådˆRë/Kd4nÍÏ…¯«ÜÓùq¸× „ȳWŽ>Ø€eëÃÔvk¹`01ã£3ß졠ݰñhû|Åñ4˜u ¶¨õ }°Nˆ† ½Š¢dPÆ¢ZÞv”Ò=ígÓur^åmSvíÛsâ,¼¯ê+áö¦Ýx†…+éî‡T5#lžr=±ÞZÞçA±ì¹}V7út1ïŦÿõ‹áÏf2ô¼LK®ŒF²~í½ãPxèºo¹ª ŸHº˜BŠÄÔ}`qèDI¨1¡‚ª9&ð©9÷meûn6QŒ¹¾ÄôM-<ÚO»×M¾,y„8ù¥úW¡˜ç¨Øß:ͦë&çB_ÙÓ¸”N¿‰oHŒ–RA/w²~jaš ¿á­Õˆx@†‡møŠ vñ!(Pm-²úÔê¨óè†epºã†‡k‡dŒ_j©‚¹PÙ×ÉçÅmñ\4äOd~£yg·Þ¦]*ÒçÖn½:³øš~wÏíSEiú@~P1|ÚÏHß iáf°î›ÄÈуïæõÔzŒ=œma\uB_ %õŠû«á R`ü7v°X–J*BÖÅ×Ù¤wÁ†FÄFä!sfVUʯïo- Šv¿Ù~]×߯”e àÊ,ù]š¹_ãêfü43Xƒ\TX‚fS7ÿôZqÁ9»ÃPbžÊHó#ª%ywƒ  EQ!ÍRfxÁ5ilmb€=„FÈ_T÷Y®ø<éRTz+¼é’ŠàÆZ‚ÂxÅÕ=ûj_þ—3á͸\àèïñØz#Ê ‡¨„«+PiƒGclA„-±bë—ØÂ¼ò…¦ñª´uƒ€5¯šU4%É*„¬ k»ä¹µJ”#¾K 65g“¶Ô¡õ·œÂÏi0þ¬»—œ­ Ð§·J`ÈYÅ)¸‰tàã9÷pÑëÆgéÜL«[y(¯|ÓCäI•~¹Í‹kƒ3$ºN ŸPO7ª½®0âî|K•; Ë!ž4:ÔQÖ ç•L¯FÆÔu˜ø„{kR%GrArc‰‹3¿Ðú;~7 Ü}O,»þZ”I‡'M1”£M°>¿/•³Ý —¯|nû½0Þ’âççð|ü¾)ðð{x¶ú}¹R,¹Ð€‚Ÿõ‰qÕ(OhÚ*ž|2×á}µg…Ø©VÞ!¶Êg¸qeG‡NkßÇ™{$ûëI|û·÷[¾Vnt8Bш#Y³ÁÐú”’a›‰÷¿l}âütÑðü9ކŽR–{½&Ÿ¾© x ëÍ|Éx ø~ǫ悖];€hœžznhñ´~·°èmþñ;¶ÌrÃþ’! ,ˆ*ìÞ‘:›Þ j¢ãYzbˆ‰ø•e*ÞÈ#R„FÙOwû °-\p” ¶ >eç<âÙW¸‘ÏÞKuAy 1èqw7¯:¬:r9ÁŽÄÉ™TÁ›Ìõ·j27OìP$¡õa’îµ’PÛDéÐÜÇ@Ì«vÀ·èåj „j$ƒ¢ì‡&³¯°<®Vÿéæçósœ¸ŸxFÛÛ¿ÔÔÜŽ?ÜyéÏš÷mÓ@Á˘>t yÍÇ”‡ò'€‚«XÎEF‰¤ .ð«V,NÞ·õâÕ‚lªWP/co-8uî«‹X˜ÏtÚÉUW¨ÞÁw3d}%G £Ô?¬U¯iøÁzSíaÂ,_(⽤~ï€Æ¬ŽcÐnóý¡À(±0N7Ë¿~ LóÏ&š¯{é£gù@œòBý…”¼³®ëz'³_éÕmï_|Ù‘ )Oÿ†?÷SÚ]áfN4{ì]›Ò”ôÿ b õ“e0Û w—Ñ -Y ñ®òa’sÃk#õ “¬4ÀrÒê¹E®µ£Ç—B' lâ÷t‰Êêvù£[¸?ýjŸ ü. hÐý-Iq̉ …”Ÿaë¸4ë…ÞG œÔ…‹Ø˜ØOš;§>PkÏzØ4gÊA ›÷ŒzÓ/œJ† ×»O~‰¤}sà^ß8']mã 7Ø“¡›¦ ­¶ [³Œ@ÖÞ ü¼êLm( Ï{hÙ¼Aw‹_&ýZÐë]Cˆâ]ú?†rËKø·àñä ¯Þ\Œ'ÄB}MÏC¢‹‡ÂãbBÞ#‡‘õkek–è «ŠHiï[5è™L$lݹî¤Y­9ðèÒJ1"çËWËæö‡¬îð‘Û?Íqè›yÁb/wRæç;YWdÑ„“÷Ê»³RS}땟“œ>µgòé%g§Gà¢?Õ-_%* çRtBOnd'½oC§Dm0;ÄR¨Oó¢m;×D0|Z÷ÊÚ±„# •U¹äGŒpÀmÀ7G’‡}?Ü$þäq)ÿAG `îü¡U·eÞ±Ÿ\ EÐ7ç«„kÏJ“â·“U=:ÇÞëÇ¿y<‹' à³0¿¯Âzkjÿ ,$$Ç|±a&[ƒAç3A…LSABÿú-äAñe¦šL>},Xóÿæ‹•²ýAöö¥ÑÃLÊÇBv[ò|¦Y¤átsþÚj »ß ƒEÂÅK”]Çwøô"2.Ý< Á¡Ár¸“el>h±ºÜ­Î&tݰ3Ú¦œÖº:ï­«÷~Êq•píä®hô•M;V§Dé°øºßZiß©øNHÐÏö¤“»m6œGÝK(mÞËM;Ù&5åQ1‘ÚÂUÙMŸc0úÉ—))NhëdXs{ï_Åž¦a‡”ãáM;2ˆ,‡0¦-‰-Ì«ã9èÖƒ?¦qš@óà‘‰ÆgÛG¼€H¬ ¼XxlûÞÙ²öüúÚ jË€AÉygŽg¿/•gAå4E÷#°­U±Ô[šXË™-‚Å¡‘d9Žc"ÙÓÃ*¦xÚç¾CŽ|„«ÊÚbŸQ]/’BYÎbšL¡bõ%² ÍíxëÓ½V ñE½a@š®PÜ?RL^F:–Q²$k‰»»E2 "Wÿ 4ѯú“ì^ú[ ñ5j®úi¨=˜ûœ5oØD¤¤‡zD¶n*«œ‰êo4gÒØMJ2 ÃuN öê[…Ô’sø¾5æÐYؼûƒÔ°ŽÙ®%º½ñÔ_Djm‘}$Ñ \î׫ŒG«ÉÓÐS¶Ñm97͈%L÷»û×fdß‘–”Hï*ƒ+33“ `A¼ ²e´¢ó}ÓU2ÛשÍÖbì !z> ùÅvPÉ~ë ‰Ñÿ,5Å®Öÿ¨›EK:8Y.%ýß.: çÁ¯ÀÁ·ßϧóVéA„5ߎá÷”ïAÔXH6;+/ëéKÀé—”£9+\hv&=\ùíÛ¥}_™9ÎvÝ&¬ºËÅ.H<=¡êÂ}ò5×UŸûY·Ì|Š]– :²y?£WR7†ÐkD¦Ã·¸‹9.4|¨mƒY Âñ%•‘¢v6²~®ºô]ØâH?ØǤ`;('×X±ÇJ®ò\f79¿ú„?Fó^~rCBzf¯b-J9é5~$ÕñF Э&í ÆšÁü;pqñû]³«ú删u]h§p•[ð:„ðÜB© x*”@oá(Í“ªu±Nc:a7ŠP3¸’k ›DêgÇ“étPÖÖJ‘&Ð÷ë\‚òØ·—¡š4'‰åÔ gdqu¥{ÇÙ\Ñên¾Íƒž…¾8öëj~Qt[pBR¢w»$âĵŒášhÐ¥/aöTU‡Q J„¶—õ’´ iÈ£ój7aߘ?VLòòÚ¾±N¹^Ÿ“š–)˜ÃDclOsºœ»å¥×6å¨c†B¯X˜Á£Ýî0vOÝ·,,“x¯ï$Q±—íÂ…¸\kK*jÿY0^ÇÆöKGfJ§Ä]ÚÖD½½Åµîýno(E—^ ÿ]¯ ª^­$P¬ú6{¶ yQ‹JÄU»±„^,°3(7} `I+×âÍï±PÄ&é5Ñšî:rÈ,·ÃÎÿ >b²gGNqŸà¿)—µE§ÕÞ ™~ݤÒÞH‡á)£ßÇôÐ=A¥À)IeÌG.¦æ*ò¶·¼ê4ö7W÷Å¥©¿õuÛo‹ Âb»…¾g"ÓÉ×…ÁS؇pŸ©F ’êë¤âÙÕm0ØÀwóù“u]~œ:™ÆÈ¡õ€¥€·³MSïÖjvéM³B>½ gȤ*¦éÄw¡áå9•2!ˆù»üu:”DK´_“×$÷j‰«iuÆ®»Ú¿óÀ’Ô.Îõ[gm`µLðÀSˆ=wùgPbM)¢ð î2ÿMíƒ9‰÷ïÅТtðª;ÇTG­Õ×h®ä§e^‡ò ø:ß@f6ù•«C0‹Ï…¡¯EŽü»E¹´@³(J3Iþ³¬Ã^@êGž%ž·¦HÐÛ`÷øÕub޵R'§¦Ð­Ó ™î¤kfmÅ0½’Ÿø-Î…`w÷áuËG9Í͉»¹2Õæ ?•¹‘áü«a¸ÙÿdýÈMØ||•ã,ê?ÒéS¹Z° Ž^‡aWÂýQ„D•¿þŒ"¬!dëáÒd9ÄÚ>ö³n‡ý×FEDW‰oBQL=¥»&•ÿ¨}‚ÓÈÂß# ÚVë¬TÆ<¡È$ÄØ©e“H^í-Œ<]¶‰’”< #y}cî“Jä_ºÕ> stream xÚŒ÷PœíÒŠâîÁupwww \ÜÝ%hp ž ÁÝ ÜÝ!¸;Á‚àÌ'{'û¿·êœš*fVëê~ºŸ÷…š\MƒYÜÜÑ$ãèàÆÌÎÂ&TÖÔdg°±q²°±q QSkZ»Ùþ#G¢~rqµvtøÃBÒtˤ€n`CeG€‚»€ÀÎ#ÀÎ+ÀÆà`cãÿ¡£‹@ èamPf(8:€\‘¨%¼]¬-­ÜÀyþó@gF`çççeúÛ nr±6:”nV {pF3 @ÃÑÌäæý?!脬ÜÜœXY===Y€ö®,Ž.–"ôLOk7+€:Èäâ2üU2@hú·4$j€¦•µë? G 7O  ØY›\Á.îæ 8;@C^  êrøÇXé&À¿Í°³°ÿ7ܿ޲vøÛhfæhïtð¶v°XXÛª2J,n^nL ƒù_†@;WG°?Ðhm4üM ‚+ü·>W3k'7WWk»¿jdý+ ¸ÍÒæ’Žöö 7W¤¿øIY»€ÌÀ}÷fý÷pm=|ÿƒ,¬Ì-þ*ÃÜ݉UËÁÚÙ$/õ¯ X„ô[f rp³±±ñqr@Η™ë_ 4½@+Ùÿƒkð÷urtX€Ëù[[€À_H¾®@ÀÍÅäïû§â;;ÀÜÚÌ ` ²´v@ú,YüƒÁçïbíÐg;€í¯Ï‚'ÌÜÑÁÎû·ùßGÌ*!#)®,ÏøoÉÿUJH8z|™¹ÌœœnN^?Àÿ£¨­ÿeñ‡§¼ƒ…#€ÿ²à.ý‡°Ç¿@÷ïzÐþ7–Š#xnAºßcnÀÆÍfþÃþÿyØÿvùÿ7ãEùóÿËHÆÝÎîo=Ý?ÿ?z ½µ÷¿à¹uw#xþ¯©6èŸÅU™[»Ûÿ_­¼¼ â–vÿm¤µ«ŒµÈ\ÍÚÍÌêïÙøG¬õמÙY;€Ô]­ÿºYÌìllÿG^.3[ðíá É¿U ðîüoFi3Gó¿–Œƒ›tqz#±'‰ƒ›àËÞFs×ßC `eqpt»ÀÕù,]þ:Rn«ø_¢xŠ~#^«äoÄ`•úø¬ÒÿE¼lV™ßˆÀ*ûqXå~#N«üoΧôó)ÿFà|*¿8Ÿê8ŸÚoΠþ3hüF\VÍß\­ÖoÎþî7g×þ/âgÐûÀ:à'˜ÐÞ ¼]eÿ‘rY]ÁƒcíjûÛljú_ÄÎæfê4Ù,Üþsÿ+þg[þëÌþØäö?öüœÿ•ÿp“Ì~—¾„íÿkÀXÍÿ€à ßGúrvïàopMÿ…Üà¼Ö¿=¸ÿR;º»üá6±ü¬·üëyúÓLËê7IpéVÞNVàÇÌo °Ìú>&›? ø,lÿ€àÿÉÜûß|²þŽÌ ìànoú×ýeùGBð…Ìêø›8ø‘ý‡\†Óo58¤ø©éð?gÂÅþ¯ôO„ Ì<(ÖŽtüÒÀêü÷ãö°ƒ9ºþî0˜‹+ÈÞÚÌÑÎñ7aî¿l@ôŒ ÜW; «ÕÀ©_½¬nV. ?\‡›§ãàî¿g œãïwW3G—?›î·ÇLÐóIõú‚³zÿÁôùÍÉäòƒÿ¹ÔÌÜ]Àtûû¹¾ñþƒÿ~¼@fHK Žf‚¡6u¡ßîkĉ<™÷&„g©÷´Óé™}—\ÚÝÑà?ÒWg¿ßp¹ÿ8܃±º#Mw#¶Löì{ÒÒÑšü¶íÉï—q¢úô^Ò÷)ÜÉ‚ñú~DbfM±}¿gg¿wÁ¶Ð- Ô¹Îî|hjùoî=ûd½êûËVÆÂöÞîWó("ÿ*›aŽÕŠ1.ž£Î3ý4OçÆL‚À€uá…>ws;‹•3ùJ¦ÈˆäËYè«·É÷0ï³V¡ÉáÚE@E ‡O}ƒ56Mã+q˜ª€·è[R³!¼ø™žbc¬ŸÌo´“ü‡€¾’<›Ë¿ì•[=k°N/ böž†‰CÓ Ú">£…§§Œl¾ê×¢>£ý¡Ä»HFsexxoßý­%˜Ý“Å“u“ú>#úÛˆHÛ8«ÍkRÏÎþØÊpÄ×û|]~6Y¥Tµ¾½6“§N³^û^íåÒgîhHð3Ð1Þd6ñR'ÞÔ¾á2@¬æo3…@4è¦×&X–ÑZaq¾Üáú‘7¦—ΧøäãéIÜèm—2Y$ÏmŠÕLfc–øC§ -#Š)™7§`a¸L±VàžRLażJlºMær\9âà®Û¸,ïɓҒ±îñD¸ùPä$ fNïS0ðksš6q”Ê v”·.ëòŽ^Ý@ÁaA^D2$.‘ôx¡þèMn¬ÛîÖh•F{5/zmЗ´9ÿâÙ^¦pí¼œäSCZ'Ñò|Æ0g‚Œb€~ºê)rÆ …7Ê&Šb`·ô¼;àèÊãb-ÊÍùÊÙ)V¾mPÃë³ô9žf'>¢ÿÐ̲™qñ38ZÚë½.mëPÙÝ1w¤ŒY °ƒMÇvû<Ü‚öa‚';Jì¯û±CÎ ÓyÈì¨nï¯uqc»¨ y¥«ÇÑÉ{Ç—EO%–§ÔNyOBÖ—dª¤t´¾¥ñóu£hžå/û ,Z>©×ËÑi¢ízŽÉ‰®}Ò;™Ê ‰ùÇÙØÖÄoŒ`BºÓÎôŠràO–^i?&T†£AªúNˤènei?ÝO r¯e¨Ù‹Ï 1æ¾[ñYù’”e†KoÂi¤‰†”£æDCXS³Ó}\‘hx§®žU&Y( cTÍýÌOy-þc‹QtPâ„ê`uþX,©N ˜N›vŸ :âE¢_¶ …€Ù%iL3/üã<®®u z¨“í'è’ŒÀ‰riŠ,÷˶%ÝÍÇR“sÌi#Rˆº•³´pö$ÈŠ´èŠÛ³¨´"9˜ÙÒ›j*Lʇ¾Qœ²êhb<9›¢ÌóF¸:±´A+‡72¸,ÎVé½°wºD9WOvïe%žcK*UZNãÅ&••×Û™Êüµp»ÆØ –3¦žäÛi(cß\û‚G4gR *¥º Mß h;“Zäy¶%›¼”ÂÀÇÐîõ˜lZÁõ hjÆË—;È}Ùí6åc¶']ÅÝõæš`­Ý.ì§Ý.®hKH"7Ðè„aÊuÙ[öoË?äjuNW”°žª>Âj"Q›Ðœû†Òá+ö °HžZ+òçwzÉõ3¿ñØ–þ5ÇåeÌM¹Ÿ»Ôú+*³éús±ù¶7­é¨éš3SªÜ- @5¹æ¯ QEÅáN¯Oö ÞÙ}œ´y°vA9ªãºÛòéhΜŠÞñGC_{*ÖVkúH'Ûé~´‰ý¬Îß=Hâ”.õÜWœpÊUy‡ÄD€‰ò¹qÔŸÃë* «Ähf¹˜îi™½Ó#GRç×wq›òw0?Cl¹…h²tóN­I—<†úá•à ÷¬ŽVùìÈÀԮǙȄl+À«’w•¿ø ä ö~‘f¡çû"žíf˜6áx¼tœ‚PU‰âƒm²Oî÷X d¨7?ÐBN€§gq“'¶rN\|‰$e`ƒÎu> j­ ª9UÁÔBìç ŠßäEï âWukÒçô‹½àvaƒþÙâ4ðýåé;üÆGítbg)¥þöoq¾«?Lê°“‡Ì=SˆüCQe^}X›³åh;ô¨B?,Ad|Wž(à‹-ØŒ‹ÐËŒƒ,@âÝð­VrZÇì½{GOýkëÐvd•3$ô4CÓ±à—¤ƒ?—H³Þ«ËPo› ^·–Þ+¿tYΜlÕ–{"ÿ²È¦‰#sÇ8ëû‚­€#4¯íÔx0¿l ~²Å Ñ.K÷! / YSé_,žÚ‚OaŽL]ˆx…J¶¶Š¾ðü––¿˜ íŽüÊi¾Íà£)¾ÌQÝ~ éô \m9åÕ:5; ïm‚/‡ m†ÂŽpøª‚>•1Á“yP¤½>Pþ_²ôún¥4]ÅŽ‘ÿu‹3Ú[nºçecµ$µ§+Š¢ÒgdÍQµÇ8ůÂLï…ØG¢`?D¬Y/Hœl­ãaS ø䕺Gd*šp B1óòu^·+ìü,{ïÑf‘¥DƒÌ›¥X~­g™c…jQ ,}'Ãäeا «˜ïݹ]I%—áZP|A“óÉ>yëJá¢õAPÉx¿H£«nó´_©ÇtRBo`¨¾Gà™ó;í4È™gJL.(¨ÓAòè3k2üà"ÏŽöÖ…0¡Un|¦ƒF®D¨þ1¢ü¦\MœrÀ"1H“‚8†Ft—ö¢SL“¤ÞÑ'=x‚lX¡tÞÁƒr)jEÏG3†Ã*ݹMM&Çke‹l¼pÃhVê†Öaƒôigß â¡Âiö ÖÚ`·Ù³Þæå9x¦êàªAÖ4ÔJ•ö˜<&ò4Ýß:¶¬] _ú“4J7Œ–ÐíhŒŒŽ³±$wVDZ¯Ó#›?áF‡Pþ‘‡l R3ÄÃjn¼lÁU‡ì|ùøëðc«<4S ÅhÖ§äàÛS‰œÉ‰¡_‹|~«+²“Ÿ××Î [åP¶àÌ8"7ª½Èt&à°sÙÉE6q¶0[R÷0pÝ(I{7qE©[¦ï>Z†Fit‚ô}2s@ãaþ€‘ +ú´G©ShæÇ0„оSÕP÷‚1ÓÄè~Dk¯³5—,—®bT4ùÓc8¬x‚øåcL„`Tvc sØkü=]ª³0ú‚žÊ›é>üEØ(ܳΘ†È÷êX†S2òUš¶^Y6–¦Ÿå’ÍX躷Ï˳‰Yb¦ Ò¨ œœ;Ë®Ep+DŒŽ|¼˜–}’ÆÍ ]²¶y«šÃò†Ö+Üä’5W%Ÿ'U§œ·ƒ ù¨°½¿6KD:*¹ ù [t5UPÑdîûýnB¨¢Ñ°ËÝÌ]óq³$!U|ÌšÚ2‹ŸÞsËŒ~ïùú8æˆ&™3/'Æ‚ŒÚ14uõ¡íØ›j‹7”eˆpá3"=Cq»o+j^=V&ËEâ@ò•èn5ã:|}35éû«–9ýÛý#Âg·×µ_§)n}8ùÅ ^õù‡fÕ‰W¶Xð |GLÜ×^õq"‰È‹¯©Z8»#ã…ñöÌ»8¼WQ k<~‰ž¼ÊxΕ©´­¨C®‡½êPµéLk'¬ÚXÞgl€×ÎO¹–*Ï¿K‹¦/»OOýÙ½ _¦p©ûîr4‹¯á´‹½ûΜRA‰WôrÃèŠþ,Óâ±·ÝhÄç-fÍS³9. íÕÈB–v±çi‰ÜºÕŠ“ÂÁ{—†'æHb‘AÆðÜór®›ïŸnVqŽY¯¶[£Çl߯¹ï[î¦<çE/œaøÓrÙ}œJÙ{¨î4V•ßhá%ÈšdõM0‚ññf6wÇ÷Bµ Êk#{ÄâUؘ^¸¼]œíºkÐøTºC›CHäãKÐrbÚX8kf«fŠ0 ñ‰-¯¶§÷¾h܇hG~¶’<U3äk´zÕ,S!éû’SÖÜC ˆ‚Óí`ét8¾îúŒÁ_ʈžZwÙ§\iß—û˜²7­‹"tM6Z@ß uc¯• š?´uù¬¶ ­{kíKN‰…§é~ 'Ê‘2lݰwÿ>Áóä¯zD Í¢iÚ¨‡9߉iÌõ.¿áŒ ®ˆKýˆ"ž· nªñøb µÔ1\!-N»›¦§ÅO[î!ôxJN qXl?b‚×\µ÷ËþH¨³vt80ñŠ zµï³€+5¼)…²Ðiº÷Ñâ¶ ¿Š¼lúw¬Õü:³ArÔî©éN7Sµ¥ª-Î寿Ê*r”pÏŒ÷Ê“þÜÓœ‘9s;U ·Rʺ2&¦<³È î|Šü{„9e6–ÿM†|rÁa–«ÉA¢N†¾N%廊Áóƒ,ÓΔ"eE‚4 ¯©£b–ü¾Ã´V¨ãW"ÏyK’+ΤîùX¿DõgQÌ‹rÚÇRô}HÇGù…w}ð+†Ö š–CѱúÆzƧ6áÄU_^R¸ ªKhUø<Ñ•#©á¥Þ1ûó~x07€»ÄÜÅ€÷U^²*Þ—}¨%\<*}C¯¿~¾ŠÀE5‘N™Ð!‹g‡ û[|>¿õ÷†)¦Ô³Ê])­§R**äV ÅÇ#mzoå S ¬–‚b¦ùp9øªðŒé¦o²úï-Â~ôáÐ$—ªuy}m ‘ÇÂÏÌx=)ˆ·¦CMË=ôx¯ïȤ:~Y€™6lÈ;·ó¨òV»^úe3«O ýÞ ³ÕgÚsWpÚ Â¬?µúHEƒïË÷S"Úü'Ý .[×– Z*Æ,·Ìçˆ}^úPú {šh%í±·s¨;J¼Éô•õ–·AÍÁá‹?Ç›(X"»¾½Z"1¤³ž¶‘Ðkð”Gnß ðWߨÚg¥C£”‘7ÒÁtbs¶xa÷ é»ÎvËaÎ>äœ8$¬e¸¶ ä¥)ûöòK'÷7cOCñM¯Iì¸ -kSžÔk»® r&ù÷`ïNªˆ?O{‘¡ü°H¹ ~™É輯ñìY"F :<é­gúÞùva'¦A»·"º r46¡\ ›´ È-㼪~ìƒD\VÍW)ãý/¨ü¦ˆÈ#$!"LQž¥•Õ£›lã¿Þì—¸r4q8‚eK~¾ÊìB_3-eî–úäcسö³$§‡vfI´*—]Yi—Ë» k{Nû“m#:qõ•)åù6Š®’èK„È»wVÑ” ˜ pLvÞf c‹4üt®Õú}B5ç²)©*Ò_Ó¾ãF¤¼ð,ó(ÿ³,ê]åMáMc ¯ÆV×í<µU¥ê§ 1Éu¹4¾ò䕚hˆâ!±ŸÀ9 ˜muE<¢v²ÏþùUV*8ü{òiÅ…Α®7Aœ¡ê=]ØVBiÛìRNíæ§ÞM,æ‚kð·$Þw2ý”1Z0ⶤÔ=#5X‘ ›Tœ~z‡îmÜÎ6®TÍÃz杻q4ùO$§sÅ@ N·Bµzª•H¾–ÄIóåöE¨ÈÙP ¨õÒê„™BO˜¯eÉ)R‚-yr䯔Ó"»vFß™ Æ©+à<ÛÕ¾‰ª€ ^{ëT%Ľ¡â†7™‰t&ÖXKIÃÞåÏGÓq{ â€à£²ëí66ow)Çz5عâl»nAׂË<èpT)‹¼Òï6óoËzoŸ©˜¨o?2ôPýÀ°>¯'i-R8!Eôd|Z×Î2‘R©ý^>™Û¨Ò’³¡?©jÚT<2'›jÂ(\йPs Eˆ¢Ð¶9 óx|Y'°º¡B™h‡ö^乯œù݆…íg7ØôÈù57DŸ‰I6EàÓÌyÖ ü%c¶KWVÀM3p 7 Ä“;Ÿ\3fÅ+R—¤C©À† ̘ÂO%?qÒ:nwsö` Å>1çS^ ÞaÜ4èñE²Å‚¸žóF*GVËŠ4<Ô$µßyæ"ðÖ‹•ìoÞ¸SµòÍ\Ñ‚ŽÑ¢ãrˆŒíÙË/„¯®˜69.™cª’ÑÙk 0Å5Èta×»D°I|_ÐÿN?R*¨yÒÑ8mƃ?^Û…«øSgIcä™êu˜Îùø—{³¶ù/igSƒ¢tЉ÷™IƒùÉÑ;`?£ –½vckR“žô¢Ùœœ´°±—‘Um-·ùš†/X°°ŠqÐÇâå"Hlí3J{M‰ìîÀ»ä?ܯfÖ˜a ‚,n– n¨[Ÿ™?•]TßnœB$=‹’õ*#/Ûjxœˆû:eP4Ũ}öå°Ñö6Ù\z°s¿iµEà-8zíÒÝÃá];Îk_•ùGÅ÷.3À,+ÇÎÑÜ!¸³@$rFT™-g7óD› ý+Ï1t숻®0$qsiSÂWŠJùÞ#ãä/Ó-†­ÄgÈ·v¹~ÂDÀ臲¤¥“Æå=eRNâ¡C}81JÙ ¡§óp[5ž¡/× ŠÞôŠ’b¾·>øzo’(’ Ê^¯”ƒLTn•‡x!#Æí!±S†X  ÍžšÛlç‰Ù ùÛÞ-#ÊcoF)‡s‹.ͤ»L³Kµ[¤šž ÷o&Ñ£+¯Ã,o¿W/OAp³ú\|~%Âì4®q@é m51Üö ”§ÿB9„¹FCëçåGòJBMåëšHÆ¿°K"3ðºÆ62c†ñH|wôaU°»<¼ axMœ py) ,0Ê›Faz1ÁÁõap㤽šÚþ+Gm¸‚»¿ÆF‹óyÃÇrïU¥9¸ÂcãO Do»O»>µ_G»Ÿô&7ê"ø~DN`Bá̵ËIî>ÃLm3â 8ÃðCÍ c{dÈ_©t*ôè¤ó„§DÖI¤è7Fã¤ÐÇQÊn«nlÙ“Ðø\Vè¤+§ «DŠ")B1{tøh-Ab¯VE|-ÁC× AÃãÛ»Üy»+ï ã-¹€p°¯¼~:ÏLpÉuꋃAŽ„…dÖ<ª÷ùéTU©.vÄo¸,šÒ¢Tš´,o+EÕD¹¹©ßÄàÞÐiâ|…=O}ÈbGàʘgÑŸ¦Æ ¿ŠÜ%(™ùaWðöòƒ;/s£Úù¹ç ýO3Âæp|'öÇÒÃk´ÝcsÜ%âm“ÆdµZyð.þzê‘_[“A®{éÑíBl#°(¾ÃLTF3C„ g*+R=¸¨qc~·AØ2‹Çè¨5Uæèúy¦ñó¶Ÿ9Ò/‰k{Éátu˜ÿùÜ*óÁ¦á²=ж´žfï "rå:‘d¼¤Ã ìÒѸ=™zE­W ä¨qïê{= áò’G¬† „#Áƒ.êG9eYr–,—"ß‚:ÍÏ4hCDœÒnÙ蜩øÈ’“A©IkÕ$îzÒò.¡uÇ$®h›†Z÷ÛwBø’/‰ÖÏ%¼ÏúBÏ:žÑ¬ s…óè/ v­±ó ñ¥Î¬ç F)?Ì™²¸ZÇÚx ¹¦ÊA ¶½œ—0ÝáL(d‘š D4ñn×›Þ¢¶­{¥«Ù5"p?¥é65µ³GeŒ5Þ¢L&å{"å8ËÊ(N‰Y̳‘@ÄC¼¸záU0Þùz±GÕ%>L®š]{ù…G˜ÆØi¥&ÛûÛ»øh9]*>G^s³­_ÔIüBOoñqöa/çvž, (b¦N“ Gäœ_aºf®Î{Næièüˆ«Jtøù¦²)éG¸?ÁêP“Ǧ‹`¾éâ®PèX~3“ZQ,6÷ ´T¿¼Nžˆ•™­z¬sø<„Ÿ}Ì­Õ٘ئiÚO˜µ³¡Ã(؇ޑ\ë_Æ¥(•b##vQÜÚ˜øè£Á–3uÙóP2¥ÂÀ;Ί¦R]ý'ÜØŽå[»c¹Õ&„ œú¯8=Fóî}ç?½ï†ÓÈ#ÛZj1LeßÒÏbߢù™¨k/ŸÃ{}›†õá«V³yBÿl¾9*Ñ\H®ÒÈ·ÏÕêƒ_µïkroŒæŽƒ¬J(ÚÀ?÷ÐŒ.íX’È0š¢ž¤IT-Ëäέ’võ,¿Bq-W‰¿ ;µUDŒÁúvpyNEv£öÁÙ$½cœÄÉ üð:˜Ò®ÊVÏ33VÕa˯ò~”aëØS!®?%ÿká.æ'ï|öÃ/g¼rVÛU½³cоarª˜±E­Ž[x+Ö8LÛ˱ˆK¶7—DxPo·é¿wØ´%§˜· Q|h©2#ôÿš|£6Õ“Ì%/ÀG4– ¤Q‹g! å=¤àð3åß0&§þžœ<¬dÈb)á Rǰ6rþ:9:ÛeOèsÍé3W’Ð%-ŽñE«ð:4"5ö=O xÓâ,TMZ‘ó›ý˜HD“IC%ßã ¤âØV×Ûw{ð4ƒ.¨‚Eò Ÿ ¯½BÚáéÓÊb‰»dÏ3{eªI矉¯MˆÂüîãsÄ õW…'ªÚ(»å\c j³;Ú×MZî küœ›ÁÍİÒ_Åkè;ޤvEžì`ot‹Éw„r|æLñyáÝ*Ì)êÇÃÿ*Í Ö>•vbÃÇ/˳«¬•Ò0ð8[æÏ «ŽºuIéUÖNgã&"¸W5>*¡YçëÑ7„>·9êÉi“J'îuÏÕ‰ªpuÀ,·©×íÒÇÚ¼ùªê:hZ@;©»×v}¶»ÑÜr`µéû™¥F–ƒdJóöUÝË«½s/˜ƒýÄØ®5>§ƒCÁi";ߥö ,3|0–Dh!?$êB<ÕrHœ½'Èd!Ö© ãÎʱn<¼À r4 ^7EÌdBóA½„y8pà™«0WQÙEc±PNpbú0CÿÖÊ­Ý¥hŸ‰n„%’"røD³u³?_nݨc±Rˆâ¬Å,dD£fõgÕ‹%C¡½ó¹šèÇ‚E‘¥èj»Sb‚bGØàZQ¯ú!¢ýº=á&š6zgh¯T¿Cõ˜ 6&O¥M‚¼ìqà}KžÚøm †tˆâYk=Dm•Æ1¦ ôøµñä1ƒÿöo5qEãжaŸ²Š Õ} ¤-ÄQý\§½lS†ù„9HÐ]wØðFÿìwZˆ¾âž]ˆÍJýú¦o„¥Ç¯F˜a8‘0°ìeórˆè´zß[u™­ í„>›˜QQÙãq4Í_:sö¼W­Ép;¡Æžò>7wßÉ4%"'=KoŒ]N1똈íÀ¾‡RÀÊcJ‰(?VÞq­Ïy5¤ål<œÕqn¹bq­iX~´”S#{JsùfúؼÃH&…'ü/¸`Ⱥ½ž5Úk²jò¦ß©þÌ–ü36ËMÕ²g39I()QéC¸žt’†âãzná¯ü™ÝkۥɲÒž^“€5i‡¾ä5×Ô>h¨N(Ãí¥xß% ô6Õ( ê¹0Ä'SjV¢ô³ZÝø-Zqf%&l”%y®$j ¿t>±à oK2yY Bô.F†Oµz|­F]Ü\*,ÞÃ=O×w‚¬d'ògëf+¡ÂîLTá ¨,l°É{ofD]†{.€=¥Ii¼æG5vþWu^¼r~O_Ç‘žÐÒ@HO¬jÞãÝoe¾Uê¿;VüŽ‘ÐÊ´†þ™ðþaÕÒgÊÊQêÆ#ü¯=|]H(:I:íº!Â3áÜÓnž‹MŒƒü/½ræèIa0°ë–BØÁÏtŽ¿¦ i’ÕÂÓ ˆ…tÝüzÊÇIU#ef¡â–‰Æˆ¶GÃ9iä©ÞNz3ü¤à±§“ŽŽÛÙ¥H Kgçc 6±Y±*K: k|óSj{oâëš+B15°¼ÐN Ð_»‰.« t{Î žς͸í7ÓŠT•Á¯ çLž§l9jEëÀ¸+O]yÞ—ž8Sö6P J}½ˆÆl”þ¤èé´Q6U›—â7oùû?ˆ!>Z/1rž‹ÞÁ¶Ãì½ñVŠ^œCã)bÚ´‚úV)w\“þB{¹Ðnôn[ÅËš´6ÑÂuWœûMüÍt¤DÐ<ˆxO[â¡ÿ— —õ‹pøòw¦Î±@ŒÒ)–Qb¼W‡Xgžâ›Kÿè"ãô >_i/ƒÏƒxC¾aPCë/S¤Ö–Ø;œ<ðiF_äÃäd¬å,ù_h‹ŽæÁÍX-:ŽÓïÛÁß¡ÿìn>&h~ÓÇo„û3µ, ÿ3¼K‡M½ÒƒÃòq õUšZŸ-êO ¤ïíg†ä].Ô/‡O«ÓôLëºæ÷”F²nó‡bù¥¸––¹YvS3ÞÆ*ìsƒÊú‰œ2zË+ô–´h¾B[6µ’‚#Úm¸­¬ÃêK­™kÅØðžÁëgzfõâÀÂdR)O–öušÔéõª}F›÷aF&£™Ÿ k­#ü…qUIA gÆ’žø2£Ô層èë•ማìóÚµÒ dyÀ§IZR Ro ~ËQ(ûñç[³«;vZ·¾¨ÓÇϬøT¥ÒÍ1©–=ùãÐå·ÝÙ%:÷È­1„=;Ó+&˜»ž,ªiÚ}ï]¡Öcض.†¿9ð«¶1 Âæ¢A?Ô_9ÞŒ*`k•/Mô²<¨6g¹îeÝãÝûxÐR;Ÿ4!”ù…јðL›øek}K¤iÞŽ9å•öÑCD?x¨8í_z‘ùr%ãKÕ$ì[”ó®’#ð!±* ¾Ø;ø6½Vô‹´ªåMÜ+áµi¿ª6ù¦t>Nc‘!Á¬ì²ÌÈ[å0¢m Î0Ú€“3¾6s¤<‡6lÎà‡äYMTF©ôvöo¾Æ¶Âe%í²²¬Ë¿–È‚Tß©4w7bÐ+S’¶$fø&né‘ exdG¿qCè_Ä6??x)•DQs~hç;°¬GjýR»- ªúÄ:ÞÜ=t–Æ™&î§p¡“ rŽÉ+­~Ù`ñù|³SeE$/óxò‘Ì6nPa)¤æ0õ2G;7k£Jùà9~þÐÉÆD.©X·hVCØúù*‚ úeG[¨è9…IM;ºSMlš×üQu*)Žíá<€št …*Õ¬[ç{V_È¢äKöè#fxÑ^‚ &òH«` o;üýÛ”Ö:kµ"óqck¬%Í…0Ÿˆ£˜»Ýû›é;Óoê›:ôWÄ"g¥MÀ°‘÷æ"ž)H"–ÑÇ=ýªbHs·­Û0F Ü›kEFè@ö˜àí{yÄšÈ8d63o§ôÝbF±¢ê1†£îpƒ!5"(šùêT”C¥ºš©dÞÝ›†¦ca€ßÇeIâp¡ÏÑOr«ãXB~$Ût$£Žfü]-Ô’³¿Õ¾håÜ×} û ²«ô®±›±ú†™­Üücùs^2êý&£äϨxµi-kÐm?ùß¶çÝŽJy!0£Ä¥d´Rsc)µ=R—ûSzÓõÕ'ü*Þ¹ ŽF±œøV+ÂFÐý¶>¥pÖÛ˜¾®|{‹†7F$g”`â±“ÉÆydšáFY:F²ò¢L·¸Gðv}yú¹9ù¹é|‰©¥³oÇQmÓ+^'ëI‚ÁðZ®?ØÆX;ëúM±{¶4u3¯¨F€2Žõ U}з5½~ÜqÊwÉÌljcf_ m ²5 X¼ M$I~Qi Ü€ëjI4³²©OÆ@ˆŽT¾îb7üþ¾EÄ>N>Õ-äˆ>6C¿¦cî¥AOôr6Æ¢ì&$ƒCjv¬[ó‡ù{ƒÙíwí­77íófše÷SÖ‰7¢â‚×9rá,Iö¿@œêõ!êwþƒ9Ùñ½Ô7†"ékÕ1!pSñ¦AÞ”Ye´öO˜ú¼xî“&e«”eèØ†d?)ß’gŸ¯ÔÂÕ{øjÓC}(UX» Ò·cEr-5xh‚ÊÛÍ]ýšßù.‚9Œ¼Ü6~H¯cÆâ’S.6c„R³þãààã„P`+Kó„/©ï0}˜´¸'ñÐf=¾LRß|µ Î#\Ò Wì¾C´ å|.þ´•É÷Ýù½GQR¾ÛbÎÝUÁ—ã%O¬ŸlHo“…™×jcé(f-(f¹2TJΈu7ÈfèáØì߉„w#JÚ=wRd-S߈ò‹¡u±Á±È£¿kI+H­XáP¸HsnØõ‡?ŽÈãgÑrH%wasg42úøÙ¾B‚“ ¿_eô‡È0´è%wÙeQ¡Ë€ÎûúJO2·ý•Ï´-ãj6_±—À9w”Q'™P'Ͻ‚ucÄ/iÍ–ýèÒqŒA£*g8ãyÉ‘‹bÎÇJœ‰½$ï™-¦žeH PåÞà‹XÞwФ¥&]7óðH6õF²ožuØIÉ.D;åý„-£Åĸõäö«"ÿ-öU¨Œ^¦+‡î/„«gSN ©ò$Ej`ÚÝܯ¨aR|»ÚàK1ŠF®–‰l»d»‚ñ3öSÞ¾ã8óÁ€Rh<χÔÀáá¦Úkû>-Hâ¢NfòäzÑŒ>˜L?XU6Lf¦æ™æ–èÔý*ª%œ@ ';'Á:ûo?G'æ^iâ ÝËÅYÃó2VXk'N_gЉš1¶†j—ά_HöÙ—6ýªn­ 8å±ûöý«áŸJS4©¼ D°¿-ñFàÙ ºTvÃäÄ ô-A´p¸(ÊŸB}1¶õžàá`קƦƒÌþ*"±pÆ£6ÞŽieža•‹ ¹ßä6æÅ“RTWãVQÕ?^ópêDë4¹’b˜RPß_¾n=t¾Mîx§~<&Õká‘^¶á÷98ïTÚƒ–øâkJÙô˜g™Hn?ÑB>ÉY˜"ÊiŒïÖ8À‘Wˆ36³GŽñ‘ðÀ†QG¡ËÃë°r£»§®ðn/ ­¸’.yU—ÒMs%†?üDzر`+>û²ÉÜQâÙ5ô#3)¬!†Hå²`bÂBTT;)eºƒü;¤v±7?‡°‚LìblÎÆßÄS‰‘y»D7‡s¦ ùKìÖ< E þՔؙŽ\¯ž0þYa¡è\rtNõƒS©“®ù&Q2Ž«sKHMbv¿¹Ôð’Žqíqkç=Èö•²óLœoÒ™äÇsÈñ3“Pè¡{_ù­@ÅlÐç~]}™Ë›¤F|w›ü>©î­ÇúWÓ}•áðÇ ¢´ùöjl k#,‰Á\vÓÜjx«)ð%õ}¶ý2†¥©Î …ÉoôÔ^!€8¹ðŠ#5xD1Õ ¯3‘GuiŒâEį¿¾lóÈ×j§¤)ÿuÙ´ÿªÐŠ›Öꛋ’íÓ—­»+÷Üo¯ z´iB&é}/=GPAuHƒj¦uVÜ*˜Gœ«Õ3q⥖=\,b&HX‰™ˆ™P/&0ûeUbÃ/£Pùy†Â3èŒ_7Áñ‹Kª€ý»aÏ7St¬œ3K5ßE¿#¼_ë߃Kíap7˜9·VW>´K<†·RSB=¿Ëð+Ì×Zì#¶ÆÓÉHÝW+ðqc-îCÿTPšÂ œ€jqßåílµKó…›ëWUõ†ÀØž²ì¢/d‹Y"tk”(œ}ÚÍDÆ?#­Ù ³°—ï°ñ“˜Ò Ì2Ÿ¡^‘k‰jécD8^ìCÞ“ ̽„l¥S®§¡±ôx8û*’b`½gŒÎ~ÜÙ ÕÛa«§_îc-P:¤ŽÝÖTWâWs—$=„­Š|Tg¯°NA ¼Þe²õE‹`,]:«¹ ¯xOjÞ™Éi -»~èG÷'d‚âòáÛÜ.Ó ×ÌïL}¯á1ol]†±Ì²ª†G**M-hdÍ«¬áȬ®¡~& zq-ØúJ/Õ×ý‹X8v‡'œ\hÖµ¸ ‡b\RšdhÀ^.¿8‚ûɹÍCÚŸÐ$a±¡®*sÛú0 >†7 §óØzب À‘b2>‰Y₳< ýEý}¿Rc®²#ÌUºUuÀGòÈ ª¤‘ `ç`6•d>±%ô0 *i é8íçn,߯âvM»ß˜~¨–°ãw6Ì Ø­‘CåEûÈ&sØdÜjöÙ]qr9O²*{§q'vøî§WÝå= \†+ü«Í{Ø_Ærˆ-¦x+]éCM ØWøOL7M}æ&ؾ̟êZ)ÒqdNnï"¨˜%YͳñöïWMõÒPÈoÄvì&øî¹[±Iæï¾—-¢Œ>ôBUÁ—€cEUn„õ–€kÊ?US†}k³êæóÖS­’Và — ®Ú{ˆ€Á†­›wD']À&Y9–§ü–€«¢†! Å8n‡Yí$Æ™”{C¹S¶ˆ«AR`úC»[³}̪[Sí·Ÿ9±W§ü ŸBd>’%Têì|MßîCSÁ£mÀq'mªI3–_«Ë¡IE{"«²…ì9ÞŠ˜’ ¬vÚŠï4öm ¥æUL&±/ýYiW}7±ë—NÃÍÓNgšTKF?>t“å–n–»ÜÙsÄæ¿$~ÍcJ÷ÊéÂBZ5Å›hþþ‹#Wò SRy‹hØÓ6«NoKöó1&JÇîçCÍS¤ŠètÂÈɉZëÊK‚¢ï˜$éèùQ ç󌨊¶÷ØÐLn!Á.4ˆ¼«ˆ”Rùx#Bí W¸)ékL®…)'ú)š›ÇÅí¡'Å ¾çZŽå¡/˜Îƒ1ø‰g×¢âÌGÞqÊ Ö3g2$ÖψϼۑbçL(òd |’¯[g:_$4q¼Gx[Håso2˜¯)Š;ÚR¡åófÕMà'^¶‡1)M[ÍÚÒ:§ÉýñWB`«aôR‹}3YÔ>GAŠÑ„Ð?©eךý‘§¿Íí🾭Àp¦Š[éDF£´'ŠbÚÊ ¶è[EAMÿ¬ù¨åž=+ëZ7O–ð2V*—CíªHå¢ŠÆø†šÝX«€u} ™xÿ™5¥éË;O¡Ó9¤ªÜQ*û¼«š„?è*ŸžXÍFEÐX ‡;#¬ÑKq*wÒ> òÛblÄFc|¤y ÿ9Ô{xoÜÖÀ–³+Ï€-]0>jOüXîVhè"Lçy¢sÎôyn)nzyDKK&ˆe£Ã&t4@ñ‹Û”Jì1‚þæJ¹jªf¿–uÅÁÎ/Iö{VhÄ9hV-Ô®ëM4ç!O5o¶P/­”ößvUÀRqÉ¢ÞÖtÜsâ«a^Ò”s2¦‹¬#•ÔÏ"\<îàdÎŽÅöâ .ÒÀ±a:\fÏ0VCÁ æ‰ ‡ãê°°b¹·ñPÉ‹Ì#5EÍU'FÖAe¸ ´‘K‘‘ì Ûó à4·RÕa³zvRˆ’ŒmÇmÝd£sx¼Ë’ë9ó¢Êœ‘e ÃWmyD«]ïÔ¶@ó±°ž3$z….1/¢%òÒevåk‚@I©z,H™¶: Ï\ᣬ横•X‹¦ 2þa„úl„uÔI¼†oŒ?&rQ’—M¿o¾ §y%$*}O2‡Æ¾Ë¬¡fèêòâ âpk¹¡Áº ì¬JÖ`¦\GððxÏX뜣â_³"o[°èK!ûÞÕ±µFQÒÕsá". ð9p÷k˜L@‰ñ¾RßlwäEüUqC±9EÈ"l&„AµÙ¢e$Í]qZfس·D!;U¡TE° ¼ƒŒV‡ÊIb¾›0ë³¢[enÎK‹oÚåäHBQ‰3üòŠ3?¿W€A©*—/˜§„¤4šû!QPUö‡%a’˜¦¢]äfxñÏvNÃøýo«Å>®Â¢ € ËÂ8&邾eI§@ÃÙñ4þ,†{7η\²oÚ½¸p´@5ƒÑSùŪz n>­"UÃÇhÓ[CÞ#uî$‰£MBL)Å,IDZ ÓRºæî•ª€”F'VÐëØÚG˜»µ±‡ˆf@wxÜ.#´Ñ}»qÜ–t 7;B¸³D’>Dà<;=ãGÈdéËÂàýОòƒª ý/Š_CëÖÇf¯ôªÙ··võj˜$ãåi”˜×NJ‚¼dÏ:ÊMéÃËj(Ú¥ &(®ñà¿uU~WXêµ*Q.ïe»S"”N•SñJ°‘H3æD™fìFhœJå|¦íC)Hòík@µ}Ž›Æ"ߕ闿Ö.ú]©—á·8¥•>¤Cz²UVñeH½€b²Mvä)‚ ‹ËïGž%Ò†?ëü°c5”¦ü[äó ~Í„e!!WÈ'ÝÒÉòÀÐ4øùàa·Ž,àÉ’Ä0„|é²LÐç¿{ÿ‰Ÿ¶w^ºÂÜu23¿©À<°&¸ˆ\–Û¥ëD(= ý¸cð£ô›°ø•Îp9šz¨Ýåi—Ûw4äóòIˆõ‡~L‘l»ÁOäžîÏQiG™%¥¶³·ûãqûO<}Ö ZšŽ9ÓÃ2¡„qÓʸ¿2Ÿ´$Ô•ÄÏ‚Œ™NC7Žã •ÿŸ« TöÅ1¯Þw2´8Ä>ZC´˜K’³OûbsïO qt½r³¦9Cåú#yjÓÏ”p×W•Ão™É¿G”†X›+-*­ÓG‘Œ¯ÿ—ûi“á?³v%š¡òê¯æ–ò¬Ç»ŽÈïÏ(Q$‡¯ÇÏàû«]p©§‚¤;ëŸ ·Üým()#,¤S-ÿé^®Ã\ZÁfî¨ïšàl4ûd…U=bÔ¯äÊE›¾©ŒŒ¼"!-”Y/–ÓŠ©„oH§-²¹‰eÍ´uèÒÎQâž°ÕÆ˜ÀÞ[n—jè…¦_*>åË'ÖmØð} ÁÖ±\9ƒ¥ïÏ»5âY°/˜ýÜPëՠ̦ÑÈŽ$E+k™È=þ6†·kÿŸ&‡Ù«û>6YŽ>ùµäE儆«ºf™¶x@Åz…E&ê@äUÌvh£1wEÒûÐ_e©ÏYwÝ5>¶s©‰ç)_ÔåèàÈÄGwû“„üÈ1“¿Y+÷P/WŽnÎUð]›bçœDÓ .x âsÊ­U"3ŒPĨ¬'\Ë }Ò[õB®f–/Sw‰Tc ŸwÖmœÂ¹Öúà.è¬È›¡Ý†—Œ©6¾û}¬m¦@}&)ñ'³“f7}iñ¼˜òè›æ71aÄäê¡¥ëùãdÛ`ŽŸAÚöåñæÈ½“Óƒ„] ­¶5xTjm=˯æ–Ȧ‚ýÛ7²”¡nÉ@%ô$Úõ ¸ãßiµ×±qK“2N—“tÙ?-†Œ¤ë!¦ÞTµ+ÊIˆö7˜f©¬˜ê§ç L \³8¿1Æ|(ÐrÆ3Ñã<6²£}¸¯MKoqibóãû’˜¢ bS90¸cb8嬉P;YÐ £‰»‚—8ªû´zXUîƒëî›v¤Èþ´ävÇæÐ¢°"œ%Îg•½­ lõh™ ³å £ßz„g÷µFI‚m#GH¤WAZWÍXF¤häü ¹ï†nÀ}TÈš€óE!9Í\.AÆÀIIÓÖòŽ<ŽäZëý¾ ßîî¤àP+-—4%‘xd! ìÕqm2Çë‚5´¤“˜—ÔTÁÒæŠnm_¹‹{ flªÊÄ^eáþqZ¡ ž½PàRëÆ‘éÅ&o…‡ÌüDù,¦÷ÿz »ÉqF‰ÍÂÊh‹=»E ñè¯wE ƒ>_ïÝ>çv RVgÂ7jä(GIÙŽ’ñ-jíÞ;ÛѬÄé[eD”I9æ~ùÿüó&@:Ú ûÓÂLœ›=ÍötRüjØ•`i¸áCh Œ¬QÏ~ñ¡¡|.%vÙ… Æðªï6Pyñrh7^$4ìô’LøX»Ú—ôîs8°d½­‰G@‘ éYÉ>¦Z7ñ‘~Ý9µˆ´~Ë^´ƒcÀ*ÆÎW™þ‰å}\¡¨ î÷o øqH)ŒÌ\oŽÑ:2cA‡×hjÒäDMw¿3W!ÿSêÖËb+„ü´¡må× {êhÆÉ·%IBrЈ¾YŽñ­%ò^cô{™¿ n£O—Âö3Ÿ„9Þ˜¥5›g`åY#ÓÖuüŸ—£ÿ^;‚š}Ì=ýä¤Zp}q#õS@èž±oÄpÓ´¾Ý,ª†çéõ§Y34õYf?‡¥LéŠB«ë›™â®Ó’=OD­£‰BUœzë(÷_•÷DFûLÝ%h¿8å“¢Õª`ÔC0û;ŽLîÍv¯„/í)‡¼èš -çÜìY;ê)å 4ÝWj[‡ÜI(ö  þèD­bATFâœE…rŒRaµá:óXKðøÞ@’º=ˆ)¬BÛ©TìêaÆU‰Äèj3â8Ñ‚Ój•éc*7¡Ü/øsU$`̤rLöæO<’ggZšxÝ=ç¸ÚâeË@`ÄKù|LÝîðòÄ*øõ<ê!²(),eb1[Bœa%à4!( ypsÍöãY|×[¾s,ܬ)ã×^´n¯™,J»óÊ_Luõ1{—Ã5ÑÉ×>7„RÞÆØ wèöÇýH·|z—«ññìó+PTÕ¾>¶5„´â‡Ä6%š»º}ȞĒ€Hsáj_rpð.F[«Cïù ïIš“Æmh½Œ“Ü2Yµ~”‰—àÜ¿ÜÍßL˜ÉÕ©ÌÍZ–Î.õ´Ÿ4‚úʆîtâ µ6ïñŽ‹œzÉZ,¸*eD‹ Ùæ wôseÜ4Üe9ýt„¹Fÿ5'®yFé¤ _KÕá 6Û詞Ìcð"vÐûÚ4°…”¥Ä¦AamR‚ÖXuÙ&$1N”é3ZìBz¯oÒ£2x~-ê.™J4Ø7…ÛÅKn*fWi B÷ü™F‹%ø¨ÓÚY6Ʀ¡1x¹•FÍ@ºïnà¶Í jÞ ßÓ$WÅÁ¸öô´S™ö¯BˆÆðÞeÓcÌCßmôŸâgüÏ`–Ls¾©ª}õ·¿¦¿¸Ÿ‹o7ë®B4Ëô'¿ÃŒ’“2ÄåBp¡]~¥xëµhöáâ,¶±¨È©a :>}A UóJ¬êuW!Â,/¹@…£-> stream xÚT 8Tmùb>þ>K›¾8-Ö0‹-û>Y³Gò•1sÆÆ™13¶¤’%!TD"Eâ+YËš%_$B’%RdËIQé?–Öÿ¿®ÿ¿Îusžç¹Ÿç}ž÷½ïWr»µ‚>‰æâi0K«ˆÑ -íí±8ƒQRÄ`p(II{ˆE¿úQ’ûA¢Á?  …øŒ,hIƒ3*€U°ªX5 Àa0ê_4†`Dð…H€¥"`FƒA&JÒF`@î²Î×_@†( `ÕÕÕä—Ó}/ 0`I`Q@/dE" ØÑˆÈ ø©„Œ…Å¢k Ñ~~~Š/¦"á®#+øA, ` 2A†/H–Fö¼ÀÕÑQ’€=b®ìhd–ˆƒ A˜‰¤øÀ$ «v¦€„WÀ+y`us¬"ö[¹Õì¥B¼œL i^tÁ€ÞB‘åÏ’0i H 2iH>Á—Q n`¹u€×·È„«ó1‰ ˆÎb*2!êÒŒè¥2È6Ã$Cš—³˜¨¥þŒ HDö=½z¸ž0Íüj‘!˜D^ƒäCG;À·hj´ŠA\¨ï>w¨`0˜=JJè €þD ziû:¸Ä.¹‘‚é4:@Fƃ 2ˆ|PL‚/°>`PàŸ- " pÝ!õ½:âÉ+6rþ È8ˆAè‡0KÏ·¿¿†‘h05à;|ùˆÑŽÎFxs›Ý«# Ðü@, €SRTpÊ€ªº ôsk´Úæ{¦)L¦ê+Í"»ôµaßUȬÊCø¹Ö>Â[ùNsŒ †ˆ¼°ÿ7Ù—SþÇ—ªüOšÿÚÞ‡J]ŽË¬þ#Nð‚¨«„·>,D–4D ð¯PGpE¸– òñú5jÊ" ZЇݩß6bâ!d ±ˆ”en¬¸–tF…`КƄ–n@‹ÁüCÄEôDn&BÉåˆhçça"´$2œŠ*@`0( Â$œŠ ˆEÔHý—I  a Ié‚2Z:R,B*4¸ä[1n¢i?˜8MÿÁTÐŒLÍüÁTЬeó§‰> ¢Óe!ýµ—/ô‰¨g4¢f¨GaèÝùú[ý†[pÊ‚õìHŸãñßQ›“†Zó³JQÝú5OG¢æû…'pÙ_J<6b<½Ú%‡j7Œ“9ɹ,ãÆ|d—©,F¶g—LdúXí f”N™´ÞÌÁ >ÑåØÛNª…ʹ<;¬¸¾Ç€/·üWÌg-sW뀂qÄãcî¹Ís™º;0õ®˜:U¿•oéìrx,#«„ Qñœ²í JD@çÞrÞ¤çóFD°º.\¥ë¥ší-*l\?‹è„ý޽³¦qàÊÇ2Oü_ñºH§%bÞ§§?¿Šv–ËŸ¼îtÛ¥}>LK(Ò3¾åÏI)RBjçIo#ƹ$+?íèÃZ‘y¶¢Øû¿›ÌøÕö$$Ùì*í“ûH›mÜ{CätMrªŸòÙÞ·A79Œ¦Ã}¥á‡rÚ%Ko –yžÀá)bÕ4F½æ‡cælŽÉk×ÔíßΩVè+(3çüQ1ͳÝB¨x!õUþ%§¼­§Z7÷ò{Ÿº@9âíì‘)’æRdè“ËmÕ–>3F­wé¢aÐ óM² œKþ7½$é‘7‰‹m:ù;õw™c­×°®3fÃBÉɡ޿Ÿè"F¤Û½P½^ÃyNúRYVû¿Úˆ/EùG«,Ù#w>s²ö3Þ=öáë³HS?ì´5G†_*†QrÂ"6˜sÛWóóÀµÒ Âî`Ø/ØÞÅ•ÞöF}¹×ä“T—ñmü–ÅScx’›Hš|Rzož¦¿w}⻳ ¡}(åç9Y¿[aïÐŽb­ ¹óV‰èùzzÝ«+Á.†õëŽO'ŠkªJ­ K½Ô°P¹VP72Ui„/1üg¼öªd¢-SôóÉšrm¹¤”atºoýI­íÒÕ©õ7¦»G¦´ Œ›ò2èÁ]¶iñ¦U¾'c_WêgÝ )”n~Ðèo¶£ù"ï9¡xKšžjmßN¦ÑpÂz {û[ɾK†ØsÎÝ{QkŒ´MœË‚m„%.õ­-ä*̼wÃ’GHÝ=!b;G*¬B£ŠNÍÀ1k^PšîíZ{ù*Osì³ é¨Ø†?œŸLû§â`ê–±µŽÜáyzñ‡»=& ï«‹))¹¦BÆŠmKÙàPxsË ªƒªúÑklÛ{/º*ÔÄh ŒRv­ÿWôØ—ó—Íň Ù,cnÓhÈ6þO¿Õ·8ñ’æÊÔ¬b PÑd í%î¦÷§öMm‰c¤à±Š&BŸäX´^({ðǺe¹«oˆ™ú^?@àÃc©†§›_µ‰~4Èû«.Ƹ@ »õtØÑjºòqBg{f- ÖÊ9Äu¾ÿ2Ú—ñv†<Û‡Ž•Z·8 òŽ„Î[Á‡ò̇ë+ŹٌPËyùZcÿ¸xÉlZuö¸ÇñŽ¡ò/¥Ç›²ñ³%úv5#ø]GfxÓ*ÊS>ðT$$·gÌ,D¶¹WYû”žK,«Lh–×{–³%fNX’-à9¡uF…¢—Å­Yn6}lÏÞ6;09§á—mq/Ú¶êÌtn ä›Úpêr8ßñ[DÙÝ‘³é¯Ü'¢¼Qº¾Ñ°FëE¸+«„bp¡™[4„ßõ‘q–šdÈo†é§Ëûyfòß‘G‚TwŒ5\pÇoZ¬ùÀíkŠk¯Ü˜rÈé Yt*XsÄÕ&Óø`“Ç#}¾þ±(Ùgl¸¿'—4øâÑ"q쇧/«;°3Í÷'ÜåZWõú¯Œ+6&g½‰«ßófW˜‰4»FJYÿ¶ñ¼{^ÆPéœg—Àt!.Ù¾½yü}S}hÒãêQKóG· å¹t©¶ÜV Îÿlºvª­k2l±\Áµ]s§ [5¹õØØ½{Ýö}Ú$Õ©»¿ƒÅ£¹sÏ|^©Û£[²ãêuŸÂlß¹>0àÒ§Þü¬Ær ¾½&G¼Çâs¢·—ò‚3ÉY­Ÿâxsü‘å¥mUlj õÓu¶F‡s0î>ê\4Ãp¯«£ça¥72qºcÊb ä|e'¥åŠØÂïhòÔSȩ̀û3‰ÛIÒÅjáûjâò:&¹½­ýÃäI{³½7ZÃÍÜî „3ò%†uÔDÃÂFs~/é‹Lõfµõfc«;«å)Gj`å#­ =*ž;¼îLÐÎQÜ#ÝjÃûkOù]¤œ]Lò ¼…Ú´P–í)>3G¢F¿1ªäµsõÄåŒ*g S|_ „ÚUˆ˜^cTÜ<*%ß»õó39xmzí§+¼ü_—Kkœàª^r¯ú[TØW ºÞt©·ˆ«U©¦(œpk¨!8»Þ£»2¾@²¤GíÎý¤cðŽÌæ :ipTDÇ©¤MçB?¯õÀ)ü¨,QtŽë˜ãC݆/Üi z®×IWyï+om}Vd5xló$Ž*ü[[²¥ðÅ?\†Ÿ¾-Fô¦ Uà+°ñ ÏU¡T]V¸íwÃÔ~ÖK-9Þ²<û³EœžÛÅÒ]¬˜H©¤äüMw6{09LòÕí7ι…L†>¥è[ÆZ('zn‹&MÿÕFé# endstream endobj 121 0 obj << /Length1 1306 /Length2 1345 /Length3 0 /Length 2180 /Filter /FlateDecode >> stream xÚS 8TëÞ±Ûì‰ÎÞ]EéOÙQÌÕÈ-Oã2î¥AR*Ë̳˜Yk̬1&Q®;¤]‘RêèN¤HØ…JEI]„Ó–PÒ.·]8g ºhŸç9ç™çYóÿß÷¾ßÿ]ÞO‰»‡1‹‡ùÃl Åidªpó°q£Q•Ê S©t’¾¾'‚ áOv’þX"E0Ôâ+„­†pÂfáJ †g™Ð€fjA[eA¥:•jþ ˆI,€‚ð€8c(,%éÛbb… ààóp ÍÜ|•Ñ8°D°áB(pƒp,"^äBBàqWL a`%Àq±…"—ËÉHJÆ$Ö†F@ŽàÀ¥°$æeÉ`-$‚'K#“ô§‘N8<0>.‡$0 B„ £R‚"Cy°¯'W°N £`× €˜l ‘iŸÃM²•tœ q¹˜H ¡  |DƒulW2Šå)PŠ|(B„?OlÖzNÖ'åJ1.%K¡²FŠ2 Ñf{”g‹‰D0ŠKIÊüì Ì%ú® L7ÅähاAy|e<™˜â…"Á2ØÉnC˜H_l0˜TÍÜŒà`‡råž 1<î¤)ÍD áabL øDp8‡‰?R˜ .‘Ááa_;¦ÞH4à!\øÃJú0Ãü‰;1  6S ùÑUùû|ÚB(Œ‡¡BÅøøˆ)ëí<½mVN–üÙicƒ…‚0c&›Ð 2LÀœ8„Oã!“y|ÅuBùX5‘.ѧO)‡LjÀ`rA ÁÔXk1B¹00ø"t_*“Ê%>´ÿ[îã”ÿ¦re”ÿ)ôo3bË„Âq¿Áào~H„{™–| ð†'Ö æ!2Ñ·^'"v€…?·‘²‘P˜çŽà\Á„LÆí0¡þ©\{”‹ñ”kBgšH"$*¡:1°0±O<8t\†€BF1œ ± |LBRŽ„Ð)…£4‘¦„åÊ$b;Æ'G¼ùé>¾Š0 sIM1®eL`~LÉÇK,¹qG ÝD³¢/a@Ýû¥ý‚®õQ¶VCýŒS‰OY7;‡þ˜õ†ž9V´q5hëói‰óš J¦óýÛvÔÍZ=üFê*£wº\¿¾Éòæ½+æÜ•¬i0œoÜÛñ(ýµƒÕ/Ź.Þ©-/ì!k¨Ô$%ªi™™14TbJY饹6y¬†Æ2§eÒ¾55o“±_¥Ý¹Og¾¨xvÞhÒ–¦ÓÝ­)vHï¶>üªÜTÛů4è¿,·×Ùg5Pià/­öXíðgðåë¯n5É 7D·û7ÕŠ:3èã¬ya­îÚÕó¬Á AËMžª5oܘ|þIýœê‚_¬¿Ô'{wζÅbÈAOliEþiGsŽ 2÷_fýÐj4rg¥z9‘©îžGf[ÙWk3œ›Úêî}ä/J9hþ~?ûUk‹”ÿ|4R[ÕÙçúŽÙœ¹­N•T䨴«@_Þ_šÕvµ²éö½dݼåìêû§cpÃë"Ÿ=ÿËÛOÇÜøè›y\ظ+÷÷Št38cZÓs2ø.-âäÓ±(¶'5»uÊÛóû]팴Â^æHÎëbõ+äˆM‹ã:wœó¬²ÝUÑzú½.³½È& í–[G6ZæøÔ̸9²ë!kÑ&ìléÌĕïÔ­¬Ró?:îIÉ=tm/#X€a– RG·´æ¿"‹2dôÌtOWµþÝý'=§³×núU¨$ǃý¹/:^-ãú2ÏÜå¿ÍYeINVyé<ûª-GDUÉn«–+½¨Ëqcé‘xÇi½õÖtûéz8³güëdYïBR%¿öG÷äMܸ}ÚÜ—Å—ôʧ™úäns7Žx²ã­ÂÈæfkPòËâÍ*œ3³SL‚žP­î~ÿº”©PoT$\1 w¨À7W´óu}}ÎflYSW-*Nêyi™/ ‹èŒÚ}½x¬éý‘Ùä‘ýzGîxVQ³ëí†Ûæ:þûñ3¯ º÷yFþ¾Âœ9.^oŠ¡ÝõÖ2jùµÍsƒ> endobj 10 0 obj << /Type /ObjStm /N 89 /First 737 /Length 3832 /Filter /FlateDecode >> stream xÚí[YsI~ׯ¨ÇݘÀu_ÄD`Þl0Áƒ°£Ù2’ÌÀþúÍ£[*µÔ¶%‹yÚ«T]]•Ç—Y™Yí–Jh‘£ÐVå…6Â*'ŒÎfÞ&aœî[£&‰l•0°F™Ü³¾³…eBë ËñAX 4½°^;§……ùÞ)]¼ÐÕјŸðæg¯z.¢ 0/€. èc½€®±@܃tˆ{È[#<È€‡un “ë²S½"(68aµ "$a‚ûDTJDYkAD¯áæûD„ù!ya~!bÆïÔK TýÌO@4ÁúD’ÎRÉ *Xê’‚ï"¸AÄœDJ "®Ë BÖ½ ¤È“A„²ÈH ÌaŠå2°ÊÆ v`+‘=pôÁpÀFƒÁ`­§|¼÷=­v Á(h­~W  aXÁb Ÿp VÒ0Ì® ê×ðÉ€::,0ÛŸ{˜Y ºñ* \n ¿# 3¢öW(Ðp0W Kg@5ðí,ªËW¾‡ß<*À˜‹`Òë\J(.¸>V{ÔÝSà‰èY&£Ð°Ì[ð †oÓ®÷ðaOÿ¸ª„|Ù?¯zrot9­.§aÁó_÷äëj2ºŸVØ4pX ú»£ï⃂Ÿýމ`§wRþØ*cXŽâàì_%@T<|(äèæðvÁàudMtj& VÜçÏÔ‚òåxtzTMÅyÿ@ÈãêûT|lx­TF»%mÌVÔY!â¢:`í™–M[ë–ÐÞ܇`¢gTûšÓÖÔ¨-kzõæj,Zt¥Ö›jê—4µÛÖt.z©ii0ÀÛ„[(Õ.À»¯S›¼@üYN½¡ˆvÉíV¼±Øl3i7qÉìZndí"6_å\› ¾d~·!xGLëØé[ ^nÉ]œÚ²-JܪҦj,¹”³ÿŒeJkÌUÚT´¤Fø‰ÖXQl(¸×K‚çm~Kmð;¬ÙÚAS-–¼È¯åE~=øoOu iì¾Îå—¢—?Q»r«7޶¡äa)Hµ Éo­%áì½$K’»Ÿˆù}q^òÿœ! Eµ* ÎœhCâÒ™*êmh´º¾¸w6ŽKî×r—o7ÀeüÙ1{¼v;Aü´8$vqÒtíp>Å|6¡w¢HÙí8(dÃ>"¡»0Ww¶Éê ¹ᚨ=ðã¶ž‘ PÏø4%à ãñs@¹œHùÇqvÝ'þ4Ç©´“ë–)–w­Çù µ›$½K[Ó,ZæUÎá‘è,è•©j!§…˜`4xÔ8F‹£4Ï&Âà ¨G0M¹ DTy}ÍÁdÀ†-Tsà™ÔæŒtÊ‘ ‰Sk‰J© ÍÈn³«ïÙX¹GÙrl¡Ús \ˆžÑ3‹ÕÞc›Õ! L. bŽð(l ¾t"ÏI;ø [­”A÷ˆ¸$ªÁ‡ˆ—­V o¾>(dfÞáuP(ˆ#A²!– ¡U(DÐa $8@ðx¤iAM-²Í(Žs›jÞ:q‘èÇŒô³&ÛØl18¾zø›ºïi£¬Ù½nC-÷=>¸lõîÒâcBZ²Þ²;¥fõhÃo>RLž_r!nWN5Ñ×3y£P›:·¬ÉA¹å¤ª¡-Äm!$s‹°‘`ãú€x‚í`‹FÞah&8"P |z“§60(—BBŸÑF)œb€} ÊdÞ-$¨‹¸ˆ €xÆ“™íâ@À¸™’m™säŽKmƒ¾%ˆ¸53×ñ3à¡®fnq5oQGzî´¨QÊ@Á¨Mo€HD²wL“`¡I´ä2j˜Œä¨0Ú+ÜR#m20OVIsÏ07¡rˆOùH³dPO´ðnXБ۹9²‚7ap“Cà°D‘ìåE£„’ºˆêQ~K†v€Ï °‘…#UaHq‰Â‚²d@Gãx@§ÁÈF I4£8p/ Šò¦Ç, yáÿŸäƒh“•¡"Yá–½ßòN-â×,nâ§f{« *x•¡°¦©,(¶Ó|Ó1›y¯œU:¯/BÝ+Ä[%X×Ç,IÁT]Dѹ­£"nlÅá‡F)Uóv­Kvc˜W;w¡'4‘i›£µ5u‹A‘¯é{†S+3c4W´Ý+ bµ5Š~a=]°©™Ó¨Mágó ›± °\ ³AŠ»¬÷¹ûÄBÚãÀ,}Ôfsk5–xÖS¾‰~é“•€¢3•Œå"ÝSJt(§Ö4³.Þkª%¹#óÂÙÜ+g9‡T¹%Ž%Ú(Ü_%]×§^=“¢––R·<ÂÚ%ȰºÑ Ž ˜`<&ƒåsVXAe áì?´2+D,‰´¢/œ’Èa1û躟¨ dàÎ fÆZsõÀRP /–<ý¶VÞ7ÖdÛÔ}©æk¬É£¥”ÒÍÛ¢^9›Í3œ§–lSÞe¬¸O-x˜³‘*_l=)HfìÙYïܧ­)rë0í"¬UMÝâ5&z,ƒ°vN4 a©H@”É“Áà‹‘’.œ“}£¢Â¨=%ï€pò,½2|ÝOO‹tb¢CBp4Ãn0u—ÛâLjäS¢Qj„g„LD©4Âo>Tׯz>Ž6úÓhÆ–G2áOëfsù¾ótR€©¶Òü#Äýº¥¨a n¹8‰u1œAq§Œhš²å-Ri>ÌÁCG5ly$â¿ÿA¶ÆzÑQ||“Mci–¥ÓE´ÒP8/ è…÷™¯¬iSqeqCgYz­!Ì.<Õ^s…{ó+$㬧_Ó3™*¾Ù}ZAc^Êët^1›Å÷#PEHýù=—ûÜ?<bðÍ”Þ5 M¢S|®“¢§#(¸øx¨gr›©R.G|ÀiÌc»Ü/G˜²SRǼ'(”°˜S¯åqŠŒ<¡(ÐÍÚ’&ÍÁC-†9k®™ù±xÖ†Ãö«Ééxp5ùñØïý ¸óÇû£½ã£_öwßi7†ýó‰pyöì4I«-l\ÉèÕ­X8uªr ¶dû]’Á¦¥jp$]G·ýÝï_ •^wy¯S÷ª|Ýf!#ä|·1ž‘77QãU7ÞÊ÷ò¢Gþ<˜ü®þiÜ?ý«šR0¨ûp G—³p6¨ÆÕd0™êò ¾úzÝb¿Á<úfŸ] ¯'°Ù¾^W“éÄúz=šVgŸ†´¬¹à•tÅ]fV¥3¬ †gó¤R‡·¥Ä¢ÕZ™åÑñ“§oþ$/éH,ÖqbÉ)mÇIºwò¹:Çsp vˆ“:ÌCÝ,™ á ³µŒv×ü1- ] èZYãñÑ«W' ÐØ¨åm—|\¾3 ¾PoK@U è!€8ÏŸ¤!E–ëE׊þoÞŸ<}q€ v„LÛ*ª­xL C;÷\mË&ÿ/ê·^NxüîÍcLûGï»§ÉâA”°Òös AÝÍ’‚S:~‚pÇ‘àSLѯšÅÁ:€ÀÀF¡êû`‚ÿ@¬«ë|Ãj2áÞÅàຸNWÃòúôߪñ¤?\ÀM¯•oŽ÷öw ·.Ç€|“=žíñÉ1o¶n× EõY+2ž¼xöèÙo Ïqwùç›âÀ¸-!ÝB96é³»ä^L‰U“éÐs¾*dÞí”ÓÊXícNgFÒkÐ݃½G‡„ûqgá°Ó/H" Ôµ^@/g¨c¶Q¶¬Bý-—+W¸‡.ÏÚ…ËÒv½±š™­©XŠ3SSã¯.V®/>ƒó˵N­­²cÅIêúò 螎ÆÕV^+‹¼=Ù?xþŠ­ÜQxà!Ÿᯗ²¿¿•»ë.– n½VâxµüvïÉ/‡G»‡ÏE `8£èeE6EÀp¡0ò\)Õ¡ÑBζÔèõ‚¦#¡ëOSºÄAÀd·?©èE¨¥§< jã›èE«ƒÁx2E¶­ø¢?»ZogÓ/üÔÚÌÛÏ;ZÌC›9"Q073æY­Ï¼}îo1Omæ>u0Oa}æ­³õ"oüéXvJîxÕpßÀè­óp›»isO®d® æv}æ­k›ù²ÇéÜãœyZŸyëÔf¾†Çm{ëÌÐf¾äq1.À>×<› Ü}¡žoñÖKçlÁÛû9ènwk•ÚmæKþ¶:.i˜ûõ™·êÕ6owï‚ó¦]Y¶Y‡[b«sßÀÞíúªÍ}ÉÛ¬_à^˜<®Ï½÷[ÜÍŠ§;bLÜ ±´st›ýr„+¡OómWÄ|=y‚ï'_c•2ÿXó³¿çƒ³‰øÀ¿¿à³ˆàÌŒ?Ц/~íØÒàÇMˆ[&d™cêŽÿ6«©{&ä™z`ê_9<ÍmÔuõèo]š›¹|4­S¿w^¿ÏÝ"°×‡ÒitÞcJ3ž0ç;›h endstream endobj 126 0 obj << /Type /XRef /Index [0 127] /Size 127 /W [1 3 1] /Root 124 0 R /Info 125 0 R /ID [<62BF5153481F306BD491E276D66F0012> <62BF5153481F306BD491E276D66F0012>] /Length 341 /Filter /FlateDecode >> stream xÚ%Í7KDa„á3÷×Öœs\³kÎ9çðKÁBD+EX -ì,±³×JDK­+ k •›‡w÷š™ý:fƒYœ±ÆÉ$d”ÌÀ=9Гyâ6¯Û™$d„L“Pó>é]8 ƒk“H«M×-Šx`þMÍ k;Ó\ q$6Ð-ÄÖŸ5“H",0¡é%ɰ ¿f*Im÷jN‘t’Û{Óm‘d’ ØánÙ$ vú©9KrIìüA·|’»ºÕœ#…¤v¥[1)‚Ýk.‘RJÊH9© •¤ŠT©!µ¤ŽÔ“Ò{Ü×G›€”5U3°Tùà‡ª¸8RµÓª68¾U;œµWUœàªÎ庪 ÎÓ‹ªÎ{Œªn㶪îîÿûàwTýd™¬À=Þ2¸ç_ö¨: endstream endobj startxref 239088 %%EOF cddlib-0.94j/doc/cddlibman.dvi0000644000175000017500000021701413300556126013156 00000000000000÷ƒ’À;è TeX output 2018.05.21:1648‹ÿÿÿÿ ¬lÀ ý4åe ­› ý¢ËÏ’•"!óDÓítG®G®cmr17ºcddlib–7tReference“ManŒqualŽŸlÏ’Äõ‘óX«Q cmr12»Komei‘ê¨F‘ÿVukudaŽŽ¤’”¸/Institute–ê¨for“OpSŽerations“Researc¬rhŽŽ¡‘s?band–ê¨Institute“of“Theoretical“Computer“ScienceŽŽ¡‘xøETH–ê¨Zenš¬rtrum,“CH-8092“Zuric˜h,“SwitzerlandŽŽŽŽŽŸC&k‘nMC(cddlib–ê¨vš¬rer.‘8à0.94,“man˜ual“v˜er.‘8àF‘ÿVebruary“7,“2008)ŽŸ-r¸ó#ÂÖN ff cmbx12ÎCon•ŒÌten“tsޤŒÏó$ò"V ó3 cmbx10Ï1Ž‘lÏIn¦ttroY‹duction’yRÚ1ŽŽ¡2Ž‘lÏP¦tolyhedra–2H-“and“V-F›þó\ormats“(V˜ersion“1999)’ÉG2ŽŽ¡3Ž‘lÏBasic–2Ob‘³ject“T¦typY‹es“(Structures)“in“cddlib’ÖÛm4ŽŽ¡4Ž‘lÏLibrary‘2F‘þó\unctions’\:6ŽŽ¤ ™š‘lÏóKñ`y ó3 cmr10¹4.1Ž‘)œ1Library‘¦fInitialization‘•P‘¼É.ŽŽ–„=‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ‘"r7ŽŽ¡‘lÏ4.2Ž‘)œ1Core‘¦fF‘ÿeunctions‘ü‘‘¼É.ŽŽ–„=‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ‘"r7ŽŽ¡‘lÏ4.3Ž‘)œ1Data‘¦fManipulations‘s/‘¼É.ŽŽ–„=‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ‘¨Ø10ŽŽ¡‘)œ14.3.1Ž‘L¦rNum•²!bMÞer‘¦fAssignmen“ts²‘¼É.ŽŽ–„=‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ‘¨Ø10ŽŽ¡‘)œ14.3.2Ž‘L¦rArithmetic–¦fOpšMÞerations“for“ó*ßêas“represen˜tation‘ú>con˜v˜ersions“and“linear›ú>programming“in˜bšGoth“ oating-p˜oin¸ãtŽŽŸ’çÿk¹1ŽŽŒ‹* ¬lÀ ý4åe ­› ývåe‘`²and–†XGMP›† rational“exact“arithmetic.‘ÐPlease“read“the“accompan¸ãying“README˜ le“and“testޤ ‘`programs–UUto“complemenš¸ãt“the“man˜ual.Ž¡‘*`The–‡ new“functions“added“in“this“v¸ãersion“include“ó,ßê ó3 cmmi10ÐP‘ý¹=– §ó&!",š ó3 cmsy10ÑfÐx“¹=“(ÐxŸ¤zó|{Ycmr8¼1Ž–ÀÐ;›Ó1xŸ¤z¼2Ž“Ð;˜:˜:˜:Ž‘lÅ;˜xŸÈ®ó×2cmmi8¿dŽ‘ߨ¹)Ÿûz•¿TŽ‘ «¾Ñ2– §ÐR¨Ÿûz•¿dŽ‘ÿ÷¹:“Ðb–nìÑ“ÐAx– §Ñ“¹0ÑgŽŸtܹwhere–ûÐA“¹is“a›úgiv²!en“Ðm‘OÑ‘NÐd“¹real“matrix“and“Ðb“¹is˜a“givš²!en“real“Ðm¹-v˜ector.‘p›In“the“mathematical“lan-Ž¡guage,‘jºthe–Cvcomputation“is›Cwthe“transformation“of“an˜ó-ý': ó3 cmti10ØH-r–ÿp¹epr“esentation‘¹of–Cva“con•²!v“ex˜p•MÞolytop“e–Cvto“anŽ¡ØV-r–ÿp¹epr“esentation¹.Ž¡‘cddlib–­is›­Ža“C-library˜v²!ersion“of“the˜previously“released“C-coMÞde˜cdd/cdd+.‘óSIn“order˜to“mak²!eŽ¡this–Äölibrary“v²!ersion,‘Ìša›Äõlarge“part“of“the“cdd“source“(V‘ÿeersion“0.61)“has“bMÞeen˜rewritten.‘9This“libraryŽ¡v²!ersion–ù"is“more›ù# exible“since“it“can˜bMÞe“called“from“other˜programs“in“C/C++.‘ÖUnlik²!e“cdd/cdd+,Ž¡cddlib–÷ècan“handle“anš²!y‘÷çgeneral“input“and“is“more“general.‘ÒbF‘ÿeurthermore,‘ Hadditional“functions“ha˜v˜eŽ¡bMÞeen–¦fwritten“to“extend“its“functionalit²!y‘ÿe.Ž¡‘One–´œuseful“feature›´›of“cddlib/cdd/cdd+“is“its˜capabilit²!y“of“handling“the˜dual“(rev²!erse)“problemŽ¡without–çan²!y›ètransformation“of˜data.‘aThe“dual˜transformation“problem˜of“a˜V-represen²!tation“toŽ¡a–‡¾minimal›‡¿H-represen²!tation“and“is“often˜called“the“Ø(c›ÿp¹onvex)–º;hul‘Fl“pr˜oblem‘× ¹.‘æMore–‡¾explicitly‘ÿe,‘Àis“toŽ¡obtain–%üa‘%ýlinear“inequalitš²!y“represen˜tation‘%ýof“a“con˜v˜ex‘%ýpMÞolyhedron“giv˜en“as‘%ýthe“Mink˜o˜wski“sum‘%ýof“theŽ¡con•²!v“ex›¦fh“ull˜of˜a˜ nite˜set˜of˜pMÞoin“ts˜and˜the˜nonnegativ“e˜h“ull˜of˜a˜ nite˜set˜of˜pMÞoin“ts˜in˜ÐR¨Ÿü¾¿dŽ‘õP¹:ަ‘yAÖÐP‘ý¹=‘ §Ðconvšd“¹(ÐvŸ¤z¼1Ž‘ÀÐ;–Ó1:“:“:Ž‘lÅ;‘Ó1vŸ¤z¿nŽ‘¨P¹)–nì+“Ðnonneg˜¹(ÐrŸ¤z¿n¼+1Ž‘„ÌÐ;–Ó1:“:“:Ž‘lÅ;‘Ó1rŸ¤z¿n¼+¿sŽ‘3¹)Ð;ަ¹where–¦fthe“ØMinkowski–êêsum“of“two“subsets“ÐS‘Œ|Øand“ÐT‘+¼¹of–¦fÐR¨Ÿü¾¿dŽ‘›¶¹is“de ned“asŽŸtÜ’™ÎàÐS‘~¹+–nìÐT‘ý¹=› §ÑfÐs“¹+“Ðt˜ÑjÐs˜Ñ2˜ÐS‘Gø¹andŽ‘’¤Ðt˜Ñ2˜ÐT‘…VÑgÐ:ަ¹As–›Xwš²!e“see“in“this‘›Wman˜ual,‘Ø”the“computation“can“bMÞe“done“in“straigh˜tforw˜ard‘›Wmanner.‘¼³Unlik˜e“theŽ¡earlier–Y†v²!ersions›Y…of“cdd/cdd+“that˜assume“certain“regularit²!y˜conditions“for“input,‘hæcddlib˜is“designedŽ¡to–µ$do›µ%a“correct“transformation“for˜anš²!y“general“input.‘ The“user“m˜ust‘µ%bMÞe“a˜w˜are“of“the‘µ%fact“thatŽ¡in–ãÇcertain“cases›ãÆthe“transformation“is“not“unique˜and“there“are“pMÞolyhedra˜with“in nitely“man²!yŽ¡represenš²!tations.‘^F‘ÿeor–&sexample,‘Fva“line‘&rsegmen˜t“(1-dimensional“p•MÞolytop“e)–&sin“ÐR¨Ÿü¾¼3Ž‘ü¹has“in nitely“man˜yŽ¡minimal–0ƒH-represen²!tations,‘“ and›0‚a“halfspace˜in“the“same˜space“has˜in nitely“man²!y˜minimal“V-Ž¡represenš²!tations.‘ÝÝcddlib–¦fgenerates“merely“one“minimal“represen˜tation.Ž¡‘cddlib–Ÿ‚comes“with“an›ŸƒLP‘Ÿ€coMÞde“to“solv²!e˜the“general“linear“programming“(LP)‘Ÿproblem“to“maxi-Ž¡mize–¥¤(or›¥£minimize)“a˜linear“function“o•²!v“er˜pMÞolyhedron–¥¤ÐP‘…V¹.‘ÝœIt˜is“useful“mainly˜for“solving˜dense“LP'sŽ¡with–Ltlarge“Ðm“¹(saš²!y‘ÿe,‘uøup“to“few“h˜undred“thousands)“and“small“Ðd“¹(sa˜y‘ÿe,‘u÷up‘Luto“100).‘ÐIt“implemen˜ts“aŽ¡revised–¦fdual“simplex“methošMÞd“that“up˜dates“(Ðd–nì¹+“1)“Ñ“¹(Ðd“¹+“1)–¦fmatrix“for“a“piv²!ot“op˜eration.Ž¡‘The–3Rprogram›3Qcddlib“has“an˜I/O‘3.routines“that˜read“and“write˜ les“in“ØPolyhe–ÿp¹dr“a‘lformat‘=<¹whic²!hŽ¡w•²!as›ÕŽde ned‘Õb“y˜Da“vid˜Avis˜and–Õthe˜author˜in“1993,‘áXand˜has“b•MÞeen˜up“dated˜in‘Õ1997˜and˜1999.‘kTTheŽŽŸ’çÿk2ŽŽŒ‹c ¬lÀ ý4åe ­› ývåe¹program–Úcalled“lrs“and‘Úlrslib“[2Ž‘yš]“devš²!elopMÞed“b˜y“Da˜vid“Avis“is“a‘ÚC-implemen˜tation“of“the“rev˜erseޤ ™šsearcš²!h–qxalgorithm“[4Ž‘yš]‘qyfor“the“same“en˜umeration“purpMÞose,‘¤=and“it“conforms“to‘qyP˜olyhedra“format“asŽ¡w•²!ell.‘Ó²HopMÞefully‘ÿe,‘þthis›‡åcompatibilit“y˜of‘‡äthe˜t“w“o˜programs–‡äenables˜users˜to“use˜bMÞoth˜programs“for˜theŽ¡same– ‡input“ les‘ †and“to“cš²!hoMÞose“whic˜hev˜er› †is“useful“for“their˜purpMÞoses.‘L@F‘ÿerom˜our“expMÞeriences“withŽ¡relativš²!ely–‘×large‘‘Öproblems,‘̲the“t˜w˜o“methošMÞds‘‘Öare“b˜oth›‘Öuseful“and˜pMÞerhaps“complemen²!tary˜to“eac²!hŽ¡other.‘E†In–sŸgeneral,‘¦ìthe›sžprogram“cddlib˜tends“to˜bMÞe˜ecien²!t“for˜highly“degenerate˜inputs“and˜theŽ¡program–¦frs“tends“to“bMÞe“ecienš²!t“for“nondegenerate“or“sligh˜tly“degenerate“problems.Ž¡‘Although–µÓthe›µÔprogram“can˜bMÞe“used˜for“nondegenerate“inputs,‘ù¯it“migh²!t˜not“bMÞe˜vš²!ery“ecien˜t.Ž¡F‘ÿeor›pnondegenerate–pinputs,‘¢‹other“a•²!v‘ÿdDailable˜programs,‘¢Œsuc“h˜as˜the‘prev“erse˜searc“h˜coMÞde˜lrs‘por˜qh“ullŽ¡(dev•²!elopMÞed›ë†b“y–ë…the˜Geometry“Cen•²!ter),‘üÎmigh“t‘ë…bMÞe˜more˜ecien“t.‘­;See˜Section˜8‘ë…for˜pMÞoin“ters‘ë…to˜theseŽ¡co•MÞdes.‘ŸThe›µ¬pap“er‘µ­[3Ž‘yš]˜con•²!tains˜man“y˜in“teresting˜results˜on‘µ­p•MÞolyhedral˜computation˜and˜exp“erimen²!talŽ¡results–¦fon“cdd+,“lrs,“qh²!ull“and“pMÞorta.Ž¡‘This–A«program“can“bMÞe“distributed‘Aªfreely“under“the“GNU–A‘GENERAL‘A’PUBLIC“LICENSE.‘A«PleaseŽ¡read–¦fthe“ le“COPYING“carefully“bMÞefore“using.Ž¡‘I‘T­will–TÂnot‘TÁtakš²!e“an˜y“respMÞonsibilit˜y‘TÁof“an˜y“problems“y˜ou‘TÁmigh˜t“ha˜v˜e“with‘TÁthis“program.‘¦But“I‘T­willŽ¡bšMÞe–{‚glad“to“receiv²!e“bug“rep˜orts“or“suggestions“at“the‘{e-mail“addresses“ab˜o•²!v“e.‘]1If–{‚cddlib“turns“outŽ¡to–äbšMÞe“useful,‘ôplease“kindly“inform‘äme“of“what“purp˜oses“cdd‘ähas“b˜een“used“for.‘˜YI‘äwill‘äb˜e“happ²!y“toŽ¡include–Øa›×list“of“applications“in˜future“distribution“if“I‘Àreceiv²!e“enough˜replies.‘ð3The˜most“pMÞo•²!w“erfulŽ¡suppMÞort–¦ffor“free“soft•²!w“are›¦fdev“elopmen“t˜is˜user's˜appreciation˜and˜collabMÞoration.ŽŸ"’Î2Ž‘LËPŒÌolyhedra–ffH-“and“V-F›þ¦formats“(V˜ersion“1999)ŽŸ"dÙ¹Ev•²!ery›Ìcon“v“ex˜pMÞolyhedron˜has˜t“w“o˜represen“tations,‘fone˜as˜the˜in“tersection˜of˜ nite˜halfspaces˜andŽ¡the–2dother›2cas“Mink•²!o“wski–2dsum“of˜the“con•²!v“ex‘2dh“ull˜of–2d nite“pMÞoin²!ts˜and“the“nonnegativš²!e“h˜ull‘2cof“ niteŽ¡directions.‘ÝÝThese–¦fare“called“H-represenš²!tation“and“V-represen˜tation,“respMÞectiv˜ely‘ÿe.Ž¡‘Naturally–¾othere“are“t•²!w“o‘¾pbasic›¾oP“olyhedra˜formats,‘ÄqH-format‘¾pfor˜H-represen“tation˜and˜V-formatŽ¡for–ë§V-represenš²!tation.‘­ŸThese“t˜w˜o“formats“are“designed“to“bMÞe‘ë¦almost“indistinguishable,‘ü÷and“in“fact,Ž¡one–öccan›öbalmost“pretend˜one“for˜the“other.‘ÍÒThere“is˜some“asymmetry˜arising“from˜the“asymmetryŽ¡of›¦ft•²!w“o˜represen“tations.Ž¡‘First–bTwš²!e‘bSstart“with“the“H-represen˜tation.‘¦Let‘bSÐA“¹bšMÞe“an“Ðm‘ì4Ñ‘ì5Ðd“¹matrix,‘‘Nand“let“Ðb“¹b˜e‘bSa“columnŽ¡Ðm¹-v•²!ector.‘ø`The›YçP“olyhedra‘Yæformat˜(ØH-format˜¹)˜of˜the˜system‘¹Ðb‘æ–Ñ‘æ—ÐAx–5ÒÑ“Ï0Ž‘^¹of˜Ðm˜¹inequalities˜in˜ÐdŽ¡¹v‘ÿdDariables‘¦fÐx– §¹=“(ÐxŸ¤z¼1Ž–ÀÐ;›Ó1xŸ¤z¼2Ž“Ð;˜:˜:˜:Ž‘lÅ;˜xŸÈ®¿dŽ‘ߨ¹)Ÿü¾¿TŽ‘ G}¹isŽŸD/ŸÉ.¹‘©zã‰ffÓPŸ …‘v‘ÿdDarious‘¦fcommen²!tsŽŽ¤ ™™‘ÏH-represen¦ttationŽŽ¡‘(linearit¦ty‘2Ðt‘=4iŸ¤z¼1Ž– ý8ÐiŸ¤z¼2Ž“Ð:–Ó1:“:Ž‘ ÏiŸ¤z¿tŽ‘‘ÊÏ)ŽŽ¡‘bY‹eginŽŽ¡‘ÐmŽ‘?d–nì¹+“1Ž‘@+ÿn•²!um“bšMÞert“yp˜eŽŽ¡‘uÐbŽ‘‡HÑÐAŽŽ¡‘ÏendŽŽ¡‘¹v‘ÿdDarious‘¦foptionsŽŽ¦‰ffÓPŽŽŽŸMjÁwhere‘¡0n•²!um“bšMÞert“yp˜e‘¡1can–¡0b˜e“one“of›¡1in²!teger,‘ßârational“or˜real.‘Î;When˜rational“t²!ypMÞe“is˜selected,‘ßâeac²!hŽ¡compMÞonen²!t–#of›#Ðb“¹and“ÐA“¹can˜bšMÞe“sp˜eci ed“bš²!y‘#the“usual“in˜teger‘#expression“or“b˜y“the‘#rational“expressionŽ¡\Ðp=qšd“¹"–É or“\ÑÐp=q˜¹"›Éwhere“Ðp“¹and“Ðq‘-²¹are“arbitrary“long“pMÞositiv•²!e˜in“tegers–É (see“the“example˜input“ leŽ¡rational.ine).‘¿In–ñ¡the“1997“format,‘Dpwš²!e“in˜troMÞduced“\H-represen˜tation"“whic˜h‘ñ¢m˜ust“appšMÞear“b˜eforeŽ¡\bšMÞegin".‘ºêThere–=‹w²!as“one“restriction‘=Œin“the“old“p˜olyhedra‘=Œformat“(b˜efore“1997):‘©pthe“last“Ðd‘=Œ¹roš²!ws“m˜ustŽ¡determine–¦fa“vš²!ertex“of“ÐP‘…V¹.‘ÝÝThis“is“obsolete“no˜w.ŽŽŸ’çÿk3ŽŽŒ‹+¸ ¬lÀ ý4åe ­› ývåe‘¹In–ºthe›ºnew“1999˜format,‘¾ðw²!e“added“the˜pMÞossibilit²!y“of˜spMÞecifying“Ïlinearit¦ty,ƹ.‘ÂThis“means˜that“forޤ ™šH-represenš²!tation,‘“\some–cøof“the“input“ro˜ws“can“bšMÞe“sp˜eci ed‘c÷as“Ïequalities¹:‘YÐbŸ¤z¿iŸ8:ó;Îcmmi6ÀjŽŽ‘ =Ñ‘íMÐAŸ¤z¿iŸ8:ÀjŽŽ‘OµÐx‘F˜¹=‘F™0‘ª‘for“allŽ¡Ðj‘«¹=‘ §1Ð;–Ó1¹2Ð;“:“:“:Ž‘lÅ;“t¹.‘ÝÝThe–¦flinearitš²!y“line“ma˜y“bMÞe“omitted“if“there“are“no“equalities.Ž¡‘Option–ºâlines›ºãcan“bMÞe˜used“to˜con²!trol“computation˜of“a˜spMÞeci c“program.‘SIn“particular˜bMÞoth“cddŽ¡and–¿ßlrs›¿àuse“the˜option“lines˜to“represen²!t˜a“linear˜ob‘›»jectiv²!e“function.‘*ISee˜the“attac²!hed˜LP‘¿— les,Ž¡samplelp*.ine.ŽŸž ‘Next–ßwš²!e‘Þde ne“P˜olyhedra–ÞØV-format¹.‘)GLet“ÐP‘š5¹bMÞe“represen˜ted‘ßb˜y“Ðn‘ß¹generating“pMÞoin˜ts›ßand“Ðs˜¹gen-Ž¡erating–[Ÿdirections‘[ž(ra²!ys)“as“ÐP‘¾¹=‘8¯Ðconv•d“¹(ÐvŸ¤z¼1Ž‘ÀÐ;–Ó1:“:“:Ž‘lÅ;›Ó1vŸ¤z¿nŽ‘¨P¹)‘ç¼+‘ç»Ðnonneg“¹(ÐrŸ¤z¿n¼+1Ž‘„ÌÐ;˜:˜:˜:Ž‘lÅ;˜rŸ¤z¿n¼+¿sŽ‘3¹).‘ýˆThen‘[žthe‘[ŸP²!olyhedraŽ¡V-format–¦ffor“ÐP‘+¼¹isŽŸhù)Ÿ¡‹ó‘Ÿzã‰ff¾ÙŸ …‘v‘ÿdDarious‘¦fcommen²!tsŽŽ¤ ™™‘ÏV-represen¦ttationŽŽ¡‘¹(Ïlinearit¦ty‘2Ðt‘=4iŸ¤z¼1Ž– ý8ÐiŸ¤z¼2Ž“Ð:–Ó1:“:Ž‘ ÏiŸ¤z¿tŽ‘ÄW¹)ŽŽ¡‘ÏbY‹eginŽŽ¡‘Ðn–nì¹+“ÐsŽ‘+²d–nì¹+“1Ž‘O¥rn•²!um“bšMÞert“yp˜eŽŽ¡‘ÎŒ1Ž‘+²ÐvŸ¤z¼1ŽŽŽ©þ/*“set_type“defined“in“setoper.h“*/Ž¡typedef–¿ªset_type“dd_colset;Ž¡typedef–¿ªlong“*dd_rowindex;Ž¡typedef–¿ªint“*dd_rowflag;Ž¡typedef–¿ªlong“*dd_colindex;Ž¡typedef–¿ªmytype“**dd_Amatrix;‘ T/*“mytype“is“either“GMP“mpq_t“or“1-dim“double“array.“*/Ž¡typedef–¿ªmytype“*dd_Arow;Ž¡typedef–¿ªset_type“*dd_SetVector;Ž¡¡typedef–¿ªenum“{Ž¡‘ Tdd_Real,–¿ªdd_Rational,“dd_Integer,“dd_UnknownŽ¡}‘¿ªdd_NumberType;Ž¡¡typedef–¿ªenum“{Ž¡‘ Tdd_Inequality,–¿ªdd_Generator,“dd_UnspecifiedŽ¡}‘¿ªdd_RepresentationType;Ž¡¡typedef–¿ªenum“{Ž¡‘ Tdd_MaxIndex,–¿ªdd_MinIndex,“dd_MinCutoff,“dd_MaxCutoff,“dd_MixCutoff,Ž¡‘>þdd_LexMin,–¿ªdd_LexMax,“dd_RandomRowŽ¡}‘¿ªdd_RowOrderType;Ž¡¡typedef–¿ªenum“{Ž¡‘ Tdd_InProgress,–¿ªdd_AllFound,“dd_RegionEmptyŽ¡}‘¿ªdd_CompStatusType;Ž¡¡typedef–¿ªenum“{Ž¡‘ Tdd_DimensionTooLarge,‘¿ªdd_ImproperInputFormat,ŽŽŸ’çÿk¹5ŽŽŒ‹M9 ¬lÀ ý4åe ­› ývåe‘ TÕdd_NegativeMatrixSize,‘¿ªdd_EmptyVrepresentation,ޤ ™š‘ Tdd_IFileNotFound,–¿ªdd_OFileNotOpen,“dd_NoLPObjective,Ž¡‘ Tdd_NoRealNumberSupport,‘¿ªdd_NoErrorŽ¡}‘¿ªdd_ErrorType;Ž¡¡typedef–¿ªenum“{Ž¡‘ Tdd_LPnone=0,–¿ªdd_LPmax,“dd_LPminŽ¡}‘¿ªdd_LPObjectiveType;Ž¡¡typedef–¿ªenum“{Ž¡‘ Tdd_LPSundecided,–¿ªdd_Optimal,“dd_Inconsistent,“dd_DualInconsistent,Ž¡‘ Tdd_StrucInconsistent,‘¿ªdd_StrucDualInconsistent,Ž¡‘ Tdd_Unbounded,‘¿ªdd_DualUnboundedŽ¡}‘¿ªdd_LPStatusType;Ž¡¡typedef–¿ªstruct“matrixdata“*dd_MatrixPtr;Ž¡typedef–¿ªstruct“matrixdata“{Ž¡‘ Tdd_rowrange‘¿ªrowsize;Ž¡‘ Tdd_rowset‘¿ªlinset;Ž¡‘þ¨/*‘ Ta–¿ªsubset“of“rows“of“linearity“(ie,“generators“ofŽ¡‘-ýPlinearity–¿ªspace“for“V-representation,“and“equationsŽ¡‘-ýPfor–¿ªH-representation.“*/Ž¡‘ Tdd_colrange‘¿ªcolsize;Ž¡‘ Tdd_RepresentationType‘¿ªrepresentation;Ž¡‘ Tdd_NumberType‘¿ªnumbtype;Ž¡‘ Tdd_Amatrix‘¿ªmatrix;Ž¡‘ Tdd_LPObjectiveType‘¿ªobjective;Ž¡‘ Tdd_Arow‘¿ªrowvec;Ž¡}‘ Tdd_MatrixType;Ž¡¡typedef–¿ªstruct“setfamily“*dd_SetFamilyPtr;Ž¡typedef–¿ªstruct“setfamily“{Ž¡‘ Tdd_bigrange‘¿ªfamsize;Ž¡‘ Tdd_bigrange‘¿ªsetsize;Ž¡‘ Tdd_SetVector‘¿ªset;Ž¡}‘¿ªdd_SetFamilyType;Ž¡¡typedef–¿ªstruct“lpsolution“*dd_LPSolutionPtr;Ž¡typedef–¿ªstruct“lpsolution“{Ž¡‘ Tdd_DataFileType‘¿ªfilename;Ž¡‘ Tdd_LPObjectiveType‘¿ªobjective;Ž¡‘ Tdd_LPSolverType‘¿ªsolver;Ž¡‘ Tdd_rowrange‘¿ªm;Ž¡‘ Tdd_colrange‘¿ªd;Ž¡‘ Tdd_NumberType‘¿ªnumbtype;Ž¡¡– Tdd_LPStatusType›¿ªLPS;“/*˜the˜current˜solution˜status˜*/Ž¡– Tmytype›¿ªoptvalue;“/*˜optimal˜value˜*/ŽŽŸ’çÿk¹6ŽŽŒ‹W- ¬lÀ ý4åe ­› ývåe‘ TÕdd_Arow–¿ªsol;‘>þ/*“primal“solution“*/ޤ ™š– Tdd_Arow›¿ªdsol;“/*˜dual˜solution˜*/Ž¡– Tdd_colindex›¿ªnbindex;“/*˜current˜basis˜represented˜by˜nonbasic˜indices˜*/Ž¡– Tdd_rowrange›¿ªre;“/*˜row˜index˜as˜a˜certificate˜in˜the˜case˜of˜inconsistency˜*/Ž¡– Tdd_colrange›¿ªse;“/*˜col˜index˜as˜a˜certificate˜in˜the˜case˜of˜dual˜inconsistency˜*/Ž¡‘ Tlong‘¿ªpivots[5];Ž¡‘>þ/*–¿ªpivots[0]=setup“(to“find“a“basis),“pivots[1]=PhaseI“or“Criss-Cross,Ž¡‘"}üpivots[2]=Phase–¿ªII,“pivots[3]=Anticycling,“pivots[4]=GMP“postopt‘ T*/Ž¡‘ Tlong‘¿ªtotal_pivots;Ž¡}‘¿ªdd_LPSolutionType;Ž¡Ÿ!èÎ4Ž‘LËLibrary‘ffF‘þ¦functionsŽŸq‹¹Here–ÌZwš²!e“list“some“of“the“most“impMÞortan˜t“library“functions/proMÞcedures.‘•.W‘ÿee“use“the“follo˜wing“con˜v˜en-Ž¡tion:‘ñÓÕpoly–°a¹is“of“tš²!ypMÞe“Õdd‘°—‰ffsŽ‘#™PolyhedraPtr¹,‘²àÕmatrix¹,‘²ßÕmatrix1“¹and“Õmatrix2“¹are“of“t˜ypMÞe“Õdd‘°—‰ffsŽ‘#™MatrixPtr¹,Ž¡ÕmatrixP¹,–õDof“tš²!ypMÞe“Õdd‘°—‰ffsŽ‘#™MatrixPtr*¹,‘HûÕerr“¹is“of“t˜ypMÞe‘õCÕdd‘°—‰ffsŽ‘#™ErrorType*¹,‘HûÕifile“¹and“Õofile“¹are“of“t˜ypMÞeŽ¡Õchar*¹,›œ¶ÕA‘šG¹is–šJof“t²!ypMÞe“Õdd‘°—‰ffsŽ‘#™Amatrix¹,˜Õpoint“¹and“Õvector“¹are“of“t²!ypMÞe“Õdd‘°—‰ffsŽ‘#™Arow¹,˜Õd“¹is“of“t²!ypMÞe“Õdd‘°—‰ffsŽ‘#™colrange¹,Ž¡Õm–‹~¹and›‹}Õi“¹are“of˜t²!ypMÞe“Õdd‘°—‰ffsŽ‘#™rowrange¹,‘ÄÃÕx“¹is˜of“t²!ypMÞe˜Õmytype¹,‘ÄÄÕa˜¹is“of“t²!ypMÞe˜Õsigned–¿ªlong“integer¹,‘ÄÃÕb‘‹~¹isŽ¡of–æ~t²!ypMÞe›æ}Õdouble¹,‘öƒÕset“¹is˜of“t²!ypMÞe˜Õset‘°—‰ffsŽ‘#™type¹.‘ž$Also,‘öƒÕsetfam“¹is˜of“t²!ypMÞe˜Õdd‘°—‰ffsŽ‘#™SetFamilyPtr¹,‘öƒÕlp“¹is˜of“t²!ypMÞeŽ¡Õdd‘°—‰ffsŽ›#™LPPtr¹,‘!:Õlps–©¹is‘ªof“t²!ypMÞe“Õdd‘°—‰ffsŽ˜LPSolutionPtr¹,‘!:Õsolver“¹is‘ªof“t²!ypMÞe“Õdd‘°—‰ffsŽ˜LPSolverType¹,‘!:Õroworder‘ª¹is“ofŽ¡t²!ypMÞe‘¦fÕdd‘°—‰ffsŽ‘#™RowOrderType¹.ŽŸºJó0ÂÖN  cmbx12Û4.1Ž‘ÀLibrary‘€InitializationŽ©«ÿÕvoid‘¿ªdd‘°—‰ffsŽ–#™set‘°—‰ffsŽ“global‘°—‰ffsŽ“constants(void)ŽŽ’Äû¹:Ž¡‘`This–¿¥is“to“set“the“global‘¿¦constanš²!ts“suc˜h“as“Õdd‘°—‰ffsŽ–#™zero¹,‘ÅõÕdd‘°—‰ffsŽ“purezero–¿¥¹and“Õdd‘°—‰ffsŽ‘#™one“¹for“sign“recog-Ž¡‘`nition–×…and›׆basic“arithmetic“opMÞerations.‘q;Ev²!ery“program“to˜use“cddlib“m²!ust“call˜this“functionŽ¡‘`bMÞefore–v¿doing›vÀan²!y“computation.‘NéJust˜call“this˜once.‘NéSee“Section“4.3.3˜for“the˜de nitions“ofŽ¡‘`constan²!ts.ŽŸV´Õvoid‘¿ªdd‘°—‰ffsŽ–#™free‘°—‰ffsŽ“global‘°—‰ffsŽ“constants(void)ŽŽ’ÉÙ¥¹:Ž¡‘`This–Ô0is›Ô1to“free“the˜global“constan²!ts.‘glinset“¹is˜the“coMÞdimension“of˜the“pMÞoly-Ž¡‘`hedron–¦fif“it“is“H-pšMÞolyhedron,“and“is“the“dimension“of“linearit²!y“space“if“it“is“V-p˜olyhedron.ަ‘`Note–"îthat‘"ïthe“presenš²!t“v˜ersion›"ïshould“not“bMÞe˜called“a˜canonicalization“bMÞecause“it˜ma²!y“generateŽ¡‘`t•²!w“o›_‘di eren“t˜represen“tations˜of˜the˜same˜p•MÞolyhedron.‘ÆAIn˜the˜future,‘m¼this˜function˜is˜exp“ectedŽ¡‘`to–¦fbMÞe“correctly“implemen²!ted.ŽŸ2ŸÕdd‘°—‰ffsŽ–#™boolean›¿ªdd‘°—‰ffsŽ“MatrixCanonicalizeLinearity(matrixP,˜impl‘°—‰ffsŽ“linset,˜newpos.‘ Terr)ŽŽ’»K‰¹:Ž¡‘`It–G/doMÞes›G.only“the˜ rst“half˜of“Õdd‘°—‰ffsŽ–#™boolean‘¿ªdd‘°—‰ffsŽ“MatrixCanonicalize¹,–¯`namely‘ÿe,“it˜detects‘G/allŽ¡‘`implicit–linearities“and“puts“a“maximally“indepMÞenden²!t“linearities‘at“the“top“of“the“matrix.‘¯F‘ÿeorŽ¡‘`example,–¦fthis“function“can“bšMÞe“used“to“detect“the“dimension“of“an“H-p˜olyhedron.Ž©2žÕdd‘°—‰ffsŽ–#™boolean›¿ªdd‘°—‰ffsŽ“MatrixRedundancyRemove(matrixP,˜redset,˜newpos,˜err)ŽŽ’}«L¹:Ž¡‘`It–åËdoMÞes›åÊessen²!tially“the“second“half˜of“Õdd‘°—‰ffsŽ–#™boolean‘¿ªdd‘°—‰ffsŽ“MatrixCanonicalize¹,– Pnamely‘ÿe,“it‘åËdetectsŽ¡‘`all–j=redundancies.‘ÉÏThis“function“should“bMÞe“used‘j– §¹0Ð;‘ÝØÑ8Ðs“Ñ2“ÐSŽŽ¡’é¶öbŸ¤z¿tŽ‘¶Ñ‘nìÐAŸ¤z¿tŽ‘‘ÊÐxŽ’idÑ– §¹0Ð;‘ÝØÑ8Ðt“Ñ2“ÐT‘éš;ŽŽŽŽ¡‘`¹where–¼ZÐL“¹is“the“set‘¼Yof“linearitš²!y“ro˜ws“of“Õmatrix¹,‘Á×and“ÐT‘A°¹represen˜ts“the“set‘¼Yof“ro˜ws“that“are“notޤ ™š‘`in‘oïÐR‘§Ñ[‘ÐL–ÿÑ[“ÐS‘¡’¹.‘˵Both–oðÕR›oá¹and“ÕS˜¹are“of–oïÕdd‘°—‰ffsŽ‘#™rowset“¹t²!ypšMÞe.‘˶The“set‘oðÐS‘¹is“supp˜osed‘oðto“b˜e‘oðdisjoin²!t“fromŽ¡‘`bšMÞoth–¦fÐR‘¼¹and“ÐL¹.‘ÝÝIf“it“is“not“the“case,“the“set“ÐS‘Gø¹will“b˜e“considered“as“ÐS‘~Ñn–nì¹(ÐR‘„”Ñ[“ÐL¹).ŽŽŸ’çÿk9ŽŽŒ‹ ÷ ¬lÀ ý4åe ­› ývåe‘`¹This–ófunction“ignores“Õmatrix->representation¹,‘>and“thš²!us“ev˜en‘óif“it“is“set“to“Õdd‘°—‰ffsŽ‘#™Generatorޤ ™š‘`¹or–¦fÕdd‘°—‰ffsŽ‘#™Unspecified¹,“it“treats“the“matrix“as“if“it“wš²!ere“inequalit˜y“represen˜tation.Ž©Ÿ½Õdd‘°—‰ffsŽ–#™boolean›¿ªdd‘°—‰ffsŽ“ExistsRestrictedFace2(matrix,˜R,˜S,˜lps,˜err)ŽŽ’Um¦¹:Ž¡‘`It–@óis“the“same“as“the“function“Õdd‘°—‰ffsŽ‘#™ExistsRestrictedFace“¹except“that“it“returns“also“a“certi -Ž¡‘`cate–¦ffor“the“answ²!er.‘ÝÝThe“certi cate“is“a“solution“to“the“bMÞounded“LP:ŽŸ'fŸë•‘kCX(P)ŽŽ’…;ZmaxŽ’›oŸÐzŽ’®¨î¹sub‘›»ject‘¦ftoŽŽ’ìûÐbŸ¤z¿rŽ‘NÑ‘nìÐAŸ¤z¿rŽ‘’bÐxŽ’7阹=– §0Ð;‘ÝØÑ8Ðr‘X…Ñ2“ÐR‘„”Ñ[‘nìÐLŽŽ¤ ™™’ìûbŸ¤z¿sŽ‘Ý(Ñ‘nìÐAŸ¤z¿sŽ‘n<ÐxŽ’ÒiÑÐzŽ’7é˜Ñ– §¹0Ð;‘ÝØÑ8Ðs“Ñ2“ÐSŽŽ¡’ìûbŸ¤z¿tŽ‘¶Ñ‘nìÐAŸ¤z¿tŽ‘‘ÊÐxŽ’7é˜Ñ– §¹0Ð;‘ÝØÑ8Ðt“Ñ2“ÐTŽŽ¡’ìû¹1Ž’ÒiÑÐzŽ’7é˜Ñ‘ §¹0Ð;ŽŽŽŽŸ)#w‘`¹where–¼ZÐL“¹is“the“set‘¼Yof“linearitš²!y“ro˜ws“of“Õmatrix¹,‘Á×and“ÐT‘A°¹represen˜ts“the“set‘¼Yof“ro˜ws“that“are“notŽ¡‘`in› 2ÐR‘ÉÑ[–³tÐL“Ñ[“ÐS‘¡’¹.‘BThe˜answ²!er– 3for˜the˜decision“problem˜is˜YES‘ if˜and“only˜if˜the“LP‘ attains˜anŽ¡‘`optimal–ˆQand“the“optimal“v‘ÿdDalue“is“pMÞositiv²!e.‘ÓÖThe‘ˆRdual“solution“(either“an“optimal“solution“or“aŽ¡‘`dual–(xun²!bšMÞounded“direction)‘(wcan“b˜e“considered“as“a“certi cate‘(wfor“the“NO‘(Xanswš²!er,‘A§if“the“answ˜erŽ¡‘`is‘¦fNO.ŽŸœ¬‘`This–ófunction“ignores“Õmatrix->representation¹,‘>and“thš²!us“ev˜en‘óif“it“is“set“to“Õdd‘°—‰ffsŽ‘#™GeneratorŽ¡‘`¹or–¦fÕdd‘°—‰ffsŽ‘#™Unspecified¹,“it“treats“the“matrix“as“if“it“wš²!ere“inequalit˜y“represen˜tation.ŽŸŸ¼Õdd‘°—‰ffsŽ–#™SetFamilyPtr›¿ªdd‘°—‰ffsŽ“Matrix2Adjacency(matrix,˜err)ŽŽ’1X¹:Ž¡‘`Computes–'the›'adjacency“list˜of“input“ro²!ws˜using“the˜LP‘&·solv²!er˜and“without˜running“theŽ¡‘`represen•²!tation›Àcon“v“ersion.‘°¦When˜the˜input‘¿is˜H-represen“tation,‘9âit‘¿giv“es˜the˜facet˜graph˜of˜theŽ¡‘`pMÞolyhedron.‘”7F‘ÿeor–ÉrV-represenš²!tation,‘õ¤it“giv˜es–Ésthe“(v˜ertex)›Érgraph“of˜the“pMÞolyhedron.‘”7It˜is“requiredŽ¡‘`that–D”the“input›D•matrix“is“a“minimal“represen²!tation.‘½BRun“redundancy˜remo²!v‘ÿdDal“functions“bMÞeforeŽ¡‘`calling–¦fthis“function,“see“the“sample“coMÞde“adjacency‘ÿe.c.ަÕdd‘°—‰ffsŽ–#™SetFamilyPtr›¿ªdd‘°—‰ffsŽ“Matrix2WeakAdjacency(matrix,˜err)ŽŽ’-0¹:Ž¡‘`Computes–‹\the“wš²!eak“adjacency‘‹[list“of“input“ro˜ws“using“the‘‹[LP‘‹!solv˜er“and“without“runningŽ¡‘`the–µrepresenš²!tation“con˜v˜ersion.‘ (When“the“input“is“H-represen˜tation,‘¹Fit“giv˜es“the“graph“whereŽ¡‘`its–ônošMÞdes“are‘õthe“facets“t•²!w“o–ôno˜des“are“adjacen²!t‘õif“and“only“if“the“asso˜ciated‘õfacets“ha•²!v“e‘ôsomeŽ¡‘`in•²!tersection.‘¬bF‘ÿeor›õV-represen“tation,‘/¥it˜giv“es˜the˜graph˜where˜its˜noMÞdes‘ôare˜the˜v“ertices˜and˜t“w“oŽ¡‘`nošMÞdes–Fàare“adjacen²!t“if‘Fáand“only“if“the“asso˜ciated“v²!ertices“are‘Fáon“a“common“facet.‘¾It“is“requiredŽ¡‘`that–D”the“input›D•matrix“is“a“minimal“represen²!tation.‘½BRun“redundancy˜remo²!v‘ÿdDal“functions“bMÞeforeŽ¡‘`calling–¦fthis“function,“see“the“sample“coMÞde“adjacency‘ÿe.c.ަÕdd‘°—‰ffsŽ–#™MatrixPtr›¿ªdd‘°—‰ffsŽ“FourierElimination(matrix,˜err)ŽŽ’q®¹:Ž¡‘`Eliminate–¸åthe›¸älast“v‘ÿdDariable˜from“a“system˜of“linear˜inequalities“givš²!en“b˜y‘¸ämatrix“b˜y‘¸äusing“theŽ¡‘`F‘ÿeourier's–nïElimination.‘v If“the“input“matrix“is“V-represen²!tation,‘­:Õ*err“¹returns“Õdd‘°—‰ffsŽ‘#™NotAvailForV¹.Ž¡‘`This–ò?function“doMÞes“not“remo•²!v“e–ò?redundancy“and“one“mighš²!t“w˜an˜t“to“call“redundancy“remo˜v‘ÿdDalŽ¡‘`functions–¦fafterw²!ards.‘ÝÝSee“the“sample“coMÞde“fourier.c.ŽŸŸ¼Õdd‘°—‰ffsŽ–#™MatrixPtr›¿ªdd‘°—‰ffsŽ“BlockElimination(matrix,˜set,˜err)ŽŽ’!°¬¹:Ž¡‘`Eliminate–Àša“set“of›À›v‘ÿdDariables“from“a“system“of“linear“inequalities“giv•²!en˜b“y–Àšmatrix“b²!y“usingŽ¡‘`the–êïextreme“ra²!ys›êðof“the“dual“linear˜system.‘«xSee˜commen²!ts“in“the“coMÞde˜cddpro‘›»j.c“for“details.Ž¡‘`This–B¿mighš²!t“bMÞe“a“faster“w˜a˜y“to“eliminate“v‘ÿdDariables“than“the“repMÞeated“F‘ÿeourierElimination“whenŽ¡‘`the› n•²!um“bMÞer˜of–Ÿv‘ÿdDariables˜to˜eliminate˜is˜large.‘=ŠIf˜the˜input“matrix˜is˜V-represen²!tation,‘8îÕ*errŽ¡‘`¹returns–9ÃÕdd‘°—‰ffsŽ‘#™NotAvailForV¹.›9ÄThis“function“doMÞes˜not“remo•²!v“e–9Ãredundancy˜and“one“migh•²!t˜w“an“t‘9ÃtoŽ¡‘`call–¦fredundancy“remoš²!v‘ÿdDal“functions“afterw˜ards.‘ÝÝSee“the“sample“coMÞde“pro‘›»jection.c.ަÕdd‘°—‰ffsŽ–#™rowrange›¿ªdd‘°—‰ffsŽ“RayShooting(matrix,˜point,˜vector)ŽŽ’ñ¹:Ž¡‘`Finds–Ü>the›Ü?index“of“a“halfspace˜ rst“left“b²!y“the˜ra²!y“starting“from“Õpoint˜¹to•²!w“ard–Ü>the“directionŽŽŸ’åBž10ŽŽŒ‹ •€ ¬lÀ ý4åe ­› ývåe‘`Õvector¹.‘ÈÚIt–g^resolvš²!es‘g]tie“b˜y›g]a“lexicographic“pMÞerturbation.‘ÈÚThose˜inequalities“violated˜b²!y“ÕpointŽ© ™š‘`¹will–¦fbMÞe“simply“ignored.ŽŸR…Û4.3Ž‘ÀData‘€Manipulationsޤ«ÿÏ4.3.1Ž‘&zNum•¦tbY‹er‘2Assignmen“tsŽ¡¹F‘ÿeor›•~n•²!um“bMÞer‘•assignmen“ts,‘˜àone˜cannot˜use‘•suc“h˜expressions˜as–•Õx=(mytype)a¹.‘Ø:This˜is“bMÞecause˜cddlibަuses–wjan›wkabstract“n•²!um“bMÞer˜t“ypMÞe–wj(Õmytype¹)˜so“that˜it“can˜compute“with˜v‘ÿdDarious“n•²!um“bMÞer˜t“ypMÞes‘wjsuc“hަas–îFC‘î4double“and“GMP‘î3rational.‘µ}User“can“easily“add“a“new“n•²!um“bšMÞer‘îFt“yp˜e›îFb“y˜rede ning˜arithmeticަopMÞerations–¦fin“cddmp.h“and“cddmp.c.ŽŸ™šÕvoid‘¿ªdd‘°—‰ffsŽ‘#™init(x)ŽŽ‘Z¹:ަ‘`This–Y[is›YZto“initialize˜a“Õmytype“¹v‘ÿdDariable˜Õx“¹and˜to“set“it˜to“zero.‘ö»This˜initialization“has˜to“bMÞeަ‘`called–¦fbšMÞefore“an²!y“Õmytype“¹v‘ÿdDariable“to“b˜e“used.ޤ™šÕvoid‘¿ªdd‘°—‰ffsŽ‘#™clear(x)ŽŽ‘_Ø)¹:ަ‘`This–¦fis“to“free“the“space“alloMÞcated“to“a“Õmytype“¹v‘ÿdDariable“Õx¹.Ž¡Õvoid›¿ªdd‘°—‰ffsŽ–#™set‘°—‰ffsŽ“si(x,˜a)ŽŽ‘u:À¹:ަ‘`This–¦fis“to“set“a“Õmytype“¹v›ÿdDariable“Õx“¹to“the“v˜alue“of“signed“long“in²!teger“Õa¹.Ž¡Õvoid›¿ªdd‘°—‰ffsŽ–#™set‘°—‰ffsŽ“si2(x,˜a,˜b)ŽŽ’Œ9h¹:ަ‘`This–ï0is›ï/to“set˜a“Õmytype˜¹v‘ÿdDariable“Õx˜¹to“the“v‘ÿdDalue˜of“the˜rational“expression˜Õa/b¹,‘Ôwhere“Õa˜¹is“signedަ‘`long–¦fand“Õb“¹is“unsigned“long“in²!tegers.Ž¡Õvoid›¿ªdd‘°—‰ffsŽ–#™set‘°—‰ffsŽ“d(x,˜b)ŽŽ‘o{¹:ަ‘`This–üKis“to›üJset“a“Õmytype“¹v‘ÿdDariable“Õx˜¹to“the“v›ÿdDalue“of“double“Õb¹.‘ß‹This“is“a²!v˜ailable‘üJonly“when“theަ‘`library–¦fis“compiled“without“Õ-DGMPRATIONAL“¹compiler“option.ŽŸìÏ4.3.2Ž‘&zArithmetic–2OpšY‹erations“for“Õmytype“ÏNum¦tb˜ersŽŸ«ÿ¹Beloš²!w–¦fÕx¹,“Õy¹,“Õz“¹are“of“t˜ypMÞe“Õmytype¹.ŽŸ™šÕvoid–¿ªdd‘°—‰ffsŽ‘#™add(x,“y,“z)ŽŽ‘vÖѹ:ަ‘`Set–¦fÕx“¹to“bMÞe“the“sum“of“Õy“¹and“Õz¹.Ž¡Õvoid–¿ªdd‘°—‰ffsŽ‘#™sub(x,“y,“z)ŽŽ‘vÖѹ:ަ‘`Set–¦fÕx“¹to“bMÞe“the“substraction“of“Õz“¹from“Õy¹.Ž¡Õvoid–¿ªdd‘°—‰ffsŽ‘#™mul(x,“y,“z)ŽŽ‘vÖѹ:ަ‘`Set–¦fÕx“¹to“bMÞe“the“m²!ultiplication“of“Õy“¹and“Õz¹.Ž¡Õvoid–¿ªdd‘°—‰ffsŽ‘#™div(x,“y,“z)ŽŽ‘vÖѹ:ަ‘`Set–¦fÕx“¹to“bMÞe“the“division“of“Õy“¹o•²!v“er‘¦fÕz¹.Ž¡Õvoid–¿ªdd‘°—‰ffsŽ‘#™inv(x,“y)ŽŽ‘e—Ó¹:ަ‘`Set–¦fÕx“¹to“bšMÞe“the“reciplo˜cal“of“Õy¹.ŽŽŸ’åBž11ŽŽŒ‹ ¨Ô ¬lÀ ý4åe ­› ývåeÏ4.3.3Ž‘&zPrede ned‘2Constan¦ttsŽŸ«ÿ¹There–ì¾are‘ì¿sevš²!eral“Õmytype“¹constan˜ts›ì¿de ned“when˜Õdd‘°—‰ffsŽ–#™set‘°—‰ffsŽ“global‘°—‰ffsŽ“constants(void)–ì¾¹is“called.‘ŸûSomeޤ ™šconstanš²!ts–rdepMÞend“on‘qthe“double“constan˜t“Õdd‘°—‰ffsŽ‘#™almostzero“¹whic˜h›qis“normally“set“to˜10Ÿü¾ó¾KÈ cmsy8¼7Ž‘oî¹in“cdd.h.Ž¡This–kv‘ÿdDalue“can“bšMÞe“mo˜di ed“dep˜ending“on“hoš²!w“n˜umerically“delicate“y˜our“problems“are“but“an“extraŽ¡caution–¦fshould“bMÞe“tak²!en.ŽŸ™šÕmytype‘¿ªdd‘°—‰ffsŽ‘#™purezeroŽŽ‘kW}¹:Ž¡‘`This–¦frepresen²!ts“the“mathematical“zero“0.Ž©™šÕmytype‘¿ªdd‘°—‰ffsŽ‘#™zeroŽŽ‘TXÕ¹:Ž¡‘`This–a–represenš²!ts“the“largest“pMÞositiv˜e“n˜um˜bMÞer“whic˜h“should‘a—bšMÞe“considered“to“b˜e“zero.‘mIn“theŽ¡‘`GMPRA‘ÿeTIONAL‘ umoMÞde,‘'[it› is– equal“to“Õdd‘°—‰ffsŽ‘#™purezero¹.‘[In˜the“C‘ vdouble˜moMÞde,‘'[it˜is“set“to“theŽ¡‘`v‘ÿdDalue–¦fof“Õdd‘°—‰ffsŽ‘#™almostzero¹.ަÕmytype‘¿ªdd‘°—‰ffsŽ‘#™minuszeroŽŽ‘q'¹:Ž¡‘`The–¦fnegativ²!e“of“Õdd‘°—‰ffsŽ‘#™zero¹.ަÕmytype‘¿ªdd‘°—‰ffsŽ‘#™oneŽŽ‘N™+¹:Ž¡‘`This–¦frepresen²!ts“the“mathematical“one“1.ŽŸìÏ4.3.4Ž‘&zSign–2Ev‘ÿLèaluation“and“Comparison“for“Õmytype“ÏNum¦tbY‹ersŽŸ«ÿ¹Beloš²!w–¦fÕx¹,“Õy¹,“Õz“¹are“of“t˜ypMÞe“Õmytype¹.ŽŸ™šÕdd‘°—‰ffsŽ–#™boolean‘¿ªdd‘°—‰ffsŽ“Positive(x)ŽŽ’‘ù¹:Ž¡‘`Returns–ÎSÕdd‘°—‰ffsŽ›#™TRUE‘ιif“Õx“¹is“considered“pMÞositiv²!e,‘ùŠand“Õdd‘°—‰ffsŽ˜FALSE‘ιotherwise.‘•×In“the“GMPRA‘ÿeTIONALŽ¡‘`mo•MÞde,‘´¼the›xQp“ositivit²!y˜recognition˜is˜exact.‘y+In˜the˜C‘xdouble‘xPmo“de,‘´¼this˜means˜the˜v‘ÿdDalue˜is˜strictlyŽ¡‘`larger–¦fthan“Õdd‘°—‰ffsŽ‘#™zero¹.ŽŸš‘`Õdd‘°—‰ffsŽ–#™boolean‘¿ªdd‘°—‰ffsŽ“Negative(x)–¦f¹w²!orks“similarly‘ÿe.ަÕdd‘°—‰ffsŽ–#™boolean‘¿ªdd‘°—‰ffsŽ“Nonpositive(x)ŽŽ’£8¹:Ž¡‘`Returns–¦fthe“negation“of“Õdd‘°—‰ffsŽ–#™Positive(x)¹.‘ÝÝÕdd‘°—‰ffsŽ“Nonnegative(x)–¦f¹w²!orks“similarly‘ÿe.ަÕdd‘°—‰ffsŽ–#™boolean‘¿ªdd‘°—‰ffsŽ“EqualToZero(x)ŽŽ’£8¹:Ž¡‘`Returns–5–Õdd‘°—‰ffsŽ›#™TRUE‘5r¹if“Õx“¹is‘5—considered“zero,‘Yband“Õdd‘°—‰ffsŽ˜FALSE‘5r¹otherwise.‘‹mIn‘5—the“GMPRA‘ÿeTIONALŽ¡‘`moMÞde,‘Ythe–E¿zero›EÀrecognition“is˜exact.‘½¥In˜the“C‘E§double˜moMÞde,‘Ythis“means˜the“v‘ÿdDalue˜is“in•²!bMÞet“w“eenŽ¡‘`Õdd‘°—‰ffsŽ›#™minuszero–¦f¹and“Õdd‘°—‰ffsŽ˜zero“¹inclusiv²!e.ަÕdd‘°—‰ffsŽ–#™boolean›¿ªdd‘°—‰ffsŽ“Larger(x,˜y)ŽŽ’—¸¼¹:Ž¡‘`Returns–ÁÕdd‘°—‰ffsŽ›#™TRUE‘Àù¹if“Õx‘Àÿ¹is“strictly“larger“than“Õy¹,‘Ǧand“Õdd‘°—‰ffsŽ˜FALSE‘Àù¹otherwise.‘-ªThis“is“implemen²!tedŽ¡‘`as›–œdd‘¨/‰ffHøŽ‘ñ'P•²!ositiv“e(z)˜where˜Õz˜¹is‘–the˜subtraction˜of˜Õy˜¹from˜Õx¹.‘ØšÕdd‘°—‰ffsŽ‘#™Smaller(x,‘¿ªy)˜¹w“orks˜similarly‘ÿe.ަÕdd‘°—‰ffsŽ–#™boolean›¿ªdd‘°—‰ffsŽ“Equal(x,˜y)ŽŽ’‘ù¹:Ž¡‘`Returns–¤ìÕdd‘°—‰ffsŽ‘#™TRUE›¤ë¹if“Õx“¹is“considered“equal“to˜Õy¹,‘¥8and“Õdd‘°—‰ffsŽ‘#™FALSE˜¹otherwise.‘Ý_This“is“implemen²!tedŽ¡‘`as–¦fdd‘¨/‰ffHøŽ‘ñ'EqualT‘ÿeoZero(z)“where“Õz“¹is“the“subtraction“of“Õy“¹from“Õx¹.ŽŸìÏ4.3.5Ž‘&zP¦tolyhedra–2Data“ManipulationŽŸ«ÿÕdd‘°—‰ffsŽ–#™MatrixPtr›¿ªdd‘°—‰ffsŽ“PolyFile2Matrix˜(f,˜err)ŽŽ’è4¹:Ž¡‘`Read–CÃa“Pš²!olyhedra“data“from“stream“Õf“¹and“store‘CÂit“in“Õmatrixdata“¹and“return“a“pMÞoin˜ter“to“theŽ¡‘`data.ŽŽŸ’åBž12ŽŽŒ‹ ²° ¬lÀ ý4åe ­› ývåeÕdd‘°—‰ffsŽ–#™MatrixPtr‘¿ªdd‘°—‰ffsŽ“CopyInequalities(poly)ŽŽ’Ü´´¹:ޤ ™š‘`Copš²!y– 6the“inequalit˜y“represen˜tation“pMÞoin˜ted“b˜y‘ 7pMÞoly“to“Õmatrixdata“¹and“return“Õdd‘°—‰ffsŽ‘#™MatrixPtr¹.Ž©™šÕdd‘°—‰ffsŽ–#™MatrixPtr‘¿ªdd‘°—‰ffsŽ“CopyGenerators(poly)ŽŽ’Ñ5`¹:Ž¡‘`Copš²!y–=Ythe“generator‘=Xrepresen˜tation“pMÞoin˜ted“b˜y“pMÞoly“to“Õmatrixdata‘=X¹and“return“Õdd‘°—‰ffsŽ‘#™MatrixPtr¹.ަÕdd‘°—‰ffsŽ–#™SetFamilyPtr‘¿ªdd‘°—‰ffsŽ“CopyIncidence(poly)ŽŽ’Ü´´¹:Ž¡‘`Copš²!y–nïthe“incidence“represen˜tation“of“the“computed“represen˜tation“pMÞoin˜ted“b˜y“pMÞoly“to“ÕsetfamilyŽ¡‘`¹and–Šreturn“Õdd‘°—‰ffsŽ‘#™SetFamilyPtr¹.‘ÃHThe“computed›‰represen²!tation“is“ÕInequality“¹if˜the“input“isŽ¡‘`ÕGenerator¹,–¦fand“the“vice“visa.ަÕdd‘°—‰ffsŽ–#™SetFamilyPtr‘¿ªdd‘°—‰ffsŽ“CopyAdjacency(poly)ŽŽ’Ü´´¹:Ž¡‘`Copš²!y–nïthe“adjacency“represen˜tation“of“the“computed“represen˜tation“pMÞoin˜ted“b˜y“pMÞoly“to“ÕsetfamilyŽ¡‘`¹and–Šreturn“Õdd‘°—‰ffsŽ‘#™SetFamilyPtr¹.‘ÃHThe“computed›‰represen²!tation“is“ÕInequality“¹if˜the“input“isŽ¡‘`ÕGenerator¹,–¦fand“the“vice“visa.ަÕdd‘°—‰ffsŽ–#™SetFamilyPtr‘¿ªdd‘°—‰ffsŽ“CopyInputIncidence(poly)ŽŽ’ùs¹:Ž¡‘`Copš²!y––™the“incidence‘–˜represen˜tation“of“the“input“represen˜tation“pMÞoin˜ted‘–˜b˜y“pMÞoly“to“ÕsetfamilyŽ¡‘`¹and–¦freturn“Õd‘°—‰ffsŽ‘#™SetFamilyPtr¹.ަÕdd‘°—‰ffsŽ–#™SetFamilyPtr‘¿ªdd‘°—‰ffsŽ“CopyInputAdjacency(poly)ŽŽ’ùs¹:Ž¡‘`Copš²!y–Uµthe“adjacency“represen˜tation‘U¶of“the“input“represen˜tation“pMÞoin˜ted“b˜y‘U¶pMÞoly“to“ÕsetfamilyŽ¡‘`¹and–¦freturn“Õd‘°—‰ffsŽ‘#™SetFamilyPtr¹.ަÕvoid‘¿ªdd‘°—‰ffsŽ‘#™FreePolyhedra(poly)ŽŽ’Ÿw¹:Ž¡‘`F‘ÿeree–¦fmemory“alloMÞcated“to“Õpoly¹.ŽŸìÏ4.3.6Ž‘&zLP–2Data“ManipulationŽŸ«ÿÕdd‘°—‰ffsŽ–#™LPPtr‘¿ªdd‘°—‰ffsŽ“MakeLPforInteriorFinding(lp)ŽŽ’è4¹:Ž¡‘`Set–o]up“an“LP‘oOto“ nd‘o\an“inš²!terior“pMÞoin˜t“of“the“feasible“region“of“Õlp“¹and‘o\return“a“pMÞoin˜ter“to“theŽ¡‘`LP‘ÿe.–FÅThe“new“LP‘Fœhas“one“new“v‘ÿdDariable“ÐxŸÈ®¿d¼+1Ž›é¹and“one“more“constrain²!t:‘›maxŽ‘RàÐxŸÈ®¿d¼+1Ž˜¹sub‘›»ject“toŽ¡‘`Ðb–nìÑ“ÐAx“Ñ“ÐxŸÈ®¿d¼+1Ž›ÆËÑ‘ §¹0–¦fand“ÐxŸÈ®¿d¼+1Ž˜Ñ‘ §ÐK‘ȹ,“where“ÐK‘nç¹is“a“pMÞositivš²!e“constan˜t.ަÕdd‘°—‰ffsŽ–#™LPPtr›¿ªdd‘°—‰ffsŽ“Matrix2LP(matrix,˜err)ŽŽ’Ŷ ¹:Ž¡‘`Load–¦fÕmatrix“¹to“Õlpdata“¹and“return“a“pMÞoin²!ter“to“the“data.ަÕdd‘°—‰ffsŽ–#™LPSolutionPtr‘¿ªdd‘°—‰ffsŽ“CopyLPSolution(lp)ŽŽ’Ü´´¹:Ž¡‘`Load–Ñ‚the›уsolutions“of“Õlp˜¹to“Õlpsolution“¹and˜return“a“pMÞoin²!ter˜to“the“data.‘_2This˜replaces“theŽ¡‘`old–¦fname“Õdd‘°—‰ffsŽ‘#™LPSolutionLoad(lp)¹.ަÕvoid‘¿ªdd‘°—‰ffsŽ‘#™FreeLPData(lp)ŽŽ’‚V%¹:Ž¡‘`F‘ÿeree–¦fmemory“allošMÞcated“as“an“LP“data“p˜oinš²!ted“b˜y“Õlp¹.ަÕvoid‘¿ªdd‘°—‰ffsŽ‘#™FreeLPSolution(lps)ŽŽ’Ÿw¹:Ž¡‘`F‘ÿeree–¦fmemory“allošMÞcated“as“an“LP“solution“data“p˜oinš²!ted“b˜y“Õlps¹.ŽŸìÏ4.3.7Ž‘&zMatrix‘2ManipulationŽŸ«ÿÕdd‘°—‰ffsŽ–#™MatrixPtr‘¿ªdd‘°—‰ffsŽ“CopyMatrix(matrix)ŽŽ’Ŷ ¹:Ž¡‘`Makš²!e–¦fa“cop˜y“of“matrixdata“pMÞoin˜ted“b˜y“Õmatrix“¹and“return“a“pMÞoin˜ter“to“the“cop˜y‘ÿe.ŽŽŸ’åBž13ŽŽŒ‹Àà ¬lÀ ý4åe ­› ývåeÕdd‘°—‰ffsŽ–#™MatrixPtr›¿ªdd‘°—‰ffsŽ“AppendMatrix(matrix1,˜matrix2)ŽŽ’ ²¹:ޤ ™š‘`Makš²!e–’na“matrixdata“b˜y“cop˜ying“Õ*matrix1“¹and‘’oappMÞending“the“matrix“in“Õ*matrix2“¹and“returnŽ¡‘`a–ªîpMÞoinš²!ter“to“the‘ªïdata.‘ëuThe“colsize“m˜ust“bMÞe‘ªïequal“in“the“t˜w˜o“input“matrices.‘ëvIt“returns“aŽ¡‘`ÕNULL‘â-¹pMÞoin²!ter–â~if“the“input“matrices“are‘â}not“appropriate.‘’%Its“Õrowsize“¹is“set“to“the“sum“ofŽ¡‘`the–Àro²!wsizes“of›ÁÕmatrix1“¹and“Õmatrix2¹.‘ FìThe“new“matrixdata“inherits˜ev²!erything“else“(i.e.Ž¡‘`n•²!um“bšMÞert“yp˜e,›¦frepresen“tation,˜etc)˜from˜the˜ rst˜matrix.Ž©T¢Õint–¿ªdd‘°—‰ffsŽ‘#™MatrixAppendTo(&“matrix1,“matrix2)ŽŽ’ïù:Ž¡‘`Same–¦fas“Õdd‘°—‰ffsŽ‘#™AppendMatrix“¹except“that“the“ rst“matrix“is“moMÞdi ed“to“tak²!e“the“result.ަÕint–¿ªdd‘°—‰ffsŽ‘#™MatrixRowRemove(&“matrix,“i)ŽŽ’Íǹ:Ž¡‘`Remo•²!v“e–¦fthe“Ði¹th“ro²!w“of“Õmatrix¹.ަÕdd‘°—‰ffsŽ–#™MatrixPtr›¿ªdd‘°—‰ffsŽ“MatrixSubmatrix(matrix,˜set)ŽŽ’ÿ2°¹:Ž¡‘`Generate–-÷the›-ösubmatrix“of“Õmatrix“¹b•²!y˜remo“ving–-÷the“ro²!ws“indexed˜b²!y“Õset“¹and“return˜a“ma-Ž¡‘`trixdata‘¦fpMÞoin²!ter.ަÕdd‘°—‰ffsŽ–#™SetFamilyPtr›¿ªdd‘°—‰ffsŽ“Matrix2Adjacency(matrix,˜err)ŽŽ’1X¹:Ž¡‘`Return–the“adjacency“list“of“the“represenš²!tation“giv˜en“b˜y“Õmatrix¹.‘°pThe“computation“is“done“b˜yŽ¡‘`the–7;built-in“LP‘7solvš²!er.‘¸ÏThe“represen˜tation“should›7:bMÞe“free“of“redundancy“when˜this“function“isŽ¡‘`called.‘‹-See–®Wthe“function“Õdd‘°—‰ffsŽ–#™rowset‘¿ªdd‘°—‰ffsŽ“RedundantRows›®V¹and–®Wthe“example˜program“adjacency‘ÿe.c.ŽŸ2Û4.4Ž‘ÀInput/Output‘€F‘þàunctionsŽŸ«ÿÕdd‘°—‰ffsŽ–#™MatrixPtr›¿ªdd‘°—‰ffsŽ“PolyFile2Matrix˜(f,˜err)ŽŽ’è4¹:Ž¡‘`Read–CÃa“Pš²!olyhedra“data“from“stream“Õf“¹and“store‘CÂit“in“Õmatrixdata“¹and“return“a“pMÞoin˜ter“to“theŽ¡‘`data.ަÕboolean–¿ªdd‘°—‰ffsŽ‘#™DDFile2File(ifile,“ofile,“err)ŽŽ’ïù:Ž¡‘`Compute–ò”the“represenš²!tation“con˜v˜ersion“for“a“pMÞolyhedron“giv˜en“b˜y“a“P˜olyhedra“ le“i le,‘ŸandŽ¡‘`write–©the›©other“represen²!tation“in˜a“P²!olyhedra“ le˜o le.‘æÕ*err˜¹returns“Õdd‘°—‰ffsŽ‘#™NoError“¹if˜the“com-Ž¡‘`putation–¦fterminates“normally‘ÿe.‘ÝÝOtherwise,“it“returns“a“v‘ÿdDalue“according“to“the“error“oMÞccurred.ަÕvoid–¿ªdd‘°—‰ffsŽ‘#™WriteMatrix(f,“matrix)ŽŽ’°Su¹:Ž¡‘`W‘ÿerite–¦fÕmatrix“¹to“stream“Õf¹.ަÕvoid–¿ªdd‘°—‰ffsŽ‘#™WriteNumber(f,“x)ŽŽ’“•#¹:Ž¡‘`W‘ÿerite–£Õx“¹to“stream“Õf¹.‘¨If“Õx“¹is“of“GMP‘{mpMÞq‘¨/‰ffHøŽ‘ñ't“rational“Ðp=qšd“¹,‘&—the“output“is“Ðp=q˜¹.‘¨œIf“it“is“of“C‘{double,Ž¡‘`it–¦fis“formatted“as“a“double“ oat“with“a“decimal“pMÞoin²!t.ަÕvoid–¿ªdd‘°—‰ffsŽ‘#™WritePolyFile(f,“poly)ŽŽ’°Su¹:Ž¡‘`W‘ÿerite–¦ftt“pMÞoly“to“stream“Õf“¹in“P²!olyhedra“format.ަÕvoid–¿ªdd‘°—‰ffsŽ‘#™WriteErrorMessages(f,“err)ŽŽ’ÇR¹:Ž¡‘`W‘ÿerite–¦ferror“messages“givš²!en“b˜y“Õerr“¹to“stream“Õf¹.ަÕvoid–¿ªdd‘°—‰ffsŽ‘#™WriteSetFamily(f,“setfam)ŽŽ’Á’s¹:Ž¡‘`W‘ÿerite–:Îthe›:Íset“family˜pMÞoinš²!ted“b˜y›:ÍÕsetfam“¹to˜stream“Õf¹.‘›F‘ÿeor“eac²!h˜set,‘_çit“outputs˜its“index,‘_çitsŽ¡‘`cardinalitš²!y‘ÿe,–¦fa“colon“\:"‘ÝÝand“a“ordered“list“of“its“elemen˜ts.ަÕvoid–¿ªdd‘°—‰ffsŽ‘#™WriteSetFamilyCompressed(f,“setfam)ŽŽ’û¹:Ž¡‘`W‘ÿerite–:Îthe›:Íset“family˜pMÞoinš²!ted“b˜y›:ÍÕsetfam“¹to˜stream“Õf¹.‘›F‘ÿeor“eac²!h˜set,‘_çit“outputs˜its“index,‘_çitsŽ¡‘`cardinalitš²!y–“or“the“negativ˜e“of“the“cardinalit˜y‘ÿe,‘8Þa“colon“\:"‘È7and“the“elemen˜ts“in“the“set“or“itsŽŽŸ’åBž14ŽŽŒ‹Î6 ¬lÀ ý4åe ­› ývåe‘`¹complemen•²!ts›±Åwhic“hev“er˜is˜smaller.‘ÿûWhenev“er˜it˜outputs˜the˜complemen“ts,‘ôthe˜cardinalit“yޤ ™š‘`is–ðªnegated›ð«so“that“there“is˜no“am•²!biguit“y‘ÿe.‘¼ªThis–ðªwill“bMÞe“considered˜standard“for“outputingŽ¡‘`incidence–É%(*.icd,›ÑÕ*ecd)“and“adjacency“(*.iad,˜*.ead)“data“in“cddlib.‘FBut“there“is“some“minorŽ¡‘`incompatibilit²!y–¦fwith“cdd/cdd+“standalone“coMÞdes.Ž©™šÕvoid‘¿ªdd‘°—‰ffsŽ‘#™WriteProgramDescription(f)ŽŽ’ÇR¹:Ž¡‘`W‘ÿerite–¦fthe“cddlib“v²!ersion“information“to“stream“Õf¹.ަÕvoid–¿ªdd‘°—‰ffsŽ‘#™WriteDDTimes(f,“poly)ŽŽ’ª“˹:Ž¡‘`W‘ÿerite–¦fthe“represenš²!tation“con˜v˜ersion“time“information“on“Õpoly“¹to“stream“Õf¹.ŽŸR…Û4.5Ž‘ÀObsolete‘€F‘þàunctionsŽŸ«ÿÕboolean–¿ªdd‘°—‰ffsŽ‘#™DoubleDescription(poly,“err)ŽŽ’äo¹:‘ÝÝ(remo•²!v“ed–¦fin“V‘ÿeersion“0.90c)Ž¡‘`The–sânew“function“Õdd‘°—‰ffsŽ‘#™DDMatrix2Poly(matrix,‘¿ªerr)“¹(see‘sáSection“4.2)“replaces“(and“actuallyŽ¡‘`com²!bines)–¦fbMÞoth“this“and“Õdd‘°—‰ffsŽ‘#™Matrix2Poly(matrix,‘¿ªerr)¹.ަÕdd‘°—‰ffsŽ–#™PolyhedraPtr›¿ªdd‘°—‰ffsŽ“Matrix2Poly(matrix,˜err)ŽŽ’ùs¹:‘ÝÝ(remo•²!v“ed–¦fin“V‘ÿeersion“0.90c)Ž¡‘`See›¦fabMÞo•²!v“e˜for˜the˜reason˜for˜remo“v‘ÿdDal.ަÕdd‘°—‰ffsŽ–#™LPSolutionPtr‘¿ªdd‘°—‰ffsŽ“LPSolutionLoad(lp)ŽŽ’Ü´´¹:‘ÝÝ(renamed–¦fin“V‘ÿeersion“0.90c)Ž¡‘`This–¦ffunction“is“no²!w“called“Õdd‘°—‰ffsŽ‘#™CopyLPSolution(lp)¹.ŽŸR…Û4.6Ž‘ÀSet–€F‘þàunctions“in“ó1߆µT cmtt12Üsetoper“ÛlibraryŽŸ«ÿ¹The–°Icddlib“comes›°Hwith“a“simple“set“opMÞeration“library˜Õsetoper¹.‘û†The“kš²!ey“t˜ypMÞe‘°Hde ned“is“Õset‘°—‰ffsŽ‘#™type¹.Ž¡A‘»cset–»his“represenš²!ted“b˜y“a“ xed“length“binary“strings.‘äTh˜us,‘À¨the“maxim˜um‘»ilength“of“a“set“m˜ust“bMÞeŽ¡declared–¦fwhen“it“is“initialized.Ž¡‘Belo•²!w›V7the‘V6sym“bMÞols˜Õa¹,–f@Õb¹,“Õc˜¹are˜of–V6t²!ypMÞe˜Õset‘°—‰ffsŽ‘#™type¹.‘Ã#The“sym²!bMÞols˜ÕaP‘V#¹is“a˜pMÞoin²!ter˜to“t²!ypMÞe˜Õset‘°—‰ffsŽ‘#™type¹,Ž¡and–ÛzÕs¹,‘è¿Õt›Ûy¹are“of“t²!ypMÞe“Õlong¹.‘}Here“are˜some“of“the“functions“de ned.‘}See˜Õsetoper.h“¹for“a“completeŽ¡listing.ŽŸ™šÕvoid–¿ªset‘°—‰ffsŽ‘#™initialize(aP,“s)ŽŽ’™T͹:Ž¡‘`AlloMÞcate–æna›æoÕset‘°—‰ffsŽ‘#™type“¹space˜of“maxim•²!um˜cardinalit“y–ænÕs˜¹and“mak²!e“it˜pMÞoinš²!ted“b˜y›æoÕaP¹.“The˜set“isŽ¡‘`initialized–¦fas“empt²!y“set.ަÕvoid‘¿ªset‘°—‰ffsŽ‘#™free(a)ŽŽ‘_Ø)¹:Ž¡‘`F‘ÿeree–¦fthe“Õset‘°—‰ffsŽ‘#™type“¹space“alloMÞcated“for“Õa¹.ަÕvoid–¿ªset‘°—‰ffsŽ‘#™copy(a,“b))ŽŽ‘vÖѹ:Ž¡‘`Set–±¹Õa›±º¹to“bMÞe˜Õb¹.‘ÿ×The˜set“Õa˜¹m²!ust“bMÞe˜pre-initialized“with˜the“same˜maximš²!um“cardinalit˜y‘±ºas“thatŽ¡‘`of‘¦fÕb¹.ަÕvoid–¿ªset‘°—‰ffsŽ‘#™addelem(a,“t))ŽŽ’ˆϹ:Ž¡‘`Add–¦fan“elemenš²!t“Õt“¹to“a“set“Õa¹.‘ÝÝThe“set“Õa“¹sta˜ys“unc˜hanged“if“it“con˜tains“the“elemen˜t“Õt¹.ަÕlong‘¿ªset‘°—‰ffsŽ‘#™card(a))ŽŽ‘e—Ó¹:Ž¡‘`Return–¦fthe“cardinalit²!y“of“set“Õa¹.ަÕint–¿ªset‘°—‰ffsŽ‘#™member(t,“a))ŽŽ‘|–{¹:Ž¡‘`Return–¦f1“if“Õt“¹is“a“mem²!bMÞer“of“set“Õa¹,“and“0“otherwise.ŽŽŸ’åBž15ŽŽŒ‹Üç ¬lÀ ý4åe ­› ývåeÕvoid‘¿ªset‘°—‰ffsŽ‘#™write(a))ŽŽ‘kW}¹:ޤ ™š‘`Prinš²!t–X€out‘Xthe“elemen˜ts›Xof“set“Õa˜¹to“Õstdout¹.‘ÃæThe˜function“Õvoid–¿ªset‘°—‰ffsŽ‘#™fwrite(f,“a))˜¹output‘X€toŽ¡‘`stream‘¦fÕf¹.Ž©"z¾Î5Ž‘LËAn–ffExtension“of“the“CDD“Library“in“GMP“mos3deŽŸq‹¹Starting–Ìfrom‘Ëthe“vš²!ersion“093,‘;¤the“GMP‘­v˜ersion“of‘Ëcddlib,–;¥Õlibcddgmp.a¹,“con˜tains–Ìall‘Ëcdd“libraryŽ¡functions–€²in“t•²!w“o–€²arithmetics.‘lÁAll“functions“with“the“standard“pre x“Õdd‘°—‰ffsŽ‘¤K¹are“computed“with“theŽ¡GMP‘ckrational–c›arithmetic“as›cœbMÞefore.‘}The“same“fuctions˜with“the“new˜pre x“Õddf‘°—‰ffsŽ‘‡4¹are˜no²!w“addedŽ¡to–ãŽthe“library“Õlibcddgmp.a‘ã¹that“are“based“on“the“C‘ã~double“ oating-pMÞoinš²!t“arithmetic.‘•TTh˜us“theseŽ¡functions–’oare›’pequiv‘ÿdDalen²!t“to˜Õlibcdd.a“¹functions,‘Írexcept“that˜all“functions˜and“v‘ÿdDariable˜t²!ypMÞes“areŽ¡with–¦fpre x“Õddf‘°—‰ffsŽ‘Éÿ¹and“the“v‘ÿdDariable“tš²!ypMÞe“Õmytype“¹is“replaced“b˜y“Õmyfloat¹.Ž¡‘In– ˜this“sense,‘ÔõÕlibcdd.a“¹is“a“propMÞer“subset“of“Õlibcddgmp.a“¹and“in“principle“one“can“do“ev²!erythingŽ¡with–¦fÕlibcddgmp.a¹.‘ÝÝSee“ho²!w“the“new“Õdd‘°—‰ffsŽ‘#™LPSolve“¹is“written“in“cddlp.c.ަÎ6Ž‘LËExamplesŽŸq‹¹See–6çexample›6ècoMÞdes“suc²!h˜as“testcdd*.c˜,–M4testlp*.c,“redc•²!hec“k.c,–M4adjacency‘ÿe.c,“allfaces,c‘6çand˜simplecdd.cŽ¡in–¦fthe“Õsrc“¹and“Õsrc-gmp“¹subMÞdirectories“of“the“source“distribution.ަÎ7Ž‘LËNumerical‘ffAccuracyŽŸq‹¹A‘zlittle–zÆcaution“is‘zÅin“order.‘ZüManš²!y“pMÞeople“ha˜v˜e“observ˜ed‘zÅn˜umerical“problems“of“cddlib‘zÅwhen“theŽ¡ oating–¥ºv²!ersion›¥¹of“cddlib“is˜used.‘ÛØAs“w²!e“all˜kno•²!w,‘å oating-pMÞoin“t˜computation›¥ºmigh“t˜not‘¥¹giv“e˜aŽ¡correct–2answš²!er,‘1oespMÞecially“when“an‘1input“data“is“v˜ery‘1sensitiv˜e“to“a‘1small“pMÞerturbation.‘­!When“someŽ¡strange–PõbMÞehaš²!vior“is“observ˜ed,‘b it“is“alw˜a˜ys“wise“to“create“a“rationalization“of“the“input“(for“example,Ž¡one–Xcan“replace›Y0.3333333“with“1/3)“and“to“compute˜it“with“cddlib“compiled“with˜gmp“rational“toŽ¡see–’°what“a‘’±correct“bšMÞeha²!vior“should“b˜e.‘×KWhenev²!er›’±the“time“is“not˜impMÞortan²!t,‘–¡it“is“safer˜to“use“gmpŽ¡rational‘¦farithmetic.Ž¡‘If–ƒŽy²!ou›ƒneed“spMÞeedy˜computation“with˜ oating-pMÞoinš²!t“arithmetic,‘Їy˜ou“migh˜t‘ƒw˜an˜t“to‘ƒ\pla˜y“with"Ž¡the–¦fconstan²!t“Õdd‘°—‰ffsŽ‘#™almostzero“¹de ned“in“cdd.h:ޤv‡‘>þÕ#define‘¿ªdd_almostzero‘ T1.0E-7Ž¡¹This›¶Än•²!um“bMÞer˜is–¶Ãused˜to˜recognize˜whether“a˜n•²!um“bMÞer˜is˜zero:‘þ˜a˜n“um“bMÞer˜whose‘¶Ãabsolute˜v‘ÿdDalue˜isޤ ™šsmaller–‰êthan›‰éÕdd‘°—‰ffsŽ‘#™almostzero“¹is“considered˜zero,‘ÂËand˜nonzero“otherwise.‘ˆhY‘ÿeou“can“c²!hange˜this“toŽ¡mo•MÞdify›U¨the‘U©b“eha•²!vior˜of˜cddlib.‘ë¤One˜migh“t–U©consider˜the˜default“setting˜is˜rather˜large“for˜doubleŽ¡precision–yØarithmetic.‘X2This“is“bMÞecause“cddlib“is›y×made“to“deal“with“highly“degenerate˜data“and“itŽ¡wš²!orks–¦fbMÞetter“to“treat“a“relativ˜ely“large“\epsilon"“as“zero.Ž¡‘Another–ö­thing›ö®one“can“do“is˜scaling.‘βIf˜the“v‘ÿdDalues“in“one˜column“of“an“input˜is“of“smallerŽ¡magnitude–¦fthan“those“in“another“column,“scale“one“so“that“they“bMÞecome“comparable.ަÎ8Ž‘LËOther–ffUseful“Cos3desŽŸq‹¹There–jáare“sevš²!eral“other“useful“coMÞdes“a˜v‘ÿdDailable“for“v˜ertex“en˜umeration“and/or“con˜v˜ex“h˜ull“computa-Ž¡tion–¦fsucš²!h“as“lrs,“qh˜ull,“pšMÞorta“and“irisa-p˜olylib.‘ÝÝThe“p˜oin²!ters“to“these“co˜des“are“a²!v‘ÿdDailable“atŽŸ|_‘ b%1.ŽŽŽ‘`lrs–¦fbš²!y“D.“Avis“[2Ž‘yš]“(C“implemen˜tation“of“the“rev˜erse“searc˜h“algorithm“[4Ž‘yš]).ŽŽŸ’åBž16ŽŽŒ‹饠¬lÀ ý4åe ­› ývåe‘ b%¹2.ŽŽŽ‘`qh•²!ull›¼b“y˜C.B.‘¼BarbMÞer˜[6Ž‘yš]˜(C‘»Ìimplemen“tation˜of˜the˜b•MÞeneath-b“ey²!ond˜metho“d,–êçsee˜[10Ž‘ ó4,˜20Ž‘ ¯<],“whic²!hŽ© ™š‘`is–¦fthe“dual“of“the“dd“methoMÞd).ޤv‘ b%3.ŽŽŽ‘`pšMÞorta–ýàb²!y“T.“Christof‘ýáand“A.“L‘ú†fob˜el“[8Ž‘yš]“(C‘ýµimplemen²!tation‘ýáof“the“F‘ÿeourier-Motzkin“elimination).Ž¡‘ b%4.ŽŽŽ‘`IRISA‘ÿJpMÞolyhedral–ÿ¢library›ÿ£b²!y“D.K.˜Wilde“[23Ž‘ ó4]˜(C‘ÿJimplemen²!tation“of˜a“v‘ÿdDariation˜of“the˜ddަ‘`algorithm).ŽŸw‘ b%5.ŽŽŽ‘`PPL:–ÿlthe“Pš²!arma“P˜olyhedra“Library“[5Ž‘yš]“b˜y“R.“Bagnara“(C++“implemen˜tation“of“a“v‘ÿdDariationަ‘`of–¦fthe“dd“algorithm).Ž¡‘ b%6.ŽŽŽ‘`Õpd–¦f¹bš²!y“A.“Marzetta“[18Ž‘ ó4]“(C“implemen˜tation“of“the“primal-dual“algorithm“[7Ž‘yš]).Ž¡‘ b%7.ŽŽŽ‘`Geometry–¦fCenš²!ter“Soft˜w˜are“List“b˜y“N.“Amen˜ta“[1Ž‘yš].Ž¡‘ b%8.ŽŽŽ‘`Computational–¦fGeometry“Pš²!ages“b˜y“J.“Eric˜kson“[11Ž‘ ó4].ŽŸw‘ b%9.ŽŽŽ‘`Linear–¦fProgramming“F‘þȈAš²!Q“b˜y“R.“F‘ÿeourer“and“J.“Gregory“[12Ž‘ ó4].Ž¡‘è‹10.ŽŽŽ‘`ZIB–¦fBerlin“pMÞolyhedral“soft•²!w“are‘¦flist:ަ‘`ftp://elib.zib-b•MÞerlin.de/pub/mathprog/p“olyth/index.h²!tml.Ž¡‘è‹11.ŽŽŽ‘`Pš²!olyhedral–¦fComputation“F‘þȈA˜Q“[13Ž‘ ó4].ŽŸ!ʯÎ9Ž‘LËCos3des–ffUsing“CddlibŽŸq‹¹There–¦fare“quite“a“few“nice“programs“using“some“functions“of“cddlib.‘ÝÝHere“are“some“of“them.ŽŸ/‘ b%1.ŽŽŽ‘`ÕLattE–¦f¹[9Ž‘yš]“computes“the“n•²!um“bšMÞer–¦fof“lattice“p˜oinš²!ts“in“a“con˜v˜ex“p•MÞolytop“e.Ž¡‘ b%2.ŽŽŽ‘`ÕMinksum–Aƒ¹[22Ž‘ ó4]“is“a“program“to“compute“the“V-represenš²!tation‘A‚(i.e.‘¯4the“set“of“v˜ertices)“of“theަ‘`Mink•²!o“wski–Ôdaddition‘Ôeof“sevš²!eral“con˜v˜ex“p•MÞolytop“es‘Ôegiv˜en–Ôdb˜y“their“V-represen˜tation›Ôein“ó)ˆ¶È ó3 msbm10ÔRŸü¾¿dŽ‘ߨ¹.‘—ÜIt˜is“anަ‘`implemen²!tation–NŽin›NC++“language˜of“the˜revš²!erse“searc˜h›Nalgorithm“[14Ž‘ ó4]˜whose“time˜complexit²!yަ‘`is–¦fpšMÞolynomially“b˜ounded“b²!y“the“sizes“of“input“and“output.Ž¡‘ b%3.ŽŽŽ‘`ÕGfan–æµ¹[17Ž‘ ó4]›æ´is“a“program˜to“list“all“reduced˜Gr‘ú†fobner“bases“of˜a“general“pMÞolynomial˜ideal“giv²!enަ‘`b²!y–¾a“set“of“generating›¾pMÞolynomials“in“Ðn¹-v‘ÿdDariables.‘$½It“is“an˜implemen²!tation“in“C++“languageަ‘`of–¦fthe“revš²!erse“searc˜h“algorithm“[15Ž‘ ó4].Ž¡‘ b%4.ŽŽŽ‘`ÕTOPCOM‘,p¹[21Ž‘ ó4]–,Õcomputes›,Ôthe“com²!binatorial˜structure“(the˜orien²!ted“matroid)˜of“a˜pMÞoin²!t“con-ަ‘` guration–ò and“enš²!umerates“all“triangulations“of“a“pMÞoin˜t“set.‘Á It“detects“the“regularit˜y“of“aަ‘`triangulation–¦fusing“cddlib.ŽŸ!ʯÎAc•ŒÌkno“wledgemen“ts.ŽŸq‹¹I‘O1am–Ožgrateful›OŸto“T‘ÿeom“Liebling“who˜pro²!vided“me“with˜an“ideal“oppMÞortunit²!y“to˜visit“EPFL‘O1forަthe–vkacademic‘vjyš²!ear“1993-1994.‘MëLater,‘ªlHans-Jak˜ob“LMÞ‘ú8ˆuthi–vj(ETHZ)‘v6and“Emo–vkW‘ÿeelzl“(ETHZ)‘v5joinedަto–¬œsuppMÞort›¬the“the“dev•²!elopmen“t–¬œof˜cdd“coMÞdes“(cdd,‘î*cdd+,‘î)cddlib).‘ð€Without“their˜generous“andަcon•²!tin“uing–¦fsuppMÞort,“the“presenš²!t“form“of“this“program“w˜ould“not“ha˜v˜e“existed.ަ‘There–%²are“man²!y“other‘%³pšMÞeople“who“help˜ed“me“to“impro•²!v“e–%²cdd,›E…in“particular,˜I‘%’am“indebted“toަDaš²!vid–™¦Avis,‘œ3Alexander“BoMÞc˜kma˜yr,‘œ3Da˜vid–™§Bremner,‘œ2Henry“CrapMÞo,–œ3Istv‘ÿdDan›™¦Csabai,“F‘ÿerancois˜Margot,ަMarc–%îPfetscš²!h,‘EÐAlain“ProMÞdon,‘EÏJ‘ú†forg“Ram˜bau,‘EÐDima“P˜asec˜hnik,‘EÏSha˜wn“Rusa˜w,‘EÐMatthew“Saltzman,ަMasanori–þOSato,›íAnders“Jensen,˜Rurikš²!o–þNY‘ÿeoshida,‘îCharles“Gey˜er,–íMic˜hal‘þOKv‘ÿdDasnica,“Sv˜en‘þOV‘ÿeerdoMÞolaegeަ(listed–¦fin“arbitrary“order)“and“those“listed“in“the“HISTOR‘ÿeY“ le.ŽŽŸ’åBž17ŽŽŒ‹øc ¬lÀ ý4åe ­› ývåeÎReferencesŽŸq‹‘yš¹[1]ŽŽ‘‚$N.–nïAmen²!ta.›ß Directory“of“computational“geometry‘ÿe.˜h•²!ttp://www.geom.uiuc.edu/soft“w“are/cglist/.ޤX@‘yš[2]ŽŽ‘‚$D.‘¦fAvis.–ÚÀØlrs‘êêHomep‘ÿp¹age¹.“h•²!ttp://cgm.cs.mcgill.ca/~a“vis/C/lrs.h“tml.Ž¡‘yš[3]ŽŽ‘‚$D.–`íAvis,›ŽD.“Bremner,˜and“R.“Seidel.‘šHoš²!w“go•MÞo“d–`íare“con˜v˜ex“h˜ull“algorithms.‘šØComputationalޤ ™š‘‚$Ge–ÿp¹ometry:‘ vThe“ory–êêand“Applic‘ÿp¹ations¹,–¦f7:265{302,“1997.ŽŸX?‘yš[4]ŽŽ‘‚$D.–¿—Avis›¿–and“K.˜F‘ÿeukuda.‘ ³A‘¿Opiv²!oting˜algorithm“for˜con•²!v“ex‘¿—h“ulls˜and‘¿—v“ertex˜en“umeration‘¿—ofŽ¡‘‚$arrangemen²!ts–¦fand“pMÞolyhedra.‘ÚÀØDiscr›ÿp¹ete–êêComput.“Ge˜om.¹,–¦f8:295{313,“1992.ޤX@‘yš[5]ŽŽ‘‚$R.–¦fBagnara.›ÚÀP²!arma“pMÞolyhedra“library“homepage,“2004.˜h²!ttp://www.cs.unipr.it/ppl/.Ž¡‘yš[6]ŽŽ‘‚$C.B.–¦LBarbMÞer,›æFD.P‘ÿe.“Dobkin,˜and“H.‘¦MHuhdanpaa.–ÕVØqhul‘Fl,‘2V‘ÿ)ersion‘ÖW2003.1¹,˜2003.“program‘¦LandŽ© ™š‘‚$repMÞort–¦faš²!v‘ÿdDailable“from“h˜ttp://www.qh˜ull.org/.Ž¡‘yš[7]ŽŽ‘‚$D.–zÝBremner,›ƒ‘K.“F‘ÿeukuda,˜and“A.–zÜMarzetta.‘“ÉPrimal-dual“methoMÞds›zÝfor“v²!ertex˜and“facet˜en²!umer-ަ‘‚$ation.‘ÚÀIn‘¦fØPr–ÿp¹o“c.–êê13th“Aš¸\nnu.“A˜CM“Symp›ÿp¹os.“Comput.“Ge˜om.¹,–¦fpages“49{56,“1997.ŽŸX?‘yš[8]ŽŽ‘‚$T.–{3Christof›{4and“A.˜L‘ú†fobMÞel.‘”VPOR–ÿeT“A:‘{3P•²!olyhedron˜represen“tation–{3transformation˜algorithm“(v²!er.ަ‘‚$1.3.1),‘¦f1997.‘ÚÀh•²!ttp://www.zib.de/Optimization/Soft“w“are/P“orta/.Ž¡‘yš[9]ŽŽ‘‚$J.‘Rde–RLoMÞera,›¼ðD.“Ha²!ws,˜R.“Hemmec•²!k“e,˜P“eter‘RHuggins,–¼ïJ.›RT‘ÿeauzer,“and˜R.˜Y‘ÿeoshida.‘ ÕØL‘ÿp¹attE¹.ަ‘‚$Univ•²!ersit“y–¦fof“California,“Daš²!vis,“2005.‘ÚÀa˜v‘ÿdDailable“from“h˜ttp://www.math.ucda˜vis.edu/“latte/.Ž¡[10]ŽŽ‘‚$H.‘¦fEdelsbrunner.›ÚÀØA¸\lgorithms–êêin“Combinatorial“Ge‘ÿp¹ometry¹.˜Springer-V‘ÿeerlag,‘¦f1987.Ž¡[11]ŽŽ‘‚$J.–×ÑEricš²!kson.‘TqComputational‘×Ògeometry“pages,‘ $*list“of“soft˜w˜are“libraries‘×Òand“coMÞdes.ަ‘‚$h²!ttp://compgeom.cs.uiuc.edu/~je e/compgeom/.ŽŸX?[12]ŽŽ‘‚$R.–\,F‘ÿeourer›\-and“J.W.˜Gregory‘ÿe.‘ óTLinear“programming˜frequenš²!tly“ask˜ed‘\-questions“(LP-F‘þȈA˜Q).ަ‘‚$h•²!ttp://www-unix.mcs.anl.go“v/otc/Guide/faq/linear-programming-faq.h“tml.Ž¡[13]ŽŽ‘‚$K.–{SF‘ÿeukuda.‘UGPš²!olyhedral“computation‘{TF‘þȈA˜Q,“1998.‘UGBoth“h˜tml‘{Tand“ps“v˜ersions‘{Ta˜v‘ÿdDailable“fromަ‘‚$h•²!ttp://www.ifor.math.ethz.c“h/~fukuda/fukuda.h“tml.Ž¡[14]ŽŽ‘‚$K.›±lF–ÿeukuda.‘ ñ`F“rom–±mthe˜zonotopMÞe“construction˜to“the˜Mink•²!o“wski–±maddition˜of“con•²!v“ex˜pMÞoly-ަ‘‚$topMÞes.› ÊjØJournal‘Àof–ÀSymb‘ÿp¹olic“Computation¹,‘#Ö38(4):1261{1272,‘#Õ2004.˜pMÞdf–¤Y le‘¤Za²!v‘ÿdDailable“fromަ‘‚$h•²!ttp://www.cs.mcgill.ca/~fukuda/do“wnload/pap•MÞer/minksum031007jsc.p“df.Ž¡[15]ŽŽ‘‚$K.–C…F‘ÿeukuda,›ªËA.“Jensen,˜and“R.–C„Thomas.‘ ©ÛComputing“Gr‘ú†fobner–C…fans.› ©ÚT‘ÿeec²!hnical“repMÞort.˜Inަ‘‚$preparation.ŽŸX?[16]ŽŽ‘‚$K.–7êF‘ÿeukuda›7ëand“A.“ProMÞdon.‘ ‡GDouble˜description“methoMÞd“revisited.‘ ‡GIn˜M.“Deza,‘œKR.“Euler,ަ‘‚$and‘çËI.‘çÌManoussakis,‘x#editors,›x$ØCombinatorics‘þand–þComputer“Scienc‘ÿp¹e¹,˜v²!olume–çË1120‘çÌof“ØL–ÿp¹e“c-ަ‘‚$tur›ÿp¹e–piNotes“in“Computer“Scienc˜e¹,›[Èpages–791{111.“Springer-V‘ÿeerlag,˜1996.‘‹+ps“ le“a²!v‘ÿdDailable“fromަ‘‚$ftp://ftp.ifor.math.ethz.c²!h/pub/fukuda/repMÞorts/ddrev960315.ps.gz.Ž¡[17]ŽŽ‘‚$A.N.‘ƈJensen.›5bØGfan–óþversion‘óÿ0.1:‘žA‘óºUser's“Manual¹.˜Departmen²!t–ƈof‘ƇMathematical“Sciences,ަ‘‚$Univ•²!ersit“y›%Ñof‘%ÒAarh“us˜and–%ÒInstitute˜for“OpMÞerations˜Researc•²!h,›?‰ETH‘%±Zuric“h,˜2005.‘ (a“v‘ÿdDailable‘%Ñfromަ‘‚$h•²!ttp://home.imf.au.dk/a‘›»jensen/soft“w“are/gfan/gfan.h“tml.Ž¡[18]ŽŽ‘‚$A.‘¢_Marzetta.›Ô0Øp‘ÿp¹d–ç6{“C-implementation“of‘ç5the“primal-dual“algoirithm¹,‘£-1997.˜coMÞde‘¢`a²!v‘ÿdDailable‘¢_fromަ‘‚$h•²!ttp://www.cs.un“b.ca/profs/bremner/pMÞd/.ŽŽŸ’åBž18ŽŽŒ‹+ ¬lÀ ý4åe ­› ývåe¹[19]ŽŽ‘‚$T.S.–+]Motzkin,›LšH.“Rai a,˜GL.“Thompson,˜and“R.M.“Thrall.‘füThe‘+\double“description“methoMÞd.ޤ ™š‘‚$In–ÓvH.W.›ÓwKuhn“and˜A.W.T‘ÿeuc•²!k“er,‘Þºeditors,‘Þ»ØContributions–_to›`the‘ÿp¹ory“of“games,‘½V‘ÿ)ol.˜2¹.‘ÓvPrincetonŽ¡‘‚$Univ•²!ersit“y–¦fPress,“Princeton,“RI,“1953.Ž©™š[20]ŽŽ‘‚$K.‘…ÛMulm²!uley‘ÿe.‘t§ØComputational–¸Ge›ÿp¹ometry,‘ëâAn“Intr˜o˜duction–¸~Thr˜ough“Randamize˜d“Algorithms¹.Ž¡‘‚$Pren²!tice-Hall,‘¦f1994.ަ[21]ŽŽ‘‚$J.‘‰Ram²!bau.‘ yØTOPCOM,–¦øa›¦÷p‘ÿp¹ackage“for˜c‘ÿp¹omputing“T‘ÿ)riangulations“Of˜Point“Con gur‘ÿp¹ationsŽ¡‘‚$and‘I‡Oriente–ÿp¹d‘I†Matr“oids¹.‘ ‡¬Univ•²!ersit“y›9Ãof‘9ÄBa“yreuth,‘Þš2005.‘ ‡«a“v‘ÿdDailable˜from‘9Äh“ttp://www.uni-Ž¡‘‚$ba•²!yreuth.de/departmen“ts/wirtsc“haftsmathematik/ram“bau/TOPCOM/.ަ[22]ŽŽ‘‚$C.›MçW‘ÿeeibMÞel.–JØMinksum‘™version‘™€1.1¹.“Mathematics˜Institute,–_šEPF‘MÐLausanne,“2005.‘Ja²!v‘ÿdDailable˜fromŽ¡‘‚$h•²!ttp://roso.ep .c“h/cw/pMÞoly/public.php.ަ[23]ŽŽ‘‚$D.K.–~Wilde.‘™A‘~library“for“doing“pšMÞolyhedral“op˜erations.‘™Master's“thesis,‘†+Oregon“State“Univ²!er-Ž¡‘‚$sit²!y‘ÿe,–9:Corv‘ÿdDallis,“Oregon,‘9;Dec–Ü1993.‘8ÌAlso›Ýpublished“in˜IRISA‘¿tec²!hnical“repMÞort˜PI‘¿785,‘9:Rennes,Ž¡‘‚$F‘ÿerance;–¦fDec,“1993.ŽŽŸ’åBž19ŽŽŒøäƒ’À;è¬lÀÕxp ó1߆µT cmtt12ó0ÂÖN  cmbx12ó-ý': ó3 cmti10ó,ßê ó3 cmmi10ó$ò"V ó3 cmbx10ó#ÂÖN ff cmbx12ó¾KÈ cmsy8ó;Îcmmi6ó×2cmmi8ó|{Ycmr8óX«Q cmr12óDÓítG®G®cmr17óKñ`y ó3 cmr10óKñ`y cmr10ùJßßßßßßcddlib-0.94j/doc/cddlibman.ps0000644000175000017500000162127313300556126013025 00000000000000%!PS-Adobe-2.0 %%Creator: dvips(k) 5.997 Copyright 2017 Radical Eye Software %%Title: cddlibman.dvi %%CreationDate: Mon May 21 14:48:54 2018 %%Pages: 19 %%PageOrder: Ascend %%BoundingBox: 0 0 596 842 %%DocumentFonts: CMR17 CMR12 CMBX12 CMBX10 CMR10 CMTT10 CMMI10 CMSY10 %%+ CMR8 CMMI8 CMTI10 CMMI6 CMSY8 CMTT12 MSBM10 %%DocumentPaperSizes: a4 %%EndComments %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips cddlibman.dvi %DVIPSParameters: dpi=600 %DVIPSSource: TeX output 2018.05.21:1648 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin /FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array /BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get }B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr 1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S /BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put }if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X 1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N /dir 0 def/dyy{/dir 0 def}B/dyt{/dir 1 def}B/dty{/dir 2 def}B/dtt{/dir 3 def}B/p{dir 2 eq{-90 rotate show 90 rotate}{dir 3 eq{-90 rotate show 90 rotate}{show}ifelse}ifelse}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)(LaserWriter 16/600)]{A length product length le{A length product exch 0 exch getinterval eq{pop true exit}if}{pop}ifelse} forall}{false}ifelse end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{ BDot}imagemask grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat {BDot}imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B /M{S p delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M} B/g{0 M}B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{ 0 S rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end %%EndProcSet %%BeginProcSet: texps.pro 0 0 %! TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0 ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{ pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type /nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[ exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if} forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def end %%EndProcSet %%BeginFont: MSBM10 %!PS-AdobeFont-1.0: MSBM10 003.002 %%Title: MSBM10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name MSBM10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/MSBM10 known{/MSBM10 findfont dup/UniqueID known{dup /UniqueID get 5031982 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /MSBM10 def /FontBBox {-55 -420 2343 920 }readonly def /PaintType 0 def /FontInfo 7 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name MSBM10.) readonly def /FullName (MSBM10) readonly def /FamilyName (Euler) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 82 /R put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C 02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D 46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A 4B60D020D325E4C2450F3BCF59223103D20DB6943E919FB4E3240FEEED78EE63 0677FAF39AB2543D18C08A2B98B97451CD42CB7893DA8601CC0F45A65BEAFC64 EF72554395DA801CF2E9E3B03F65F1BD98F8C5F8EA06D7457842303C1A817E7D 69821807328AF426B9DDBC188A79A66FBB9E6193B4A3EDFE3136C6574B9C4C94 E2CBA4FE7997F949BB2DAC0D329C2AD8E4095BD18A037AC9F77B794FC389E5CD 56CC4C0B74D64FB0D02C92B88942C18B6DA84D4CF482DAF3A01E80BE483AC6ED AE98F5F3E49BC762EF6BA937D528E751D9588B0A1E82EF0A5998150EC3854472 5A91EB983915BC1D6E2C3E615E0267B39D6937ECE0EC16162FE76676E5B69F3C BC1AD934BECA284B89F0613B70876247D768BCD246883CFF4D819D6265302730 7E4BE6B2FFE7E91CCB8C6D2AFACDB4C5DB9688153E1D6B2DE136BF7068418A4F 2D1C0CA301B1B97290B46EE14B8286A81E709980F67382A5132F01B2D44DCFF0 9753E776AEAE2141D580E64C82598DAA6DA4057FFA9D02C3B77AE15A50AB457F 3FA5A10A3C986B22F8E154C1E564A55D3BE4487677613DCF793F7E1B57C9A925 BC57746C25FE567719A9EAA9CC44F1D0FF8F92C03132B205F57E3AFE9FB66632 D3FB3EF5BDFB9848030527FE759A5273CB81DBA2719611355F43E34F8FD7D0EC 9BE47685A2D122C9B60198A430C5F5E3F972376F0FF4BA52BAFF64095F7ABCBA 022622692231FF87514FD912B80C07A0EDCEECFA629E2734B5EFE2604E8DCB24 32A4C691DB4CCCF19EF897A9F4EA5B2B5AFCDF87AC06B93669F3007C1295E016 FF0A99324B80E37020B1080E80949525B3278DF111ABEA48E7182B6F4DE2DC90 B8D31A953343D5DB78B1F2CC6CE631EC7E3D0041A823DF2A4702AAC0F0A2F018 E5ADCD42EF2EC8AFF6F4705D30042BE7B6F866C14AEA1CEE04DFF82BF14931B8 D297C38E6DA6E587C23EF0864F69BB0DBC9C1EFBBB97B92BADC336A4AFAC6A91 0A6B158DC42E975CB5D8D2054CEF367FB112456AF50684C41F80B1E7ACAEA853 B843CABA76BDE9582090299F423519EE3AF8F83AE7F7828B314B6E36E9127419 F274E9FBF5622C5E48D7E95664D6C0C1006661038CF2C93BEF1DE34A163A2C86 693A13F4D0F052D2E183F36401F0C29862BC1B36A086524F76C7EE2C6D436A23 7009F146F1756DCADD3F70C51FDCE610E30C0F4AC538A2703423A07976ACA74C 25F4CFD6A92969E206375FB0C672E45948B0E832F2BE688EC22FEEB3E06BBC3A 272F73081A30830AE4214F2F029918FCA40BAEBED6299EDBECA01E08F27E5627 F53BC56F4AE7CE2D6273B27323AB829E2D51672A4990E3AEE84331583A99DA4E 63610AF8F10C50FE6196E3F4C1E4FC9BA6BE0ABDC81A0A7BF6A5792A97BD0A7E 7BBD31C3FDC01D734550843C8D84C6CC0B492CD1A6CCD57428F03A863E959C77 457D401028FD00FFA9BC422FD09D8B8A70446A61CB256A2FA0B59A2646D9C5FE 961894DB8B315C52008B4416AC35439E010BF90E43A05FCB2FBE8E62385E220E 588B7FE5509F1BB71150E159D01D24EE28008D4213227FE9BCAA34364B1039F6 BC142AAB19C8E9B15F0113781DF9C9B3BC145955552A901AEBA588D39D7E87F1 CAF27D315E168807021B0CD1B2CE13B611A7B5FC28DEB4 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT12 %!PS-AdobeFont-1.0: CMTT12 003.002 %%Title: CMTT12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT12 known{/CMTT12 findfont dup/UniqueID known{dup /UniqueID get 5000833 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT12 def /FontBBox {-1 -234 524 695 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT12.) readonly def /FullName (CMTT12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 101 /e put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C 02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D 46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A 4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57D05DA0555DF933BB0 7B42D264831116C06C79335D519461E7B0E870A6715E3D74A08D1BCF86E3BCC3 A43FC6BAD1C68BD9D4AFCC06D845FD1F1E70D7A47F0BBCAECE8396E04591E5E3 4797F646AFEEB7DB548183F0B74C9BB6BA2AA04E7F5950EC8AE97C741D4B2C5C A8E7A8DF5A36A30B5A7592D95E1DBC63EF33C92FE459792CED29E2B8B6919251 75EF62089BD7D44A6E1F9B62EC802FBE62B821DA1C3B2DDED45D27964AD29ED0 9FB7868F3A8FEADA87A8E42D52C1EB7229D7C79B60BDA263F2BDB025AE14A507 098FA274206BACFB4A0A7257D5998EE8F0FDCA79CB61DD1FC59DADD11E16BF02 ECDFD706CDA1E72054D4EB55AF7BA9F19955886BC0BD6E0E3FE3769C94AF3581 DFB2BCD67FE2892AF07E858A01280194D8DD7332B3D0A585C87FAB056C2EAA9B 5AD48D1C9F00CEF8EF0D1408DBE1C03D04B231D7B8D5D998FE0CD7EE19828EF2 F988EBF6DDBFEE00F04A4A1F4E1A55DED7EF3AACEAB5005F1962C724A017C914 2936E2E0DF26A55ACD7DD836C6035CBF07981C1BCE3615064F0540A1034C69B4 E3908E76EF8925D486DF0B4A8E1F02D8AA99585A7C31847AB9382F83880C1C21 C496AB2DF8E7BD4643B28B704B5F6B53429D3EE940A79135F5BF0396E5B46F23 42AF406C26D12BEA7A41F332AEB75DF43C15334CF4651A99F602036946B1B91D 4BB0D2E51C20216D892C8173241AC8FD15A37C3CDD8AB4FB67D8565AFA61C068 95E3D6E46D7C09BBD09428207D506AD43C693F3C3D787F6A5C39084AE45E81C9 830900DB50DAD10A17E118FB5E9680B5194716A788FF7514A1167DD1A305FBE3 FC1F39A39F5613D50934419B95A4A2FE1B6C18912CECB86726926F6B77B5C3AF F38F85F974A2D2145BE010EBB4A390B842BC222AD4A0B7FDD882668C04C51F19 13FF91E7CFA0A0F4E99A1944B272E0291BBF3F9ADFCF3F625B87377AFEBD9F11 6385726E908BAB7D1357504048C0F5B26251A1FA52F08BAE1D64B9FC32A684AE 896F3DD0AAE9624050D4DFDA25E581FB2630E8840AC5322D38B92F3E77B55CE2 91ACB8321BE53A2C7D274D63CF0C68AC833BAF4B22B26EFC197D4A893A5AE492 660D995DA9294C16BED1113CBCC18AFCB5968175EE2FB374B1AA261F22CD75F6 6E7295A254FEFC41A669A86933F8B05B9236B04C3C0C757CA37AFCBF3B888D79 18C6D6AC4FB340CB49861F7EA05779AC00EC862AF354FC6CEB056DA1425749E4 65FAADFA4BF3FB3B89E6A2912282FAFEEBC0E4392B98B7E04EFCC1CB228E6250 CEC9F15D1C9D4D6ECC0B3931053C1A5E17B97B8C462CA04C6EC387C3BB9C84D5 6E5BD5D7BC9E16176A9294533ECE9AA43A23CFA01403835A62A8E7050F44C7D0 A038B6BA98B6070C4084896A230E4B9F2CB142794EC656073465C3098121C179 EAFE55758F8B4377D58D862EA8C30BEFBE13A5C9EE8E191D408AEE2411576BB8 D19E82C4B70E7962B1B7D5C62CC3998E9BC874C9013BDC5D87B77DC7D6DB9E67 B03CEA4D278948B30403572AA6A67002AAB9D9A8E8630C96F99EE55F8599E438 E3D14C4A6AFA0A79C4FD349D3BED1958F46861E8FA19A95BB73F25AF9148EEE5 EB32554C29474929E476EFA3B867B790CF7B0DB9CCFB9B3BB8A035966E6CEDB7 A3CC343BEB8F9DF3AD92540FBAA99FAD3ADB36013AD565D1A295DDE668FF7EB5 0BA6A2FE29471C5834FC3C6DA74E21AE333DA3792EE6F938FEA8A8B775168434 57B01E7C9D985933036EB297043D810C96EB7D385210434636B95FE63B0A234E ECBFACB4E955D2AD0F04BF55044EC1C93F5FBED52B8F018BBE1579929CAB2174 E632EA96B75C1E1060E11762FC814A75D8DF4A0A04D29A1B935A1C5376E02448 7B98ADB8497494A75687C23135BC8EA62A0D2D3A7BB0653E4C11E4D48FE85BD2 D4A2ED36E03FD57D2349BBD4D1A545E9CA8585FF9A0BC41B29B0E8F8BD869468 F9C535E424E221ED1A86AD27964666123A4BC8EDBE074BEB397067CC37C87642 486E4A074CA2702D0AE098256993732B222F8F290818E92243CFF552BCA459C3 4CC9AB751CC56179B975196296ADE06FD9CE3698AB415E6CB6014A48CE3B617A 2568E5CAE68288BC470DFA2D81E5236DE37F8F7A4A1C6FD7E7C0A3D672D6C54D 73198DE130C17311798C25B6F5189578BC44D9AC795201B893C9351BD49F324F 3CA801EA24980396E7362872181DF75FCAFDE71E1EE127D05A2129FF37B50478 2DB9357C9D93CA5BB3BDE4AD27ADD24FFFCD21764A99BE7E0B464EBDD3F5CD72 3E24BE353B6B80EBCDC7397D0F9DF41BAFC0CB481E5296B07339881FDD6FFBD0 773DCC72D9140514463E4AF6F88F93375AF22961CDFF9F9B74F3495933CBDCCB 13A29F6357B2C45495CF790A65BBC99E2B914A4C6FD4376F4400707625F670D6 EDEE9A2C84B37E5B567674472E715AB90252EED17157612F2DBA8798F6B78319 336E398D07DA834A737CD381B0BC3549ADE4EE11FF5782F3A7E3C55B611F1879 0988BCF2FDDEA9209FCFEDE569394C63F03D1426E0FCBF68483C327E0DC20001 1E2A5311A801BD66070777248D9E1D2F1EFD60CDFC9617BDC07991CB0B04C099 3C595D04E8E4CFCE9DC82CB5F6F388FEC92EC99E2E7CBF 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSY8 %!PS-AdobeFont-1.0: CMSY8 003.002 %%Title: CMSY8 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSY8. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSY8 known{/CMSY8 findfont dup/UniqueID known{dup /UniqueID get 5096649 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSY8 def /FontBBox {-30 -955 1185 779 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY8.) readonly def /FullName (CMSY8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /minus put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD 028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A4D80B73E7B6CB7548 0E1D77FFC695988391DC44AEED8CC947B3D7E198B9620E2238DB3A2819182F03 14498B8CDFBA48926DA721920B221FB33BC21A8456AF10891403501D0F6415F0 7E041AFFE109F640E54FC1A365674711EFF94E752652A4C8DA62CDB1149DB899 2C4A4BD77A06E81E93C5698C05DD02F74A0756082738BDB53003B483752AE498 DD718AEA8F3FB5A6B7E2D2AE8F309065F3D556F9A34AB90C88833A54295E0982 209C466A301BA3372AABEE20D862C6DC6B6FAC1463C8CBA8AD766ED1B4C9D712 2BECB4E6ABF558D8AB5281C35726BB8D046982C0DDAE17BFFC9394125E4E84C0 B283977D31460B8EED4346CCB09F64DA0ACB640C6DBF32F2DC30D54668C1CC12 24C7280593088E9958C047125C323E9C842801346A9CE5F50413D69F6DE99471 65D2E387765E92EA4C43F17B467DF6E266D92551009C0E52E7219AE9F5E2E8D2 88852086FF3600BFB50AF3EAF8C009D8D5F084B510F792385F328F7EFA8C38AD CDAB2EEDFBC6AA45F6DD7364C2F02DD2BE6C79C8361E83D4267CEC2407689864 B57B5D967FC80AB3BE8CA43955FB0FD3081D438437559AD24A7ADD484C1E4A77 B00BDCB0D1B121FEE983412E1EA5489BDCE5DCB4A7310135956B230C0DE7BBED 516369A92BC41FAC8D73490984942D930DC193BF0C774C1AEF627B969EE4B001 11381AC57815D7581E2372A1DB740B09F4A7FB4318B765DA4E7B44E8805CEF85 44EC3B10613FE7B397BF91B69A5CB2E9086D1E7A1FAE0A9ABF2A237A2D29ABFF E392A18AEACBF28274E775D3FBAED4F46B982B9DA4602E24094EDCCBC9D6FC0F 67C60376879245606C0B9C9A678E8917516BE1CF097B1C75C9F0DDAD6899F08F 81FB7A198D45FE060CD2A550D9B8D58B882B969D7BC3EC018A1FE92BDB262835 26516FF97AC387EA525FF987E5EB1EAAE4EA5866C9CC043D183763C530F7D7A1 2070E4044507C4E5611FCC117FBE4396E0B24F672CD53D5FDFA56D561FB86D40 90A52A7C7F29A119DFFB694A8C445367746A49CA5FA83163BE448EB19625DF26 609A8C8672631A10411036CAA3D6C2F822A4B2505DCBE8E1CE6916AE515E78CE E8C894B134BF811671D17C19248853131DFFAEDB24B15FF17EAC194662460642 48D23515AD434C68DF56753806FE96DB3A29F9D4980E0B6EAED7383F9FAD2584 8F85679D6D1933677ADF5D31FE6E43DABF137E834A1DEA632D36EA5728625159 8F33348893C9D1C510501628E4A9A80587DF6E179FAF68B158406A3EBCD726E2 AC17F2DF8B3607072824D2E5A6479F7BADE32E603E54E7A83BB2DFDEDB0D80CD 1F1BDD4F6C9025CC3A8A3685DF10A8183FA80CE0F0FE2BFF2500F76B1037AE41 56D2D7FB468C3CA7549E3599A2AACF66302572F1B35BC8EF7C23F6FC4B720228 1D673D903111CE378AAE83480B4DEB7EA84BB35F4F7BE997DD4FFF5A9B5E7650 3C7365BA0965B242DC369D03215651184024A08EC284F1798B0726152884B4D8 46411B3BC8F5CB53A70AD53BD7B1AF23528849B56CF2F75609FE715878CF6448 38579380688B47AE3D374B0DB6ECA5B8284414090123D47F3F9DF389E023F431 6B4C0DDEE4190DEEF4CA772742012754DA9A44A8F550FADA6D8FB0C512D5BA2C BB7DF71B1DA41FB6936BA71B710CC6A80751E43436F0F5888F51AB370DD4A088 40F402661E08732C960705C7E0D29B8DA1A8A3E119409E51EE575E9655F47568 023977917C8EC610BEBDB9C1F4EBC192084D63EAA00EC87B53E86620BB5AE51A 579B0F8E1972CE1DA02832FC75184F45409DD9D413402C2FA27BCB0AE6DB4CE1 5AFB114E23232DE07C4674969A1FC94D152C6D3A611F029ACF4D949A2C0755D0 31C7DACDBB4DFCFAF7E87295CCF5D4AE28D87ABC3533D87EEF1507B9FF9063F7 F007DF03734A20BC3A198B049000C92D2849C62DDAA719FC28EB372793E20128 D786670E08948808BA45C4F6AA0DD8A8357CCC47228A760C5C7864853BD9C9A4 285E446CB72C5C9D3F03FAB000810DC5674061FA116153040743E846506CFA67 FA8770E785D7DBC7293F37389A0859CC22275B23C44B57B92A033A7BD194340A D6BAC6E103402F8396A5394C617CB2A27D9500921D5DA06115EC81715EA8E360 4A95DCE8689CBE268B8E6C8B806CFB0ECBF634250243C9E1AFFACAD65311FA4C 1DB0988203537E5EF12B86FB454D06CF05E4F4FC4143D62920E99304245B6ABC 82E21192BE94F5E980DB21E07FEDF0EB0CAF4ABDFC20EF08A2A44A7940E2862E 08FABA516152DBA899D6CA561EB08C7C8298DD511084E5230CEBF28AB1D84C85 B5BAF4616C28FE05AFA4BABB3BA03F8CEEF3F3EB0D3034BD3D8D06629B8E9EBD 72484057E71C9EB4DFC7C2CE7749271AC926C2419D618FB0B60FD6F81F0F2C04 E529CC74DCC9E4AF32D935D7CA65FBD0842A7BAF162D08F782E65DF3AD9EFE69 198AFA9208B22BC21BC4ECABB9BFFBA84C8421B74748E1EAAACEB59E566838F2 C439579D6C75074F94493F7D5C8942D881AAE6302C37A61003AF77684EE99AD7 EB5EEEF050C52E75E4E842F8174470FA60CB213BB6F257EEB26CC55D1202931B B981DE2535A87CF37BFF912220C117EE166CCAE58BBF624170FFBC0716726B36 304D698F2CA131675F7B1199E6581B8C812C4FAF75814282477BE2B7EBCBA7C2 FA6356B2876F89698C6C2493989E9EB252DE03BB374622A7C88B8EE9FEB4851E 02F85CF70CDCA7BED5EC94E81170FB557C3BFC6F32CD70B506E56A2CC5451592 130C6F570C679577C44D60A811DCEFB3535D855259B1021AC168DB76DD38B459 F1813E3DB20AD9275D58880CE94058490ABBBB0D8DD16D4A65F680B30057F15D 07FF54D779CC978E90A850A2D8D79961EE276BB26B594C16F56557435671A3D8 ADD3DD0BC4BC73B0652B9DA8462FE614A14A11ADB2214EC4910823FB4CEC8938 24354C5C62547EE5710FB5ECD93AA45DEA7411F6CA8D5B5FA222685E622AD73C 1BD5DFD1C8F253352D6C7D14FF2FACF07CA5EB11392C6A33E9CABFD99F743BED 55E8DEF49E07B9444171D1780C698E5B65B540F41F845AC188DC7C0C8B5BA5F3 546BEAAA4F29F0DF30D5AC12A60862742623100074457BF2D820DCAAB340C1DF 22FF26992DC02F276B40A7C528C84B72CD189A4088C90070486C49A1014FDDA3 5093FC12DAF309FBC063653E6A33E14EB51B081126AB5BCB8016E975060B796D 6CBFDFE6CB9E191F12E309254BDD6660E3227012F5DADE246B02B6D8127F1EE2 248F48DC5ABBD229748444420C868450602120664984FE3A8B2373232CE5CA15 E67172CAF7EA99F73A66AE33B1EDE5E8351DB02497CE3338930147873D4E46B5 E918F5592A21789FA9F46232BE693DFC33240E2649D6AC1940B101D806089436 F0CE230BF6D0363510378822891DBD3EEF3365430E74FB6C994BB40C8EEDA593 CEDAFEBC3B87C7C04F52FBD7D557A77B44855CDBEC8A8D26F44D66446B5662AD 15B6B79D13BD262D79BF51C09F8F690A61C7F11EC2E05F6BEDA273648E9E1EBC 3D5F1D6ED486797F753064ADDA8494405556D43D395B1487EDE877CCC1EAE954 1AEE2513DDA94897B733609E8179DFE1975590568202EF20D58A89B34874CC3A A5579473AC65E0EE61545AEF578ADE10BE3FB3E2CDC96678F613E4DEF7BC1B38 8A551C93438A0540E292F65F1FA73D9AB30A5F545284085E4930A570C1807995 7108AA8194607304488616DD4AB189F8EDC5F4507AEFD7847817A8ECFFDD2DD5 DE95E04EAF2774F8AF661827229F01E769A32734097C457EB6FF056D90C46C5E 9F936AA6BF2EE8244BBEDB8862E56423F5845BB10C8809730B011D650EA18945 83C320A3F4ED095A5EF91929FC877ECC28A1C2CE74A53245E629BF46C6534983 307B1C94EB35CECDEE86551F0C308F66690E591C5D9D8FE14F534CF3F5DB6D32 39D7C799F392C4E65759B7BF61F4D8312E3B26C31466206A367A0DD7A90D25E2 805D36ED5CE0A4BEBCAC0A348FADD2D2AAD670E28BE6E33F627B4A9F35078B1D 6688084C4C18840673EF9B3526172EE14EF64E97C8B006C27DF6EF73BA6E6459 3608F10EB1EC4B824DD5360B42AFF2084788B165747AABFB2C9C0EBBA9C6246C 08F28143809315D6268E386F09BBAC54C34213438B56C386B34AA457D149CC39 A3C163F56E3C2E637C63A79CF7F2DE969EF3AAFF75F3F20499A9ACA61279D545 866FFE57D25998244F448AAB042B141952BD653007A889B1A716A4042CBBB827 C1ED5E3C616C22D5FCB39D3B3539F9B71D50D25ECD2E5D953C7A5194C867DDB1 75CE10B2C3A20E8CDE15AAE9F549D034838DC066CA649C31EE365D46450AF18B 893748D055DD88C72391FD92DDF0AA1A1316051BC756F87BC9A425019B2FA7BD CA9F35E89E2229B3021DD24C9DF0DC3217F44DCF510116DDC9E92EFDA3E0A892 491C8961CA484BA29B8CACD2FED2E246FA7414F892AF7B9F08698FDEC82D2E4D 8C6ED1FD9E0BA2645663E7E97B0F780033D025F2EF3B364574C03F04FFC4E09A 3D4182BBFCCCD8CA54A92434E2208803ED36F931D31C7498B7FCEE4B78AECF11 B27123A10F031F9CBA36066680E4748E346D18FD0EFA395D1A9227530618ADD9 64D96C50A0172F712CB427E8F7170F8A1691FB95B247A271499F0E63676BD64B 167438333A3BD9CD9641AC637E0ADB17F1E394DF34AF5A2BD02030DD087BBA02 E1209338B74075744A9A9966039AB6D223F385E06FF359257913E6C01BF32F5B A3640C7CA41A6C51F296E50DC1CD1D68491CE5D75E0ABDD4C5C4A97C8BE2BA35 D91AF9F8F38E7AB8C1778B06A212D0416E6137087329AAA2679C51D014CC4DEF 0F1543E2FD97621E552E19B29AA1368CB5046C188BA59B1E1875B25FB269DD2D C0678A42CD310702465694F2BF302AEBC43F714F7C657505132DDA71CD23D17D 628BF3400EB5DDFCE2850F31B40C5913394649AA4241CF646F3939916C2077AD C11F8C3E478586AA7931E327333FCD8A2EB31DF4B47AA2F31B999556602DD998 5848143C0CBD0B5187DF08E675550F2384D48C2954EA7D16AD2B94DF97C194D2 302CC47BF968CB1F6C9641A87525D5C6972ACCA1D4A4B4DA8EC54BEA6E7312B3 2737754A9FCBED3BA5F8220B751506BB0A5BB5CF706AFCC04BFD713A3BE3C842 9FFDBAA0CA5691D0FCE76134841A169970903843163DE68FF09649E99945DB64 491FD6D8B2DF237DBAF550D1B74263B3BF1EF6211F40D4DF2DEC46E4DE557088 5D458A7CDC6F34B8C3F5C76582C8B7D24A333AAE0B43CA67436F8ECAD7C50B12 35BAAD521033D8024E4DFCF01580AEC63BD5F8ADB778F822AC4FF0DA608EB7CC 1A52A51B9F38FFADC0D2F4D8394C5D598123B483AE5AC1215F24F2492EBAA134 3C58AD4E3B493AABDF753EBF1F04058C6981C353D6788C2D3294165B667D3765 7883A8493F5D772F789F73979B254BB9397FDE4F8B76CA6FFF312F4B012949F4 3EDCF1AC60FFF2681549DFF430B498405E79CB407DADFCEDCAB1E2FAD3B0F4C7 B575A33EAFF9F67D37F50BB06D06834EA683862991C5BE340D4A7F8D131E733D 289F72977870F9958102F5D835739F0F5A642E7194E8AF7FDA2937E5C0712CE4 EE15CB475725030CE0F238C32775D3EC95CE3D0886046E3EEAE322F59D423E83 DE88DDAB5CE0F70537487EBA5A16A9306BA7DDCA14A85A9F83B3BC3600DC9421 BDADA2704A5A24F7174A3A486ACE68739EC5960038CB44D969A594E97AE1F42C 42C1B7E3A456B3CDFC7683537B337AA8777F18CA45B22C8BEB18877DC624496B 9E8EF9F386B7FE4D94ABD5CE3B5786E76FE04A35909C472C04654A4405932EE6 A4A3E0F6DB088603FDD82F0EFCB85A962002A662D1AD0647A2F484B59075A1FA 9F4327D542ED7962620B998ECC3A95CE736089593461CED9B5AAAB05C2DA3820 5AF29B32904E1EEC357C8E282189C6D8F562DB11291091E6897E24CD8F8E2A34 67F35D261E01336152E69831B0CC6B03FF1AC7EA22B745F513A25FE10F70E74A 3FD71FE1EC9999BEDE7CFA6A97EA2DF621711BE950FF8960965685BAAEA71FA6 36F165573A0A6A92DAEE41A9B0C97BF03419FF6BA1F44524D00FD671EACC4233 9A857680DFD27B9F1E7A760058C8277B3761DB9969241D1824A7DADF70BBFC38 89C6DB9091E3BFCB36851CB9662B365A4B7384BDBA1D385902D1E5DABA72A159 63790096B927EA49299AE03E41C7F593F3B995D1155E91C62D5F68845ED3C797 7798B56858F96C2FE2E37D812873B7801767082A6D6B60602CEB94B7F6D7A142 72814734DC584A18D1FFEA7333D4C7E2DFE5B91E9AD92EB52533CA52FA888980 C79FEEDF0FAFB3B20B497F9AB668BDAFA364B405916526D5C48E57DC30BC35B9 BF684FDFAD199D9A28541327F3899AD505FBBBBB22F419E22E0149EE5FDD2B43 AF442E2724EC16934C307FA731F90AD1C76B74569B78CDEA7C19808233C6364B D049F3F50A68D3EC5F29F2B96BC58C44AF90FE13F244B7129F14B5DAC3F3F310 B330E67CA4EB76F895DAC8025F11EC7630EEB4826B5721348FA38F28B2AEEB1C 5F7CA413C486C94B1DD96988F07F7A08D3635E28624878E55D4FFBEB5E183CB5 93014D8A272EBCF3A09133603CFFEF43A6FF059BCE525706D3795884FB495748 C8AFB50DB464459A5C36D7CD087631BC09C693A11BDF1C6011D9864FE66EE8C0 4824A42E97D16E017C0BB73732D4537E2A5BB283B3568950E5681364DBC1D6DA 058A122862A44ED85029A7B39F2FA7C362D859D0B429E056891339626AE6091D 74F6110CA32F8F3E9507216997E6AD1A2F1FFBE8B407C9880DE230E234F6FD41 A291851178BEAE5DB9DEB22E3443807E2BCEF12A4AE8C490AA9E3D2918329F47 42314CD258A0760DE5FDAC4AF7209CEB530B8508B278952A3638CA8491C3B493 516F461610DBAF32E923ACB834B15E2D169A10F2609EC0ACDF7BDBC777DD2C19 2DB330FD557D3B06B78824D6AB237D8F2D57A7ED35F02CFA9290ED6893B41657 A2485524A3F1642FF5808FDB77015D9467EDAC4A6BBE8A175833B1225A5554F7 2C60207F7A2632A4023255E8EF1F38C1B8216C9B03319B60BEC9799E5378683F 46E698FA75F2DFD40F17C603F3335F1EC70DBA1449C7A33EDDD46CC3DE4A6557 EE67BF349AA8680FDBF415DC527129288B5879500180F75DF80394EC7CF11BC8 9EE9A4ABD64DE3076A2963F83FA333F19FF74F79ECF36A87A31D6F125FD2415B 3F6A6FC33C179F54CA164835F3C3DB62AF444BDF27AFF23098C7212477F688B8 6F48D9AD080D544D57FEDD33D3D9AED9346CBB644C97C951D4AEEB2BF6F0CB18 E2517BA7ADCFD00FE44E290E731D53E5C0D762FCBA08004562DCE6A5EF2FBB74 B3053CBED3B6E896B1C3356DD9E8FCB69691AAF6BEBA0424D62B9F266D560B40 89E20A9F35AD4A7F65A7183761ABBEE0F7EF26ED3565A25516A3A5A57143979A 1EEED8CD52A69E4E1AE4795F3EE0CA21B9F4D166783A9AF54B08B6C56703932A 310197E328C6E6A6BADAA11D66A952964F31FD690082FA02D1E2A4512A9F2742 33B203FB770A3A1C7490ED630D0FAEB3066429D0237E18818EC368D0DA72EB08 1951C70139EB0DD59EB53AF5039A7618C77F6CED9F0A066FED6FEE0C0E328351 BA39746C1224A29D191D8B86491E0A306ABA070CAA2756C3A33990EB6DDF34E8 06EAAFF94AE6686EEB06A17D6D020D1F4E59428D533DB0EDA6434E6E1A478D5C 2A0D08CB39DA7D5F5200199FFFE3F41729478D4F63AE01FC0BF3B378FF6402D1 CCF1BE5F191BAEAEC7FE400C9980E103D8776EC196E741AFE11D249E0C277263 80FBD329524C55943E25631F113FBD8331C0044A7A2138637206A7941CF02590 577043EB0F205392C34E18B1ADA47CE63CB8F01365A044CE570FA20446102210 F03C0647CD0CC29E28B149F84C2F39256EE1457CDC3862C4082A95B44A61E8E1 B4ABAD32DA3E2FB8D849B1C5CEE60F205007464DF38712737776BB6BB3223941 95169B5BE578BA13DAE40B19AC184CB6F260A1EFE13CC8438ECB56EEBD30ACDD 8E24F52934 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMBX12 %!PS-AdobeFont-1.0: CMBX12 003.002 %%Title: CMBX12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMBX12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMBX12 known{/CMBX12 findfont dup/UniqueID known{dup /UniqueID get 5000769 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMBX12 def /FontBBox {-53 -251 1139 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX12.) readonly def /FullName (CMBX12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 40 /parenleft put dup 41 /parenright put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43A151FEE81296FBE 0CF37DF6A338C826464BA5198991445EC4BE80971DB687336AE8F74B516E333D 2D8AB74D362C559AAE6ACFAE49AEEF4F52E28C869222C1301D041E7A0BC1B608 1BF728EF9E98F3A12EB2714E7F16B14E055FE1FA0EEFB058860ACADEDA9D0E4C 42E3C6F1E4869471BFAA3760175F3FBD842755A9D7847EBF605F18293B42F557 FBE2715002669091BB033E1AAD657532F34F7C66E4F04D63ABB07E6CB9D9AEAE 78EDE8B79DD9BC87A1FF445EAA05B5572BB880E69F4DE1F82D7F0E9980AB0C18 22C448B0B1722D3CC33C56FF287CECB80658B3AF5E7675BE82CEFF3DAD5942EE A03C955FF979E41E54BCFB5316A9AB8945C403A73180D0961416EC9C92F49811 4B91BC4C788392994587517718521E416D469F69952149FF7F9224377EBA1065 4A727BF806A112A7B45B0A1BA1D5A23683960575368D9EAC8C04753BF7465AF7 95F25C258C63E4FDFFD0B412FD381946AA38C0B961652BCEC30322C47BF4755D 9F91880688AF066E32FFB22E1A52DE741307AD3ED830D6BAA1D1F562919666DC 5E8FD9862AC8600B0AE0BC7FC779252AAC57248744ACC8A8AAFA836BCF09B0DF 9253DFBB1CB77EA8A59D42D1B18FF25E9AED72FA62FEC3F126F030F5D7DED9C3 CF60FE890BA4A48E39E687BFFAEAB96AE542A6387F6624486037C8924002A511 BEE5FBFD780AC1D4BEC3FBC47A930BAD0280D444259528B6C565DE11DE36BB65 9BADC55C1EDA1A80458E98896D782DFB5C137897419602809F9BF8CA39F00C68 EFB9E076FB324C2963F23CBFED28B9EF70EAA4E4B903225D1F199A7162AB239A D92D71C18B1B682D04C6A48926275BCB16D413B2A0E953E1257E0B12D8B717CE 2EC84CFBC046A4338A69F454A469B12118E562B4F56C5FFB3CA5D357513E6FFE 947A564B229C7FD873057D5C7CDF03E958294A1003B37D8DF565A70A00A3734B 0138AE5277D383D10C2BD853EF806D3CCDC47739F0E374A3DF3B63638B949ED6 4EC25869DC1C0B1F4DBDFFCC97382841D8F10F3635C792139A1EC462FDBA379C BE0990CA2E70FE73137AFBBF30CA54954D7E7377CC50BDD780DDD4C7FDC77AD2 F3EB1169F14A0041F18160F43C24FAF556DB5D621709FBC544CE55424F7446D4 6AC07A51C8CD5161AB0AD5084A96FB35D77F1CA155147DEF8D7A590EA6939514 D4A226588295CE0007BA8A550895511C8D80BBE5CDFB8A50D249C3BDCA974415 F5557914A9B805782F399E4078DDB6264F1A49A9A5BA45E284A5196E9828EBA8 481D357B8D9E6ECA631A6204439FDFACE7D7E6A2392726107CB7D2517CD19A24 FBE592C119626DB221BBB635B6EB84845C16A9585282E34958B961F4A543AF9D 419B6A9105BF185FC767712D923437BE08A9C0EB92AB6792DBDC671029B6FCA6 7F717FCE379C0F3B51C6CF042A762ED04898FBB4B0105C3C4ADDDC18C51BAA3B 70A93666669547081D9246732CFF74C83EE90DA17F5B4F8BAF47FE4D81590988 2858C9B96071341FA0A0D23BDD4947FC9BC2297913CFBD4FD6CA4303AB3179AE 0203F1BD502065F90CE9BEA3B52DAFE4A29446082EA0E6B1D7AF1F31D0AD02CC 9A7FACE2CA86E5FE0F6A425B28A5940ECA306891CECDB3CFC7A5BBC76B5D9E8A C754379ADE80B4D72CE493010317BF21A0CF4A0A55C1246218839DCA3F4D626D 1F4161D38F54AD5142C1CEE95C61D8BB10FAD4B772F4955777AFDE8AE5A837C2 A2BBB11D0BF5DA2E63D0B75ED421DBA9C789B281B01846B65DC572BA69591969 21265DB722AE86BD8CAA3D887C975A617ACEDDFB7AAB341F47532AC0F354A530 7662C089DA3939588774FFA16FC4A52555DED6D6F51DE718BF5F345C23C90198 17B77CB8B5D53A5CE7A79F3E286B6A59F3F6178AC8BF15C0A15C1A8A95D03B60 30EBE53DE328CE085CD9A1D49C69AA299C5B58B24334A546F6E274C1B534DC8F 3289553F560C2F81E413ADB92FA0E7DD1C2F39D5FD268EBA97AB7335ECF28257 96B4EADB7D0778706CB41C7E9C882760E7670936774A1088FFB2011115FDADB3 B69EBD5108760762521C25C968C3E282DC3400001AC8FB1EA27FF643E3025950 1D617BB8BB321281708E496277E11DD3AE0023DA9F25AD06B39C7CF527FED27B 57397E88D3DF70EE4FCCEFC8A0927D6B05517E571B3E70ECC99F3CBA32CCD4DE B8BF22626B6C94FE65598A88AB90D238461EBD9A098DADEA4091AF1CDD7560EC 8E1B9BC2321686E1759E6B8A270C8CB4A254F7368039602EAEAB86ED21CDED91 8F2DB9889F46981C494C7EAF5E819B91C129F0740B8002B510014985E5791F59 B16879CC6521D8E9F1C4C1890AC85A78022BE614BEFF318AB2616F0C3F02405E BB425D1555472A2642BA7686E431DC3FB8A1688B76660D9957C3FDE8D58109AC 21B1234C9DDF3F0FAF93BCF7B2F88A001F23162E1A13E5E9118D51B485B70A91 D0CBC39CF44413FD8686D9030782DAB58064F5B987E0402AF5B264B17BD31BD4 FDF63951BECD73ACA6138854EF35B062D01F33073850D9C09A818828C581241F A625AB3638081DD0F00F946BE5450D38489CECEA4E66B4D85CC8AE0157E2AEE4 A22A9313829F24D573101D84CC1784D1CED7DFAD5DD966601370C6CCBB723082 A86BBAF0A5D867D0D2E3CA16E14E5109A29EF02649C47E12E88B3B397D65CACA DEB9940B92100744D686066F8250FF30E5F13D81428EE238A2E4E07ACE0F5C38 7D79D4A336D0D26AF9C2B84088ED8ECDF94A1E3FADB45AFDAB46CAD6FF950B0F 07AA2CDF82374DA76C56D29C80138841EB13F0D02ADD32F88B23E282ECC845F9 BB9AAECE9CDC644AC2D49577A92307A83A99434F6493156DF25DBF0FCF2EC21E 8C50A312C3D19E0609C0038554CF4FEF3ACEB7A833FD54B06EF0D617C2971C89 E4C06075B09B84A4F78A82152B9A9C540B1D881313C2C74F20ED064A9606EC2C B56D7BB4797F1EEF4A9B13579CCF311FA4A4DFA62D80FDB7F535CC6526D1AAE5 45C008EAF024B48C377522F74D939A475970533E645B1BFA81997549AFF26F67 2AAE6C2EFA357DB3B525276EF330905688777057F4E4CBF584520A534A8587E5 5A8360891E75A15205E8ADAC4A4E5A6E27D0C4A7D492216E4BC023AB027F37AF A8DC7579BA50204D5F45A51460C5BD8A5A7F87668CA6451137F2F59E117BBE28 5C40820882A5546FA76F0CF49F8A6EC445F0647CC3227C400F56E7E9B84A6975 E85E243CC1666DBAFF4E07EEAF3AF71BDACB30DAEA792F2B8504CAB071544F01 5D66243D529C479D276FE22F7E275D9E7FA9C6EECA18716B2F213916E32C1D94 6E32397B41AC6779543218E506569E3544803BBF9B404A983EBA62A494187B30 8D3DFA4E1237A2E5E08224A60492C09ADAD8775B7CDB830520829BA164209ACB BCDEB2D574CEBFB7AE4BE72DF4EB1945FEF2458761AD8DCC0D378AEB7DA002C6 9C14A665DAAA532B0ABA98D7BFB5A6151FF6703385AF7AE8FD315A492FCCDBCB B825707F9566B3B4943A3C61C3DEFDC31A843A2D67AB06891F3E110DD8C73D3B B5E4151B51D9F13905D7D94DB9ABBFCAF35F43B6EEE256B1A80ED6D1739D8D5E 8C767F6F0E8704C5345D028A2A6DAFD9BB7AA048B8B895FE9423A7ACE858BADD 595CB074A128DAFE08FDFFD6BDAC0114159A702FDCBF8013804B0CAEAD7AF38E FAF086A3248AD4FCA1401A85AE2F72E3E6956DC0996FE8ADB18F89B14A208A15 13F81AF73D0DB72F78C4DA634ADE3C73756CAE6AF2E149C26316DFD93370BE1A FB4A79F77A67C07CB0A53C78367F21661D4AFE9E27328E077B522B50FD9AE2E3 DA087BE481515B5DD7BF894A96A84A6C78874100505B7DDE1D22EFCE8D58B3AB 313AB5495F72E2CA4E6AE22C0CB854302B9990372F1661D9F0A517F90686F248 C5643008B3D29F7296E5C8FD4049886662EFDD4106E17C879F5D41CE84F87E89 F6A3117C968B95A35940CC29C43E1E0DEF51C1E46B676301F40D59615C3F73DD DE37B72FF7105DB84227DA5241583272AB1C3CD97AE11C1EE98FFDB5E5F44844 8FC41BEA5C54B26341AFF6830D9D0A5A2901B0653D8BD0746838194D240FF753 E99750D3383373F453723D86BE97B571B8B84D8696089B5CFDD53E6C562A2197 A8C4FB0CC690C27761A816B441029D3D306245052E0C41B53025D8CB7267CFE3 C17FDFE348E765326F91AEB700CC49162DF748171214252CBC821493DD01AA20 417D66DF47EBEFFF3E9BB2B0A2BE7D9B8C68BD570FC2EB0FA54CECC318F04C43 19598BDE93F2F13DC7847354C99059AB20593EE51E94F9D4E9241869D605AAF4 9D9B5FD88C3798A039A67993C5EC68B6326B132E647F67EACCA7F7AE7F718D85 12666E90D7C73EF210E344964A38228B236679A2B18F5E081234CAA2458F8D83 3F0CA308D19663CB12EB904076EF88E556407C33C9380A6A3D68A9EFE65387C1 A1BCD2D26DFD2AC0881EC30E81C0A4E76C244A2BD822EE88C4A60B480D107E68 90E419A1F512E865BA922A7830909BC2611A80931CB2E9344529586726614D94 3AC5200FB9FF68AD9686506C5EFA8788C0AD0251AFE7F95E84683380CDB421C5 B1A783B6D5F3A6BD1BC1C14B363DB01C87C0796DCDD5BECF41A1A9F43183CF6B 82C2AE49F0BFDC5DEF7729F2E638EE6EA9E4D059EB9BB1B992AD8C82D501A550 1BF73CBBFE740179B54E193E84A55DCD61B343C1852780FFB44248FC9426AC94 AA2B3FE20FBA30F6C4D1E0FF3EDCDD8C0F57CCB50CDB0EFE2E04A8927E239C1D 9B026C7929BB48461D4D695FFC766C8A0E545B1BCC2AA068D1865333108E7985 2D93F9B00EA0A90939D0D3840D59B6CC0CE2C147B2E1A9A4F14270FE3ACF51D5 99F7349106165AD627CBBB0ABA01ECC6D3A14C1DC1ED23A9DB9865BB4396C51A 31ECD001EAC94B33C34E29C5611148EF3E55DD61813470B8F3CE32564C749414 3C93C77EA5A3538A0B5AE3FC4DA32813B06772E0E48E25BB39F3F6FDCC077E86 F86FA50E18FD19EB2F37311CE87F18F3BC85CE7FD71CA92D5C3264E34E04A2E5 70C79D99F54D6C6D9D527AE45EBB48411221134587D2253E7C8ED7658EDCA34E 5E768DD14E0200470F73C44D006CE8CB35DE1CA3EC10ADC668B0662A7774C891 84EC95A31DD872F0728D9F65CA80940080E04630BE4DEC77A2C49E3913C39978 BF145F8832AF2C4385EBCDB15F9D32C22CBA0CF950877717D6F1591D7C0B8047 8C9BFCB16AF7124ED83137695F3D69228DB633053208C29E0ABA1B06A7FB3EE7 5625CB44927E2DA6E038A6E62DEBDA2D96A03177982D8FA33BAAF4426E05F4B7 9C1748B3FF7691F9888E7FF864A10B9DF761A41E6B5CFAD2BDD7E1C4924AC97B F4B352705316DD1A58637CC12D71C18A5CA691AB2AA8F171590EC24582B1123E 94D4DC587D8F99E18A711776BF4013C96446BFECFEE4C809EA94B169088024DE 0CBD20199A915AA406F0BD5F3D63D1467C49B4691AEBBB35ED6624F2D7BB74BC E80FD92B9FD04DD9C2BE9B6FD29EC7EC07FAB447511C61DD299C783BC09AE2A4 7B3CBCA6A20C6631D06D0B2E2482A50612BB7C29B7E7D0A205EB0E8436702581 596BC996ABD58CD8D5BAAE4B1478195CAFF98FE0141287296C4EFB8D2E7A8442 F0A3AA9F9264329982532295A176BA1867EF732BBAC49AF485D9D0F7130F617E 7F7DEEF935874D55A22240F8EDE4F247D5F73481373A392D40A8076BD91079E1 1CE5998BA13D48D56B49A92B4A18430E316405D2E2E391B496A1934671FF1785 AF42BA3B2D14B8E04014437FD194455C50289DFBA61B5C377BCBDADA48E82DEE 4E70EF5E9DC03064907BCB8BE4D59DE069FB0C0CB140DA54708E630767313F9F 744594AD8A499CFEF733E640A11FD74E46A749F9C7D18D49251BF85C6EB4668D 67598C31A8F90922FEAEAD4B83B6E7184567DC798E4BA1C4C9B3461A478D63CA 054F13B502DACB674EB49D6BB935E5EC82BF99FDA7D47C581AD7F940DF4FC6FA 6C6D25D647033AC69505F0CAC58DE99087F365531A6283CB89CB644688963C3B 8B2203A94294E58739EF23C7803630A1F9121D62BE1977DE2F41687C8CAF87FE CBD7AD3B98E0D95C8C6E1A7CCB0E09465AA874DC90A0F5DB2C5E7C130297FD39 EFE63B0350B5139D09E6864D22C3F1150B29196E40EEF9723E71158B7ECFB8E4 C426FEDCD439420B7F1C251FADA347C9A2C49738B5A17922E1EA93CA7B125B76 57449EAA9C1D591CAD327D0E98EF2D44D614EE9ED49DD31ACAC0B956620B6BA5 5BF6D08CA7541059D5ED2EF00AE2EE95488F5645BF6837D9241C0D3959B7580F C9ECB2BCF3E65C07D52EC9CFB21C11CD4C883E44C173214C900C44D2E1E43DD1 CE8DFE3DA93C38B548BC4EC46FF91F30CFB97525E1FD4E77686433B20BABF8D2 848C1CDF1BCF185CFD7A81D2D4BB826E837E2AF35CFC4F419F698DB0C43E9F9C B0FB628AC9A3CBE9B1FF4A067016E70333E78B32AB2D89C483834B31F5808FDB 77492E099F1504DABCA5722C7860CDCEDB2DDEB512FFCC7D287F4945FD711F28 87BC3D36173566B81FC2C1290C717A09697DAC6072408E20926D39270121CE58 3EF97CE12EDD7F87F2C8CFE36C3C0400869C0D813B71C425343EE0CDF717BDD8 409D5297D0F8F7FDEB0257C0A391F5635E0DB1116058942FF3E7C94D5F2873A7 A3B0ADAFC3835AF2BE474E6741319BC6695FB37F59AEE388F81F6E66F910000B 72E6BA7531B4378CEFEEDC79CCF4947BA1703823B5AB4F4AD73D9615C66C489D 99D68E49C9BF765B7FC547BAB9640D51D5A7A2396507AB5A4DFF3D14F52422CD 8FCFEAA06A56C6C7FFCD29C9A7A59DDD2A909A9363FE5F1E9629616D25ED38CB E754C059E4379318CC491C3B1A90128693AC53F80F8210FAEA7EE638902A7D3C 82B95B3F5AE340EC1B648DBB9FB679D6E80B7F426D8671FE7136D97F51E2D2F3 C9CE9183E4061CA40091A2A70DBB9ECBB19CE3F65ADD0FB346B54BAB182E2CD0 EAF4C0F402C25573FB344EA771B297BEB615FCD0595172E84ED2A62FF8962634 23C19076C2A9ECEED5135994EB397303A9619C76DC55E032DA83FBA441BD484A 59F70A5110A8927F6239A14D4E223E189A5462E4A92EAEFFA4B961A2A32B320F C2B4E8C1821FA67A655B5042C15E4DE1FB3652B55078DB123573C4E986B19DB0 1C5131F3DFAB271C30A5476B4A19D8FC922E31879C34BAED94C07A4841B8209C 403369FB8E842610D1EB4662B6171A4465FD0E819964F62EC5B0ADC92F08CF90 1DE0B410FFBAD16F6D355E8AD72CCF67961EDB6CDA82398021007C2D0462E893 75EB0710AE4A6CDD15077C9DEFC5774EF4A657734D703CE42174259B58E5277E 0DF26BF59AF8D1A3E7DC12E3C12AA4B67CF35B19962F6950C2020B698D971B35 82FF84E72F72FBB0C54A112BADBAE6C4CAA358BDE6A705AB59332C3850CA3D25 C7564499BC1319121CE0D93218210C68080AFF33420E3CB3A48BF9EB66BC07C8 A79D8CD8E78C200FF7CFA3DAED0B9E87E6141C88B436D8FCBA50AC195FCBB9BC 9512B95FE3A37FFAAB39850FCEBD4D50A243EA416E73F53B4B00F3B6EAE0CA06 0693AFFEF215D00BFCAD02E45496D7C8F5E99EB9096FC4300D038C1AFD31EC4C 5ACA6B72C1BE7204E37A4CBBCB1EC26AB87F2FF82DE20601025169A5FBD2D060 62B5B2DBC288C79C33B596832AA18D730AD572C6EDFABCBD36DEA87C0F323C3D 6E537AD3B43C6F3A905597570A8C6B0B4A5E08C08EAFF9731E745F2BA8ED0C0E 1ADF7821CFCD4E38F3F4C243CAD31D9F8FC68B9043740852B4CCBDD37BF728E5 648215961FA82A0C847ADCC5187331D0863A4573BE520C02CAE14AED4F06B3F1 FB4A318AB54CD86DEC824707B29F858FD726A167F2333855C0575EAF4EBEA0B6 754B1775F967140641FC06F82B191244186FF347A351FBD8FA62E8C978B21F6A E124929876488AFA97FAD262BE3D172E2F03F564F1325C9F1E050C83C12E0CE3 C7F58270B5C40B46B3F592FB41FFB7F59EBD69B2F489441E398FEF7F84C85055 531D95FD21629B0E509C2FCEE995D025BAD5D3F28CDBA5CD414405ACBD936C3F AA4CB2620D7426002161F983AE95E542EB8553AFF7E57B82E05FDD5FC433E1DB BBCFFB1ED92299DB0291CAB10A84529B7FE279C62628A24A2FC36B01976E13A9 C528A198B8EC8654AD69CCB5C209964A2B25D6DA9BA0FFB366D19D8C69701D7E 8ECBEA88569601C80ACCC2D5487DDBDC27DC463A53A8E59F9EC17D0ECB7D2188 B6CEC6BBCEE631DBB9959A9855B997481B5D88B8BA29995053CF42C5518A3E8C AD21553A0F6BC3483624B013D3537F7C85D7C558A9C772554CFC1C3FE7A70633 318A9B3BD51D8EF07C07A46570BE9A9EB9AF9FF7F40C8BA5659D187746F927E2 14FA6357E975CFA1BBB89680A54128A0B197DB83162022D502A1055F9827AB5F F346430D6024149BB7813576FD19E68549C29B14AA12075BF99C1CE209F07985 2F4C60F98123201EC8D68759621797FB1464BB177CEF65B388CC7EAFBC24A403 A9C096E4DD067318454CE41837078359896AE11ADBA50B29AB963635D4AD7405 ED9EC24FFC362BA4588CD6DCD7D7D0A35CDF30CB67739DE9F77290AE5FEC6402 82153341BC606532642580362A911468A594EC136722F83922BCEB5C53F7CB1B 12BA2438CFEADF73324972D29E6032D814FE1FFDECF32B0C2BE0A1CB8A85F659 500B60D8BDF438DD07C0FEA9FC6818527B32A18E9CBB2C3DF135C860CCA0FAB3 45131E1F954356B887E43B9F8AF82C50DA5D44EE235C16F90F373A2C34559FD5 5886741463E26AD6193A9794D71B6F1B2D360F701F90C2454B882F4421A531D3 3784569C42A220265EB892DE482C8FB5537B510BC350926FDDC2BB94593BC9C4 12D6F3FC56F515D115A58FFF1982ED09286B2627C754B79F46011C0637B14B7C F9C8148F5F17FB678A7596C9C018A0545C61A97E93DF8E927EFA5BCF6059D63E E94D7C9D83B713F94D9021BC708CDC46E434C8E77109DCEB569305789E20485F CBB56F396B5C94646B5CED0623606D461E0CC2E65DB661D57D60B7E2A79FE78E A0964D1E33F74FC489433F2F10B48572529411D04F88680A9603625A931651FF AA669D94CB7F4AD193B7E048B29951D318BB43D302AA5EF7850958645716E29E 8440D8164818744CF540A4D8535CD9FBE5DC095052AAB9EEE73C7BDCDD8299C8 1AB650BCE25AF5C256D2C657941FDC5BDC0C101C576AC423FC962A914EF1E102 7B97ADB561B51535DDF8E6E221D345794A949A0D053839528CD599423263089A 2C0AE5C29C293C4BE10A6FAE120AA28B9CF485FB9A6671DE2EE4B3784757FF0D 4973035F2F4CCC1164D33B701BE9477E499E4DD636738C1D2D6B9A5A437CC659 44689400064786A3C1FAF98B129630461D74B5310C5CD750C500A48F2E0F8AFB 2EF8A896B712D193A3BC7B6EC64908AC30D0FE092E11A034ABA5EEEC56FD1967 B58D0F6E9E94165746D5835B146A8EAF70D1991701B64C070361E2CA891B7871 63C9061637C4E563CF24B008A4D1E3457A167D578612FE8226B2FD08185CA0FA 35ACCF42636B4F3C0CE9DCED66A0268DF8062325CF7BCE2CE2325D55E271040F 55D2BB2B73A75A0A18EE7E29F1FF4B33B803A2CB0CADC3F453858BED5EF9C488 39A6876DC138C10EB0E6AB5C4A14E3A6335F06F1F2CEEA31540FD396D3CE6AC5 13A9B67CF064C75077D3817CA0E7DBAEF6933A759FD0B0ED0658B5A731F68F22 644051FA0854CA9704A2F477EE781EE42480EE217B0D1BFB784D3E6A2222A182 45F4A9295C89ED8B9AE04FB8460C9EE251B695E576C6E06AC2522FEAFC10A036 45AAE23B43843F1756EAA3BB808F164D06A29DEAD8EF1DDE5521FC83DD073E75 024EB42734F1B288822C5611619549303DF8C25ECED5808C9DF188801827AFB3 F37A43352667CAD38837A6B84D84FC0D65863697E4673871AAFFA313E5130A88 A4703423C69E7810D27D23A0A79FBCAF533B2783A88BDAE0409FCA14C20ACF2C 595F3E8F7A947505A46503F106FAF16CC6643E72AC07C423EA56F1D9FF7436FA C385F8343E42506A88B15F577613492776A9BF605A79F614A4792ACFC2204EA5 25820DBC9606E1A2181ACCA57A90247A84526AA4130BDD57B578CDFE813F9464 CF5AFD3496CB678D357635BD2D25DF4DD5AF035AFDA7F3A8AAB687F00606AAF2 8F6595F46F3AAD15FE866F5836A00A8A2C68F7ED2753440C61C6EBE4B331AA62 3C69421749E6E8D23DEB7926E9F4A872E86069F9171CB47FE79749484D70D0FA BD3046425124638E087A820367E1855346028300F6B5A4A719286C10BBA038BB DCAC9C40068C1AE1DD30196A9AC610DF1B59236B9AD1083A2E6D37470DB31F0F 0A0885E24566902A17F06039741A750FCB21CD8AAE8BDFDF037F329F39A8CEFA 4DAE9AF3759C76CB9A46250CC22BE91AAF91F9C97ED892F1A55E037E85A4D2ED F30DC959E4B9439A1F0DC6E6717604D46B954B9218FF9FE71BC6170AAC6C4EA6 17E08D5C5AD2069AA472F4F027A7C1A5DB8285BA0F7E7D23BE7C845CAED56D12 DFC29ACF72E050F631C1D512658D083B085744584209E9E1B0706A6C37F0AEAB AA81D5F01D3491ABBB04F0898EAB2E8DAEB87DF0817140BA42D67D68E340A229 12C4A15BED8ECBD45699C7A2D44C1E799F437CA0C73F29A4187E57B27B0FFFA8 B058C4E86433F9DFC2BE336F9E3458868B24246958FD68E44DCCAF41A0A3F869 181549E04F3B32F918AA0A5DAC4D9EDA5B443191DBAC4A1831AD083BFF9D1A6A 1529DB367DF80F8B193CE9CB7BC1C52A710D9188670D3864EA8F98FB9A85B98A 1746952332E9C04019FA5CD7F6FCD5C5DF8BD011660254889C9961F44CF299FA 341431EF70D3ADC9C99BC97C804325EC592C620462A7248A2A7060B0112C97C8 05067DE0A4A084E743723E53F81E57CCAD627D6BAA6104A2F2464A67324C6377 7CD9309A2760246037EE199C72417E7357BE94BC3C8EA02134A35275695660BC 6371F5455DCD8D46BBBDFDB22B7C74A8848DB98A5C3C242DB9A57F3057B88B1A 9101D4D9C505D304FA45D3EBD755CD46908169130DFB5CDE625E213FEA578968 F1CB46DB5C7345827CA0E7DBAEF6933A7587A15DEFAB55893F1D368F6ECB44D9 84B34C300DFC08A2439F48A141A403736F433C868B275ECBAAEF5D9F22EFCFBE 7BFF416B665637E5A786053A1C50EFA1C11DC02D9AA2AE01BE0BDF75FA41D3D6 C6A24353B52182F234045F7F9284FF5C8E5C48FF2E02CCF47472299A88EA0CCF 541DD9B61063E12126FE779B3E82570A1013CF218B8A9B5C231F3FC7A2C6C369 CB8B4920FD721C6691400A300A8815BD4D102C4A9A7076002A0BD37D6B903D2A 875797128CB632A841417BD7D6B70A8979612C3ABA33608109C13E7BB9EE9CA1 69A4E94594F9B383A72597E048F00DC09B25AB01CE2D56EC3EF1456072E71905 9A8DBBCC43EEAA3A4A47510FBD7E30CD506A9D2D1F44499520033AA061785E3B E8814B02636BB1A07786F076528047380C61174B485E675C7A78F4656126319A A19824E4BD9A0F2B24CF3BFA1EED0EAD46376C5230D37DE272BEAFF9C1110A53 44751A2B3E4187F8E56201B40407019A28744A364469E7CF95D3EF3446C2BA0F 7AC469AA11420A0CA2D15D1D11804B67EA9C6E2AA0EB882902151A2950953A15 C09250AEB15248620A7816B407967C9AA03B3E1B1402F5C969023314C9CE5EE0 D833625E1F63E21F8035B3468AA223BD428DB21429E9C8B9C597DBF278CDD790 E2AEBF17ED8C071A181106BD2DB510EEDF80FA65BBA36C699C3CE7E0D1BA84E3 47AAD094A56DE26045AC95605C67FF15F22DE6C9243D965F6C482B4800B11992 252B97EA2A33F8C048B9D52CC751DC70F80A693FF4EADA15F7E8C2A6214B3D80 85965849DF70E0FD2970F5F32F26CE4E7839D2991F8F53958E735FDD2CEF13A5 1138CAD940814B0004A961214712DDB5CA8EA47ADD1870F89489BF81ECF3DD06 1720F9C10F47FB671C91A75BA16E3A6277B55019E2E782D7E7845E3B42FF193A 02193887D55F92A62DF4EEFFC90906B94EEAA70D0E9BF04B584B0BAF712A10B5 8AA064E99979E3F1DE500DA7AE01D99CDF57324F19ECB6C14BCF53A82C0C9065 B737E92093261DB7DDEC47C8F15EB8F6A0FB82A6FDD5E0FA5FE2B213AB001136 0B4D3ED785EC768C32435771E0970B48C1CB89919BA82DF3F300A374DAD7F431 B8CD7A059BB63D92E82D30C9BDD7C5EE67F7DE0D0644832CFEBF9E11A9958684 75A67196A917927E3E327531C000B6F7071CF8FB2D5E3009EDE8F81D31332321 193E8219BA5A84937F176ED745D84DB368F56C0C5255403FF1F32EE9F7C9D8B1 C1F084E2F9A35C4CBE302F096907168D71967BD4D36B4B449E8D49085ACB83B1 6006D9B5E32649C30E93C2FA420234B5C3EE4E46776DFE6A7FF822DFA0442CBD D94493FAC8C742FE252033F2AFBCD35E1B55D0922D254593FEADCEC97987E764 FC8DFB65C7E5933D409ED9D1CFE1AAA844261445F5F3F64FD4677BFCB3215440 5D5EC8EBE806DC02783F569E622F11A8501821529A6A727845F9E61718233699 D9219314894899D6DB23CB27C39714E81604C814298B2A28D31D9AEF7EB22920 0869B91CBEF325B5F68E5AEDF763B8463095E92AABDAEB4044412AF762F9A9F5 1A7E88A6716F0BE6F1D7E995063F745B4893E60CB7AD8E769E0B2FF7F7722EB4 8E8FCA91692E5DD88E5BE719E3AC333B04C2F105DF634961E892CD5EE29B602C E7C90B20F3C771B64309246E7884FD192BDD36A00A5EE21A998B0F6305CFB2DA E1C859163CE12EC95C07697991480A023D5D517395576130FBD5A05D5022DE27 DFFDBE29ED2E3933C0099E1C109853D0A6755AC91DEB830014D90D7547DB944B 207C9A26F7ADE16F0E75EED7E5C23465991B345E9DA2132F37C5D107E0631C7F FEF074149BDCF47634AD569C70E1373EFD0054F16B6CFA0FF640DAFED4A712AD 35FDA7D1BAF43A9391885583F942E60D15B9A8ED408F681BADA7466846D3821D EA3A8BEE5D3186B1DF91ABCBE79FB79005B0EC667FE79CC010A3C98D6F911A7A BC245B9A58E2FD6A46E328831978C1999BD3009A3AB0BF788FC6CCD3C8F1855B B4EA10928E13F39F3D33819BAB71A992EF5AB377A20F2986CD5A90ECCD3EAA8E 10E29ECCE734FE3A163F9CDA48FDF76953F157A21503035FE9625CE4FB887AB7 3C3E34B7875E207EF6E08D0E1059F834C320DF10EE198C0DAC0A4245D5CC8FD9 1D2AE52863A9467998DC25E343AE93F80281DAF3492EABF7C1632EEC0417FB58 8B4A49A63BC8FBD4765DED627264269362BF1999B6EB8166EA2C61CA8B0FC1B5 DBB3849D18CF879E37F6924C5AFB06B57AB44165C6D8FD9A696C594B95E3A8F2 89E9BF9F929A1385F588E8A4DE56AD0CB9ED4B448D17CB58A46467AE441D380F 87D679CDF5EC130C1C05C1DE4D4DAADA324DB77BD9DCA4ECB2FB6C9109C418D5 4AE78A576E901813A732F468CF58165229E3EC36D8410272FE04D9C4FAEB5CED 4C6B05533D1605642F9926DD865B6BFBC0F6BF1B1838B07469E3222A70113840 316DC1A846AF37A0F6A43D60183DAB87FFFF8EC83B1A972189836E097293859C 9918975402FB2A35D6021C0601CCC787B441B39ADC76516801EC6C4BAFA66B74 85E528C2F9C53B0BE3BE4486F9E703CBD0A0528267FBBA04B80731E7DE4C2829 8AA3D9FB02195800EADDA1400581B46307438F1202C349236894BECAC7F96D9E 31C0740AD271A80E99285B00332BDE5FE5C241332199234C4FDA147EF8111070 2580F25F66A5D681C798780EC6DB2105F6582F2C47E86400D5174481A40762FC 1F4B51FBD5CD958AC961910973B90E70B3CCB7459DD92FE59B73A06947C53858 62A1BFB56DB1C0AE6CCEEA36E983C641A1D70B0F4C5BB248255F7187330A6230 B09E064C35A2637E560DD8A8067AD2169FEEAC5CF5E2F3ECC85368D411380774 DB7490FD4729B4F99B42D6E93DF433CA68631607FBFBCA552510CA38013F3C47 84E4409F2FF98CAB0824954E165F3CC432C7C1F8D1D31D8DA71C97C84CBC5585 595D4E450F1AC05F73A95EAC908CA6A9F5E17D244E003FE3B7F62AAC3B7D10A7 5F512EA6819A268A1A2D7256CB3FB18B1E9E71AA2CAEDB2D903654C248BD0CB9 AE52C85B4DF905846C4D940DD216F8FB7A7F2B94111B1E6DB8498C0EDAA9F293 E7E4545B0CDD24FCC265099BAC1B4444AD73E43BED6E77D02354CD80B3A897AD 58902CD8E6AFA1314FA06B140B1FDD7E95D2069D194B62A265321D130A33D82B 931763A12F0E197F45B49672015BD9F0C9F95F68567754E33831A8CD5E609F06 E69312BC21ED90DF32518F8B8EEDF245966BBAA492ED3E9A192920B6990F53A8 CA9FF2003A458C0A6B58A9D69B6A72F63DE476AC339BEF4EFE364939BD3ACC48 01D841C4DDAA1AD76695B9B9DFA829DDCD3C3C825353026757381ED9A699B791 199B1794C04C8EA083F882EC192633F8CADC948473704E77744FD0FB105EBB53 A1792F074389B10CDDB9DEA4C8B678D73567ED7113754380DCD45EFF32572F9C 6484F22F7C3C92BF1106171CDC359BB6B6AD83F76CFDCB647E53E374BB8F5829 0D09191F8E0EEA8B90979E9DEEC45BFB96F055A479EDE5429844D43FAF41B1D0 A998CDABF6C62203BE4C02627BFADA5B1927C945A291FF9B6237B9A2ECEDC450 1CA46AC1F1EB49566F2A55EA8C265D3009A591B5C2D311A70B555B32A7C6EE35 68461DDE4D36842FEC123DB4C6DFACC3F0B0808930C62FCBDFF31A34F80E18DB 2F24C2CBD4EC61C576339D47DF04D261F35EB5BC202AC72F4078C5899379FC07 4503897E8FDCB9FBD8618C0A4A70EEC5471281AFABC909DE6B02FF8DB697DC6F FF706E9361EE6FECD3EEAB4AEE3DA2BD544C097F8A9B0EF8128B32C7F35599C1 A62EEB09251868D0CC95116495382A65C407A23411F764D9EA05F3079EBEE618 079DC030A1D16A414FE12A2310C5BFA9DD8A1E61048A0612B0509AF7DFC137C2 7963A45F4F4B90690E84A3CB46B02A161F449E08EA854CC7D2CE6893F1B0980A 63DBE82F3CA4D4548A09C8F317FAD4C942FD247DA6FCA658979D263C9BC6C0B3 E7422620ADA8BB14DD85EE753C0A31FA68044DFD91542AE7EB812E27AEE6498B 78CA725167B2831F3DC6044B47B2C24258B2698D4704A35588303D16A9B0DD90 3897ADC76CA998B1F660EE358868E3DF1CDA697BF89909B36F2675A76F366108 1E0B848A1405BA50D2C7B799B9F751B95CC92D43FA9EE3C948A0CC1DE752215A 25BFEF6A64D71C42031EB1CF29B64287FC04EE336308AAC773A37DB996CC8D53 497B3FD6CEBEC5BC3FE95D36CD5DB615BA672DEF609DEE5A57C1CABDBC1B9952 A498E89E563B9670D518B0F0BB6B5702C11E8E1D6CDF113F63FA5A64E589E849 19D623F1E5746CDC58B1B6367024EB93A3647F6D21BBEC2DE300D2C58AF9E3C6 3BCA609D2D32881C69E4394EB920F9B9A1E382AD130BB99B31CCD328C526D04F C0D3E98D962514492BB0ECF3ED38B021606DFC26A06979A69891418F53AE42A1 69F4793C0711A618A9322F95A2909944577BE01B05AF4EA867B35BCECE53A1A0 9F307C2D662876C69251D8CEBF43D763E72B89EACD94E4D52F77DA095A4416FB 506C0C9EF68122638083A8A504D2FCB3102AA50FDFFE89C4FAF1CADA68039F76 607E4B57C95F8F304E10AC442F542CD60C514D1BEFAD66E42C76FDB33BDF39B0 EABE3B4549FCEFF952865442B00F3110B0FFE035F84CE2BECA18705988C7258E EE6A7BE199A5913346F9B830CD6D3A2F32E83F983C91912984BE0BABF90031C2 10033EF1DE0EDDD30D7E1D0EB1815EDA65E2D789187D152DA8F42D4562DD730F E9BC6A0FD1CBF4F5F82B6A5FF97A267FD8D5C9B5C61172C324ED56BA441FD9B8 CE0E9062FCEDDD7018BE7092FC88CEDFE921511340490A81B13B58EC7F3CAFA5 F99ABE792B912C8BD3F2EE9737AADEA8A4114FE5B0BA6F209491926AE24BF03C 9491076ACA58F792620E00A6F99B141523CDC5A929E38F3667D70B975381BBEB 5D867159EA2766A410B2E006BBFB212FF97C29C50E525C07F035BD24919268BB 4201A904ED85E80951F2DF66A87816ADEADC6640B0E746F191D21516B27DD8F6 90B1A6BD3FE7A4217FE1DFA8C41885D3CE9C339D6C0D4317D4131C1CF820AD62 06B9314B5E47BF6399E0379E5ED26BF001458086ABA03F924C035081FC838FD7 DCEDCEA5E3784AFFD9EA4E47710E512EC570467E59DC1BD5483EBF2B429D0EF6 C78953AB0A6964C2E9C8A3D99832C9CCB45869945B087DAADC95C8FBE071E67C 8C92BDFAF6CD455D84911618FFAB625D57B0562B931EBB5C7A0FB22EDD1D1CFD 7513DD56D99B907144451BACE59BC945C56A66A59CB6CD3159884EBA68C93BCD 4FEB1B5EB18F2646D8F95E9DF6BD9B2738A3F96C82F647844E8C132E81B858F2 06E39AE091447E3E3D07797DCA901E5647802BA5F11B5A6434DD05A79BD2CA2D 65DB90F8703F69C6C51B646464D42731B5259CF0629E206A6DF4678988C2D854 4D2110D5B170F4990EA91DD51C7C7C4E9E14EC72010D0307363725BCD7585302 8B6D518107ACD88F3D97AF9205D7FD7BE48F83A2D4E8B71004848023F6CFE530 3B873E1DCF9779F272CD82BA5DD6623B946EE76128AF100AEE6365FB696063C6 35969EDE271D260FDB1F670B114C2CCC45C7B603DEE2C3EBEC445C33AFD4B6D9 E61B6634D07939DCAA84A9999E1493D0A721C9EB64CE6475740EA05C812B6C48 84C57CECE0ABBDDF61A849C53ACCD203285CBC280EE27F25BE6C2809F2608571 46CDD5340E46E372B4B46583791DA63584A477FD00E298875E7C914A6D16058C 58A80E4FA3F2C5B66CDE8DCB3A4A35C6B24271DE5D3F89E0FB9F46DA330CCCEB E4ADBA29254CB3F7F0ACF6405E04A686C574982180F63635D16074535057C0BD 9428E2547257D5657C2500E3DAA62B3F49F55BC554B23A594B6ACA6E4C30A99E 181610BF163CABC58100BDB4A29125008BD8B27B229AC62922381CE78BE6B593 6376D4BF18219DA17BC36FEE0540435C20A3981625AC9DA6BC99CFF751EDECB8 F35C2F711441F5003724DD520B03CF2F40F80B0BB7767D9823EC0F4BD90BA07A 51BEC40638B1CF70750A4177F097FB563B5936997145F118887293F9FDD45940 B05178B5ACA0932542584ABCFC637803167E07E76D41DCFA45F3DED215348657 2435048924E5F503F991B4C23E59F4E4592986B1176218D2F0FDA90C201B3AFD DE3A04E4597A5C0575C79301B66D40A78FC82009C94697A427604C468CC8C639 E7DBEAFCB1F73D8EC6A838125A226A1E315C93D30219A15045C227038C7621F8 8E6366206E394BBB82930C6A278321F011523B138B47B699269F83892A4C9206 A17839572375F7407D2404ACA2A60980BEBBA8384AD7F05CFF5CDE4B48893EDF CE3F8C17276F1FE4F1D25EF67506C6A52163F00218CE6622FE7DAA90C1AE69CB EB63E470D3AF41C2717FE815CEFC520EE32897A123463C0AC75BEC3185D9C5FD 3BC8B0E3D2908CBA3FD3A2885E4D39B60B9F01AFDA04EEE1BC040C82F04A8ECD 4B2B616ED4B651113C2818EB1E70EC66DF26A4F8FD30C471E39A1B31B5F1C632 CDC3AABAD8767C002F01EADA625E5680D73E3651B3904E1FB11C45BF9DDEFD78 388A38948B01DAB96759371F3A8FDC259B2EFB2E213C44B2F0DCB897E1A79778 A51F194371B3A9C72F403B513EB8C68435F4181816ACAA1ACD459B8B6D584A20 98A016780DA1AE0F04729EC7A06755BE0178254A7811DA4DD306AA1E3F6C2631 3F76583D3C3234A3C6DDE4801E94C5349F494200A88F66CDA3B043DD5C6E3E9A 767B86AEEE570B84493A235A90A182985CAB136F39C334153EA1D39843804165 D2C287ECC2FE3E1F29ECCEDAE99B185FE14DD9DDAD0DF2348487A67B3564485E E3BA43F2A444D0BE494B9925AA75C56B0C84F2928ADDB2B82E0DE05E41B57067 5E2960B42C6FAE1FD8A679D9007DF8A40D615E9A5B4A911933A8A08D560644CB 9F136F8C36A1126762819B24020D17646B0BE333393D3A92ED0980875E47C1EE B4AB4C1AF7B2D21DD7CF3B6750DE06CF810056FFB04F5A6B131AA2A15F0E2CC1 F679A4952E2014EC8BEC2AA9730BBAD806AE6CB0067BBF3F7C64D05F5B05A758 571AB41A752C114A6A7638AF2478DA91D1F21099DD080B100ADF1AC93C2A7762 4FF918172CB82C75A53D7049B94F8287AE58A87FDBB85930BCB5C14783BDDD2B FE7E506A256D34259C71FBB7E3B980F53755C8E02C3BCDE932198BFF36C53303 13326F945C2536FAC42DC5CCBFFB0BE31A1D8F041CE2617203423F9CF3268F71 0FB1727A40DDFADEA3BF8E8FCF3D09E43AD2D6D70A5A4856CB27E1F1633EF7E0 FA8C8678BE8C9CFB317764DB203144F2A2563367A1CF17D4B57AEDB517EA23FE 000E21B87573B6AFD0729567FA154F217D391FBB4525435D99215FA716153F62 14521E2CAC2E32267C0864AAB5D54270925720A90A7AF337FA763900764C0A79 1BC983A305AE2DEA062DD3D4435CD1E36A84AE558EE14C8DACF03E58D7F4C6A8 1D99BBD6913C9E3138C81D61B66F5660C0F0B9973B57C3D873DC7FB9C315A6FA 3C661F73F20F4C70E60227B978D0D24A03FAF642F586D26B7ED453D3691A81BE BA1CB78A14F61DB7BE1B73DAF2AA8EA1CC5295B13133C85B364E293F6BDF4136 5DD87AD174AEC1BBAFE00BD5FC487BC51764417406A71906DD987A03478CD26A D6FACA94BDD6B56EB87335BBD0BE4A730F3C7B91293D10E7ADB5CCDD8D873B72 A1D78660D61F96921982D96AB1B57E3EEE4A035D86F79824327CB12DE6E80E49 AED9386F42977F651D9BD071EA888011B7A50E6C57C8A56CB8806882ADF06B71 BF82C7790D85E245307D0101BE07DBF0798AE2E2927FB005850FA5CB41C55B4B C7447358F75CAA90DF1B21FB9F09B72276D1EECEB26FF1DA37FF55CAFAAE658E EE6644747C89B1D8F302F7819642B815EE1FDD01A55E1D70EE3A540C63E1170B 711C95EF168FDB70B3187BE186AEF9378C7E84041D32E4AA9411EE6AD8E44389 CBD84FBE1BF57B584D2E1A644E3415572C7332ABB36C96689C7A143DA3D392C0 B548A934B549FAA6260506F177B84F97E44079BF764EC218E55AEF4A384F733E 840D9940D755E8CF7D7CDFA05CDD11A3A7E59B5ACCDD865F44954E9069F5A05D 285B0FBFE5A3E0738B42615BCAF523F83591D13D8E207677C2F5C3584E66D15B EF737505BAD3AF9D025D6139BDB956288DB3477BE0AAD9C8B27BA7C74EF75B24 E85044F9C7B6B225B4AA1160A65640C74F31670E4756ABD987A53FC46AD25604 977B0D80FA6A820252E578A4E5A4816AFD9CB796FDE892FEF817103F6FCF4E4F 5313316570382E5EF1D2DA9E212F759C0B208AB7C9F908B21D347FBCE7D87060 7D403996454CEDC95CAA5B6C4917A04F2C45098F71658CEAD5F831A132C64A5D 42243EB2BFC7B435FC4DB5D4AC148FF50A14E3B6F0CBAFB3E70DC4AA5E90D4B4 ED718B8FEFADE2331EB9E475BC341155C20CEE88F73B01E00FF80917B7CF9873 39BD2753E1A1C85D64281EF2A504A1C5400E567E0976B7E7BCE07232E4A80438 E527DD85A3AF04F634B4C867571987780FB5E6495B0EC1BE877EC2310080AF6A DD2185AC751C2D9D5E6769691CE8E5C5EFF8AC97A9D4ED79124837AAB762A687 B425561DF3755198FEDAD4B46762FD1B40FE3A47929C83B623ADAA911578E0CB DB6D4F98F98E7501013019A9BCD24C47A4E2DC4B36205F7C0C018900E47E282C 5D72F8F3D76F0772743E20658B6BA4E418827616AF84970A3C7C7E219DCCBEEF D305A33A10A43326C99B497DF17A4083531D67BAAB28A0B01F4EA50ABDCA98E6 2E5B6C019BEACC87C7CF7D8707CB32E9BCBBF4AF03006F408270A606D4559F93 CB97DB6E2FBEB5E64CC0A470DDC061CAE8D54121CA17B978CC69ECAA3801FB6F 54B200D786BA0AE283F88495D9FC08FFC585A14AE71539EBC70D56F1265F84FF BD9860AFFAB6A15DB5DC750FE29ECD9808EE33EF9AEA15029B38F51AAE900FD8 12BF4116C71D33E078A17B9D2FD6F34F39460A7661616AC43703487D9A4DFF48 BFB3B6DD0BC80E43338A042948B8E0E92237B02C0D1BAC36360FD6C76A0D7161 571BEAB3552132278DA56F93872CC8966560A4BA40B5E985B8044D55663D65C1 AB49DACA518B86715FEA9A4F110578B5C98E0F879265CA330087D781F89AAE4D 5D82A392D7669AA690484041066B8C1C577834BB5405ACD8BDA6C5E78E612A6E 95591DE30C74B12ECBE1F2AE0B60A7E00D272CD5A17174883522F46907795B02 C45A307C50FD65D0125853771714A13C3534C8746F24A1D581B59AD7DC3783A0 48D87112076056DB6D2DE6A1FE0F423D7C59F4AE75E1D291884A60F60EEAEC68 ED85912983F03C1E50CCFC66346CC72CE6BFA554AAB5D359715FFA0DBF314302 0ABBC483A9705F40264F2202BA7A81D78CA9E24A2D6C960D237BB425016B21E9 995ACB0015EC2E5C8EA29C7DF9C7A1817250E7233A4A7C4B2D9A6B6E9504FE4F D4FF55F9556D0518B2097A9DBDC98F8FC642CE9304906372FF1A103F2B0976FE 5D192A3D13D278C4FD0E615B88DF60207540CC215E75E4188DA3B24CE6D26E1B 27A76CEF41345E7989794C7F719DCAF79F6A293278BE4D5BA10DF681CBB977BA 7F828203553A2F09C2D2B385F26DFAE6855C0A6432256F7F2018252D0E823DE3 D55C9CAB7922E1712F8CFBDCA3BB54A4A66E539F09CEECA52953E21A884FDB03 EDAF3B575477F32664487EBD2942296E9E7D4A24C721D53C7A662C4C0A6D6F92 F71FFE1C2C820A1FDC1EC87E215BC5F78707858358A5DB98590D9A6AB8730FBA 4DDA7C2DD9BCACC5920D909E5182D106F23E7488286934635F004D1E25AC1FA8 5116EC16BFD03E0FC03D78AB82C4B4329E5CFF1C05E3BD7C57B11E47DF6616A8 490278BB08E37859725A690BBD9A0F8CCC5B73210979D92651885C4FF19E6C07 0589BA93D051033234F72EC88806CE855CA8385988C6FE7ECD2B3A20804958B8 53EDF70D6D20FE2406A66058B8B065ABC49EB1CF0A71C42717BF99D418702B8A E9CC2978F5CEB07D7A8F3021C3A06402571C8D1AF660A8ACA3226A0A79B6A28B 99196ECDFF5DDB492AD4D246665B67AA5A5348F060CEF221B481F54BED8897CE 58F54A55CD9C5269F136687A0AD37FD90B218A15B6FBE2E4BBE282663FC7FD9F 7CBE2B53AC97DA6FEC9B92E78A5356C892CE307EF1FF3452072374EC3111C480 4D8CB89A80F4E680437BC192CD6E19FF6578E0C749AA740FF8CD85AFC9BBA2F3 3E8F287BE82A7F4ECBF1030ACC71D356F0CA87079E8515A8D6F902F1881AA13B 177E29ABE101A08A6D5EC2C4F96F9DC5D61EB22FAB8D1FF6CA6F017E674AA147 F5C05F875A714BF1100E1476291CD247F90E0F4A0EA55257E9D2D78A4F18C26F 18783F5192C0F70B5ADBCFFDA44265D182580C72CB5ACD02E830B358EFC8D8EB EB0C932210CF091F21849D6B9EA8DB515CB52D7C793344C86D7501BC9C0CB03E 3B086CE3BFEBB415DC284F1889800F418E2CB934C4D26B54A55B9A1CDF731C74 BF5DE7CA20064492C4D558332A62D6A66BF6F03547EF2B38DDF53A4F98FDD247 B0371AC508C47E7D64DB46C5D4C4FD8426B01067314D3F9900C7B5D8A2689D23 7E5558469EEA059F5C2FE41B75230B6CDFAD4A7CCFB1298BFB4E3B77A2644496 A567868577458CD37EE3DA8B4EC67B5D043AFD2B323C10392B2C27E4EF16CED7 E6FB224D93747FF4F51F6A50498CC7284DE1C4AB87A5CF64FF8D393F30328045 0D71C1F13397A75AD7FA5315B1A397AE112E6D22541FC0A6D8B8D8D9CC67360F C685E0AB208697E29084F3450502129D56F816F521A3A6B202C44877C3EAA498 7C08AF254E34FC326237D510DFF23869FFBA56AFE864802F4A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMMI6 %!PS-AdobeFont-1.0: CMMI6 003.002 %%Title: CMMI6 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMMI6. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI6 known{/CMMI6 findfont dup/UniqueID known{dup /UniqueID get 5087381 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI6 def /FontBBox {11 -250 1241 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI6.) readonly def /FullName (CMMI6) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 106 /j put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFB83E8A2A6085DA11 61B1632328B94B21D3CBF2E7752D441A2C9A03F6681FDAB37C4B67D5857720F7 0C4BCEE266586738012A2237A85FCD0425DA7E8E8632543F5BD5D50F9DBAAE69 9E053AECA6027559DE42F7291EB381D866F1293107553809861D43508C6F2341 5E4FCC431AF4A9B3660386AE63E877DCF5E513D0D5702B98D58B34897FEE163A 75CD6F5A2196F91CE5060CA5E72F9C5F79D18F242EEE58135BFAB02D5CA430B6 D1B9A376849751A45E52577B1810C4F0C7F6C8196071D5B08FDB731C5384CCBF 03B460347E0CAC959E4A12620B6C2ED62E06A241D1637F418B5599A7FF3C1390 7AF66A00F7C31B4EDF249C56C268EC9D546CD0489DA51B734C8292CE7B3D9E30 71448C85ACC64FA99B2DEA91AA4CBCBBB9DE20833700AF96395DEEDA3FEB7D6E D6E3BE4A62CBFA18BD0471C14F3A2FD025C88E8166A9830C5B5B94624A3D6482 D1A1D83805D0EDAC1C79EA858A523D9FA3356DF42BC01886E77F6AA6B04E4E3F AD107D861FC626F0A439BC3F125D48649E5101BF79C71507FDACACBBB4C4335B C41A5C15ADF1DF69E1D68C3EB9BE30BDD5385F81D26EC8F2F206C1C7032B9EB7 0392BBCA23B4693686AF8D2E1ACB2FBEE81D75667CD1DDB906BC5B675660ABA4 E63429F16623F20B6A040E4942107CCA26CF6C1F52DEED9EC7EB15BE4F18F2E3 9ABDEEAAEA9AC41E9F20C37C54B33F609F5835AE5A1EC9D674DC50FAFF6D3511 2198195590F62B3B8A6FC8C3431BB8895A2F910F0361062DE32CDA9A7F41E761 B09BD8545CAA2D7124B5688B54705AA52E4716E36C0303FEAD38E0510B3CB496 6C30B115C37E02043D47B4ED796C671E30360800EC13F0F0FF3E0DBF5A642396 EB0F39A9DAF0974678EA1D041F08BD73867065DA91B044EF2AB15FAA6546031E 189936C1FD302BCFBE55EAF369DBA4895DD0996BF7292762551A86C8A3604E9A 8AD29E38BF6FD40172051EBE7C694249F3378ED0139D37EEA3ADB66F3A80A1D9 9C3655F054CACE93BA4AD42DC78A03F42455ED1BD5C122F234F21ACEB8FEFF9E 3BFE0DB2DA6D368478299ED63912A234ADB1DCCF1E519AD20772B71F8522B5DB 24E9658BDC1333D76F07F63D81F7A51D12C445ABF698092A24E5E5C36A52206C 0C41F7DCA529BB0A4D146DB6B4B341459FC17FFA357CA5F93DBCF30B61374613 4846D619423BCAC59B7EB40C14C70ABD985754A0094C98350D01FE9FA371B0F4 38884690DC7700C49236EF68BD6E806E8937AD8B77648F552C0C907007465A76 1475BDD3FBE1CF69C706E703226471C249A3448F81C240ADBE4B5474216D0235 6B0816BB6935A2704E851E20C002F85B653BB0700915B358DDC168ED3FAE3D91 8280A5CA5C2708D622B03DC47A70E5FFCAD5A7C8D9AD563857BBEF92A3BDB588 8B5B55CC9B960F20CA4AEB598DA8488004DEDBC9671488011E836D9D8B6251BF 256D08E6F1808E9D498449DF1F18E48B310D561D4DD3146C2BA64D960E66447F 6DA8B07194E3BFAF662C00737BB7222B55A5CC206A1C46F252ACF93D2063BABE 2BAB874C01AEC438D3F86AE37C9D7FCE4077F5B5785E12C1E0B685134CE2E8A2 2E4DCDDAED2D53D13014E428FAAE22447763D4693E82600F850CA4A49E1ADC5D C8DFC16E97B9F6164095CF7F31373B591F815621F45DFF77BFBF89EF60C9F50F 0C2FBBA4EA9602E197B9447FAB6AB57B19B1C801DAB66BF7D263F6572B9EEF88 E06744C1FE197B8EAA71E1EB67716B7CAB30C859A2D1B2DB95ECED02B83FBA32 E62F97EE4403FADEC936CC8DAA161F7B509B2723BA2B735572A80D7D087E6395 6A9D34D5963E3C6E37F307C66D1CE551D2F055BFCC7360FBE93ACAFDE2B1A849 37FD373F62BB23C1A2E3DF61C9452A8C995B03D44D6210A968C6293B4A3BE662 C7B0B59E6EF6D53FD293B2C290436B0C448E7D15A63533DE321643E53C85EF8B 060C434E46A736EA617EA00D185323460E77B95C49070B035194A2E7693C3B15 104ED7F56FCADABE49F27F9A576B354C574B5BAFFFC57FE9AF02FBD87B8874A1 24C53826659BEB1EC50446AC26EF3A95877ED3D81D33A8BC1BF7473FB9C11ABA 0F27B38EEBDF77D3D3EA63AE6022DB0D4F1125DF274B86EF0A4A263E108D6044 7A885F5E87362293A53F457CBA6C911D23653DA7CE4BB7D4FF4481AB97C0DD81 C13515F0E3BF8A7E8DE2CE69B25BA9C185D9BF31A65DD290B0D4FDF40B61E2D9 AF92BC6468B3F5AB5D5B88710C489ACC69198D697055B39AB3DE8B3733825C5E 6E763E2698574381A01352A7042A36EA96D17DD2EEEAFF04ABF7BF7D877B0FC7 B6BA51BA994D431F472B6EC4B4C327399576470A1773BCBAC61CDBF0F95DA6A5 0BE5239B7E9CD39E1E4D27EF6695D1FB56D4CA2C2370509547D6D01273CBE6E0 66A696C35D2D0282CB8C85D7B1C51453A0AD0BC80E1D183D11AA78879643D9D9 A3D0B2BD8EE3EDF29483CC5871426232A20CB058EEBDAAED85378B163425C270 B0F7BB46B7D1B89CF84E6A06791195FB17F11F34A2548FE424DE10E376B39A2F DD9B0BA2F2FDF3ED4AACBD0D60E67C0749D6DCBDE6E79041398DF3FC8D9B6CFC 693B870683CC425C52705902DFD324E157C9829F25B14A057AA92AFA17F156FB 0BA949698EAA0657B03D9538288D887959EF24A427EE7EDE47F304A1A6A715FA 2966273831B5B3A9C11021C153E67A73FA606FE3233C3DB217404C6AED6A4C59 DD4C2A98B31AF5604D8DE8354448B4CEC66022E756B0056CD32E9B002ADC712C 0545C2C16D9457E271D98A4ED7DDE01BBD1856F5C3DA28794D2C7951FE2FE6D9 18643CEEC41CA4A3464D3D3A102653CD6EAADA59CDD44918523B8811C2ECCABA AC0D188F5E07B37AFD56006B10B32EDD179F4DA693EEBF4DF5425D996585F21C 8780A4D23D24FB0618C12DE65CAD42A0138E28A100257978EDCAD168C55C6F07 78A067F0299890356C2A184820A554FB07448395ECE36C45211757552E288ED3 7DFE46CB92EB2070442AFC85864A45000C4854D728096AD3D4C552EFC26DB6B9 C340358451B50AF9F1B35C2E32D495DE85B5848D78940270DEFC07A14D960730 878B5B55916FB40FD805116C9C2AC8C6D4645DA67A978F1C6FE705EC188DBF7B FE7AD6769F2EEC4A9B05306D5BCD6EC3A240D6A29ED07D1D82E697DC8CC391AA 015DB6BCD1DA5C9A5A7BE3C5936681215E859E9837027D108A54F42AB24E38C2 4A7D8CF3264AE049D4B1AF48BBC564BCC88AF19D37DD81CCC431D0C554DF29A6 94ABDF8126EE4FE1DFB78559B9BF36FAFEC9791049C865694F9E2FFB7A308FEB EF0195FAA6BFE7A081B65C5125623903828372F117EE17E588B2FA26DC9AE37D 9A6F0043C019624D3D87AFDB4B90C46AEA78919CEF5D7ACEE316F30EA0229742 55E02E0E2533CAD78CE9BD6E0260A695D776ABA229D89CF9BEA92CE0397821A8 830A557021B3B90CE0B07A4B34C24337FA3FA4A3728B6E013BA01071CA7FA667 6FFB4BA3A28B5D5614ACD4E80E00938C2589CC6CF885A260AF7589240BF8987B 20A19FDAC73FAEEDD93EBCB3D46F735214164AFAF1A7828FE96E2BF7CE1EA46E FC1FC4527A0ADF2B81CA51E3D96F3E786511AF00FDDD9764CD3178362CF9DEE5 F05D100EC21A301F40FEFC3EF05AFEC140A9466AE68FCFD6CAC1A143BAF2B7BF D0DF808F0CF87FE2399CD9D2DD424227CA7D4073ED002CD555FBE8057A797B60 313D18ECDD779FA7289D4E7BF82D95A7535CE3F0F4164AF239AC666653736654 C13E436B526EC5A1DC97E1D85C4EB563C7061AE1E81F0B38BC45B17C15FDB0DA E5F6332721A925D4DD5A97BFF3E3F11D4F4F43BAE4E73A294D314527397F03CE AFD12DDF9D07DAD8D6C8EFAFC2F52E20FBF62026810C0C31A1EF71FBD612654D C68B7A24112F0ABDD20EFF3DADBE447AF9CE568F873ACE72B63283CB26B89BED 4B3315F26084453B1EB0877065A76E7B704B27F93DBEB365574A78E92FDB4B82 D6ED91A1728F571FC9CAB636A6E81D0C1C4F5E3F6F4574B6EED48BB61EFDDC80 1831E2AB9327B37881F0CA5D5265575F210BF4BCD8653B4193F74E3FF65028F9 2968B8127C68CA2919DDF529EC882EE99901146CA629A07B4DC59E7868DBE083 6E546C5769655EF6628FE2EA78AC891D130108192053D5056A7BD06C09592AF9 6310B3586A2609DB94CB0079550358F5547B9FBB2B77917A327EFE3F972C7263 54076627B4DD74638C3105FB25DA246484799D5326EE80503F18672B893289CB 1FFF8D3F662FB33E93025D86803551A8A1DE363D1534BFA3EF968871B19FB189 DAD841C177E2AC98B6B69A78048221C5EBBBB86511939D3A9963B3BF021185AB 0B26CA7D0A779DC2F7693C7E48286BD60EE46615E31B93FB0E6992AE20C792A4 72AD6FFAD6682D0F606807D7AE63A6280B5967FAB889DCDF0F76347CE302FAED A59E1B1AB785D9D0ED695A0D05DD3DF0EF0B275AFCF9EC7031E1357E99A3DB85 B4D137567875F7580E2BEC96B08C97ECB40876000B610E0BFE81E7884C9BBAE6 6BE9C2C612475396BC10EC7FFBD1118A7971FE1971DFD0CB677ECA65DD837B5E C7D36FE9F20A15A941F1E77C11093C902DF5B7639580B9C0E4AAD13518E1901C 1162FA095F301848770C6C618E371A0AC3463D0D94221EFCC0884B21300194B5 97E03BCD5C4878CEBF352EDD1D2173B56C9B6A08BF3F33419DF226E1633CC5CA A88A57AA85E21657569916E9B4B79E51B5535A57B2D6FA3EED1D0AA32DC0165B 12F8F5A681040B456D8DF175AD6053A2954F327F4EB4CD453A056FB1701242C2 59755058640C62632C764E002CE928E6B908BB137C28630A3CDBC7C34CF2B643 FFAFF20E345A86F31756C78A8EE2B9B1C5DAB2C863B29A44190770FD90BC6AED 0C25942BBD6A370C21650947B49AC8EB6825BE65DEFAFDDA32007754DFE0273F B995B8986E505F95E58A3F8873545DDA6F3FFAADE992F3FF7B2DAB76D663280E CF2BA18BC8871A7C361AA3600B192948CB918FEB0F2900AF2BCF169576828325 449CBF0C7AEDC299FCBB061F491469B9ED1D56771A03F9F202550E17FDB15B51 4772B2F06E6AABA4027D13E8730999532DB2475630D2F8EB98242E36F5B45A94 2D8083014B63A806BB9A01906143482C614B5CFBE8C5354A3F2438B2160F6DC0 81AFCEB201EC67F66DC5808C907A3C6CB664F444D24095D9A11D4978A7B57037 87C67552FD59F5713D0FE03462F9A1A323BB3EFF0AAD61B1792CB109CA9AE4D4 D7F7FBD3FB91258DCFFB4634669FA13E03C0AF699165311CBF37D24378022787 87D1320ECF878F859149B2F994E700A32CB7253297AC58753E4583A08A1F83D5 CBFF10F2D26D71CDB20E1C69A666E9C4D23BB0E6BF1097FBBB204EB736E61FF0 C3FDE1986938F8099694B9F998B3C735770FF21F73B1A6B750498BFD21184F11 5E6AF0F1FBB08EAD436C4AADE1E6B815F5E58988C113B4B2335A340798BFB201 40586D0BCD6AF5A08CE9AA042910197F47D98CBB4411A6D435A46F46B3964F85 032D7F8D880732276A8FD24DA772F642F06C9F3EB4C9090AE4A3AAE67D8768A1 7B2A57E15B7FC626450372F40E3EE28D8D997CCC8CC89C644461D1110740407E F6D884A0503E05AF830994AD0CEEA924D935749F6EE9F2DD65A58ECD59229918 A303C90E19E9C411FAF24AD5E9B786178F8182692CDD508A4755123B4A594AF1 A8E7287456C1CE2CA485CF4CF9DEE5238AA7328DA204816F98B7EF49EDB30875 3CF8C48E0465BFFA8F2A1CFB6A8F165B63CC80F54C669D02BFD9A0EA0FDE2B40 D69F0101AE4D2C10185AB10953019FE7D373BF40C2F6D4E36693F118866D1267 12BA7987ED4313E8635DA02A4FC1F7815105F8EDFE8004A8801CC1AFA8D123FD 1768A6C39E838BD489C6BEFFD3BDF650DF48D5F8D99DD5A2E8AD235F2CAE8BC9 C13AE9B214CF3FBFAC7BDFA54CB6E675273330608BD35600775FFB2A96FF648E DF55A78B43CF54CABC0DA8D574CC5C5C62E9D658EC62035EA5028767749E48D5 658212BD39C7E76ED0C6F3E0A1D138A0DB8BE574987AF1E43070F1F12C560009 F48993FAC935EB56A5793BA13C28293601D268B4880F9BC33D553FF3B6A7900D 37900BD3B4B558C84BBAB09B4BC2B14D32E49596DA090E586E28D560903B9744 7D014EF2A6AC4F711A025DBBC841F1C1C93BA1F8327DFE33C803A0993050D590 C7AE262261DB7D04B9DD91F89927161A69E14BB2A48D29578410E312A4793101 B6CD65B298988AB798F45B76E1F58BE24DB207C7E07014E17525B436D41FDB28 D1072CBEB526E17C72DDA00ECDD06394940DEE8BD02CD3C81BFD12BE0568A459 0F53010A0655942C932905FEE87183CE357887E2ED286DC1E89F2F401CDDDFA9 B418F218D4115043892882C09F2E3749D4671E75AB1AD01C78F59FE3F54276D2 A91512C21C68180CCC0E147E834002D7799FF393842CE88BEA714672E1952C9F 7CEF2FD0115B0E292079909A7775769341A7888CE6063537ACFF225B4F396972 41BF46C599D278906F3BCFF81DF941BF5888DE8A53CB0A2D71610CDCDCC1760A 7844F89FCBB892AEA853CF5D967648995559EFE852C95D2EFDA2CF063500F88D 2C83B615618831267BD8F5438DC53C6433CE7347E9C55E103B450EBED6229219 20E979C00B0B9D86345FC3A8EA2B049B7E148A7AA1C859AFE93381DA74CA578F 8FAAB28175D5B57F6A74F9869B2F530009E953913C6925D0045CB2E817A17742 3C5B7574E9BF3BA7B769C161C2496EA2D346B4E19E434120FE92A0ED3F4A9ACC A8BFE55F04D17DF035D01FC0B06182D8C27B6D32F36551B9AA56D61FB6A34254 D0DF918C6716D8D05B973C8BAD5AD52C06EF3C6503D4E0F7F791511C79AE74E4 4B707612149D583C5D96E534CB45F1E7CA5B23642B1BDBC881FD8E4F66CCEE96 7CC0509B5CFB0B3596682A81E682DAF6AE58F605FD7A1F414F62572298AD8491 B76D0A23B4AC731FB8E7682F506B5CC02F7029827FFD866EF4DBF56E07E7743A D42CE65B38EBDEA193CE5B172E87DC88452C3DE192E363EB9DBEC4EC65F53002 BE9E94180F73B53CE1E8EE9333DC86DF5FB2561FA1F9B2511962CBEFACA739CC 38A286651CEFBF451FF6568CFFBA8AA68555181147C1CDBA18C4F5C77BA8548D 2B1BA37E05EAF7F69879C3ECBD02783028CB1A8649842EB71023F89CEB36CEEF A9B04E9ECB0577536B88ECE7C1D81B0D6D5A478F8E92DF83D194759437088D7B E93C6AFD0CC6D568E60E2F1265A6613F97A6C4068C8EEBA70F6CC4E88A80F65D EA7B498395390A74BA57221B86611D3EE5DC4632F139CA8A15E5B9D2DC97088D 7CC65197CD93F4803BE4246394F40EDC2CB4904BC273C597F13C8DC680245A3F F1AF2D7BCE5D69E9CFC81E5E9F46927C5F55C719AFDB2CB1AF2E4D55B0E3ACA8 6BBBCF253CCFF8F02B8542F296CED0EB8A06A88549DC959E22C3D6C48F310452 22B32C44B046A61A4F7F8AED613DCD3C464DB2280D56E517CFD16DC32C83EACC D3E936D2F3A883B265444D818393E30EE3AA59E6FA73DDC421F5A0FC8442F89D CCE98189ECADC080F1973E14012C2B87F6A8289D7E1B8958E2220FA1C68EF82D 01A2B3516F320EE84950A6A54963ECD6F606EB5693F6A0BC74CE2B5AEF26AFE6 7BF5D5357C3D53CFF50F60599F2165B6E742A331B47F46D977FC721867EC9CE3 7E9BFA2149C9E3A47AF0D0EDBF29C1E6D92BFBBEB52F816EFDBA9CFF83AC072C 5FD264F8F24CD5A1C0F68399FF4B29FD77C4A54D8296523413DCE938ABBAEACF 072AE89B1CAE513DF9810B85613549445F8E854424603C5A41EDBB163CB453EB 25FA6960DDBDBC21413639F2CDE81B5A0F4EE54791833458DC0E9D1FE1D1F710 13AAC691F7315CF6D9D01707AEA05F9DB5C0787046216DF3F88F4B38EAC8F8BF CBBA24C5DF3C4D3BF5198A9A0EE6177A4CE773FF468734D3EA32D2487B025FEA 55F529106EE4007938A9BC1726160B3198D546EA98D253FC1506150CA46C7632 9B127D46A69614D4ED6C839E949EC5E8CDFD438AD3240AB009E538516CF417EE BD9B43E5596606DF6C1DA22624C17BF6D873F0D8731DE8243566A8E9B1A64A9C 99CB1F8AD37254D3762C00B8F39CDED405532D7F77F99D2AB86268F2A96D7C6A 808F6234132154CE82C05AFF96A629FBCA83469F69E396CF7287AD378B7D0523 536041FE0EC33A5C2343D7DD645BF1A70B6AF3 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTI10 %!PS-AdobeFont-1.0: CMTI10 003.002 %%Title: CMTI10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTI10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTI10 known{/CMTI10 findfont dup/UniqueID known{dup /UniqueID get 5000828 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTI10 def /FontBBox {-35 -250 1124 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTI10.) readonly def /FullName (CMTI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 58 /colon put dup 65 /A put dup 67 /C put dup 68 /D put dup 69 /E put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /endash put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE32340DC6F28AF40857E4451976E7 5182433CF9F333A38BD841C0D4E68BF9E012EB32A8FFB76B5816306B5EDF7C99 8B3A16D9B4BC056662E32C7CD0123DFAEB734C7532E64BBFBF5A60336E646716 EFB852C877F440D329172C71F1E5D59CE9473C26B8AEF7AD68EF0727B6EC2E0C 02CE8D8B07183838330C0284BD419CBDAE42B141D3D4BE492473F240CEED931D 46E9F999C5CB3235E2C6DAAA2C0169E1991BEAEA0D704BF49CEA3E98E8C2361A 4B60D020D325E4C2450F3BCF59223103D20DB6943DE1B57C5FD29DA32D34C95E 2AB2ADB3F60EEB0600C8ADE15A2380DE10AC5AAD585FBD13097B1A7E8E210D4A EE96785449E07F0C8EBC2EC5EFBFD0897DFDC15E5BFAC9584D8DE95C5AB288CD 8AD8B9BEF0B8E5F887B3B0B331542FC8184DCCB753DB6ACEEF98B85756B988DF CAF1AE0DBE7D37D5F44A2E760AAE3A5197C27B15E32275A64946C3E4D0476FD2 7FDE148C788DD2106F7C825E270588AC05B57E625AB17BDD02306F9E5FC851DC 32A5A6EDC43C770A71419B2C0C8074EF3F222C8A2097CD81A91F333A521B3A09 482A4FE1CB231CE344AD126AA284C3280AAC3AD162CF0EE241BFB4C8F20502FF 118507F5D1B5FD898571015E73E5CF2281085072E00D401F6F59761EEC3E8381 1F26F75DB66C504AB6BABA87D121B1E7040A07AA2FE01F80DBC246CC03C4B2DC C2A715980C52B7F96BC1A78FCC7F4F52EEED5F705E08FC1E5BBFCAD121FA88AA 8EBE58172C162AF409DBB0728F14923ED02A65EA24E5D52B6AD07777455A70A4 61833D3789C719BA92E901232599767E423D5AD9C807670BE0E7B5CFF8256A20 C7BF7214FFE0342809570F5966A2C43E784F35015D9040BA34FEAB6A6F089504 3A40A9E9D711A2721D3F4998371430FB3C94BFC619559B97D49627BB630F4B70 9D0A8FE4E916235335C3962F3CFDB04C4A3CF714DB5E260F4E66FFF2F27CEF2A D4AA26BBCAED23B8BDC98F8F453BA27AD7758537561E766B82DC3032E92A9EB0 125D98A22C5466AF069BF72A9BFA052A8628FEC6A6AD0B711DFFEDE3AA2D7CE8 34EA487038EF50F953B8B4471CBA6FC3C53877EC1BC94582B1123EDF44B4056A 30F49394BDE22CDAD7F01951C7013D26979277D18EFA594E8F4F2B5E615187D9 39E842EC28461B9ABA52020A127D2CB9002A673A435B13C10602EEFDBBA6BD49 9DDEAB9E68D655443A5C2492BA061C1391A51592BA8C353A6F6A0708E8860184 2B5D031D2CAB87D618E9F6F7A0BF3F66B3FD5A25BB91F7F1F5F99CFF56EFF4FF 0A35C55658001ED2E97B26C869292F6274D433A5443179DBB8EE987196306348 3F9E87C6422AFFDD30080C9AC4EE7FE5E2DCBFEE4974331F4AAE479FD8806D4D 9C2B85FC69EB0453AD827A1E767E5C484BDFBF5C8D6E2B3C96298B390F22D757 802643A79D5E29CF3AEDF0E12CFBECA4663444FC87F2027571DBA9ECF688BF28 FF0DDB3AEDBA0FB28447CB4B5D5205F40C1E7A525FD7373392EEFFD910AC82D0 98E71660A1B3227C4A2592F3E853CA4CDF64DF19A52582E167234F4036FAAAB9 5446BE102DE2BF43E82F0112C2A20F15A3F92C6571AC761665A905362C4F8BDF AC8705519C99862CD9C0D75113C4AB5FBB83C880E46B82715B5628890D9103AD A2329638B95D93C4DECDC5E6C588C9D5183EE6FC28FAF9825F02DCA567306D93 5440987A81B51EE7291107A08F201C609FEF91A8F0587E8B13D4BAF74A5A6815 DE9E4441F46AF8E1DDDFA2D611C889614040B144A5EC064DEE4638C04EAB2E37 4CA8F50FB8C4D65BB296DCCCD39F1F554CFBED96670A91F515CA10EF896874BC 8EF48C6447752C70FF5A06F928DB55586354076773BFF7E94C4C3A7A1C1F421B A9B4E3936EC26E0C19BBBFC90F021E877F54B62108F6DD1C7F6D5B8E64FC9362 E173F01BF2904B7E5A08B3543611562C2714099DE7D4FA330DB148B560A9601F 42A84452811CE213DCE782A0D7809CFD954D6BC1EBF2BA4D1B18F50FA8174C96 3E0120E266AD5DDB40B3F6798AC28CDC5C3C4BC34583528F5B5DC8A222B80B59 A3A93DC715D061EC6915E6E6E21A25425C25E8747C60F170D61047108826F96F 7830E220C108B441B6EA3198E33C49BAD8D43086E49F5A2BC7958A1A8CD011C4 49045193394696EC3DDD0BE084E8F2E9F0B9496F035C0DEC1CE11409DF566428 D50043CFF5CDD1092F6E0807E660B68163BCA738E8D98FC6EE3F713164CD204C 0BA84FFF4F33F47BC31750B448603D7ADB9AE92FA91AEBBBEC0DCD66980E6955 CEB425ED07115B24E40F53B29B9D840842EAC691B4F591F866DF27556474B485 1C6F53DD72499847109B16C7093984A6B8487D4F3870DD517945CD90E648C1BB 8A6861E540FCF9D75B984B5009B5CC760CBE297042C240DD624111670B703388 6FE6FC0E89C6B4C88F51DFF3913D0CC1FB4770C8CBEADD4B86393605C0B6C468 83CA5594754411B6FC331EF56D7CD6D247FAE42E966583C29239A8F862348D29 60B177984B6B957E733DB4D275015691D91443BBB13C2DA96097A29733CDB284 42F89C85A7A743338C9DD3BBC4EE53F695E5163E6E1ABE5791ABF100B198B9B2 1C21E2FA2FB4AFE7F9BB2D381260CDD3A2CC05BF513AA1E80ED69FA27BC5ED5A 21445BF00BC2F997B356D94AF13736C6D3B0613EB6F4CD96A685FEB672661DCA 206105EDC3CA07900676EB2FAB37F48D2E8207BDE1463894DA3C5B1488AC1EE9 D39DAF691648048F5D7A384B8927F8DA2BE3602669F71D80686E427F395134E7 7ADCC611BA91AD4B7A0237213C60CF2C905359C90795230344FC3C50A22BD44B 55B2044792509F50F5C21F53D9F9E9F063ADBED3AB99E2613B23334FE8DF70B4 6120F2EDF69F50BE793EE145B9FF9C73179DE640FC2ACEB5C6617F918CEEB762 4CD81E665B2E544864D13230B058717B207D3CC5D6647D5343DB4D0356082392 871EFFA896631A7E0D6477942B632074A9A4EF7B09D4701B1639BAAB4E03A40E 9B54A7A4F845CD63F88831EBFA4FB847847CB98F3455CB5957F2E0A0F5623645 DBB5C5564C7F8B117D6E27E65C0F3EA81AE67B4AE4B201E7C4FB0A8364FE53F5 41A7CE8F834C2C4B322809B353A5E63BBA7BF3B7DC1A85EA700BD287C2BD3FC8 2832B0BB4695FC937FF5EF06FCD87DCE6DE793C2B1EE10E6450352C17726155F 220D550B1759E15AB2C1D5968E52C8080CD280E99D3CCC0E80C2EF8BBFD96001 A226FEED7311EFB4B67F424B557A877379A15BCA54780F0CD2CCA00400B9B39D 981C6B552AFD2506D1B23618FA9AE6D8143CD7198A8482CB416CCE62B992347F 337D505A4078713BBD91E5535BD58EF0351EBDCD749CC24D4AD39F8CECD7D6C8 139756680A4C03A58B3374CEC658D30160AE4863A3938A891BB59CBE02BB451B 1BA4B2B6E68AB61DEB85F95E3C909B8B66E220B9F18280161C279F10F7093CDC 100A53D542F071CC0A5AF834DC1D18738F5DD62A5573E884E1FFD22BD810828A 1EA47F8218C15A2E97CBC609927DA3CC2B802EA4A0D7EB57627C135E3B065905 F97597D818A2C5CC6F328AD25AD11FA50F1E4FE637980B7474D6F85A521892FB 72989AABEBE02A2D0EFE88A6F67AC29F5D8DDFEDAAF465C439983C6B84389FF7 A6434462BEB7B07DBE4BBA61ACD4A60C55B5C0AAE527DE381DFECA2E6BAFDC8D 310364ECB42CAFF72BA93C067B2F02D1CA7C34AE7CDC46787A0E234C8BE8A928 7A6F3DDE0338FAD532A9886E8E3525B85DD39364AB03EC4C0DD25DC179CC1989 1BE232E387E857C78332D834679195E10F1E7B87B7966DA3B2238F53D1E13FE2 8F55ED6A92A750C7250C9B91E29796621E7E9520373214D7DA81B2875A986D33 80382AFF6DE1F829F048E57664D9C4ACE91E4684A51023943A4964AB5657D610 3A5405EFD4CFD1EBA684243E15093C9667797BB47617B66054EE02C41FFEC45C C1BAE8AD56B00D323FCB1D2744F061FA16E161988741A319B1564E04BA210996 4F9F02A3268CABE450D166A763F5284954564A1C86B76544C5F5ACDFE0D758DB 865A1CFCF9FE8CD5F9C3B2998C56468FD52DF8EE60C6935A3D221EAEC7714E3B 301371C7DDA0B03A2416238F2B47BAD3A2C5021C886DF51C695AF9C87A864B48 3BB3FE0B355EED5454B59B25A0D8A1B8CBD356C24F64D9B55E16C30C011365C9 1E0380753BA3EDC0868788D5F50B9353D0227BCEE1BE36998B2622C0759BD66B E4444250589F9CEDE766D8B940770CB6B89503E925B35C00CBEC2873D2DC4A29 0823FB7A3717B69A7DEDBAAECC067949932728E89BEECAA91DE3AF9BF070B9C0 30EEFA8C0A55C8388CAA2F0515915C98E67FA095BB98967D14B0DCAFA9622E4E 2E0EBFC768D80585ACDF28D8A5C2B6EE2FE7AAF62FFB90F569F84A0903996DF0 C1D5723366C436E4088F3E2BB9B47F9789052A71CF5C49908CDC1DDA194BFB89 14D7E3D7D4D72A150FD6FFD8303E9DE5A97A71B808B8BDF2AE466F31BF5D7A4A 44F81230BBE2B456A221E2F72A8B59F8FEA8D31F8A005A5BD93B9F49CFDC3DCC CE2B67090460F632271C7157BDC2F05BC2749FD562FC28682A616A52D1B67654 DF78B7843A9EC26A7DE2EB168F874904C2915B97534B2D4D9F74A9573A771D34 9F7BC855E8F794621BF6AD471BCC347E2DF5F620F5C209E33A4CBF1EA85AEA87 4492A77342DD33EF615FF34037D660B713C908786D9022051B825226545827A3 2AD1B05D654DB6E6D261B4E8AF0933AD1F0FCFC7201E1A7C1B4199F160C38676 21ABA2DDF1CEB655B3EC3226E0B122976EEA998F7A5241F062E54AD1DFD6ED26 47C99A439E0AE95415059179867CDD3F0FF751F3141309F40E00A6C7C28433E4 F649BCD5DAA64177580E05C495EE7BCBCC5FBF104DAF360CC2711386655B26F9 D349D887EEB32ADE595241560FD5924A1745A22E6A01DB9C285EF14596EBFF0F 03F36EB2E0A7C3864F819EF7B0855121292D49482F046A55CD7271FE03F02EA5 886864D9D8EC22A68C23089EAEFFF03DED6484D8C341861EF8B6FD3C5BDF5AC8 352DA4E13A1E30D0CB71E090E9CFB9AB2CAFD0CA7C34AE7D8E3B2EB4666834BD 9CCD1AC2108348AFEF6071796F4BB2FFA4A67ED917E76A109FA2DC2A30D744A0 9AE653A748C1D18FB52595D84E87F1C1FB6B2F32667FE203262C66627AEFFED3 92B23861E5EB238BB4EDCE09DAE1C65BAFC198CDD1B45D42CDF93E16BB82D35F 821E9E49067E966AFAB2AB52928F8DD6359984071FC37AA652FB834A09E5BD93 3AFAE161140E74C6531E413E8FBBFC42BFE8A464B71EB1D8CAA93B33D7BCC3B0 47C7EEFCD3E9FCF26FF9441DD9BDE68D77AD7251C06BBB9A2103049E8827CAF0 F26BEF33F656A690235DEEC623CC519AFA82DE2AE16FB99F780FD7D8290DA40B 9B604AEF36B529FD184239E7D50561A07428D28E51B55546590A1AEAD4B7F2B1 AB8C5B9022C1FA03E33F8F409B24911AB8BFCF6EF4A8E415263C789F89063E71 C0910DC20347469380B7FC1EEB87D4CED7F4A361E58B61C91AFCABA35C03F978 B9FB5257C31657EE48504C355CE893FE3C553274C641DBC4004F5D5B879CC5ED D3F21F867F6DF054127067DE86189F0B59A1B90FDABCDFEE61423609D888EEFD F4A1367129962110C651D9481CEDDB8C5C2576A59AED64E95F7ED042AEAE2F7E 81AC0C408E593DC30DCAC334EDE9EE27D932B98F040DDCD195D6155607DD2038 970EB78221A94C52BD4F0EAC65F1FC10E5DAA93C17266F351669CAE56F42B68C 6D01E1EA03AE554D63CE76D800FDD9CFD89F80A241EAEFF7EDFA41794EA25CE7 97BD5028464D2CD45B53834B4AEF8BF0B9E7C6ECDEACEC887E8790A47A93F668 A9095E5FA1116A122C0E5B74E2226C654D3187C6CFD8807917820423DA3EC1DE AA020EEEF2280C44A15209EE2F3FC1776875308CEAD38571E7BF889F287E4594 971A83605E0B4169D4A23EE790515223DF8724054EDAD905F57918FC0BC64F96 514B4BF7DC9BA79E763C22C977FB6146B10D26FEA1BAA7BAF21312F78D1625A7 8E242D743471DB5821408AB786E4A7EA9D35E30E85533C617689F95758FB2C7C 392E759C299DCCE36689686DE0C4DCE32649493650BA194A6208C5EAB670B170 3F2C70BF0EF0E3BE2FB0A79224FF4ECECD6BB3388C6D06867A0E5E3DB93C1B2F 464C23E44D3132E7D4086E3B59B1D13F49EB4772DEDF8EDC4F603217233FB7BE C13C28648E9AA51D53F11FB896839F97AEDD8834BCA53CB0021AE91FD8E95E2E F8A094093AF556B9639F508A401542B06821FF9DE1A745FE9AC5CACD5E8E1053 911442FC15CA5333751ABFE2C617D38FA1DC332BFEF44AE569DC631C93EC54D6 261583A695F5A392867A57F59B741EFCD2DCFECBC55D1EA5F2317601C9DFE9ED D1EA466210FFA905A8F85BD58B98991BEA58DFD1CDED5C9B086D42CCE632DADA 147941917B879139E016B0DDEB8446BA017FC8EE5A354533D667B0835F5D027D C2D580C16B80B3D05CC92C0465CAE077729F0A15B2DAFC89DCD349B3F81D0516 C65526EB5C10E45A8A85D716EE35FB9AB201FD7C89ADE5AD925A174169DA20FB 61E96C73A143DF964C20589EF24A0FCFE6195317F2FA0D2249C0D8E649C3D9AD FF13332EA2E4C9CD36D8443EC8F027B61CEF92C6A6B72DD4ACBACC16E429A9A3 F5F29C1631360E32F8C1C93ACB22F810B86D2969A7480F486F62F8488BEEC74C 2C1AF13BB92BC578E8CD30BEA6BC8CB68ED730F54CED0167605FA76AD7B7E88C 7AE7688E598F91C471BD65A542E96D64B1EAF19FB4F1234308C48C2DC86E2193 11ABDB4C6189C6F201627C693691A86DD07FF55C30FDB3F72381E09C6080FD7C 9182762E5001E30F52A216E0B71E4D2D4E2F3B20F95DF3A11FDB2D2B5B5FAA66 C46226D5E0C77066349770514E5675550FAC9394FB27CD2C2F974F1FD58C04A3 1EF53A8AB3B2202CCA1CEFA66228E1480A0709436C44BD3319C40CF888AE4692 5DBBB52B15CF3A518F627F672135A24D5DB9B2EBEF04C860AECF231EBB5A3BF5 6DCCD5E72FE4B6DD29E896691868A7DE4120AD06AC573F5608B8449B38E71CA0 EB5CDA3F942482EA7973661170F81DC88D54DD5B92323F46F833DFA757107E9E F62A47CC50FAA1B68ED535C3E0E1073532A05ED339C8D70B3B9864808ABACD23 AA95E9FDA43D54C66A675FA074E0A5B8777D3C07850A09087F36852B5351F35D 8BC4DDFCA35CF29CD5E3DE118A741FAC4DED36847F2E2C6CFE08669301722D94 376F540982958074E7F1383C409652F6C99DA39FE90B38221E75BC1ECB93ABF6 B00F410A0C5651DB418566AB350FDA1789AFD88286AF3BCB42B98386F7BC144B 02DEB8940D20A6B3062F0C4244EABC50923390064F1D027A8BACC3DE45156E56 4A942D1B87F1C4A76B0D4D6801AE792CCAE3009BF25368B31B6AD5476FBD3BFF 9759EF463EF5E78E10B7BF64005B2ABE0E8813950A08A1808587A98E0021D0DD 751AD515E8278F1A0759E85D8A084490BBB0F8206484AA36388B1013643D3198 3509078847BDAE08E76FA5BF3E3A73C323CE093DCC148E3C02C2DE1E26C94D5A 40EC8308ECB02FF7DD04EC1005A2A0DC74D4E587F10A3EF349E828F69FD38962 2F0C74D5DAB3ED6CC9F97008ACCE74C086A503948DEF1AAF58FC8BEC703CD360 D32098A56AC776B1BD08442052A2A4EF6C8798F7CDC102AF1A2009657254762A 0793F79A39DCD6ADBAA5EC84A7ED6018BBE727E5D477893D84F157074B24C13E 8D4881C7DF8ADC13EBA0D89745EF93B7616EC5355600BB0D2B630AABA3CF2946 AFFD0B2B724EF0F28393F2034B2E69DA5061426805353EB4D80E20739BC4C510 6C45275B8261DCBA10DE1D104B12F46ACD230977EE7D7D1D35D2814139E38C4B CA6937CCFA653349B1EF64A98457F7B4B5D8F2978F16ECCEF7054905863AA46E DD524CB33459220C71E9EFA7845A3A760A507B3D3ABC525B35930B613710A13D 098832C58EBBC8B0CA6AD516E6385792C59220331D0922A1F6F838A8DE13C337 900462F952EABBDC2EB1FBF94A66186C177501453CD3FE3582073DD86F04406B 41B6AEB440DA475E13240445D46726A6D45185D56BAB8807CEC8A8F7CE1AD149 7CE2E1BB5DE4E5B9592241DD136479A65905FD0062C91DFF7349874BFEA5D9EA 2F610ADB9AE7757B2307A1BB9D6797D9F9C4844A59841C7C7682105E23A374BC A91885E7410F56F1126D6062165B9EE0BAFF28C2B54AB563630AFE4B69FF032E 7EAFC808A831EB41785EE4E3C12C9811617774408CD94DB0AA8DD8DA1FAEBC92 63DBB3C52FCF345D7BC202236296A90523F67CDB5A61E1ACED53BD1516DCEF3B 551577E7F11E3827F465279870CA80EA5D9FBF65DBA894F62D4F97FDD32FA210 7822C03144E0A07554DD1E3A2908129D592215A0832A9406021F0B0AD971DDAA B6F2BA7A29B3CD95F342FCE1032955669B0469E3561D038C6FC92E4D81CB7723 A14C83E11A4E961F1FC986C55B7155B85EDE07CFAC982102B9CC9B91EFE137C2 AF41206F504F14DD921D63C229C8B7CE8F110BC23ADB5DFCE07CD6B383450430 CF867408666C11C1BF88C463998811CE2124971A52A5FF779385EB4DA75B2372 84C99F5B28FF8772D7252FAFA6739687225705994813636710D9ED94A70C0FB7 BE007E12DBE00E91A5AAB4B2CFD7E622EC22111C2438849F220A096D9891279F 0DDCC564D440B4FF85F92448D42014DF2B231BD755943368A9554B60AA09E892 F91A4B3291F21C9266C9CE3D5F6EB1C5D7524C125C86A63F7AF293C9195D2CD0 AB55040AE154F6CA8B234FE0178E51D2EC007B9D4E483227880E1DA76448326A 47FCD6200A498E1163F1DC4A62013C0F6DD8A3E8E1A6CC6E553741DCC6D89F86 419D4CE4AA05D132DE2C8C89D0EE918A4F36FD3E700E84B5F4E57BFFFE30007D 304874BCD800EEF2627BAF6BF458D18E9FCA04999F179ADB56240CBBB59EE098 1B0F6A9FAE71AEC1AF60D163801D299874BD7F4CDF7B8B417748F8EC9D91CCC1 A24CDB65E06C257CDE0DBF034538E97511324A8C312CBD69A44CBBCB3FD208C9 568DF8617F833C28404031BB7CD198E97C75921C58DD7848E70EB7A5CED3C960 C9D5E6F1BF20701D53C5A6D3E3A3FFF48FA93E7D9402419FC877204286302C8E 5767D6881C64BEFAFD6E23B65360A152F6C645821D85867A01278F81AED807AF 9D5439CCC15BDCCC9019329D309F56AEB8EF35139CCACDC1212D0C80BE2F454A 7D8613D0CF64AC5BCC79D2F8FC26B0C96706BB7AE9204AA9D21E6A91B1CB626C 3A722F3C207CFB4CAA6F0597F4A99C62B6D732AE40029F2BBB1FAE3E5EE64C8D 83D706EB5FC440480212CDA3A5A7619BC0B8CC07A329CC9A01B74A0E596D3574 6ACED21B6C25737D3DC6DD65398CFF2C08E3F5D0A07DC4C245EDC49EB0447515 B51C981DF70188977249C80C55AA5E566B3B90B798AE5ADFB18F0A4E99A9B2CE 197EEE02139A147ED43E4879E2BF6B2B03E13DB99D69CFA4B68CAF474C2D2021 ED9831AB41D35E3C9EE64CA274F02A6967B0D99B0059B01BA4302DACEFBBA311 E555A28BBDCD4CC89AC82466ADF5E53C662C839F1383630F2C6D55F3864EB477 F1BC01972128298DC5AA2E9DB93B71F701AAF8C1A0A01CC569B27D1D942EAF98 2FE30AD717697143EB36459F95151A2E9088FF2EB23B5608A831AA8B4A68370A 1991CAC1F9E58275E0131EC45670922AEAEA7DAFD703535495C0A3B05612F154 8478EB86A56C529625EA556A96BC864E351CA800EF635484666F77BCE8BCBE2D 8EA485D5BCEF24DBBFD388AD874F05A656D57B0F558DF3791AF685DE22D49516 97BCE901643EF29DFB9697D9D07F95D5272D789229EE6D54CAF42EAFF743CB90 DB835485B9C9C14358BA686D966715015951961849D101377C57195B410F7428 5C8E834CF6AADDCDA4B34007150615BCFD18AD6647571158E3F38A584EBA70BB B0271278E84EDF37B92671E7DAB1639CA2A26D5F4C0B78BD25392DD3720C5877 3CA2BF6BCA285BBCE91987BA20826B1DB6C35253F7480424B4ADE9AF166C014D 1AE215E95531B250C3F3521FB307C73D9CBEB5684946A3CF4E9AF089939DBA4B 223A9AB0B05CA3B0D56E3EF39EBCAEDB8A304BDAF7DD61B19C7B287EAE62CAC2 FCB101A40DC768D5535EEB54678E70AFD52D5B64DBC0CC31B7CBC274729C142A 8E4A6208AA8E04133D32135D9A39E8C27A4C33E390127D56E0A04F860DC71FB6 B5FB312692DCEC05CCF3C82733E3E4296C1C773D3D002E0A62988AA2EDBF592D 843BDD6A53E0BF997820FCEDF5389A7810DFE8F318CB8CB57B8139E89310022F A8009730371DD4B601370353A7E13321F7E48BD2BC2FED0958FA79C3169F77B3 81F08BBC60B5DB9D199625D662ABBF927303D581C42B3D4DCE6AAE53B44F21E5 BAEF438D3D8B1D5330211362E112B57621D239F15DBA3218DC766DA4F69C0299 4655B7609AA16FC4D34BA6C2241CF205347156688822E49413ADF1AD1A4A6353 A37DD3AF58134DF7647060597FB335B0487408E8255A9E624074006032C0CA97 D7CB3D71F15003232345F295912F2823188C023AF1357EC1FF6B21D07F094A20 253448357D8878FC7BAF2DBD8CBF818963D03AC6BF57E478923B3B8026E52BEA 3E190F5763623D756A83BFA4395B83BD32151A5A5B8AD5A0035DA747F4D30EC5 4591640EB42C543E36EED9CCD63F31B22BB73CC28C15D0DC4B547FB66FA59021 0323BA68F865FCD834833076D435D1A81DA3E600B72AF0DDD4EFF63ABB930DB9 96A2390EF34620608B262124D7B893F7ECA512E377EE9F0B13E83DEA3299039A 087AD9069C323AD2E15253A51335D09911A4F4C014B27523FA6C95E2D6D715F8 B719CA2A15FC18BB47BB8CE957DE2C232F5DFB880E7D78FFFC6A146031A2B225 BDFE8648559C8168E1F55BE95DD5582F3902AE97F78108CF54F6763E6B0D3251 2172ACD846AA5A59D0E0307CA2395AA57D799D252CE46AB5DC996BDF0A529433 68A9554B60AA9F644CA784026E6DDEEDBD15D21F8F49ED41787512992ACCA00A F41A6D62F598B096436A84628202A0AB91D48A781EC555437E49F4A6613CDEE7 12C6AA02B2204BA33032E92F13B85A9EEEEF323A3C0CDCB70D2324AC8F7733FD 8DAF20A9A984C7339D8A88990803C81135D87818C21C290EF9B8E5AEA267BB54 96A6184F99C72C27F528512466915B2D5F4C0089A7153650ADD04C9E3497DEC3 81BC8870D70D51867E6A49515F8BE6BD0177FB3F07D3086437BB640594953C05 D0FC456F5F9D57F44256D3C2DD059D73A112B46EB2518FFAF8B4758A85128675 33622E9E2EC1C71A67F29CA9939E3C0F81F9CE39176E9F7B3ACC6427CB725A0C A81A2A598A98D394BC653D83D1C98196B98D2A0F128894EC72EB50AF14C2AECE 5819ABADD58846E3952E0F8555C9E3AB145E524A40B2687C2A119F3F8FA10B8B 267D4F21B814A7F5482DAD0EC7910CE0B150BD0EC62989B4DEB2A9755DFB6DAF B0DAA81CA8299ADA8679B1AA8D62A424472B0769EC420526E7A33556122890EE 64CE7F6443E6260C8FF369E0DAD6F5CFCF51E5CBF02430AE95042AD99B52D79E 5D4538BBA4EE089461296646260C18C9E563A4CC23CE7DC1B5AE0022B644115E 3F66D14029D100A31197F7F632AF6E7E5C40861ADABD7D4F345FA571429F1516 FE4C112F0A9F39127F9DD110D424657ADA74FBAA1B415577250995C88563F35A 7F0203F810EF98F95D2847CB60C230103EB89BCED1DBF6836360F959CEA31ED6 8C0329D7520DF365245629E5D617BF59A3FB5D3894C9F7BA4E0C213C8C30481A 30B2A79307989D8BE6D8A24CB82B0F0C94A20559D94837B24761D71DF8701B46 71A36B2AC8B13D844A44121C2940E84A8DDF7455A1A795BADA58FF7747A46BD5 9EF88FF0DC1D353475DA68C3C5601D7810DA358729D235F5DC3F17E245F57FF2 181D8E47A668107DE182B1AC4D50CFBCBA8379913BFBC881FD6FCDF02D6A77B3 D0505725DC01BCBDDBBD51B823F520BAB4E66C931F35376DF40225AD6560D8DC B8E688068641AF94C34A451EA5BAEFB1ECECE678DD7080BAC6C01C364EB19F2C 37B809B101FE2128740D99F65053B7EB0C3AE75AAF11BB055619238D791D35E8 58EB01184A3B3B53B91F771C23FE6D1FA559E564D566BD42146B1AD1D1A3CF0B DEA3274BB60ECE5AB35EBE6D59E5ACA6731477CAA5B65591F8093CF02DE38363 1A4B6DE91BD9E06287A5877FE87397010AE5C8198F9803334607F8AAAFE562BC 18F1939C99EDB214D782830A16BA2C504BCA669892DB7B48BEA9BEE4D0F3A127 18DC114E29F2CB452BC82DDE67C8525A431E724DB13FB38F639B6DBAE69863E2 563DA305AFA8A33DD8BCBA37C88FDF5DA33E362815179B7955DE9512F6AAF3C3 D24411F6F1395A0B3349977B64D94756A121A672516EFFE08F1CE477F0238C85 FF7CCEC19D26C554C4C8A02068E5A1BBABD8313E610D8A5E98088E15F2D22824 00C7A708E0EF8F73E54046409BD8F6EC9223565B6003B04D0603504CF8D73C67 1BF57F1281DE2C3B265F1389FBC50999CA4EA3962FAFB22CC1E50CF6533D6A88 CDF4E0C8D41CA94978C3CFCF01B17252587606C2B7ED52BB370984C70C99AC9A 59FB4EF6FAC61D90A3984D8B7F2AD49AE3322DEA0BDC9E8738A562BA13ED25DD 971AE632C66B5C22993C654E02564181679BAE8FA4891380B53051F18FB79A32 0250F3D41A724E1D6F4C2E934035BA0CE64A7257BD0A5052618D09B1E766342A 0E525BE630B0D62E06056B892EC65A0E3A06EC4051EA3C7F57119C6D238AC80F 810F81A71C1B87F68AB76A258CF8B1E6E7BB1A916ABD2D5AE0887891443A557A A6F92014E16BF6F0AF3D64BC7970BC5B5B5BE251E484F9E888196271DA8FA7F4 6C4A4B3A4695371BE137838DC082C57FEE7603876CC2005C5AF7538DE81B5BB6 FD2F855356F863EF7369A5540E75D306865EC21B6E1294596B1763C510A1C1C4 1C027313A937E419A3ACA81B1469730B8B2770DE229BA8B30B7717C386DCC946 32A06E604436F47CAB4D6BE8ECECFF86F2550DA65567A7438C4FFB7CC6A9DBFC 92D90BD3F7130C987B6E0F6E088D38CC96A9FA4BF59DC3A967025015DFF0F01A FF570460CB87E93611E89BFF8E865744DB225B55937A35144207DC526F24B147 ECF96A71590A3AC999DA8BB912E69E188537572A1263C2CDBF50144048CD1186 F2F1ED9BB8AD26798767A01309B6DAB0E463CDC4CF12F6BD4E5EED4DA7D30330 D9DE9A612292C55114E45DE837EE2977F04DEA5BCCD2E042B56DA1AC6591D3C2 F8C7ED45E0402EBF8E491EB92EB36779959185818D4E36BF66999DC8124EEB6C ECA644CA2DFD3CFBE9E6CACD173F5A11A8D43BD8CA9E0916588D8ED2B5A80BB9 32D8190E925740AF97ED93A286E0C52129AF729492F40A4CD04F3508AC9A0B73 024EEF8CBAA94E3ED014CD7A125E1D7CE000EAE29BC17723D981D85020BE4C77 D32C1E4997BA0E3BACB31C481FF2D134AEA338CBE40D2655784A045765AF1AC7 DC745434164AE433DBE64F0040282F738818AE1D058EC43E09942CA2CBD6D3B3 819E39A0C42D40D83EA65764A3F23B868422B0DEEB2C2E0DDAA9910EA4EAEF53 AED0B5DB53D56EA00546477324ECAFD9B206B15581CC3CFA2A5075611FFFC0CB E2C4688A1D32155227BBEC788978BC5FC1081F4BD8B9CEED874043BD37F5877C A832D05F499EADD84627A9AA3D518BEA8E13F1B4AFF5DD6809EE7D51FE5378A0 4355C500256C047538270990CC3B190014654706FDB9AA4DAFB16D869924C49C CEC37C836A086230A5AF51AF7B2A7A927FE330E1992A31CE923CBDE75EF8B9FB 9C042F8703AB8248ED221933AF2833520663EA460F2C08F886D2E55DF9EDD906 69891183F69B2482433AC7E741FFBC029A8161C9A292B0CEB72C3C7EBB2AA537 6FAE8CA8796B602930698CC8ED7FE2C8914302C9EE5E165A792773BD580C59C2 BB6DF3520D4F977AD4D5CC015540622DC516ECBBA4C55756DE87E0111E616FBE 2E26C33895E7EAE854A999332DD1B883EB9CC3C91099948C93CC6E7E8D5B0277 DFBEF7179BAD01461946FB6D994E4D498AAF9E79C7484F41D9755C528E4FA667 728631532D60295D216F39AC362042D83CC774EDE09FD1C08C1D66243D0A8CBA B25271051739C70BEA35FBDC65BD0FB28C5D7E391F9F2C5D74E43930D0252007 E7949EB4D2AA57C5A00FE80F797BCBE82A7FEC8442AE44725B2B5EBDA96259EA 16CE76B89473134D377C10BF3877BA4FC55D6A6751487475414BEDCD2C83D19D 2F2906BEB818AF1F30BD5DE5A3CD5B99E17095BBB935D92CA0F737CAFADF725F 3E4B532DF393AB73F7B7573912C4533A5DF797B0176AB306E0A66D0DEBD32EA2 9EB0C3575D5CFE9F1A6282F267C5B0C9DF473DFE46B3FF1105533A9C27C836E5 719E9FDB8C0AFA92E1ADE0C1E966E3C6B5C91E5A76C64A3DCCFE3D938E9E8CF9 11A0B459E959A8F5D6CD017DFE30138833AD7E1CC8A97ED164F9570F76828C0E E4A853BC08464081D5CCF8F807FD81CBB938A8809CE6E4C2095A3BBC3EBE6798 2F9CE4753F94E3A20B81477241F04F7612BE6DFBFCEA57BA3ABBDDA425C77C71 BF16A05A7583928E919574DEE3790AAEC83B67A224F8FB5B2C67FE02E21FA914 12ED55BEFCF296CFCE63E510DFEC87E4D90DC9FF43F4274F81162F1D8B304C5D C033CB2DEAE532EB2DE6848B629E09A886976CCACBD0D05A38DF87FB86DECF41 761BC937ACEC7E603D07210DE1CA7F253AC9756B86137C2BDDF0711E368694C5 77D84E65D8387FA2FDEDC049180D8D0C14DF225A6FD3192D540B45821C9F9F1D B7191C6C5616CD229283D298057246D8B03C3437158427583B71DF69E70E6274 B501F39F182C428ECBDB75AFE6C1ECD8F86E469FFB2C6DCE50541B274DE66119 BD4094C7F9843738563A2E51DAC431DD9519100C562A875ECDF7BEE2EB5DD0D4 AF0929E11BB2AB01CBD87081C6908AEFCAFC2C9DDF3FA2EF518A173E7136F71F 679E24F7481CB645B8B4CD7CB390F21460666213D2633D275F450EC063F9A703 F71474AA0F5A1CC1F421E81029A19531D3D77593592A727EF9CFBE6E63411914 83092115B2FA26C32B4D78AE8CC6E8339137EC54D8C95DA9C9A0F46132FA95F8 2501BEA17CB6215028F317D9A21DFD230AE889FA4B86EF4E15EBC2ED40BED5D0 A3C5ABE0AFE64DB73E74070893ADA8AA3EE91D1416A0BAD5D0EF93A08151E61A 0CA196A3243CBFEE65201C667912F60535674A5F97DE30E8A1C130B2375821FB F1D710D30378570EBCC4B6254CC602BE8400DA033B9B840846BDBFC0ADE77340 2EE0DAE40B38252D78B6144D2739989ECCA6BEFBF5BD5BEA570EC67A37CFF126 8C9961035F5D6BA47F5BAF3F3379E24DA119539BF01815DBE94E8BE7D7832AA7 E7F4F688248C980A1207E3F01AC4DC1FEB8B8EDB92CDB79B345F6B95CF52E40B B442ED6AD845C0D66A84019C930C7D60CD2777BA8AE9DEEBC88EF59C30974DB7 76A263BC968DA7F5792C6738ED540282A159E5DCA4898EB14FFB356307693A4C B50B844599309C8D6B136620FC761052881F2676E4CBF557DE1D17915C88F096 B644D8A63920DD4BB365EFF9BB1D574976B9697D298790408FAD69F156914927 3615C68392F95ADD6BBD6D808438C4B04D1C899F63C2A7A4FF6EEB430BC9D068 20C5906FE8442F80C3D49EBE739D11D0AA19613B021E2C380AA543A0B0940835 C4DBCAED51315F172F0CD6C92ABB048905360EB3C01FFA1928CBEC35CA2D216D 30C1DCC6B39EB6F88906894AFC9B12A014075AB40E953BE9587C3479F258D68D 76C24E26E24E043EACB72C75E805E0CF1ED7618E00501F5CC3584D1BA3007497 F3382CD0DB0F8754C126BDAC986FEB037E1F140A147B7B687A530ECDC46770D5 2D2077509C7B47A30BED60C85B57DE2AE8F88747D3565C10C3CE126B1664BDE9 B705E3CE3C058CDAC072BF144C6E7EE4E85CC48EF0F3BC496247F8FE5F62C210 1497D22172C25B0E108F04C7E4AB7869BB664ACEDF8C85BCDF24B2910F7F9AE5 31D72526A70944C7B04BE5A97EA317E20F4B45DC6F22A392B79252A131ADD4FD 95422E15840BE61D63377C8A75651486A90BB7248CB5B9DA07DFEB369E410AAD 540D1FCB60D914262CCD6B05BD9EBA8F71544975E5F59F8822DB7BE9BB8669FE AEF54A0E1B97507B2063734BE4E8B4FB0B0D671D0C384E34380F9206D5B25184 888BE657E7E2FFA7F236026988D3E8E17DF79B054DDE4BBAACDE400AB86F04BD 318A9DE18508CDCDD3C541E5878745BA24786F30182475008E6A24A25FB44849 8FB93AF99CEE2D16D48F78271D098694438CAD3371EDD8109E148A1E61994A96 C65254972D8C95E78E72EFAF5381161659AC359A4ADA7EDEF98B120C233CBFE9 D636DA694298A4A13036FB1E69DB1102E04D86FAD39FC67E4BD49E60FB846BE3 1FBE83C9B61BC93E513B03A7057A76ED4BAA933802ED4A3534DB0EB86ECC8C0D 7F91FE06D096AD7B58860155B96B4CD17DE4DAD563202C0B2368EDC74639753B 8DB7D0E75CE94867D147ED5586C203F4D55280077E091534958E6F0FBDCF8161 714D8C52EBD936138CE481BE1F3BA3481EA5BBE314C48D8F745F55093B04A994 365B0159053543B6083B224A2023A2ED51840ADE9E07B2D64BAF836B3BC5D507 0AF7B1650C82ACECD057A51AEC56A67BA2FF8C57439091A39538CEAF2C66970B 02F8CDBD4F670E2CCB519E875AAEC967E5AED30AF7BF4B573C04A62622CD18CA C12DE5458A30639AD3953B4355EB96CF01709E56A9587C28187AD2BAE452124F AD88841459366527A8CA1227BCC40F28C84E37EF4CC622EDE3EB17C19E70B405 10EA6C7B0DFF492846A69DFB565CBA5F1050F581C9DBAD0CAB9D30A5F6C4289E 67C1A8FB97133FC92AECC49499EA0F73E4DCCB9D051AD04D3BADEA35ACF8CD14 DCCD114A8DA09231CABFCA840F9F3F71FC952B375279937C3BD845FB053D1E66 CBBBBB5E642BF11E07436FFB62E64913BEA4EB8AE036B47F4088A321CDB81264 A0530CEA57149B7C81A1BD41720AA0D45DFF2FB3A51691D9780C2938B1FEA4D0 7CB582941116B31AD5490BC78E44F2D05BAB2DA69DDA6CF49F61BE464D869942 5580A57D5D4A68C8BA8F68D6142FB9CEAA01ACE735FFD1041C3F67AA58B16EE0 2365C2A87BBF2E655A597C1BCD2A25144DB0E76496CA6E2D834464911B8AC6F9 982F2A07867E47E0FF707C55BB314805C5C919B53599F18E3864D11E8D986D07 D23EF6FBE49E8F5E281245AF9BB35F55566823EB367B07D5E663E851FF32FFB4 678BA4830C6B55A8A0092122BFFFE0FA8983E46D042D8DDC65B48A2B23F36B92 4564F31283626C92D263FD684E4C8C23F4C66F5ECDAD1AA9418938AE59A17D4F 1CF8E0DCD927633984DEA2C76C25C0ECA7118A265BB3F46F0E37E9E5B876273C E1E7ACCFC3AF811CF3D77B33E33CE878BE0EF058678837E5B428E75591CACDD3 2244FFFFDD3DBEB06FD2963D59B9AB396B98E7DBE7F9E043F84280887A81F317 2053F24C8887F5152BA47A90F6CC714E6FBAA1BF374E54E748CB539AB8656789 C589B5DD0EA4AFE68CFFA780DFEC1BD1E402DB53B6877EF41B9A7952F2247826 618E45A1829B69F5A423C815267CBA171776E498E3C34DEB4B5674F9EBD166D4 DC0B9997EBFF3A8EF4A64E629906C38EC6A65F7EBCEF7691A7E190E543650090 727EA034A00B8586A870450A11F27808C57DF7ABBB286A0DC6665363737386CE EFDF57DB29BFAF3A3F95C63CAF0A65E5A0DE49BA69C9FE01044A66EC70A97DA4 F2862602959677A3A5AF917C25A63A15F87C3252DE48F57AC9C18AB7C6329DD1 19BA033BF928212EEE93D35A39485910963D4F1C3B511C13675D849A049BEF5A BC52B6B3C40E17DE11546FCC53B21B07B99979AD9F7A70E328E7808909A2AAAD C2126DA7FEC2A9791FD456CDDEF17DDB80AF0E901B4CB170B0C0ADD8B83FF065 9085F7FFE7526D38C26ABD41758F104F838B4A7C4980F40C7F32B7E84DB813DD E23842C0FE738C7D903C13DD1644D600DCBB42954460EDA7CFF38C2291DE3742 6478B71BFD21CAD9578CC07A32C491F31F9C06908CCEE33AD7486BA0385D1CA7 C6B9FAAFFDA67085765C23307A44A690992944C3C83321E1899597771AD157A0 EEC849C0377DB98D222E0FBD26B695426AF562627F6FBEEFB33A968A253C5F06 C5C446B1D48D6992FB499F502F90258C3B06ABC76121FEEE9BC0073BA82241B1 598F22DFBE70609BACCBED6CD557603A00F8E5A581C8477941BEF2AC62AF07E0 AB796A6CBFEF9C7E017B2B535081EF5A67A7D7D4427BF350A14E3850227D2F6D 538F12F52DB4AE47DC72E852196CF5DC98C788DB1171118E2F9E16B8AF0AAAB2 9357109352AD9928E16E2F009E289C4DA1F0896EE076ADBA8C3786C88C1EA44D BE4A572AE944FC9DE35A5DFEC8F35DCF4BF3792D423B53A33517E0685602C88D 7A8C85A713982FA9AE6EFE0AA85778E170B504FA570012DE97129073DD7CCF36 BFC954628B1EDE13E94D547B1570F927B44175B47063E61F056AEF33AEC0D2BA A27B3743E6DD1361F84E186328725DC6F99C40B22F6ED1036812661B0A65685D 151A477F3EC47C2A220B9DD8306AC5E7E664A7A8E20D9B8EE58332A5C6D83BD1 650ED7C9EFC793B960637F99AFA889EF4CB2FF479942866EE61B3D0DF4CCA75D 71B58A1BB5B07E64F3D32BA2F74508C647AD7BA7D0CC46B22A52C4500BFC43CA 828146780E8BD706934B8AFE9E704F646AEF557065625484AD87C4377DD5BA95 5159C3BF0DC175B6F332325EEB99E8208DE10475E05784F6217A7BC020F8DC16 1152F271BCB5527CCC6073539003673C157A5F56D6B348F9F27666EF801B790B 6D07936DE950ECBF4FCC2BACA05F9BF0E6C6F8DED2C71413E8AD87DDE92A73FE 94E8231D2093E841017C0B36336FD26B15623B6EB6583D8817C60E023C4E7763 4666AD4998298070A8DD6132514D5F54221D57A392690064F19A8BD82C727013 179051D4D01CC415E1E41AEBBD26BBEE368A82C2ED92A88C532EE004C987411C 29DC74F5C3EDF4F8FB6C24274A45C97ED81155A45163F25A50412E55D11A4DA8 7B5441F311505473364E350E36582881D798260E229400D4C8941B16717B5AFC 48BF67FDA67D3F493A7A825D5D99E47ED81350E9612F5CEE6CFFA363D804FAA4 DC6E28F19C474D9B778AF5336A5CEAA85FDF586848B6390C0FC9D4849AEDF89C F1A220CA8425096B5FD54CC1BBFBE363CE50BF6D91DB6489C0236A53F81884F8 9353B866947E68CD832F84DD8A0AE7623590A51A4A0C73AA73ED485E619CACCA 66804BB1983979700A6BAAA4C28F8906CD10080A327DE60D1479E64E85C5DB25 B3C0CA9868A1B44C038F9FC0EFCB8D4A109A2E03595DE235933B2156097F7970 2CECD3C222C934581BD10159A9DD5E4BBD1D817F82D35375CA7B33FE624CC549 F850C7127611F6EFEE06D4C3C07059D13B453B3AC266C7E73CF839E506C89DD2 7D5C89524BA5B499201EBF6901F93877537EC53D3E45100273B7F100C906A246 4BC16B743AC9E206B39BFDFE03F437772E9DBE5D2035D978ADB0B8C3269A4C44 13CFE4424A59E75D66C6783A72C335150CF8F6FC2347E7B4F682116D96D81D4D 131C28A9A1D39BB7E9139EFF15CA4C76296AAEA0BE52BD1B958B4230FEF3F4B6 D0CC865FBC6A6335940A39D32D967DCDF4EBBAA3A9D8D2B0EB9965F7631CBE63 E06AFF1ADE03355C10978B84D5A04544B80B5E7A73365B9553214CB00919DFD9 4D73C5627B11731940BCD4B56AC447AA0C38F2EC65F872920F279776436E7C95 5DB5B785D2AB6863AA6F98F9ECE90F1FA6B157930C2DA36CC3E655EA49C0C649 42F6B1750B5F152101EBE52C38C1AF0703D677B7FB4E50146DD94DD2B0BAC423 7850488631208897B7BFEB434D49D22AF0B3008932BDD3AE6AE04871EC168862 87149CA8B7F621E489D28403486E05B6FF2A743DA5466FBB2A5820D300E92A47 50BED3E91F66CB240A033154581EB5EEB39368F749AB5160D38A88CE87262302 1166D62531BD3786CFB4F3D57157E14D2B013DECD0AB7EB248B26C716B02F154 31C4E68FE3B2E77F515CF092362549666B1F080F4F90A3F8C240738A3F6B3522 F3C716654C3F6784FCA3276153A595D63D2A197F891C1EF0AD25A307327116EF F110341B7A0F58D2CE5F38AADB2AB61E852FB5F5B4C114A5E8159D540EE377F6 1116892DDE6358B4561432C4FE07C862652777466C866C269A314CED90E4349B A4285DC33D345550009D262A37B0D9204E351C751E5914FA5C15D0410F707056 1AEBC36C93DE455C3F2C78F00AAE3102CD6077423D45F4F98EA7597579F551F0 450FC5219E223040490AB2F4509722334B120E412C24698BED1D90A5FEAA161D 151051217CEAC5CDDAFE76479B103E461F93570915AB417EBF29CAA83B0FB6E3 50A8291E83DF1E544042054748A1A196F6EA1BBD60C5067AAA96B1012B389389 364FBEA1258689DE6D58485A0C03351148F263C9E00676472C786AFF6C041CE7 6C5B9DF5DB84561B943B4D977A5FF32E51C554FDF89043935D4804D34207A020 FDB9FAD39CF43415F6E7ACBCFA0E38A356556C00EC1BFD9B648B120610B9B0B7 6A98E530E40AD96A4B5357B81B35BEB8FB9B99A7463946359D0D2373EC081C15 988847BCB5B0CE94CCBD38ED171517874C12C0E59343D267B068A303221C6C0E 8B23A31638A88961F6C7A9738C8313458238FC78FB8809D11D4D870890CDEB4D 14ED7590EAF6197DCD1E9DC224424D03267774552CAC9C5CBB3B874AE82F8646 64AEC4D3BA04CAD53B00EB3EC9BEB35CBBE6C97DE53EE8FD62069ADD5ECCA529 F1AD9612B42D7E28C16552B5C3DD9A541D0057A4320E08CA7F46EC97584FDFA8 34A0BB9D69CD9E7DC789E32672C77BC5E9FC4125614EAE747DC326CDCE21F9F0 D3B2AB8EC4291DBA143C7BAAA55DB41E6FC642FA8181662C4DD582E91CFEF6A5 C6ADB7C998ACF8F97F30F1A2F29177DDCDF4FC557D9EDFECEDC980A39779B5C9 1F8384A1F81EBCFC2D007120BD4A6BB0165FCA9C4338912BEBD60783E0B91FC6 435E2515497CCA126CB37D5D735EB230E022EA23F1C455C1206B741AB554BD23 7B6AB888FBF4A9EFE74B9B8692F0931B6453893FC4536B8EFC5C253ECECCF9AE A2474039F05D198C6DAD5EE307B06626415A4802CA631AF3FC7AD05FC06A4E05 809490DB4BA45D8CA3EF50715B59EA3913A11457CA3BA1EABEBD8C2530BDDD4B AA8DA9B24C80519675732C804C6C9DEBC1169BF187A07E1FBCF34D1B87D4EBDE BEB7C0D43E6286BE0B64978BF7A2514DAD636BBD87D842AD92A8705A73726914 E73CD621EC0332FA0413A8E5CDBFCF137B4E0902AA8412A68B0EF5DFE0280451 BEA09CDF6BDCC95BCCEB5FE1859B0D6DDB3F74C1CC42BFDB5FAE3CF4C43C9947 A1D033CE34864D139F6439445C12FAEFDBD3B894AB758AA140A72DA3051AEAB1 9F786813CC45F21090BB27C2F1EA2E88816FF7504B298D0B91CED8AB25DF468B D4D55B0547935C2DB6BA0E1A08B2051B86ECBE53E186B0EB0B4278F65BA1AAA5 D2159D2B84AF7B36691AD195423EDC9D7A0A6BD0278070DE99BD1D2B7BE8103F 839FAE955E8E969233DA01937121560425AF9E81E1440DAD528FDD4F90DB503D E9CE208F41EE240F37D9E5BBC9BD222E3FEA9CBAEAC6F29ADF7443E232E1058C 95EECB4DC6B9E561321BB35F910548F68EB9E8A45C3038E3734AB03A7B831BA5 7042E072F919BBC1463FD56F8D7862C3BFF8017A846F33D5CDAE62BDACDB4D50 8A787F1C0A39AECC4D57D9C85528FB7F78A6CD22638CE6B067A5FFAE4E2510D4 908C519D917229E0D6958BDE3556798AC04DE4476786323F5D86F6F483BC17A8 D90F50989AF0BE40982DBEC51D2436C3BE826280EFB483890B5F8CFCC61C22EE B6570A568166A013319410FC152BDA42EBF307A4F20EC3CFF58A7C8448C4AB85 870E197CAA7E9F0D4943B0B01967FDF34902F8A4B25D470A23179E776601D335 CB96F150DEB9E31184144F48EAFF1F33936C69E4F624DF9DFD62928DFE85DECD FC7A403420C13BAA23923FF5638F9917A4108144289487858F5F131603D2B6BB E92F575E353C31EB3227C87838E79B3D7D4C1D097231DD298AF317A0A2D87050 500C0032C22ED733F76E47CA1F1CABCCCAF2CDDC7FA3314597A7DAD6E6E5C464 E1C92405E7FABDAF565F521F24E90B5DCFE966B89E39B705AF5B5D4EAEF6B108 852EF82E1E517A7625A7C442509BCF32BAA9DB06409132D7C32CF038542A92DA 0B0C494A920D78D0DEEA29A764FEE892988C8C1992C23E7BED682B330F1096D6 C034A349CCB6F59B22AA6391541FC6CA483661F354B25293D1E2C1EC0B85E732 882CD1537C833B954DEF9B2AA46E1516754DB0E283641DBC07CAA659AB78437F 3020B9245FD407A6B57146EB6068671AF9DE4A410D968652D0AC7D85638DFAD2 E8C6308A5B1E128A315988D4DA68ED6AF84A78AC57FF2D78CDD15D4609434D05 7B6D933B1C5BAE8FA5CE3C6D654D116038D0DB6DFB2C53B1B50C49BF53F3CE51 C0EA710EA1739342765F4E3F0387AF1D038DDB3D061EB3AE6B271514F07B2EE7 205F707023593587362CF31CC474268B92C356FAC06B0D74FB124BE3860BCAFA F48079BCBAF7484EE1AC2C57FAEEBEB8B4D69CBA134045BA21728AD476BD3E4F 5A535E6AE9922F715E8CCD600625C5CDB14F72656BC78659E15EF0B79CF5D264 EBBF87F69352A89DDEBBDD388BD34027C57446F85BB54FCC0B2F72C37FAC5CE7 1FFC0BEDDAD82C74FB656F7AA101625C34141D891F5E4507BA98667CBCDA8F14 7439D15FF380CC10E451DC5CBDF471FB4B56F443AB6CC4A6F6FABD063A1BB563 072CBE969904B71291BAD0F987B6D0995A5C4976269BC6ED39D53F4DE81F7572 C83405F39C6DFF47776C194CAD26301F45202B31B3A43E8E6192E4E7D9DB2D45 C200FA23E9E437EA250C5AED22EC5D962670A5C2B969586D1537378105154FA5 63E838277D5AB5B877DFE250751E4C379F45D9334455DC197AB1D2AB8A4A5084 E481BFB09B1C55FD035C227D77F197AD3AB5C1F64C1FC1B56D06B51FDFD86A22 62C6C1F335503888E0B04B1E2C8748610B6829F9A9DEADECDFBB0D87461241A9 E89787F0F2E4A220DEEDB85BAED2A71E995B07B157ACB636AB81B55F179BE9FF 52FB412A64F4F0BBA96ED533F4F511CDBFCD2F7E3B4F2B5F77AAC9EF1E41A36E 3FECA3C5B7463028318A58FF1F78FDD4A3B0FD1123EDFD6719F578150B776784 9E5F1C60BFC4281EB2F646B3F9D4EF0419CAE2DD6D926C3545869455E0B8CDF2 B0017D2C2A8D03DE5F255F116F532B2837A866596443DF988E41EEEE41B8DDF0 E1FD5D8C5AC6DA25909EBE2939A356DECEC6BE3594A643FEAD44439CAA16D97F 501DA26E013F61E5958ED0042F68F74FBA0BD40C472D46E4412F0CBBD023EC31 2D6D9B6FDAB86607A207AB0019308E049717352EAE2BE571644ACF671296E84E 1CB60F5EE165832AB3CC6E1639B4BE4F2375C67F39DE2AF95B1031C06DC0CFFA 885914D85C392BDD4BFC44505E30D21FEF914833739A1616E89831DC57E35E40 6125CDFCCA1769E2744CA270BCB41E0481812A6C2DE8FA0935788EA7DF5B3EE8 2B2EEE060A7A67C89BD92E0A3C246644BB40229B7915C31D92AEE65940916E72 5ABDEEF39D0C33164A77A58D032B8D8F1DF58F8A25060ED4F7B5910DEEA31D5F 4B923F541CACC0CB182AD093242BA9347E3BB30BEFA73890410DB460AB140826 F80EB541F94E9360E43653941753384C7A6C55C23E076545362EE698AEB241B9 F35F6D9FCE4267F2F5970EACFD3FBADC5C629E22E43001A71C191536C882709D D9177E93B68A84A0CE7F467ADED1423AC892F4B13D573CBEE5E2E0B0644AD104 988B3A130AA4638AA825952D2333A45E7617B8CD6106BA22E89B82C57E2C4270 B7EE2E9C1C0CBDC8FFFA429A6D99E9C446EC77A803479454BF4399F67A08C528 17C744C7A4077A763C4F0136939EF424783D678B0BE0453B6A0E16135A820355 F9A8950DF075373D7248604C432E253CA2600B323B13B42C465F34E790481576 7909E8316A4C6A12C184CE741CA093AF7DD0A6E013FE4CD1C2AB7178585FE617 4A98CD4517FF6F532DC5F4B09453447E853FED8C55858C40E2E50704BCDFBFAB C45EC228F1B074C0930512A6DCF0AA7C9FDFAD54AE4CFFBE245C6F9923E4B8D7 E250B53F7F7B159AFC7F09F344C61588530556DD9918211112E21DA55F465743 EB25563F7D0080D257DF3B3B1D1DB20B7339D1C5780B2B841AA79C0DA4B2537F A74609DCA09E99DE8F1E8928485719F43AACB0D501CD422FCA478CDD0101F003 B07A68A0B95D16F639D55E1AB926E5F1E8F70D3916402912CEFDCB906F1F718B B33179F3A46C1A26190D336FCE606F1F55B0A1E220AC5179804ECA218661212D 92C8E9E6FFFC365644901DEA320C4A8FC5ADCD180BE8D157AD07971BEB94D106 7DF0D8CEF92E746798C582ECF7C1598CF496D4EDD87A05F3F5E5521B016B66CA D3BB74B6A8718F6134205672A8DE4CF129907AA132A827DDA312DC47340689EA 9399C04E0F2C5D8771AE7A6871B1C85979CD0D0D54945982FE65395D33FD12E1 29E595636C2445A3E887DA2ECD2BD8E9B9240FA9CB5101AD11D698DAB8741B02 5997FD2768372A5F1EB33BE7BF736E1B5E7F634E68B04AFB74F13954B882011D 120527C6AA66E4553637DDEBE083E227408270EA3A9E704A4B4971408348073C A45B75D9E8C6D02E7192AE431E3DACD1FB7A797C4A212D3D4307189D36616E8F 96A67E352A8ACC48F608714CDC2EAFE81F2E28EA8ED804FDC7EBEA35E41D5433 47E97E3FD3782F2BA4786E4CDA86701FB1F9BB8F0F4F995286C70DFED5B7023E 1A4CFD54E4F045008981C0915456A2C34440F91EEF1AC2AAB0A7F58504ED915F 4E1B9D67E91C7E3501048C7953D12ACE38746FCE13BFDD74453B56F3E8293471 26EACD37721F942463AE6C0AFD691EA3F34842C6837F3768948747CBBBFF1BAB 3F141EEF0992FD4EA1405C0165C4539FBBE07C916C89C2D7D0C9BFA9B1C0B070 BDEF1D97BC9BA325C2EC9E95791A484400DBF8D78DC682285CB115AF1191A613 5CD7BEF1F27E4C3065E46251F7C80CCCAF30A35161F913562A27159123B8C25F 743568EBC0F8F9AA5E86D2B219BB8A725F7219FB2DA6C6FFA10601042B2AF418 0504AF101C6E2E148012EEC72F66039E156D8869D14C83FA1F0FDAA0D2682C79 F8F17EB7ACB176A3BC5A9632422A61744A9FB221073FF167B645FBF657FAF4A3 28029BD665E412D1F4308068FA72E47E82B8899D22569DFD8B2BD38767152491 9FD1D912E80F2050EF04A6E75BCCCB4ECD4732DDE362102A1AA6EC230D207C99 58EB0BDF48216EC487A2B24A1CBF43A2E4C02F1755F78908BDADB4A0EDFF0720 24EEF614E17200D71955BD4C92B89D6111D56604923C0FD45EC275E38D990454 2C5EA05B3301FEB349125F3F22EFCA407EF7BDFECEEF 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMMI8 %!PS-AdobeFont-1.0: CMMI8 003.002 %%Title: CMMI8 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMMI8. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI8 known{/CMMI8 findfont dup/UniqueID known{dup /UniqueID get 5087383 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI8 def /FontBBox {-24 -250 1110 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI8.) readonly def /FullName (CMMI8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 84 /T put dup 100 /d put dup 105 /i put dup 106 /j put dup 107 /k put dup 110 /n put dup 114 /r put dup 115 /s put dup 116 /t put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBA9B440A6DD72BF8 97084C906B05FAD969086ED21AF0AA1471613182B26117D7494DD9F9270EF3ED 8DA4D957225F75D060237B6DAAD5A0AE3E702B3D1C437835B93B8AF1F9E7D966 E739CF3AD5E256F90286A34069E5BB4122F94F18F3485658D0D25B938522A879 8215A417CA2CBD20F71C5C5FCDE21EEA7BB27876D93BA667868A419287FE59BC F538980597DBBA743DBBDBEBC61E3286DA7977833DC8BFC5E52FF5DF5EFD9A92 D070EB769E31E760A50FDE012DC0057835E8B9B046FCC83F1A0C40326AFB4E3A 0CC3BFA35FCC64E32854F32EB7DF10A19F95830136BBB8139DE1663B7FD790CE 464EA431AC109FCA0E03F3E0D355FAE20AC8774D6B1CE233C27680C77DDA7356 560A27C75993E8C980CD1E3B0683F7E8A05119B3AD567DAB4851B66E418687B7 F9B21B3BEF607918D5973421B68E65DFD8B6C8DFDCF1CAFE2637D365148EBCE3 FA4CC00052A2A522205EA3AE3461CEE02042E1A3F11467CB6C8C849B200CCE3D 0BC188EC7B934CBBC0AE2BF5DEA228181DBF0F774119F313516E7D97FF532621 9278F856C166CA6547504F34991D588A0631A5CD06363F3FEE9FA0772C783447 ECD0A200929CB58EBFB6B72008E4082B5D14AA560C24915B9463A92F38237886 C35CBB2D4DD6D0CA8C1D4EC46093041C6181C2F6586EE3E7D4E647A107B6DB23 DAD9AB5A0C2905455FE58075EFF6B48597078BFCCDD84812B98986F34987CE49 7EFB19814F2A58B0233A59331F6F8EB66401F04EE7B1ECAD9BC90A2BCEBE213D DDDB1F75C83609ED6A669A0CED58B2E269E76ECF73616D94F13CF827C9BF354A E82202988DCFE856786B8AE569AFF3105B55C72C58D310FFC0E10B2ABAC8DB06 40D5F72E54770E9DED1AF4616008595B8481E3D9AF4191CC9A5BFD9DDD01C9F1 FE7165D21E488DB40879E863D470CB31CA06E5B5F1F8C3CCE04B697CEB0F3557 ECAA358D2EC2B370519CE06138FA702314BA01F1F33881825EAE1230098BB3C9 59666983275CA4E8D9DB34979F86535577E79393A72F84B0F768FE8C92692907 15E9FE9894E98A0EBEA490CBC8C7E5A9F3E43B24C2C5A4BCD71DAAD3CC0B8B82 AC13933543E295C163F61C9FD18371CB514493F90BF7FB460C029B8DD2E2BF05 FD66B451DF277864DE1EE42100BF29E01A50258C2758F3EDE211BB3457B8243C 20BE72983FD6FA2581C5A953D94381E32E80D6D6095F2E93A5455C101BA71E8C E560D4694E4C167EFA25FB1E9D214AEA745CE34CAA5468FAEF8F6BDB6C6BE8F4 3D58836C26A2392E4C4DECE284A90DDB3858A16D6135FED655A600929DE71605 6CA32F6851A2A6F71A9DF3D5D657593BB729CBCA2F4B059365B7263DC08AB211 9C547096E6427F6AA53CB2EB87DF0AFE2ABCDBD15D7EF228D3396413B83C6B4A 79E41F9BA55A2688F62A10472675E5658F151F9FD6634EC94EC0682C17448024 CC1633077C07A93E4DA8749D974FB8F4332B5DECF97D749C10DB60D4C90ACBFA E65AE928C88BAE19234690EEABDB30BEDCEF2660D7464D5071058C30C572A2BC 7DEE5384BD7614A4BEC4C84E18CF7EC81C810256E8CE6520466C033E2A36D3D3 5D6074B3857415011D8D9D49A474D994571CDBB89AF92BEA879BEBAF67663F5C 17ACAE809C2231EDD0A76641BA52FA7B19A2798D54A4A9B62C42F9905851229F 2CEE0191C8AA5AC12BB0CE9E5E3E862683AB57DBB4AAD6AC0FA8BA4F408D41E0 755F72B82B7C18EC6B13995BF7AFD66AF4BA0EA7523DA8B75EE751744EBA9CA4 4E8BC1FB37734503A5B24FB9F2C2D07A47CFC477F02413D55BD7DC180B0344E8 50248801FA6BE26C97F397797F5F9DF762967E7CD92CCB8B2E587C92177619A4 BF8046CBC72C6E69DC78B8CB6B7381A290080EF59F5B9F29C1167B261C932E9D 010D2D14BB425D157F22BC0305770AECC5BC80000F8CCFB9930255A68F299ED9 D3B5B83A2CC00E3305EB281E1A7054734661B175C6CA0AF168790985F173DF03 A8693B677BAFE23C3CF833FF6463B136FC370E4F0C29E322DBEF637F62C33CD9 B0A8338FD67EC628E3BF2FCBF7CF0347D5CBA1DBE6DE878DD670176B85F69EF2 3C5CCA1BD2B8A385F113EF1CE522F5A6AE053B9C1E39408C9459DE3E7FE2C4ED 77F026B0081BB80D40185458139C16333EA27F43EF1204BFBF80BC5301B2A3AD B10F7EFBB4F5B7E04DA1167F68BB6D4049440B0F57385FF0A95E72760C6A12F8 1335BB31CB74081FBAA319180DC00113CF50CC5A41D2E751E055DA1429CD75BB 0060C21CED634FDA106C49A12B356129D010E29F2919301AA7F80222AF3905ED 672FF85C9897A70241E8DDB9A53034B6BB44E140D9E739848E7A782F24B98AC8 00DA09EBE4532787E5CF3ED815705F659D8E52DC2C2D4949374A3BF192BEEB99 1D9A90A4F3250BF8A1FD40D91F5B34AF2CC561FD02FED712500B24330D87DA9E 4AA46B6E34BCB40B1F73A1DDE07E002B9478E9651D2BF85E67585B6ED812BE03 A594874A235B1C1840C4BF4BA6D863583D8C12DB49EF7F8CC24DCBB6B21FBCA9 378F3E2DC406291AB324571F76E0805DF8826090F0E8B50599CA58D124653D16 16C782B01C91A6F3DA6346482E3163D28D95EA49866360147296838A3FD0CC53 920F91D895F839CB61FFD2FBA296CA4C6304EEE579782AE5FD33D0FA652BA7E2 CEC7C01DD0D3E0D56E6177EE5F609A396F7FC8EADABB465DBA7F384E215C4DCB E64F807A50A461545107F9C3F7D7CC7D33E6EBD6D9228B1DCBFEF160703E6129 0DCED8D45DD54E2A36E698A616E7906A50901E453BDB2A363EB77144E9EA6F2B 6BD927495EB0EBA5755165707CCFBF8759CE5856881117C7F3EF6D494EDDA7EF E499BCA56C86467AC573DA9C2724FCC74BEB331E736FB093DCB67DAD42296655 415D110F2729BD1D55E5C9CCE2E724116F45FB2E66AE0F790258851A5C808762 68B8A110BD326F8D3EC45004E7CC08DA42F6CB80A6B6E7C286F139534A275BCD 2F812993DD9C9A1AEB5E7E4BDB4805DFF3A7030263AB060C9B74F0C25C5B9005 965284884450CC2815DF28D5F9B0496DC7A3AA85E1E42741E1538797175C28D9 FD904699C771FB066397FFDEE8E8DD1ABBDF67E6BFEF95BB700A7C1BA91354C5 42EC3864F6E19B379E79A1CC3C786C0DA146C6B0B8E507ED58DBB1F12F613A98 0E1F8967991427A22ED323901C4B83336CD343212131E8B59C2F5D232702ACC5 7891BFD4EBA5D0FA35AEF9F3520CA82D121BF6885BBDAF15248A9E4649ADB94D 0735CC4D14E1D7275427D00C8E709579612F7F74DB6FC218C10C278CC63E2AE2 37EC996B10C0229D687F0DB5E38A8C4DAFB3DD8A9E7ED37186FEFC97790A1EA6 636A88FA9FB4D282234BAAD301A1F3AD33F252C5EEC49410562FC52809CEC466 A0F6D148E9AF19D6DA2337C8283FBFF6005C37AAEB0B7F7217A8DC6F949B9984 72DEF163E4D5ECE4288404448C96A7FF0AC76F732D50AD63A1D286C9180E80E7 C218B1F48E3034FCABA6BF262CEECC284AC29E9F3CA1CFC1639A681ED66C1FBA 666F073D45C84A286E05FF809D4764FE819B6A330E73695CCF2F448B4D4EB4B3 F63E94EC289807A2F9A1159CF328C002B467B19D6E9454CCE36FC19E0A214190 B251818DD456EF658B0398E275514B72D9C1DA5F806EABCF1DD56BC025D69FC8 A0C2FAAC1892B64D2AF79EA2F57F103CA623E440307600D50E783FAA998EBD40 51D23A0CEFF8D8649B48B982DC38D613F882DCCAE5F51233A641B3CFD783F830 D984F116DEA3ED8F0D3369AE629A006BAD4523F8E3C7C6B39A6C972508B67AE9 32613F28CCFFC4BBC86CF31A0C25C786554F7A1F3DE97F5CFD1A941F775067A4 784385E2D02EE1FF886701B1E87D966D3F500E15591A5012E645837FE2DBE3E6 A3D375C6CA0ADBF96B33EC3FCFFFD888D7344B31D40427B8A8BED0FEC6FBE038 1FB5F0714C4B5A0E607E215B5B7F76ACF0FEAA4C9790EB7E13C0E3933B7C63FE 5B934EA34F4B741C3667BF1735C685CECA63507E6FB9EB06AA010311F12AC1AB 4CE3FE8D1EA1EDB3C700BEBA516FC71D740B1CA1A60D4578003973CC3EE21DB1 58FB1CF7E2EAEB2A4A6C742EBC3575EE6378531C6EFA6E6986E68B8E25CEEA67 A59623FC1ED2ADDA9D72DBA627D179E47DC7F5551E07EA4D54ADB6CC8109D340 7279F288E552EFD79C17DA3431E53EED66D16F24BF86468C2FE7EFF421560500 12FB048D6CE2F370BE4E560F8B4AA12362ACFEBC839351C1D5100C625B14CFDC 747B66082D4AD5474A63EA0054E9C3E6295AF6B133348487B0471395857F4B73 4BF8337DCE2FE2E1A4EAD7E7BEDC822BDDCE42B79B308C11897C98E3ADE253CD 09CEEEC0CB1DB66AB072E36E1E04911F40B535B0FD85982C21B8A587D65C38D2 DBC5A07A0A26DFFF7460F10781069490AC1B611CF7312A14B4AA6005A4582C5D 336BCC30EB47749193BE8D457A43F54204B070DF5AC2057B6437E23705C7FE8F 7BB150560F7044BE3E48EFDDA539FEEFB0D2A7856CD4E405FCE0F5EB190D91AE 578E2EDEB9ECA218573BB1A8EF116043A27DD17A4047BCCC7C5F3C563A910778 45ABCA32C7347E6180ACC86F9D665FF025DD8AF514FC3724B5C3510F3C37E0AC 5101D1667C6ED4E8F37F06CC2BDF66CB5A9FB7C52CAD26344FD1557571336A1E 1E340EBA149B4EB99016D1A411FB874914AAB2A415CE3F5FDFBBF5AFD7959B9F CB127BDC68D2A2F3F07FF3D4FF32046C0371CD2E68A6471E46B08413FC3C7A80 A107EEE57979DB387B2206D2810DB310B7232B2DAA385256C8A58964B512003F A0C24ED21809E2576229627278118107B9C32345C1EE8C0CFB452CA362379369 31320DEB5371037AFAD093B61E8AC7A6DCF7D49C7F8EC32DC0ECEAFD7E892810 039570D2956289B15E078C2545911BF535F72F7DAC619BBDEEFA855BBAA81704 18F7D351B0936357085A32157AD8E27438A58B2397D69264E748B0B8D01B33F4 D04DC59326A7DED39E247A1C1A1AE49382BDBDE9478A1CB48F88BDF14A268B40 A40B9FBFC4C87FD3DF1EB2464C3C14E36CA41E09EE0A9B75FEB0769F9ECEB1BA EBF73B818427FACDBC33BB95B9654F31C59A766E931C698A8608F15290FCDBD3 5C535D9036A19CB7B55BF54E96F9B2206DC71624E2E55FE632FDFDEC8757AEA3 1D83D190ABED5E7A7AAE2F41FCEBC7C18626BF58F9E9F02FBAE0C8AA85E9DB21 A3D8907522DCBAE4923C6A2A09FD2F08FE32215C544AB577B337D929E625E704 E041C2381AFCFEA37F3133B6CA20093EFD457C772E428325E56C9CBCC447EF9A 05A8C3F28017DD4FFACC51B38E4896C5044266EAB4EB7C13FE855E790DCF8A17 B61B1D30DD866BC57397EF6297C4891451FD6A5C6AD6D7446F58F56A68650908 224D9F4C31C6906FD29BB51DC947465B808438E6260325752808963C808A4AAD 60422ADD62CAF315F6AE92FACEC55D5B682089AC0BC051CE1E2C06A3874736CF 0DB5F7C8F178479E4F11665402781D80397C75456F5CDF0A4F382A19EC6AD64F 71A9275264800E178F212269154DD8352167C57EBC0A38BE794AAD1601C8E541 7E1AB8E969A76E1EB4092644958FEA2AD29635E70C4DFE2EB0D9B3E1644FAAD9 B27AD5466EFAC724718962B62E7B8C32F412B69DFFEB792587D571FB5C591D95 4CD441662CD1B07595E245FA537FA9EB5A20A97E5C9251EED22C9961B48B25ED 85BB7524F635F9CBA3714C6D60A6BF920C45A64F4C366C1F9D22F53084997C9A EFE2D79FBE3347111F5093E271DB7E3770B35D253DAF93653F6A23FA145AD775 AF11E188EA0428137D9A14542E3EDA6F7B2E5AA86C9F3D3649A85ED2F020C696 01A339FE6D7E42BC548C8F92A4E3809C67A986C99418772403D16D0E8662595A 1F37563671D6DA0F36CAC99DAA8FEA215DF7D45E61314915A30A22FCA86A50D5 2FF2EF08E240F9FAC030D92BDFBE40F1972DF413E6B452024CD11792BFDAA2D7 C82716528AD4B3D637BB43E748336DCC86A952BE96F1EA423E31340FCACDC1EB 02EE932F58734AF3A5B2279361B63F1D824EE3BA9F4D2EC7B33A300A1CE8CA43 24616444176DB8099D85AC68329B1F85E4B5B16F3B396FE2AE7774F3065D0203 AA140DC128D6F935C44733EF585F89E8639A2096A225A2E5E49D447D8AF9FD44 CF6C1BAD5C5E5262AECC5543EC8199B00B72BE32A0F110F64A1D0D5CCEF38FD1 155D6198E9A343702F8ECF5052333272CAC2FE016681E12745CBE14E1065EFD5 407DA3686080989F6F6D650A9F1EB3A813B070C30C0D3B4A1E9C206E2E4DFD51 D8DCBE9AECF956640A2E79F1B4FD0EB8E0449AE1B8FFEBC43275743B4D7F6605 0673B61EB3189E74F51F3780A91E6A5C6464C8CF7D563D9958D46F39B1A12087 6BBD4898BA9ABA468AE1F24115891FD3CBC2195F75958E26DF8BF1B93F7B521A C12112237AB23A8E5A7B7D0DC4C53692B35F3CD813EB463C0BD3A6486B0476C6 3B36DA71FE512E5745D097FD4AF5D056E434DEE2AF926B2EE79F7FC4FEFD4130 BB4B4BE01E5C720325A4884507CB51CBA4FFB615B78A4182444F0ECBE4161A58 E86FE1DA2E39C2BECBCF1F1D7B9B776A26078FC252128FA8108CB83F673CFD37 CCDA493234FB93E1550EF8D2DC049ED95B00A8A57834B024B277D3DF062E748C B61F183F2D72AD075474F8165528CE75E4F40B38B0FAAE45751C1907F8D31619 E88EAB02EEED415F3EE3BC5BECC6AF565D34E0BA2958FF337A2B06012DD1858E C53DE52C108BD5AAB76C882198C72CDCC958D68EA8FD26F76F04EC1A08B2AC3F A6D0E8724D2656555DBC0C8C42A3E22ACA7E1BC8E9F897D9AB692E0FB9EC32EC 59E31CCA4516A3C3BFD5411BAC3DEDCE374D48681CE7D67DEAB93F5B5C5290AC FEB29C5EA2C98095692873D36C7DA24847B66F31E4CA4C7AE5C79D7CE4F0532B 78620582E3731A2A6533A03E7155B33E7CD142FE79F72721862EDB24959B9783 F834CB616FFCB2A23497BA6D99AE34DC459A2F7B3E4DA2B54BED118ADCD92178 66C40F4E60F6E1327D5DBCA645A2A7C770807E6D7E47E1265C753F8793BD2D1E BDCD749CC24D4AF9315A93F01180A0F9A7F420DA1B87664DA5FD967131273271 9DCC45C3D57EB9B8AF14771E8E751D88B98D2FFDC72F5011D402EC34FD010ACF D3B0660304725191D64FEE106253FCB3470F1A16EB7B45C1489D3534BF94F740 C2781DAFA5E8A9E7B25A85BD7935DF3ADDE08C960E283D8FC3976FDB4085DBB4 B6B35FB239C28C785B18BE4FC98F3A5F410F562DB5FCA04E8074E4E790F4265E F88117B3D0833AFAE6E8B8A71D7731BA6F14FD6F217EDA3F8CC687A494FC3914 B84FDC37C8C335AB1E7E0BEC7FB6B7A595C50CF8F0080C8D461BCB8B579A5155 F963B6587873FA31C3A6572740C63EFBE58A2EBB723B7517D2A243F6CB08A038 54F4DF0F6692022B2EE8C6F6B73735ED3166BAC58D9216A06EA6FC7B63B20031 D0F0F99D83D9030B413C2360DD2C553E34BD67851B743C3FDA676AD63C5BD759 9131358C6BCDF05FCC048F4EBB9005899ACDD8E9EC9BB8C5A08E83485047D263 0ED69B4D1869A38068FDA03524022A1D32FA2AE0BF7785FCA8F089152A57EB8D 5467C28AD44E890380CEA0B0E0CD0F6427F2C3BC1A5257BF03D902BE94A449C5 EB8F33DD607BB4E0A1A7A24431E1DC2F03596EB2039CC1A9D524E10B374E34A6 4DFE6694F9E158DD6678BCB0B56BFF435FC4F5EC442E14391B45178DDA235B7A 07AB6EA76230B60456344BDB08C929F9453553452C97E016C26C11B68186024C D1AF6C638EF54E26AA88856FAF1FA9A0DC5A9EFB7130EE72EB3313510EDB1DF4 8D8E512036A986387D8E96689E912149A342974F559E7CA4621E84351914EACF 7810F41CC0BDCAD6165182C7040F052C34D073FFEE489549EFEF83111310B3E5 F67EA5449D3D81DF1FFD64AE0F1A760922FC629FDCC6AB0DA66CC29665BE386A 4DC43CFEF3C5904356B7B2EC0AF36BB4FF6A994C8158790674A8EFF54A36B7AD 8C8B833C1D1FDFEBD7D39122BA602A67ECD2EDE9D35C2628EF1FE34B2CDDE154 2247242DB2541C5FD49EB8348536B83A67E718DF66A627D7C7622F22B5D3A3FA 5149B224F82B72E4F2A1B22BD6FA7018B45A404E66E2C6B96476A39E5D330AB2 ED04E2A7FE38D3A88B439E804F390F4B7893506FDFC1A72EBAA9FD2DD8062C0D 7B70D35F81B399600C625B80C26720158167C6BA509BEDB43F4F975523B11AED 088CE2D1C5A3C386F50D2C9FC7F2FC9F48D277FEB1F8055F02B3A0E7A1D8C507 D1CA7AB1DC03CF08E7899E008B62915771F8E9CB1C55679A3AD7FD4B240B93D1 56C5F42E411FBD7AF50148A57A33C5C60F612F96287AC50FF53064ACF7AF2D4F 96B7D88401BC3648372AEB1A51393C8042C25CFC02918989CD0EBD2CDD46B768 1EBCA0344FC75A1DEAF8EB1B6B90902AE856AE56A45ABA521B8903DBC479636E 89380353901749435DCB5C1E1922AD09FEB66690E8F9F438530C80B22AFED7D1 5274E099133FFC98AD9C7BECA78DD930FCCF90578F18DEA95DC34C546E5E430C 0625C55C27BC7C58C2E1AF3765A1D0D641DA5D26CEC131FAA92E1DC8E15D3A2B FFB1E85E7B40FC9CABA17B7D30FDEE895861463E9073EA2D7974657B04F51E1F 511411EB2DE40F914EDCC37919F00B5695D75C1FF0487C1895B80F3652B0BA8F DD3289116B49C93CF11DC3130255FE62AB638304FC061291DD68F25231DF7221 40741ED2C7867BE5FD28C8F4976DF3830DAD78C944050CDDD9F928BD0C50E524 1B26874472D09C886FC9F3CD27317AE56A0B587E520834643358687D141C1A43 A9CF223B89821CB69DB62D3DFCB6EEC5B823250E35A7CE7157A7E4E82E50CC1A 017E637FB7A2C3A77400E80789F7FF50969108EA3961649C0309B994280EE297 7B3905F0BE986B58E3FB904E0EFAB2770AB0D5928AFFCB5A4F16F250D3B7EA39 E71D9E2BD19FFB28980BB5000EB1B855DDD769C637133DB925F7580DF46F7E1F 30E6C723933F2E6B268EA596DD30CD108461F549D90149381582B72FA0E97899 8FF4862AD7FD475BE8869ADC25A8D3C6F9E30CA5D7F9B7E9B3FA53A47C93F7C2 99A74D125F3CD49D4CDCB74B695DFACCB65199673D922A2BE502979D7F31D961 386F3C0BEB0BC1BC8ACC68D3CA18681DFEA53F854DCADF5A2ED6B82AD88AB39E 597CB1058CA429B36FDAB1CBE204ABAE775934BDB4F3311AB588C929A2CA70C6 E01E4EAD51350DE29416109153BF4F46B1BD82437A39D27BCBD8F24377F2F667 0AC1FCB43EBE0638B73C214E30E018C087D89066E1E5DC0CFEDEE7F40462871F DAC1161AD8797300C577EF655DF0037BEE743D60B065A79977E442862BD830A0 74665F0C2347EF4558F11047E83A0110C515FFD87E096866BC854ED657BFD4E4 77C4D97C68FF8A71DB29169C3C65F2D7372957D8A26E0802411CD78858683F88 9307AA8BC85BAD92C150C0E640288C2C5F9D02FDE2024AFCCE259C066962AE67 F50920B6C66ED68F2B3F92FCAC43F14CED19142764711F96E6DB25C6963FAF94 3ACF6E981E8701A335501996F909D40B71B8D8BE16B5010CCE944EEBE2C5EE9B 6DCE9CA99086B785E694D4823615B84178C0F7EE5A7D6F7B697EEE763DD32AA2 B15877040E9DC31006FD4A9DAD14A101D7C9CD9B00E4B3D0B8FE84149D99CC3C 66292D3D198E37B56DDEB3A422EFF19E7E2C45DAEBD16949942810BA02F58895 349BE44F36879ED660B57012435C8CDD717014AC29D92D66F03C3EBCD0BF812F 189DE61E7A2A0B326E5246E8D811320FBFC111251954166141F484FA54E95BBA 7D4762F3B41FA7276CCBC258931608A7C3765A5EB253CB33D0230BB98D219091 2B1FBB4EEFDB9E89F5E53541AD3FFDA72BDEABE2247BCA5583C540AA83434322 19904A81902E215B5367EB292DD7A5366EDCBAD9327376167E82748A1647A000 81249DA8E993004F9CCAC85B462926B0194774686C66D89DFF04166CE0B0B996 C17E1A9B6193264BDBB3614A82598B0AD3F17FBD5B9CAABB2F6406AD53081BA5 D4D444A99AC1638F4A58F118C2B8DD7E27E17B1F440F32B5B7D611D258541C1D 6733FE85A9A36201C679B31478834AEB4DAFA19C67B9C8249D60FEDDCD86D6DD 5690D26F4A190F6A2A8FF68C6EC957C29BC033530C2F4E77452A219419C4184B F301D8A387ABE2C7AAB506FA043AF26A2BF7A1838AB4968A1141F63A7F0C5C33 3A269F7CB706A576A9666EF6C759C55F50086FE5BBE0E5AAE320E1539ECA964E 75CC583CB462BE947E17BA40093086E733451ADB61ED873FCE06AA54756775A3 15C0F118710D2AC6ED916249AAFFE601A8367DE76E275200ACF77EF3C05E5524 A9291AF6C1830C4DA5AE41B6FC51C7134A08B82C8EB72B18E5DCDDDA06795590 0FBDD30EAFDFE3035FF06118A76B0274D814191AD3F7D2E9F9D853311B0666FE 79D28A5F3CF8A9F0CAA1E18C28CD202C41EE720C82FE97856FC4CA80B94E84FC 3C167FB9671B730F1575AED4A2B685AD4280EBBA7EFC204DA45B6EBBE6437127 C78CF598BC029A0E2273A6A51241D6246579BA660E3DC7878A90F2ED37645280 1AFBA908CA8CD800E33E45C2D4670A1603C7E52D1380F7B0F511B0D7D6AACC69 230325298F6F9F47496D02CF67B85368ED6543EB67F5D47B303C345831E02275 D35912D0AB2692838B1EB0D6FBB588F1 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMR8 %!PS-AdobeFont-1.0: CMR8 003.002 %%Title: CMR8 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMR8. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMR8 known{/CMR8 findfont dup/UniqueID known{dup /UniqueID get 5000791 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR8 def /FontBBox {-36 -250 1070 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR8.) readonly def /FullName (CMR8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 43 /plus put dup 49 /one put dup 50 /two put dup 51 /three put dup 55 /seven put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9928A7C95D3A6E9B 8E92F84CA0AA44461D2F4FA0F8B81C6F5B7BE98C9712BE166610465CF689DFAF 27C875C029C0116DE61C21DA0092D029E7DBEDFDDEE3D67E6936623AB53FA2AF 18BEDDD7AC19A19CADB6ED6CA7A26E6044BE414FFF59C0B98D5819A6B881F9AB 7AD0D03BDD5CD309C67811D5CF0B93F6FDC9AE64F74ED4E81F2E18D880BD842A DAFD0BDF06300201C6946087FC0B999447BC370200BFB8CA420B668B32EBC242 6DB1546A7164CF55B332FE9D239B65F532B69EF9F4F93828A44C8F5C526126F8 B7A369114CA68D4F98638121F4E17F351723D9F1A902FCF087F94AFD23876517 2D15B482AF2D68C3F31FFA864E031596E597882578AC7FB0DAE2A713B065B374 3E2E72519ED6D50CBCA40A7275A7109A4F3ED8A4566AD8832890D3D1F4899850 9B757442B7EA355175CD5D6D8B4152ED2D7EEB4CE30F174FF672140354046A45 7098EC45B9DF3DF5CF7B417E201DA88308CEF4CED8E8903AF24FB8DD0187352D 25738519ECBC70304F8F620CC45D2586619205DA3955696FAFFE2082402B3502 CB682F410DE5FFE80A4DA3D3BCF02E35BD577D0DE55E7B8A33B7A2FD5136B5DD A0BCB61F8E7F4363C21F890CF287304DDB8FCE7FE207C0D160B81E7EA662BED2 DFF8C444E19C91E72254257CD87240A70F1A964FA54ED9ECF27E27A57DACC3DE EABB92C085030870C6CF5C40B6E47F5C0AEB30E84A73ECDABB2D754EF6EA28BB 16EBD6636BC288E62F4A38BFB55F5F4DD20FDD77D767F6CB52F9513E8EB75413 07F1877B2C01278675177499E4E8EB09F2657821613F5C7643FC064293EC6E9E B519FFAEEA36B19C9D1302CF91FCBF87FCB57C5F995CB6712BB3D8681EB6F05B B2A4195A3C73CB4ABCCFB958EAC533BD89560D2790CDE1444C0F2E4EF27A529C F01052964E56F6D76A190E5FF45934BB711A3406284AF130D4DC0D8112BB3752 762CA0200CA262359D4F54C0CCFA9A50DE18C7DB14419E2990ADDC4A54B94978 D9174CA39434022FA77FB30179EF805E2189C35919F5EBE215EE2A00B4407826 CE56329C5586D8B414770BA5D45513C3AF1931D632FCE69B4CA504944E03362C 74A1177C6398A61A12DAA0F156543E2A8E9969C4308B7ACC21A5ECAC8F172541 1B1316A88C0C163E574FFD3CD22FF08488662FCF2F9344BC25D02146F36CA6F9 E2D0130C654B7485EEA9A110A33AA0C769121F81821E9A2BD062FAC158359D44 3F9D9947200EF1EDDD5860F10438B162A69683957300C75AF7546C70C97AB2EE 37EAAF0089E2623F787F252569B06C665FDB45EC9681C0774ACFBA76B98C4E89 7EB12AA5F8798FFC110B49C25E3A483ABE83B0BCC6DF0578403ADC369E013762 C9D08FC94D949BAE636ACA9F36F4E3F02296775A062077B011A705B6F1784D36 A926622CB3847533D7ACB24A4EBABB14593B5D8E1DAE2BFEF8A51835C8D4E76D 7543C126A4271C59A5881A5AF89331694F84489CA66725995DC3070F306EA447 CF30F63CD476A46D528EC1FFBFB8EACFA2BEEDCF54C92CE2BD26DEA5827186BD 3A4D1709415CEE7D51D671357B4A5D11E835F63521B9824EE5282E58F05A8ACC FD249461181A38C2F47BAC4E79BE368D64F886AA493C61CBCB2ED401C8AFBA61 59CA6F6216D941A92AC52ACB3D7ECC28D6A58EF4CC70BA6DE23E80937AB38E89 6F05FDD15B954C0826636267EDAF9F2BB466BF79D2E10EED9B04297E6BC93069 79581ADD1A9D9FAE9306F46AC95B98C60A2E53D60CF1AA4069BE301E17E25070 F98DD67BD8642B1D07571A32766072E48BF27E1576FFEED300D7313A358A823B 49C8F135961B7E259095C9BB67F996CE0B90E95344F203922F47E11753F70D38 2ECB615403490310CEE6C03AFA97DA2F47ED47125D110FA69725BA0018F6A40B 29A307FDB3E52322A77A0102E6F57654CF1E96A134D13860D83AFA0A41112D3F 2247A09ACF7D06713BE443FA27C7E7220E875965D53030FE7D2D62EFD2F1DB87 5FB091FEAF599BA8C5167525899E578AB341BFE2BC4E53A047093168AE189237 EA55F055514EFA939DAE9E859CB5FBCF37D99484F44FE5AA5FA386B28BB642F5 5DBAF059A50FE96C7C6D834531D64F1F2E99AB2E96EE74D149178B1C0618495E 293973D9A03E1790654B67C0882376ABEC17D74785B3737D81644F28B3BC6FFF F92FE29126995A07E0BC5EF3A4B93789A103C428943E045B8D1A5063AE71E806 568D48072E53DEA85253B01DF0BB7367A6BE4DD7BE514AD74E3F77C825ABA405 64DAFA25EAFF8F63344B5F6B523629776CEB090B546469F6A6008DE43072DD3C DEF51F62731037D1FBD0C038A1E9B669849EB3BEBA281624F13D20B61917A109 A0A7871A73F7BAA18077360B38A4625C5DB9AB9E43BDEEB856FD0E2D3AA2E075 267B978B9EB47F2369302E87DBD5D5B422830BEC32411FE75D584C58650EFB1D 136FEB92B94BF8939FD63AFB7349C7511E5E46AA7324F8B1FFCA9C2A9E9720C0 A720918E8E860F137567D386AC29870FD990BD69465B3A3D2A0ECF2753578AD7 80DC87EBB319EB5AFE0B6F6FF8616EA30C51425FE3ECBC5F8D0B0BEFDEF32FA7 D168B4E85C804B7326A0942CFDE732B1171C643452B7099B31649CA2C38B62FB 46EBDF7180004C549B53F88021D029452C2B37D8C565BCDB0B11541039A13C0A E45D4B68C7907B8BF08C6F41F564B62BB554235D50330E78DD02795516D969C9 66119D718798120442CB7EB9877FF84EC69DAE25F8559DCE3BD8042959F695F8 2F99845B1B5680DDCF181D806CC4903E077D1FF5E60918EB34C0B1E028422B71 CA63EFBF3F4F3CD813CE831EB54265A555BDD35AD7D723F9CFBDAB29C54F8AFF 2D35C6A3299E0A2DB470C7B141B1E3E10DABB7873AE302926BA8743278FAA8C0 DC6174501D6A289CF980A3F55F2DD5C3A514E7E7F13133C35D2697D64C25130C DB78FC997968D6B3BC929E8A31B6D212C5128E4412632BC52B3A1049F7F2F61B C74AE9A6AD19B9E2E240617E2882F7D29ED3A4279439107AF9AEBEE47CE85DE5 CE9595A96A118ACF1EB1F5929930321AF7732E351E18C6AD378508E37B4C327B 0E06AAE21278AFA9255AFE5C022034DA2968D260879B4B38E7EE2E11A593DC3F CE71ABA050C004473324CAB6F3C50E85DEDA3E9A27388D8FD3A8F6E42A79670E F7549CFAD4CCB337A6E0BAA4846ABCA059F1E1933CF11DC0FFBFF550CC4A1B47 CF7BCE0875FA747AA854534960F757884505A5AEE0330179A9547A4AE3E68479 7A457DE83326DC30B67F27CFD4AB697601CEE352F72F0966B3CEE3EA24683BEF 6D23AD51B8432C3F0DD0D0F80791E1091F38988B7A54E466A9AC7810DE8B7893 6B0AA6356597891D56190A7660BC7F657BC559E0525D41EC228078F2FBF89C6C 72D666DAD838CBF0861FBF0A1D4ECC069AA49DFBAE5C56B781A1D5D79DAAC256 13E3F9B928A2394FC71691E4355642764459714412D6F8EF803FC5F7353822DE 6CCBB8FBE5AA1F2C7F4D384039D85E7728527DF9FE0239E2CF8BCB7411C000B7 1FE660AE6A2A19229E5E8776CC83EFF3C27403935756463EB4721C51FE0B1197 86C2F17842A0FB639F28083DFD4F1E86D7D3BEFA922514ABF489C5CCE93D6F72 D2EAAE14F6CBA2BE4BBE7D7EA8EA19DB3A87350D4A52064137C3D15A5B05B03B 70B1DA7328D10713B83974C390C3270AF5A9A47C0BFBFABB9F31063B0CCFBB10 0F236C74446688198EFF039110F6FF42FA9F82D463AD3958B5FD205BDF85DE20 FE3F0C7AEEF350AEE6DBC1DE2E2DA4F4599956F59D6F121F7086DC120416E180 52DBBC4E56C09746938698860F30007091E1CC0351B43990E47208ED495310F5 7BA9C6AB3CA10A3F1B318FD47C1CE3B9FF1304321F9623E32D315AA9CE64B35B F841E6C62B5B2488A311C94937879E5E0E170FA77AF0AC75C5E6E9F3E8F825AA 09C1702682E14FDFA72D27901C5BDE009B1E52E8C4511C6F6336251BD45261F7 401CA3DAE7C4B0CAEB91B9954BF4A97C48ECE7FAD401351D59DDAE9DA94E2335 74A2B880E4749D3D7026CB5299F16C204B6E00A20A6619C34922C7D3FB50F127 3157CFC08DCC5164C8023CD1B6C3556C73CB8E4ADA845339CA9BABA1457ECEE6 ECB9849DF1F0FEBC89E5F97C92978A500196520839CEBA6C0FD2E3D27BB4B4F0 93CB2BB565F4627C6DB62DD0E084E627D69B5DEF42EF094381B62C0D67EFD197 301B132420F51A41561E6106870147E0D597078435BE3819ACF0DE28AD779847 F3D2CF667DA06955D53E0204CEA2935E9E984E76963D3079EC092031E2A10E61 1227E5EE6770DD4D745A52655369EBA06A19BD7D95BBA271E488241199D1008E 36EA99F8DFD2A9F87B06B070158B466AA4C6EA3BA77DB0F853F0BF9A304EA291 34069714368E0B94DFCBA3BE5EDB6C8204DFA7EAF5C3406F60A7056407D1BF6C CB85C1F432F97D821F5518BBA79AF8453A568FB2C2D025A70CEC75F46C545011 ACE3A99B2582793BA1DC655230AE2EFD24DE20A01D4A441AFFAB7771F223FA6B 9169849E727E494247F67D6E1EA9DCA06A082FE2094BD548AD7F08B565145634 E7ED832FEC1378306DDC796303392ADB0CBA130B63B38ED57B7828B47732853A 893E8836FE19CCF27002AE92C2B2CACFDF8A42F1B8066E033B965D2E9157FDF8 E1264B40813C1A4CE424274AA3528A4F09B3B53DD4D23789A68B3D17BC1398AE 0ADA2C2168427A49846DE0216908C2FFFEF4F13C1ECA12AD341E238EE46E6DC2 B71B54C52659632911F901660261E493AE2483D64E119D9924489779B62BC9FB A052E822FD8D83178E09ADC825DF0DA07FCE7AD68EEB29FAA275A13691B4A5A5 B0BC0499CD6307610CD6209583C1152C559A2760823F8DC0B9B990BFFE7B7E9F 3969B968AFEAADB9FC0F1410EBBAA0DB979CF153F0B8C978405F8E6F2B6406D7 AAFBF4A655A15DD6D1E9A7EAE10EF89264659B09283F50B734236885FC09FBE5 98D780012FA77FCB19F15BDC522CC7312546C0730EF5225DEA8C22A3BC6554EF 4FE73B9AEB5C2F7DBD474221760E5F539A064AC450591BCF3499E3968F2CBD6B F15BA2B37080A4129B66D4C2188524F025414F14DB3F96049A8B0E5EB2BBE7A1 AD64A988FE875FE4FE5186BB4F5DDA16983CB052D474B7D72F3E8965663EB50E 015C72407C3437142D3D7DBC055FA627139488DBC5A0F98D805C2143D99F491A 167E07AF60EC9F17C36289368D740B632CB919A0E74C412B76CE7A5906D5200F 9E79CEB9C65ADA3A0F23E8947E834AE7A329A9F0AA7A6BF545B1D7B4666C6522 CFF268634EA06DB3A82D91A4C0A9B227E79961212881A54A6762C335DE7E0831 130C45D94394D21C049B9D189ED955438C2151514F17BFC67E431DD9A8349202 2F616AEC1C7B19F63D5000EB4771370924BD4B9053FE78B5E4A244B9A149D66D A8BF3B398396D2233E92E4A5FDC70FAADEADAFD255193D688842DBA865CF6154 C9348D590F3FEB135D4B7BD4D76A52CB140888247CAFAB25ED51F4D187041CA0 ABD956F83A5661CEC171B52AF92F9ADE27973B560C802E1E0FF51C4003D1289A CDD09F8EDA8AFDFF666D35418CEADF3B0BE298F0D1E5C8E024D6A2017A7E71F3 3A9FEC9930F1118101E040339F9D41379170928DDF5B5875212B271DC843F612 E0C21C67263186E3D6929160464D4D5C8928E14D0845762C36FFBDE548188E20 3B6BAFE5EECA0385142F01216FB8A90C43A472C1D4447FE5C7C78CC088FC72E7 3FAFA062C338BDE8A430FDF1951B107D8D73FF9376FACDE5900BA362C66F8C1D 947F9545C5C13A53E4479B1C1A50472C05E8F8C266C6D4F4EB08E97B3B1BA972 26973B844545089C5732322BCC9A5A8FC972FA0D7DB8BD85D2F515ADE65DA479 0224F7EA2276CFED0B75B2C23AE7377F86F1F6F205D6FE19377D87E782143697 984E731F83CA888199CEB425643C259D4FB8B58DD69A96085198306494BB497E FE7C9954EF35B679BBE3847A9C73507874F71FC97665E2A58BA41407A1745247 44A79B588D969D11CE4B863CDA655DAA53CEA5C3C263B345E782006CE9831D49 603D2D95DE9E370D617F5928BA416C362BB2B4DEF16A5D44BD24B34257765F3B 6223B3F9B54DAED69A90C7050AB97B06693D253C6894CBD7B497DA449F1D9B7C D91B421891EC0724F59C82B9CB288DC42F2D2D7A7F22EE3D910E15953D7766AE 276DABED3820390BAF2700C4653E1C77FE63DB71A66D93ED293E25B8412A1EFF 809554BF04ED0DE83F7F190883ED793803CAD2C34A66524D3A580ACDF3C13B22 08F18905E7A4A16DA9ED2A112462FB9FFE481EC2069E484E8BBFC19D594153B7 3DED4C11762223B7586483B06BC164D824D1A6FCAE80A35DE0DB8B33396771DF 76DC5C05578EF1BE00A70BAF3D951A01C87328DB2B0DAD6E1B4C21F37D1BC0C5 A929BDE5EADF20DA60C4DE2E3C151005814F24824D33B95F700E09A0207EB602 3EF60DEB1622B91DB99A855A8F1DA96358F05CFCEDBDDDFC8446AE3391BEEC41 966E594E28D052DD5ADA49DFF65E79540EBE5329DFD86C23CC800F95221B9C18 CBBF941D2FA47EF1EF59A89DB5DD188E75EE94AD2A79E2221107E5992C00D531 2E00B544895A9204656867E3DE9D4CDB64B920B5CCA9A73E6514B36CABAE01BF 94C15603B86780190595560F792E5EF01650074EA4A9BBC6ED284B9AC2020641 DCBCEE0ED27FE58171DFE104EEE4202759E594159DF45113C00236127A46FB35 9EC705F21C0E456C1F0F924594C09AC64D4377C5FEEF764BA4A09ABA8D09DEB1 FC13B0CD202B2F04CF5D73DEAB65C36C2FA7C0DC236BEEF6D23BFFC9C493DC8E 1831F19EEF81EEDD976E43BAC6B5CED13F901DE59835FC75490EA528A72CEB77 24C38B258EC38B9E6B97F85CA8C10D8809BBE55A6FAA12456FCAC786942E123C 06D1E55F7ED04400088BEC968BC5081DC7A1B1B65166E7821679F76694F235FC 6854C8776AF855B83445D9FF919B1D80E98DE0741D06D6C5EEDB3E3EA6392530 F1BA817737D8162F7B3A36AC2A03190CDEC654383E31934C3E0A012B639532C6 26FEBE9B412F1C92D1943B7C18CEF510729D501349644C97F087F2F840074AE6 D8CD0FB2E620FFC908BFCD938B675A0A4A687F7FBE8F3DD06A62D7B6DE7DF3E2 49D367D60B10061EA86CD512F5A1BE8950D83C62695E130128E0037B62552D17 064319BBB9B1FAB9D79705E5D68AAE9B36EA14BF1A59A863BDB8DAD9AB5D7B8A E30E2B499F952D65877C8E38EDD7DB29F9579D09E629AC188DB6A6403AB4BA3A D358B3770D727A2B77D84B6C9EC17E29D88E3421F9B7D2D822EB78BB8BB50692 8C46DD6F9BBEF2E848A2B5669B200019802AD19661537A84D3514AEC5AA47445 2C791E01DCEDF18D9506367241255FFADEEA6183F51A9F42448A7DE413C08359 52DAD2A60FD606AFE14702BD3B0EC448720FE63438D020DEDFCDE3582FC31DF1 17B25FC152789D2F17FD60B8209D292D2152DCF8D28B5ADC04F6659BBB746CDF 145163361823CA343763AA951C640B5D4A99B7787105A1609EDD6A596EFC3F6F 2FC33D0D499DBE56C6668E137715D435D6B683E0113647B2765AB0F3D98AC717 5B33C3EDDE18506E73B4E392B022F30480BD30F59B2E3A59D93017296C3156B4 B5722E1955777716388AA987B2665669716F866FE6BDAD5E74A523CC03915F26 9B7B231F5D9B1F61DF7CB01ED3F27070E36547B263855DF5B2E3ABD2ACC440B9 0826E1DB0D9D5F76C5C5A730FED59C1D9DF5D5FBAEF7A48A4C36D6963515A43C 743589C85EFAE287122D75543C4D2C674E40E612FAF47F1FDDB27FE8CCA96B6A 1BFFF85925827C601F5A7D65931A97B4DE824FE201AFF641F2E18A6AE16E0ADD D3E2FCAE04F092E9252D49E836DA1725CAA0596610CFD3DD8FB0C8A815D5384A 9B74188DFB4135AA18AB54D6F0B2D2CE58B70B5143AB000FA771CC61FD8D390B A08660352E7F6497C9C45C92B4FD22B40398EB1379FB8EE0B76123EF71BF6949 1DBD6F6AA049748E997E6CC5E73574BCD76F7C8C800D888756E8A2E9F0F8048E ED8222DFDEA3AE7EAF03F33160E7B899356BA0D6FD3E5B68172EFD0932F52D61 1BF4B298DA0B4452B81798849F0BFFA9440B2D60436111D5EA78F18E6D4D1A8F 733576FE5FEF07C49C1636A7702075F1511010AF852B661BB6DE99200763DA30 D07D7451747A2867CF0DEFC44733D1A2C8177FE6737497E7D6A4BA155405D8D6 B6816F8304C293A601B66E6AF93FECB50CA8B1A3EA18D2A4C77DFEF7854D0F22 2A22EB216FCC51F4EDE21E4FC06CDBA19699675F78F89990933BDC869DDB3675 EE2AD909427D2FD8F55E8F8876E71430C43623A91D948B3A5D534DFFD7C21365 EF4919F3AA1774211C892C94B2BDAC05800A83E6DF2809E0FBA3A919BFAA0944 C45353CE4645BE284149E390CA20A31E372E2B3C722E0D75320C80B65E65752C 0480897A6CFDED31683C7D595A8709CDBB4A3002D3F525173B6A2E8D893CB532 CDBF3D6CC5DD864B5AED1E9386388B677DD88A927561FE1C13985064EF818A6E 8E21934ED4B59DC2D686793F3E8CD63747634DE0384BA831907E0EE3987E8FEE 5C04425A7E37EAAC4B618BB6B01B325388B6FBCCCA5B71D3926A95AD873353DD 9EF005D5179EDB23A9E7C25C64F54159FEC7F2AB7B0B68BCD376B1FF901E1460 6F83E623B87089142DF115796B7214EB0BE22A19ECD0DAA7AFF4B0C38F63517A EEC8D6EF9F3CDEE9460BF7A7FBAE44952A4DE510EEB2952AE6D3C9EE3972D98A 04BE5750C0C7E23625CB8D4DE2C6BAEEA7CE6F37E50AE4A5F2B07EB11732B50B 786748830A332C616DAB3D2ED12065D9F770358B5961C91BDC32738283531AA3 BAA90485037C0FE4F7BEC9BA9B7344891D94B08E40C181BD64E34ED13FD5F980 DDA525BAF2 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMSY10 %!PS-AdobeFont-1.0: CMSY10 003.002 %%Title: CMSY10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMSY10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMSY10 known{/CMSY10 findfont dup/UniqueID known{dup /UniqueID get 5096651 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMSY10 def /FontBBox {-29 -960 1116 775 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMSY10.) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /minus put dup 2 /multiply put dup 20 /lessequal put dup 21 /greaterequal put dup 50 /element put dup 56 /universal put dup 57 /existential put dup 91 /union put dup 102 /braceleft put dup 103 /braceright put dup 106 /bar put dup 110 /backslash put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CD06DFE1BE899059C588357426D7A0 7B684C079A47D271426064AD18CB9750D8A986D1D67C1B2AEEF8CE785CC19C81 DE96489F740045C5E342F02DA1C9F9F3C167651E646F1A67CF379789E311EF91 511D0F605B045B279357D6FC8537C233E7AEE6A4FDBE73E75A39EB206D20A6F6 1021961B748D419EBEEB028B592124E174CA595C108E12725B9875544955CFFD 028B698EF742BC8C19F979E35B8E99CADDDDC89CC6C59733F2A24BC3AF36AD86 1319147A4A219ECB92D0D9F6228B51A97C29547000FCC8A581BE543D73F1FED4 3D08C53693138003C01E1D216B185179E1856E2A05AA6C66AABB68B7E4409021 91AA9D8E4C5FBBDA55F1BB6BC679EABA06BE9795DB920A6343CE934B04D75DF2 E0C30B8FD2E475FE0D66D4AA65821864C7DD6AC9939A04094EEA832EAD33DB7A 11EE8D595FB0E543D0E80D31D584B97879B3C7B4A85CC6358A41342D70AD0B97 C14123421FE8A7D131FB0D03900B392FDA0ABAFC25E946D2251F150EC595E857 D17AE424DB76B431366086F377B2A0EEFD3909E3FA35E51886FC318989C1EF20 B6F5990F1D39C22127F0A47BC8461F3AFDF87D9BDA4B6C1D1CFD7513F1E3C3D3 93BEF764AA832316343F9FE869A720E4AA87AE76FA87A833BBC5892DE05B867F 10FA225E233BCFA9BB51F46A6DF22ADCEACC01C3CD1F54C9AEFA25E92EFAC00D 7E2BA427C25483BA42A199F4D2E43DFCE79A7156F7417ACF78E41FCA91E6C9EF B933450D851B73A6AB6AEA7EE4C710CB5C14270D1674FA334686653793FCB31B 491E870D3C2BC654D2C1DE463EC9BA29D7371AA1078800EF93D3F66263A2EBBB F5723697BF7448BD0D2E301544BECF497FD475B85DFEF52AF4F8F8BE445CABE6 019318806D10C5952157FF8F8286C1EE701545C8F60EFA854EAE66835A2046A6 915D395F1E0366EFE0C0391583FE001FF16D82A2E2DA5F57754A2C6F69306E36 356ECF8EFC3F1188AD6FCD2427E0580C97A5B69B4E0E09B85EEDE142F5ADD2F0 5DE51D6DB72B127412A0D57106C19CA493048A4F815129ABE767D51715B1515D 9C21067CB5BC88741B7298C83EAE36A866DFA87D8981F179B1C31292F56BBB64 3C430779468AAF07C8A8B4934E1E775FE3F35186BD1FA6EE3689C1C750678AF1 FBF9B23195A124C5C991FE670AC0C86FD39D2B07B9A319E74EFD498B45820252 720ECDF7294F7B0B137CEB86D33BFCEB8606985A3260FD669E461C8BE94216C5 D434FD8854F44EE66E5A289A9F9E32BC36AF645D53F96652602BAED418C8D726 BD04A1B4617551FE4DEF54083D414F7DCE004E6BB2DC9C2EF7CE232B254BA2C5 7DCBD36C2072ED46FF711F121A701E2284BF1B718B3164382B8F453D68FA0377 DFE106503B8401D4DB87F5402A3AC9A442FA060B0610A9524D530C7157C26B56 AC970FCC1D5655FFFFA39246E6420CF97D08ADFB7B05822679BD40C638DDF0E7 A97BFE8918B611A145AC965C203F1428812F9D340AF499B3A915B22BE798594E 0F520109FC81E452180AE45B170FF999C5FC2761C6CECD8742A5A6FC97F16743 AD4EFCC6572A6D3F3E4E330C5CB2FF6FEA48A5B64DD3DBE943BD9918D4A18E18 CBCF598AEFBB6AB3CD2CBC9BFD6099272F6543F3E532E0E21E614BD2880B1023 0AC234CB705827BF016DB84E00E8C255FDEFA0101A842929540B7B4AA8A089BD 5EFF05B72356B6BC3727817823B5CDBB1B963103000D7F2A4E2A1472FC3E614B 5CBCB6D6D784023173DEFEBFA8F9ED87EC1A0A9EE98CA59CFC964CF943DC683F E9E00DA718C4425A705A69D99988EC6F152525C790912C2E46A2381A569424AB 54DF4798BC2D7E7A361E7991641D4B756CE2A7FF4A2848927092C59C2C4B8809 E13AB84FB6B111E680D7FB9F2FFC2C5C66B0B501E4447C2E46C10E2F6124476F A140C404CFE2DC9E0199BF61E035CEB481D438139A9630934E541D261FFD2906 4CAD99E20655FA746AFB81EDBB5601F5FD6B1D6832A01D585E2C55053F6A7378 4DAACCAC7608DBDADAAE732D66B3E7F87E79756337C1A961E53A4651BE7C77F4 038B89C87F650C54A2A90EB7F1D525BB353F33318551EE8D84A6A83C718EA5A4 B2AC0F7306B1E095819B87015A90CA3ED739B09061782C28CDB36BA4BD5E5308 5CBB70414E4112193DAC4A1FA30996327230D1E021F3CD8115E12D239D93FFDC B645910EB29E40D830E7BAF2DB255FD7C4E776557BB38157917D993EAC245837 A3B515147043574157B8342D829C7228CCEA843ABC89D1785A9672A5923FC4CD 2F3FF27E6FCACF84E2D3136CA2C0FD3EF1EE7354CD04C38B5FB874553646ED2D CEDF7E362EADD04B18051F20A8FB0DE18E152385B9D05F98A3A7EF177824E246 455ABE69E2F700EB78185CCFC07E3B4C6FA301112528D977367D30D0D5D59EDE FAEB706DDC970A9E296236C725B2B55B09B9C336B8E23CBA5FB8692D56F33B03 16294E5FC7FAA42E96395A57CE51CA8DDD77442F142E2E576B778373FB31C81C 16840BB422CA827E30A81829648BDF1CA36700EA32AD888D097C1FE0A05B2D9F 483AEE40269DF09AF0D1AD3DF80C45DDC59C2A03FBB661C79B87853737C6D352 67626B657321B16198DBD6DB98A092F17878AE4698121E1006E53D6F9B0A3BE2 3FB68828EF854A0CDBAA68B37ABCA6AD4A3D809AAF0BAB1697A81FE59C98C472 1E33CD70A75A22C249DD11D76C2575ED3370A25892A16D2FD569CDA70C130770 93F493C7D47D6F9A5424A7A542BAD726BFC3AB225DCEBBE6AC4BE006F8C7C0EA 051424B08305BF2D951AB2986AAFEA04E078CA79B399585BFF0F1ADCED02E15B 8765EB6BF6A8E4D0901EFF2C3AA104924EAD9637A35D877E0C51A3C37DA78CD4 8643C8CE6DCDDE3F116A6C2390F948E5371BEB5AD2E87B41C5F01FB5C196C436 6E256A88D082E3F46E4EFFBF605B2EFF1E9D9AD5EE4DDC323A137CD9451EDEE0 06F7D82898D71FAF2362C0FCF1F726F97F820305B7CE20728CA08C63575083A7 84BA28B7DE2B916432475510E274C12FFD1660A717F51DACFDF0A102D85224E0 D6DB607BB72569ABB8A7BC6A10354CBBC01732EFE35B72062DF269CB25EA3DE6 DC603B04C90C5912D2C38D7A5ACDCDD3F6F116D884F0D8C528F69D5D47BA20DB 0A9E585C7D8CC3C324FE8A1DF150279F7E8FB43BDB720E624E5E9918032C02CD 8020636AE5C38DA2484B7F4B34163E0D0A561B43B80E97746DC05C871AB620EC C5D47101ECED4A7E25F291184BEF8B80024AA7BB456C1B83A907652B331DEA34 754226C39C6889EBEEFDAD081E01EF8FE47751987667836FDE4C8BB8A3FD4406 1E643B4EA37BD370734D1A2DB17C2F4B74B4ED75098B433601F75A88C9A37A05 CCB157EF6E32023BFA33973F3E655A4D58289136996FCFA61EEABD70791B6523 1FF5DE71AB8A17038923118A5EED8D59C4C58D246FFA9BB26472346B40C8741F 153D19CAFF20DD2A86C6DB89154A630FB1761929FC3F0448EE2F089C1C953E02 905BA8DE75D101A982A611056C4B237596C10951DD98BAB838B742D3CF7DE718 617DB72E5268583223E37E029D1C8FD3F1D21690151F76B76C52C725CA135CA2 8666553E863CE188BFC9B99AF56AC2DB5BFEBEB12FB563D00244EB89E478657A 98AF2E1223C1ABC25A4500E8119B86EB3C26B8A2F3505A3E5610F89B7C34E278 53FA0A54A7F46D84A35EFEC36AE660A9E3C37EE3864106702DE5AF6C45ABF64B 888A4A51323138CE77DB935576FE6B4824B6942DF80625098CE1B5B32B234F1D 052A9D6039697118A9D793793775D8729D8574A2E74D7109C7B7E23BC5E2E87A CA8E019203952A4892544E1AD3D4EDD22971611358AB230E9A2ABDF00A288501 A01B67C42B33F6B78C39562DB50F4663B922D9BE0D8A150311AE44B83C1F129F 07337323E9A23211EE58E16043E127C6F9574019179F5635648A011266677B56 B5D0201A4E1470B952A1579B57AB2329CD4C615395023C653F784D36B5EE3672 10D191F29EA508CE84763CA4CE7C2C5229E38E241255A5CABCD6C7CBAED901A2 CA53B5E24111921CDDF83578D33D463D70EDACA0E470D8F592303FB6BFD68B4D 3F3BE2D7C5EC8BBF10C90111A33E205F2649B56E8443F6FAA6C721C66575AE12 D4C40F1F46CF9E9DA675AB5D5840D938780CD9E4AD6736ECBEB6A4397613586F 849B51048AC5F9405E03E14540A5E5582F61CDCDB57EDDF95A8C6705F433EE16 648F098C03DED8A2AD94AE3DE202D629B9422ABB031318D48F2C85F9DBFA17BE 84708AA3B6C9F81F4508F7A5CB7B6646AB8722ECF817877B77D473F577556DAA 2BA0ABACFCF5DEA7498C47328E873019A956FBB250FD9D8885D21D368FA70CBD 2709D2DA44EE7A9869963EAB48789541906DE49FAE785ECE1F18A22C7E7ED204 9768896B78E9EB7A2BD6EEC1B26083940656ECD689D92942CC8AF05CBF82AED0 B45A7DF4DD7AA6526FB597322560B9ED3087A65B5EEF1371C328A021411BFE3B D9B5088B2F1AAE381FFED52D2D1E02CD0DA78683E3B06171CBE94BE9760005D7 135893D7CC2DB097F6AC664D9594CF1C650F84DA80D2EDE04802DBA33CE3DAFE EB7A37E8AEFA4FDA6252FF21E8673DD98E67124D5DBC7BACF361E57077B71939 C1D1FB923E4E35C075CD1BCBE0E80DAEA1320D55B43EAB45D9B26C366B278782 7519FDC482D98839BF0DF2E7C3A56A1C1A3FC0E57A75CA414F6536C1FE8EB7A0 4ADFEE3BEDA0F53BE8CF5F64230784A797133E8CD46BCCB3BF38BCE38A73CCE2 9E073ADE792F7128231DDD1F63E6156ADB2609C200837C2E8A2D93D2A7BC9171 050C709A71E44E32B1B03C92EB5CF1D3BAB1C38E027DC4ED9AED633D98CD7486 3F773ACF8AE332631CF2ABE6D606607593FE862ADE31803964E3F4DC3CE3A271 C76BDD95C87CDB3B87BC26FC7A16D567EEC62E6FF0D471B4853DB8A94D4CACF8 843824F818083F10E88D52FC4253E8203292CB40F1414AE7E51DD7347007C342 CD70E8E9F2D2A13D71213B841DDEAAB208AD9EA644591C15DEB084165F9DF24B B91D3BBEEC2E34E38EF16A0C3F00700A7BDCBBFED2EC0D09601AD6538288DB50 3478B051B5E16B604A0341FE621A58718D960D699D3FAD284310DCF54EB13175 19A75A539EE98E804AEA24689D3540F0F12951A3C01FACCE9A7BAF4D0DAFA946 FF65A4D2A4C39969607272C6886F44E90ABE27CA3A1F12A29D9B32E60E8E34F0 17C5FE43D0E69A99A922D98909B2BBCD145E59A5E7F5426B3988F73B09A525F6 8BD4915663C1301323180E760BE81CB874B020FDA3AE63340E4261E4F3E4949B CC0966BDC4426190BE9F5D77F76A72AD925662E5FE1CEF9CCAB68F0BD33DA003 F11EB91AC4502FBD6AE48DA0F9D07C35B96B103E379B8A83A05FE728F1716194 1F650F75BEBADB2E3810388F3E2DC7B19F1BA9E32925F2FD9F19F4E8701F3E4E 4069125D7C401144740691E7A460021A47B1E27997FC1DDABEC5BD0EE0B20194 2D579C7D6727AA124083242BDA46D8E116E2751C5F298851A62B60AEBE82A929 9B9F2492BA35690D1EFD16215B8EF14E7A3803B93C28FA41D971B05B6AF3B593 E74AD1E68A5FCE12A86E63B78BFEA87D3949FD164F12277A4688BE96356791CB 8671C49365608F3EDECC109321AF92B4C29CAF073DA3A7D73E913D0D83FAC5EB BD884D4C686056404DAAAD6F82F94F803FA1FB0DD8908D1DF08FB87A8BB83027 04DE0CBB1C6FEB6B517FBD7CF065120079E608CE41893C2BC96A347826CCDFD5 C69E161217F2127A59F1A6F22037641613F191F22D5B4CDCBCC2EE5615623404 ABA7BE6C5FE475481615B2AC1A2412E54688DD21E44CC9AF5F16E634AFCA389C 4D740B7B51BB141BFAD1080E7C726C1606A28ED492E6BDE9F800EFACD1513909 84E98CEB6A0B7A2A6F3E1D1DCC3B2552795E0932673E59ECC56DDD37A1D52BA6 C3F0E905978AB568941A163F4CE3AAB5C5B16F86016EC47BA6F3F7AAAA77C3B6 09C8C3ABDB6D514A76ECD37C37AA88B5860630B3406B494F7725975596F84777 D9CF48686EC9C5DBCC1D78513F591C7C10AB9D153B3D41426B7BF668B0D04503 56BCB686258462C1DC61095724B9F3312316262FD7C1AEC6E54DE7E5A7BD8EFF 035299B8FD8A4A7B0F51404F4A760F4D8B4C0FB7A32FA4B2383AB6E9C78FDEDB FE6A5788D38A6701B123630C2A6D820A684166FBBC83DB17069494FBD411B333 CB37E2491C5BD035A33867A6D3A3D420CC31ACF43AA07182CAAE67E40EC63663 B678F71D4C6E0EC3A0AAF904CD3AA66E0DE5E3CDE049E94249B39A1C06E3CE9A F974B2484BB2CDA14282B9511E505B3C89F9C802218AE40D1A7541335C5736DD CD565D4B9F4CC78F3A393737EDB4FBD0DA299E21CCFEBA5478EEF013F0552A8B 0BB11FF46CCDB784E8BDCF730A16363E66572049E42C695886EAB42A9AD9094C B635DF4B5B9BD9B9AE8455DFA3EEFC77653190F9A8B1E93B7281C2A21EA7DDA9 33484745BDF7E3DD63C7AC66C286C9A5A698A5E4D7A91710B7FF943FB23609B6 4B442F83CB795788FAB5E9CF3F75D5487DA26170E4561C7941C910B088C3B86D F844B0F340CF82786A3FCF347048463EBD2006281A816627065DDA6CD4D3AC5E 2024BC96C7D896381BBB567951E7A1F29D4E95351298B000D29E5F3D0448CB5A CFDAE1BADE9403B90371C3A07D208948AFA022A69C519434B6813086ADF518D5 88E0B92072A44BA1B3EBB630A13B7AB90992E85B6D67361C8D96F3E0D826FF37 17B67E4B1EB7BADFD98D7F4FD17BECE740ADF13C141EBF0A91CB105DABB32FE0 55086D56A0D358841D15FD349E6B95512E4EDF4C430216FF85C2ABE995E4B40A A6044CC8820AD885C07E052B3F91C2E9A1D163BFFD210F7BE95B923E2500DB50 2075106DB541C267BD450B25B670CE80BCD068D4DBFF2D82634175B61FBD3BC3 406131F44C7D6F18D375D1F2270829DDF29DC14DBB58A30AC193245D18DE91F8 AB88AB548D8138605BB5A50073295534E314366E26665AE70482B890E4101D6B 60E4F3B37ABCA1346DAAE8FDB8DD9C832EFF3E73BA470E2BACE7B8515CB43388 C27AF99FF9322175CF8D4947E6B3846AFF5163E972156847F58A66660EC8A3A6 5FB47C9F637B4CBB4C73B6A080B0CF6FD1E9665E92032540570FFCC747C67C50 822811AADC404BC7ECD1673E8AA6C3A2F1D82F39430B58C29145E2F1B679C46E 94EDC711883F1E4EA84117A54757E8895A40401A26E1437B39A2F65CAADD6E02 D71FA8AF7453668DC613F326A3344F74AD7AC67569AF399385500ABDA5EDD3BA 343CC5EDD4B558467626850E752B9959FEF1454E53E7A3DCBC2255AD8F6AB4FE 894455118A61C58840CB68A925ACCAD75CEACE863D806916228F0614191A1CD5 DC9BAE256018615AA3725834519449B0A88B4F396654E74099C007930ADB1327 DD119BF799FE3B0B223E1EDA04FE2DA7A1C879143E1C33B6C6344F4BA033AD6F 8E88C33DEF1977796B454BAB2494C930F492A518E8198C708A75FFEF8C49C324 A718AB59B889DED521229E741FFE53F98EBE88B0405AD523254FD3FA4BBE96DA DA1C27C1C979A0DD4E61C3B1F4C4DE01E42F1C4435EECFC02D97994BC8AF5270 E7CB1458D76ED0229C5FFB4A23B8716018F9050970895D51722CDE8F2EA3D947 DFF374D84915D5C5D16463A6FFCD079D1ED416C4347BF831FF0C4ADFB61295DC 4D5785BB0852BF472CFC97EC174491CAF961AB90629F055E75DAA6D9898E8653 5BCF379816CAE46FEA62E7BE8E9B953466E51828172C4DBD0E1BBAD1CE28B5B1 02B3E36403BE80B49A47446A6677FCED438F01D60EB10F478C89528FA337D0D8 88D3FC123C076507ACDAF783A9A6E24ED73BF24B6E0F11C13E532DE5F70B1058 93FAF9435086F4932783C7D4837170DB0EA31A11EE76B1B9DFA42BD7AC6B7A02 60798C30DA069C1E3F3211861EA327F5E48E1F440F6ACFCD1FA8A7E239B78825 56FED1C49BCEC941D4BBFED805E0AFCFBC77850BD291FA4F8FE707CB4E8CBD1B 1EF055DBB7929E9666F539079840B5A6B6E1AF4FB0AB0CE7F517E28F67D1FC76 2965CD2C4EB718886E4FF6A9F8F6EFAF9552AD1D7CE47CC42473F8BBFD598652 5AF9535A2078DD3E501DF0241EEAC306DB1C2695D6DAFCD4F28DF3EEA1AF6EFF 5490E5C45D2E2FF381528AE3E23D323472F9DC5F32566CEECBBE3EDC5CB643AE 0E6AFFF1E130B88FDCD600FB8EE982EF8B905CD328142C222DDBDBC4C5D3BA09 2572C066F838176C327DEC57DB65770C16EA31C81821753E86F8A3C4326C4C06 19C9862D301F4A05A8E38F32140F3893EFF849FE4E17A69F02E7B4C69CAD0D1A 25B0C96706BB7AE920C15804482D69A32FE000AB246D7DE1A37EC827603D84E6 1D17B491E0BD24704262A7BAAB8B9471B62D4F982A17C933B93F983B2AE1AED8 CB1F9A2F0457CC19D7A326A3827A5003459AAA2004BAC9DFC0E4FE290B9E3301 5419CD1D7C0F6F02F8F7FEE5BCBC225EA76A078544C0AFA7DB76BD600F23F80A 904C57812A995D6E1B6C456001BEA63FD266DDD5DB618EC21E718A88A69754AC A70F3DFC7C434A4633DCB80942F904A79D7DF67F33DB394D570DC876A0B9DF71 7679E1BC5B3ABAABE49A2D969AFFB1576A7E4C5F97DED2BAFFABF823743C6A5F 74DE324EAFA050BCCED1DBA4DCE81EFD0317F0F9614000875196251D74EE1703 9DEF87885394BD9833036F4ADC444864E71CA92BC30E82E2E27A51931EB9202F 3BED6F3EFDD3CE553262EF54DB5FDDB7D94807AA6039703C6D0DB21A3571B469 EE68E1242618CEF72694E3C12AE753ADB83AC86328A22267205E60F95210472A 38199E09B7067DC71EC84FECAF7E862D2E5403EE313FACAC9AE84D85BBA22ECC 0C2856237042BA99462DCACCA5FA8C88529A6CDD855A1A4551D614FDD5C37DD0 CFD85585880E6AE8A4F4C6414E3C72860414BB09E9A431646AC77B70C595FF72 0385D46FBC28851CCC6AB9CA31DA61985E17708952FC5C8123FD6DAE70F0D90D 543E49E5ED690B58DB250909C05D6D0239F9D869C3ACB49C7DFD70F854D441FD 1D62BE194DD663197CF0BDEE75B3D275C8858BA055172613439C666A42FD03DD 284199ED3EE73A7EA1495801E7FB864C550CCC9D8BBD942C2B84588CA9107718 84AAB28F03AC8A30C252297D1AF79FF6F7C65EA06F804BFAD9B0EF70E4D0BA87 0E9E9FB975EF7CF0873FB5BEDBD56D8B0A1D19A5B0AE1468B029AC3160E291FF E2D6E3762EA6B94D633018DED3F03328F2C1D12754FF658672F848792B071D9C 7CDE0CDC2FDD22CDBEE79C880019E03DBFB99D616580A2207140A72DB0DB2625 029EE6052665A57CAA3A8A54757881E24EE1E1A2D699C526C1CE40EEE79E81FA 17D9BDE189DA2A924E5ABFAF67A9452E238EE3606646330225869C53782183AE DB32A66904802FA8C5F6830347A2A6A7975F691EA8C494DC110A5419B9DA0520 30564B142C6AB173585B33697244AEA871381180E974D4D9448782457B3E9126 C1715EB4BFF7C6E1863C5DB1314A119E263AD281EB61BF93FB63E3245EB00E2D 218E18851F262140A784A734CB40023F649D2E61C65185332E8968785AF55411 DF6D8E739D4C44BD361529613F48E55242F425C327BBE5B1955C068FC8A3B190 99FC94D95E54B8B6E2B35AB0FBCFE8F5D07B521E79DDCB64B15200B52AF5CF41 AEA5920D7C6D539B8761217D9DBFAFEA91AC3A4A469C2266B90BD0A89612309D 9C838968DB7B050674B003408F12C0F7CF25634768F365175B2F135AED48C64E B95808C794B5D81D628C7C9FC5C45E855F51BDDDABBCE9F1AC51729781A48D0E EA396BB6F754BB1DB65A123A742F66F54BDB65D8812A41FB094778F77033DE66 1FEE69020104EC6CE7AC23CC0B155F1F85E3E21FCEEFE920259D117194410ADD E7C715A767829E0F045CE4983A915C9D7845BE266BEA9393A8B3AB94C2BD4369 6829DF8E08BFA735DB92AB39B9D86F8FA1E04556678C400A48A95D02D77773FF 8461486251046290B0EF474EC0AC9A8AA4A24FE2331753D0E5C13BFFC1038044 02B8E6D7423FE57F414926C64B56AB89C9FFBF7042DD27A60777E7E5476BA4E5 C13D4F3B16504F8C94CA347A1DCBA1EBA0419B8E792D01E860C62DB74D6775CD 1A76175FF912DF12EFE8477AEC8B7CFFCBAA6606E892B23C01DF6771A50D8160 C27C62F4EF69FAF91AD8A5A28077242BFFE1BDA18AE2E7B5DA6DC0741AEF45B6 2E337E0E79F93DE2A4EE9D85D5BB7381C97C185493406674399B1FADAB16B881 FEE1B25BA9FF844183DBC0F782EA3E98D125CBC45915452A9B86EF099EE99135 0DEE28E6B1E301263129AFF4B89DDB97B3512085114F36EB29FD33FFB5A76F70 FD5081D65236EA96CED6EF618CF5ED1B180EC40B6B7F3E1C2EA916E7ACD7708B 54B5C7B09E2CAF6F6C75999FB2AC4125F76F92B85E22A19A4364960C5D96BB46 05E8AF1233C5ECDA77A07E09781507796C42E7A114B3DCA63D59BF38EFCEB81D DC425097448807DF86AE299C1513D3AB8647D6542B4CA54612786021FF239975 798058BCEDB9B5442CBD84BDBF2D8DA1338F01C519A9184375A4B012CB398527 0C26774F451A694E82A14C35E4462956A593FD9AE7BCF653EA40AA0539C9FEBC 3600D90AEA335BE60736439706ED83A161E84ECB4B46097F6FE2E71E3D5A4B45 A47DD4D4AF477EE738A82B084A8D476285AB4FC6B4EF56081794812CCE74A8AE 63AE26248F4D166782E4473A68A9BED207C68FFAE4 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMMI10 %!PS-AdobeFont-1.0: CMMI10 003.002 %%Title: CMMI10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMMI10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMMI10 known{/CMMI10 findfont dup/UniqueID known{dup /UniqueID get 5087385 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMMI10 def /FontBBox {-32 -250 1048 750 }readonly def /PaintType 0 def /FontInfo 10 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMMI10.) readonly def /FullName (CMMI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def /ascent 750 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 58 /period put dup 59 /comma put dup 61 /slash put dup 62 /greater put dup 65 /A put dup 75 /K put dup 76 /L put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 103 /g put dup 105 /i put dup 106 /j put dup 107 /k put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 118 /v put dup 120 /x put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3C05EF98F858322DCEA45E0874C5 45D25FE192539D9CDA4BAA46D9C431465E6ABF4E4271F89EDED7F37BE4B31FB4 7934F62D1F46E8671F6290D6FFF601D4937BF71C22D60FB800A15796421E3AA7 72C500501D8B10C0093F6467C553250F7C27B2C3D893772614A846374A85BC4E BEC0B0A89C4C161C3956ECE25274B962C854E535F418279FE26D8F83E38C5C89 974E9A224B3CBEF90A9277AF10E0C7CAC8DC11C41DC18B814A7682E5F0248674 11453BC81C443407AF41AF8A831A85A700CFC65E2181BCBFBC7878DFBD546AC2 1EF6CC527FEEA044B7C8E686367E920F575AD585387358FFF41BCB212922791C 7B0BD3BED7C6D8F3D9D52D0F181CD4D164E75851D04F64309D810A0DEA1E257B 0D7633CEFE93FEF9D2FB7901453A46F8ACA007358D904E0189AE7B7221545085 EDD3D5A3CEACD6023861F13C8A345A68115425E94B8FDCCEC1255454EC3E7A37 404F6C00A3BCCF851B929D4FE66B6D8FD1C0C80130541609759F18EF07BCD133 78CBC4A0D8A796A2574260C6A952CA73D9EB5C28356F5C90D1A59DC788762BFF A1B6F0614958D09751C0DB2309406F6B4489125B31C5DD365B2F140CB5E42CEE 88BE11C7176E6BBC90D24E40956279FBDC9D89A6C4A1F4D27EC57F496602FBC4 C854143903A53EF1188D117C49F8B6F2498B4698C25F2C5E8D8BD833206F88FC BD5B495EB993A26B6055BD0BBA2B3DDFD462C39E022D4A1760C845EA448DED88 98C44BAAB85CD0423E00154C4741240EB3A2290B67144A4C80C88BE3D59AD760 E553DAC4E8BA00B06398B1D0DFE96FB89449D4AE18CE8B27AFE75D2B84EFDB44 143FD887F8FB364D000651912E40B0BAEDDA5AD57A3BC0E411E1AD908C77DCE3 981985F98E258A9BB3A1B845FC4A21BCC54559E51BC0E6C22F0C38540F8C9490 88A0E23EA504FA79F8960CC9D58611C519D3ACDC63FB2FBCAE6674357D7F2285 4BCC9F54D3DA421D744D3A341DA3B494BB526C0734E1A8FC71501745399F7683 FD17EC3044419A88C3979FD2ABA5B0130907B145A8462AAF0A9B511D2C8A7C7F 347FF6AC057E6512902BFD2918E2CD31DE615F5D643764E900B60287670AE18F FDE15545D8BC69591A8CBBB275AFFC9B14BD68DF0AAB32268FB84844D4DBC7BB C591C1AC5102C50A9C7BAAA848DA88B0519F0F5F0813BF055CF0E3C86F633A04 B779D2E8E656DB1E09A66A85FE21CA8BA5523F472A229E83F2C4E91ABA46C733 F3C7B5775B06C97782BC225C46385BEBDC61572458EFC5CF4190AB7A9C1C92DA 29F84BAACF552089195966E3AD9E57CC914D20B6962BE80429A16D4DF1ECAA66 36C4343FADF0B2B48F12E2EB8443C4AA29D00949255F3968617F98B8ABD4CC12 048B838EE243A21AC808BD295195E4AE9027005F52258BFCA915C8D9AED9A2C0 80814F79CF943FBE3594C530A22A92E11BE80FCEC1684C4F56712D5846B0749C 9B54A979B315222F209DEE72583B03093EC38F7C5B9F9BCB21DBE8EDDAE9BE8B 75ACE6B12A31083AC8348EC84D1D29D2297A266284B7E9734E207DAF59A25F4E 4AA38509E993C5394FED76E6A2F25462685C4C86C6E8CFC9863338EC1428BDFC 74616BB1BC8948B0ED4C87C15B4405F3A7796F9DB3798FFFE8BD0A94E834817B D5E9812E308D0CC920470A6F2CD088FCB80462BF7CB3F039A7DF3DAF5B2B5355 E083A385CD2EAF0FC181E40E96DD7E9AB9EF5C7E6866A13B8A54718E950FE097 EF0951A357114F18CE9933D28B3A77AA71E3CE884661F13284BCED5D5FD1A86D 543E588FF473DC2CF9A4DC312500135F29C2D0174B32018C8DBD40EF9A232883 710A1F2AB2CD11312300ACDF789A9B7B93D2035D81D1C84984D92D78A53A00C6 EDA94B24BBAC1AD17774A4E07E6F74ABD90415965616AD540C8ECD8C3A44EE4F 7F4F6BB6238C5062D63FA59B7BF08BE93FAEA70A2AB08FBEAAF7DBF56B95FD93 03CA406543BA6C9527D0DF01F5108D31A51778A5EB1C93F27B72B46146A353A2 01CACBC829603B9989A87CF64528682CCBA0562A8165B185C58A5C6BB72F5E89 500ACCAAB8ECEFBB2640E99EAEEC4EA979AA793D013D61D8ACF8784FF8D9398F F6A252A709324FB39509F0B3A4E725E82F53543383C6765BE556CC897C758208 AA3AD37B0406E4A79F8F0A6C1983FC73E71CD858C0DB66ED66D5D992978614EE 1EA91EBE191E082EBA1FC040AF19A2202575C2EBEB8058833E3520FA03D2F915 85C1ED337E457B9FEEB0C6EF2735EFDA6E0D05FA641BCF698AC6B97751E8306C 4DF00A39B8581FF53DB8F8525FDB196D85950906CCB59B8EF171349AA3B567B1 6A00819947A995FB383C3C1709C9A2C113B2E40BB832B7D4A0FBA0B16A2C455F 55809CC425C403E9668DC66BE45B71A81C332FD4DB279D22A2959962304A8F18 085893DAC61317D24A8F198FDAB95F3B86F0AFD35047B868A9A17037A2829A02 BAB042F75F349E197A7EED41984C2859754CAFD0251439921C248B463B516951 2E1322C80D73F9CBCAA63A585450275AC2492E4D3FB78E800F788254DB5E610D CF788DF5C70FF99892BCDF16133E34B24B77C8F097F546B87C603DDB8998B66E BACB68BA27462AF54AA405682EC96D701F0D474DECD5F95CA2102DF639EB169E D518162C2BAE45FF698B6DE15FC6E7DE48C336C40A670FD26952A6BAB09115E1 991F0073419F2CC2A1C08BE91096936AA0C37E4ED3CCCEE235476074B8FF1125 6BDE3701F85532D8BB64CCC927CC335281C95EA689706F0AC717DC2CF680C754 E5EFD7FA4BB8880B2B727A964C876D4A223069D4E6001771F0E23EAD2A4BBC80 E76675297B2EF05F52BF4E71B3EE2BE3048CF088C79540113C66AE98B2FD3CB1 B0741A215FD070882C52765009D7D711DAA2508F19AE7DDA15229A856AC49BC3 4DDF40814FF96500E4B9B02D412E94623C5FDCC76C0FB8E42DF56A904FE49D65 1DA7C53901B2EA71AB658A464D3ABDE27D9DB8D9E0B48F64E61A2495AD5D8DAB B5E72424AD017DF37964AF911BD7FA21A5EB4775DC8E95EF0C0EB856B00D89D7 8172A1DE8530767D317B8256103E53CFB877E10686A04F5A08F8DC58D843DEBA FD5F40597588663D103689F6EB3EB14D06E18C8078F2538B43E712DF491FC5C6 AF639256C8C6134B64D560D8476DEA6329D995E46CC4BC78841C59E73648B47E BFA7DE0846422F738454AE77E822A083405289247BD7C478BE4974F742CD6051 E99FBB1D1B3FBABFEE855174734EE45E87D0AADF32B1283B911162A9955847FD 38944D70584FAA6B1A7191C5C134B73F98EB632B69E2F0C0F94156787C34C8A3 7622A029D58F9626B74F8A8A1F3803E0BC20E0EADEB1E99B70F1BD9F980FB751 2A842843DE42EB142A84D5D3138629AE9EAF6F3479C423E8829C8816FA6EFA27 DCE5580E65AA9854B1C64163DC318420CD993C15BFD76A8BA1182860A6B03D6D 22B8CF43CFE6C8AB27C64842E239CAE707D3086BADDE1D7C94E3BC96319470D6 8D26915C575CFDD03271D6BB9DE86A0EB6EEA6E768B224A626C62A9AB48A6EDB 44F70BB5AF991CDF9736D65933E81CC57A78F623F33EC9AF535F2F25FA4EEC90 D50DB7E87F31E971A75A33A301CA6013EEC5A4E179D695B33DADF2C98364434A 42926776000B610E17524162253F6FA638D6581C18F99EA0BD1D2E24D2424ADF C05010D08192485153DD03930C7BF45237593E484F9851E6D464FA10FECA5D9E 0C8CCC97DE029030900CDBB491C5CF226DBF903CFE7735D939C3FDF3A20B70CE 66579B28B99313FEE914E295388C7BC8E055A2E54EA3A8206D3C8F4F7C0BA5E6 E519419FD8CE215F7B8E9BEC604A9E3FE272A0328A24E31997C8A91E0946BCF1 6943A97CBED2AB9FC636B49828BBB8B89E0BBC2653796431224895ABA5DAC41E 1854BD9764E86147FD7624F736F40DE3B7582EDDFD15C2BDE3F22B5A54D7DF10 B87A1301CE85CFC061689A890A321412A13314AE96DCD3EDA75035FDD8F4AB9B 897A2C68263A68457032C469987970648BA2D88B1C5375DFEAA35A917B8A952E EE670427942AEDB3CB599C5746180E392837D371E15D860620ABDB6AA7772C40 A5E346661673ACA530BE3D8E3FFB895E5DA3DC23B1B43C080C77F7E47847F0F3 F3AA5CA9E4BF75FC5EBD18D19F21A7DAA3B11CABC6E4070A15F7DBC8B05EB6AA A02EF1B078EB66D61D6AFE41DA9B36FE7EC9EF94D1EA26282A9871E2CACB3126 2AD49C2D9B50A6E47D8F2CCAD50992D1B430979A45FD9E76182A19964BB2A1F6 51779A2B258DC1DF4C2F3074621286831F3848AC152DDD2BA561E6586ADA88D3 598A2CE2CD048F027CE0008B828BD915887D7785341E8305DF2346ADB76BE99F 87B02173BDC334E9221C8DF54114A6B24C1C5340299512FA6C8C51AB4C8778CE 178CEF531C6D1B5FF0A1BE8EFF767F959BD4C345C52699A29A17B2A230842BF6 4B011217D6D24EDAC3F6D53482786F1CA33169B90ECD499407D37CE9B70DDF78 7B7547B32952535BA9ACD1E244447AE3FCED3AF28717083CF9590A09780984D6 AF0743C82AE4FB3E2BB2856A4153A3967A023FFC35382D6C22D84A924900B6A6 3DDD400E6D2418DA6C27F2FA34C075C902B89EBAE658B3C9A18EEE449DA5A379 337DE95CB7AB3F0970CF1A5D8FAD8090E495570FDFB2FBBA79244780D8035547 C5A55BB21A2270F724BF5D442CDC5BB9F09BE0CAE59B1C2270F0BDACE698F2C5 DE8F66BFB9634904B161F5BA2B1950048300D69BABD312D58D89C4ED527AF7BA 7DA2478EDC2CDEE3473DD8A8ED9D891CD1FC21F23013228BB3281B71FCE959BD 6F8E9059D682A7FCC5265A0620992D4FA8D78377EB34CE3ECA070EE3707239BC 98907DB0120CE42ABA32CF97127E28382BDDFD685674279F588D4F951216C355 821361790F64C2CC720DE97E8ECB57326C43EE47367628E05769E106868B54F4 C33C9951908DF6FC4F5ED2C7787BD8FA591BBB3E9C6C1DA94CC5E38D9B20C886 7D237572FF46DD896A4D6163408EA6CEFAC398EE041EAE29D577E75326CA17A6 B072D47A7B13EC441CE6DAA042ECD02134CBFA6809A435050413817193DAEB16 A5882C8AEA44BCF36E74E9ECCDFE7E19FF5A5DD7A94E5AB4F8702C3DA7F42325 23C808670A0490F5B373DADE40814FF9650241D3D69C91FBC5ECE728F827D9BF C928602E05477903449E079164CA39859C4BCA60C579F490AA455F82B5050BB3 969AFB478E0D4A257B3356EA3CD62051FCE6C6B1929CFF85BFDF166BEF658E10 3A55E007F38EBBB248B3F0B8ED1925106B499B762E45113AE1AC9DE09644C84B 9C08034B297314EE69BC32DB6E7D7FB9913CE5AC17E7335979E9DCCE2BAB3725 1976155551F9706A576FE0E3ADCCF72C87683291528ECB749CB0ED291966E239 B5E3630676BD409E08F85BC1AEC9A2D4135376284A96EA24431243BD6FE8B966 95F11A4BB53F392E0AEFEA623064FF8A7002367B0A515635CB2D2DDFB9B4A8D7 FE721754E81BBA548848A235B91AD4E4F7DB19CCE2F61D277FC00AB956EB93BE 44AB4970CA56BF59506C94ED160FB1E25D3DF2988A532BDB787BFB8539D22986 FDC378AC31444E63C4727FEE121A43751043849E6DCAC5B59D0FC703AAFBBFD4 E8B7C268F21615AD02CE9DABEFA27B5FE6A6441B619539CAB1F810F1263447AA 633F5DAF483752EF1A0421740E3A811D2D2898CBF53E7F686C9223FD7235F02D 6F90D2D48CC20AB87778DE3C6FB335E0F0EC20B5DC5B65223FE117526DE2C72F FE839DF93CB2A7D66CD900CB325F891E311BEC932F703FB4FEFA29DB8B9C88DD 375EC71B3D58C7BC59ADA91971A3BDA1ADEA629CE6CC92BD542CDDFAA7706FB2 6CDDE2DF07E56D6741916AE8E8744339816F3E6C38062747AA9FDA2A2678A6B7 EFEA870AA3A4D71B25EE3013EAB1DBA34401B867C7A41AE51E0421D41D3BB83C E120C8FEABA6E5DEC53A689C21426D4BBCB68CB37568761C360E6D4E3596FB7D F4DEC7918E58C0293D12D6DDA7E9DCDAAD7C939F55CD1BC4A228B31E9A904156 DA6B40B08E6ACE674618B768DD681C772A3E55FE096CF949CF3B0460ABDCD891 D17B37B355B29AB5137899C036F31DA026244FA25FB798FBE5105BDA29F46538 D3D3AC1001A7BCECE64DE94FFE6C354166A0F97256137BDFA07F6E22A3D1D2F4 9588DBAE95E895BC5E64DDCBBAA8D0A22C229B42CB717FC711E7E9DF793DF80B 9F14754585A3C7E17F37B32924B9F9870DA8635E3E18BD1DCD81EDF01834D9C6 B33F23C956C2FCBFA47D84422F583459D827D1E120B97694D12F1F54D02379C0 D288F7104F3FFCF4F76E3494F4ACBD1BE3A15543CC680924C78A473F8E311ADF 8FE00A04C6C393DE61AD3EDA5BC031E2353076A2489391B52632387CA28A7B93 FBB065A6EF3658AE80B1ADA47E9B2539E73A71FA75645F85ED8ECC257FB4CF26 B6C912DE9D0F9899E70BECCB934AD32CF49A093371A9F73DE6255EBC39DE1E7F 00D0CBDABD4D0383977E694890E71FBE5C376BE5F3A80C28987417504F515C50 909F3D31178BB9B1D085BE514F71B910A9085BD6122DDC72A150BFE266920E49 5661BCB4BAB51D6DEFE32B616963DBD989FCDD1637B294CE4E288655FBEFA1BF 7F25BBF8CF17C2D5FD161A7C2CC9CC7490D9BF15A1D35B3BFA43ADE256E88BDA BD490D92907C57BAC408A575EC84D6AEE070148C7C9A91C03B09FDBD792E8FF0 C0B886AAD2EDD86541E5E579359D40E3AC312ACD3D8FD49F71BD533DDF8859B1 BAF17F1884E331DD07CEEF93B71D492AEBAADF7A263450A7A72210CE630A0D37 BF024BDC09ACC882816B8C22C62AE38A3A8D0F6EBC2B1B2C0B8161A8B076DD5D 4B779C0788546BB4CF57332230D237856B00D79C28A7C01D11F44B7304F69075 94B97A745DA43D1BE561372CE611C345A843834E46AD9DDB16CABCD3FA33D6F1 F6B5C0497F5EE5400B305CDC16A7EC286AA4D45D0EEBB9DA06AC9C5294D68EC9 E4DC3CA2B92CE8FC0526184A86EDC7AB34D67E60AC12D9CA8FD300235EC968BA 92C6FBDA47572BC5600F25249F60AD287CBDAE980E747FCBE7EE5CD323E733F0 63553B494D3DDEB9CC1480B5C3BB79A28E419AA65B18CB297AB383419E890E2A CE6F98C9900CCB4675280A10CF060B8D220DDA1BE55DFA65715EABCC1AFAA271 B1F8732341613E17B231231A0D24D4D7FC198AE04D89A99C4536217769C6FBD9 5EE24A6302F97438F7C0E311C878F674B4477A5ADA3952CDE4055AC408B8174E 86F8FB797646DFFFE0ECA25D1BAB9A9F71F3926D3D85AA63E7A8C931D71E79E0 AF1EAC26FADE468F4FF7F3861D14C10E3BE1F9EAFD6D3A544E8108D5DAB5B180 3950C74818BC8AF4758A108F462EF1826647A49667F5E482038C54716856D9BC 35F29922846D2148F92F943E951D7438C73D6A60459A8003174036C64E1629CD 155D47FD04B03C023AD67CD5A70C98AB556EEAB8C48169706E5B352F6505D580 AC945171BFE62E81F8F500438AC3B64D857BA5BC54C2C4BBB237F8FA51296255 E66A92A61FE13FDE781D393557EB72CEBAD86511035F775FAC39A0479CCD400F 226709118F887F47CC2ECC8F79816D4A945B2845F50AFD62D8C9A9BBF4739496 9E644BC9F7B04803B7EE75A09EAE94365F6F374B4FCEB0B506C76297564B9B6B 8B812BC3A33929AA94692572B010E6210AEAA312BDFC88BF302244AB9D587A9B 919823FD01DE12438D960944D1977800FEB49E638C32E5B188B1CA033E0C37EE A142F746367888AA119535F0CCAF7EAA461B790EB089D2D6962E28A398439BB7 9C9943654D7A2D765B46BC0DD1F915327F369162E1BA1BA83110B93F442905E0 523BFF5E279508A98568CD5CFD18FABBE9D17265A9042537872831BF5F1F340A 8D3E6DEA1D9675E87B3425FAA0172DBEFD7C28E30906B9FBA65517C9B58FB6BD E0D474E69BB90B0D130A32C4130974A1C961CF064A5BE8EC1056858553FFCF7C 0D78627BDE04E5D0B9F6F72F92B61A915DFF7AFE7DC3807891D039AECEAC3F50 0A09579E661D3DC3022206061E0250B09A05CF198DF82D4F28FCD2A85F717630 90740F78F242019C349B65C2A455597DEE127E914C372C6EA0E250402117B903 1D7D6FC7153D77458569B2E0E6FB978B06AAD616BBEB70B58E0BCAE1013D4405 873D2AA3C41309993563E652BCF2B244451D8FA1305BD9BC2C57BCEA7F065670 A5059B0B17303312E8B787E02152FA92480CDED118924A9D490B2BCBF9A560A0 D4B55DC4968ACE1019CC2840E1AA0596F8E8D4BF7119B047E55B0FA01C69B9A9 F79DA6C9C9B49EAD94943613151247423679B7A29AD2C71BD077306FB9EE0AAF 9AE4B268C8BEDF3CAE8CE885ED53184F9BF2F55AA05933071F536B7180F6301C A04438DB5BE00037A8145A44776FFB8E80CDB5C7C77556596EC0CE3F2CAAF2D2 7C8C21E60A4BF03607E9A06D683510CE217EF1D7EBC1A2E42063F4C3A98C1105 2868ABB34189E5C5ABCFEC3B7CC428FD4582FC334834B2A347B9008D59CD4F2D 3ECF3DC323381E28E26841565692CCF6295803DFBF6238434982C7E88B8BAC63 A00673B07D39BD51007A33368563056A3359D1E7B42F96A12BFD0CC31AE2E0B9 658AE98AD9E43F5C7CEC776298BD81D2E073A5ED5E60CE287D0DF894EE7708D2 1BD6AA1A399EA6F04E2207FB8BB72838974010B8819FC5A96F96E7D4E2ED4416 30A27D7680B335486AD59B731457E154C619A9B11F6899BDB44254220E2E0F8D ED153D25A89804C673721636E4B7D43C0DDEB376DF993C19184B27534804CF03 79375FF95A36E434801722CC948E6EA6570DE8D9B742D5AA8F1ABF62A78E43E1 F644431D964226B8FADE9A6967171E5A8F3D415AA04C3F5EC0493FB0DDAA5132 F57824E51CDBACF58E748D3693D57BCAE712056FB31808D073E39956D1D3F372 A2329ECC0EF2E9EDE4F312D96DC48C5EB0D1AB2AE7702CD64E89C052B0D6F12B 2221BBB17E13CCBC9CC1FD4F50A31CE7B59AD024CB7A00CF122A525706F828C8 685BB633F8BE211DB75067DDEF360108C831C349336B2A561F9BD78CEB8C03E2 1A531D9B02E2E23288C8A2FFA937F2B0C908BA52B77FD2F8EADB2DC616C91497 476C8DCD40B7F42EB17FF7F85427AD4F49E524FC8C0DA7DC048370FFA88A2F3E 9B9AEF8183B57376745036D04F2AD33991F542221BCCE50267F6AB07392D8E6D 10490E4FE63CE9DB4B9FB3EF7CB1E5464FE96CCB47A3CDD054632DCAF62EF4E4 4B48A6365505B6D4D3C8C45659617595C35BB421E1F6089EE9D3E11143D6DF11 0892E51ED1C0BE273A0306AD167C6E4F4409838BEBA270E9DE9695EAAF42D9AB 73076F3093AD97D801AE4BF8B2C7C5D1D04145980E3F2E9DFDBA359469A57259 4ECAA96AC74239D67C969359EF981F1140237276003408187F719D86AD1AAA85 B14FB884CE0A70BB8FD725AD70C5458234311A8B68E8872FEE2BB0E17D412909 B8AD0C421645F625DA8E6178604392D6EE901B65321635B64ACEE07E8FCFCAEC 57A411A6EF5CA01BB0C68A8B944CBCD44D35ACEBD62CD519475D17F6FADD4177 EC7EA06CDA29CE65FFDD42172CEF5E12868B141197CF3F44F53F28B27FD82BA6 0A77B3DFD3986D5CEEB0FB23E983B94A20B0520A5F0056A6DBFB73BD9B2CCF43 0557E89D8F5F7F822F64BD859653C0DAC4FD824706FA3ED572CF41D32350F132 633480EF37491B5656F5FF04409DBD4288C31BB8490DCB94C8BC54E97030912B 416617E40FEA4E0FBCA6F6AE218380667F190F01FBDF5B8C5C2ADCC32757AE27 A36C3AFFD2C222D4574833721534CF9CD7EDA4AAFF97A751577CCF4D98A5BAD7 8240ADC20EC27741008C35278AD047DC8235A7CB9E257FA06A41C42A06945CD3 5AC3DAACFBDFACBF4186C379B6DD8EC5DDA794AEDD090BA71D215B6637907005 63F9253706D74196D40AEC534A3144837AB3C6D659F9D737282EFC207D3B7A91 F6D998F984F487BA275D64C8993F1EDB00130924AA5B4F11A9ACCADE82FE541C 1E357EEBE1A40639A6E96BC69F80F7EF7B43CA6A568E430001829C5F77148D70 F5702FE1AD7CD7A58779A7A2BC8B519EEE8E55A29B2DB9C7B1997AFA75CFF6B4 E1414ADADEDF96A5A90C87F36DB56A15EFDB41756A61B4A67021ADF7BBEA6429 3752BD9812DC39B18ECA5C1754876E5A84A4EC2A8452433545B069DE74DB523B D09F2B6106F2ED566B0CD48C90388A98E12DAFC207F82CCD82E894DCE08F4DA7 DCD71C62E713A4370A9F148F66B1F5C68D5DE264C72B56EEC3D0A9B2E4AC4FF6 73C27F10E819233B6AB0B6DD43509FA433412AEA20D598D920535F8B4742E945 777A597A31FCCAA9498F46B242A078D835FFD57D9CB64E42E6C7C431D3D4E185 31AF924B110AC8C14FDA0F58692F1946F6E1193C1903CB7069581B3DE86B70E3 3B82438A506876E60A1E8F1B7CEBFF39985F17666917C05E25969359F2A0A7FF 8F74F1633B3F55A3BE6D658CF88DE7107398309087D7FEEC5907086772F4013C C967A5E93B82CC2BF068B0166B23C50F5E0363690818DC48D6A922213F8CA9F4 B38E5A2F91965445EE40E6C377A1162CDBB10136658FCC2C474B1EBDCC7B9ADE 661411C15EB9C4AC5E5A855AC333FDAA8C14BA0C59F6B842F1F6C46991FFF692 386B97C172D9604F73EF7A3DF41602914686195B5D4C88A06C8890B06120B494 CCD20D58BF00B2A224E53753341EAE1E8AB1D8C55EB62362C13C77A0F57204EF B9B0CA31A43527F0BC951C216C894FE9C02D38FD2E8DAB341036D073DE5356B6 1392F36FB7B81DEF1D101EABDBF6855CE3A1DE1773CBB47720C48D7ABEFD01D5 1CD61047E03E09EADE842709C02D9220F6FD3884DF1245EE35793137B268941F 49FE7FA50F12A22E3AB87B21D3ABF7443EB7A69A57933B890FD89A0D15626200 0BEF46C13DEA037C3B6D3D5FCC6B3C0BFC32DD3D6469F1057EC1349575C42EAA 8DB3BA082BE0B75D933C8421530C78C7DA6443DBDFB2D888B1EF018C5BC503AD E955D99C295956EC2E59005F11349E392BEE16E7FF040177005DD0C779E3C3E3 3E0375C3E5E3439E022CDCC5C6C5A615725FC05BAA06796F18836B9DEE982B7F 8E17BBF016C0CB33B6B15E9991416B152E5F2728B8CAD1BDA03FDB17A65144F2 D9BE2EEF5A808C5BBC85B2A09F43D3434310DABAA46F7D8926D73AA23FB72D08 6A94FEE6F2B7EC32E334DFE0969827E3D0C013E000EBA1E2B2509B0276C07003 2BE0CAD708CFFB649B1A8E21801DD276E8D41F7F57F05CEF386C071EAA54F0B4 679B6EBF198D18A89090FFD35F3346C8A20330BA75C6D9BA463425E02FEDEA76 DB9F51558CE637DD3701491B67CC5D269114DD62462EAF81AF8AEFA1D32E5685 8E6BD286EE8B42885A2E0A9E6FF424F3848428F140888385E9DA84C1F5099E5A F0BE54671ED73BB6C11FAD91C5F1218E73CB784481B063562221BDA82A1F71DC 05B37D2DB8B7A8DFADCEA064A04F084224CC0F5D17F490C0138C56D78B23EEB9 C2943908525F8EADD3468B3309976086D0BC7EF72B17930B7DB82FA608E912F2 1EBC08CDC1322B8E2E3883B2826A8620CCFC2A4E45B923A5AA5736467F560145 371C279A96E6F2901A8B10EC6B048465A9A64B6C6AB9D1F6E45C90044E36AA59 B1F224AE45CAAA6256930B5AE0C98A7699F17B63E53F5E33B17AF1559EF96279 9F674757379AF899EA48BC0B437D052BFE345A2574E31F9ADB58489A33FBA8EC 12D23E6A0E5E27DD6233EF7081715C43D7A5385123838CA285D5ECC9266062B7 1691FA252E28B4B51BA2EA398F0BDCF2B3D93455C893BB1432D48B826F5EE03A 14C6219D344D6CB6D13EFBC5B3BF8A594A6C716256ECE4832B456A435109B2A5 56AE0DD12D6983FA9D9519442A7DBD61450E51A23771576D8055A379ABE103A3 9151CC7136B0668EB5D3A5FFB8D8CE06A05E26B21EEA5D52F64591B24A91535A 0146C3084F58A313D272F6F753F5A850B86ECEED665EAEB3AB77F16923966B9B D12EFDA0BE5007515E115516213663B2799155FF903E6CFF342207B2BEB4314C 550F3E52E116AD2C34A814C2D3FE7B345A92169AE858D397E40DA9AE8874761D 1CCB08E8A4BFE9A6A096FA8FB384D041FE66E5291B621ED119C72785EE9659B9 A6FDD58E76E8F608C5D5ACD721456AF8329FC95AAAFC3668482151DCE4FECD07 A33A5DCEAA84265EEDF8FF3D317C93C6FC5D301AAB259BC39B4229D2F2B7305F FBACA3DE621BDA7AEA5D000B6D79E747714BFC9B7A6EE01C3B3FB1625CD03F4C 89BF433EBE4E751182DB33986B5C551BD0FD7FC5313CF0CD29AC91D26188BCD3 EE34FA3DFBF08B931F6BF9BA1189411FB4B1E56722BECA6CD5498B38C1637018 CAC30BF3C9F7ABB47C05FAA4EF5AC10FBCE494C25B4EBCBCF251469AE3CFA412 33C5EFEA06437604FBE4A6BBF9357E0FBCFE2E60C0B984E49E4ACCC224748F4E 02C277C41E7ECD611F6E3DB9F82800F8BF455C18B246C7FD02BCAC7D1DCD43E1 6201B40407019A2827E9ACEFAA50B26ADFED89290B99CB27BBCFE3A4FEE20004 A81DCA69CBF8A6A6D4544B475338270C2FA27DEC6044CB7A7BECAC8F44ACAA6D E56D88B3C484222767C773E0AD054648A15000AF9CECF5B12CA55C954E02A70C AFFFFD7DFE9BB543635E495BD4C788C687256C8D0A942DE3C8E74B5613D456F5 13423A7DDBEA0072710F765FA5DEBC9A4B270DDE71926EBC9A698D09C00252EF 18391E39718D27B1A71B3BF192FDD15B0E7CF0DAD388110F58F09455B0919411 E4C07F0634DB42F73E9BD52BF797B1DC4ECAFA401C2EC33C6011CC5F6F0EA899 0A8B86E6FE898AD9F600AA6EE59C84DAFA908B21E685ED584874E076AEEDA361 EBA802B4684110BD1F33C6B2CEC375AFDF850F0DE2A6299EBA62D0FBEC5209F3 429799926D64DA8CE10BBA4ADB0480ED4B6F90709A3BAC96DB0D0AD6E02781D6 372E32EEA2D4129559E1E44980FC517D6C8B92023A3536C6A6E27ECCF54B500B 6BF2556C2A94945E9AB0D77BCEE681E75ED5B59D43AF699E2DE95D51B8169A4C 823AAE09AA83A5B036F75905D5BADA255CAB167ED79717CFF39CA5A13F2ADA22 B5E6D95A9136950002156A09B37E1629AE5FB2BE1B06F6A8A1932713F39026B4 F9F6FA1460FBB2B2E7EC90133E78707C706D14AF1F6430650445BA2EB3AF8767 A362D45300CE9BA8B5266ADB80EDF8F07C81707FFD9D3A2F61B7B3BC90CA3DEE 3AD362E45AA33F0CF58D7B86C235FB8700DF3FF96F03493F7DD60460121ADEA2 CBBA407C524F45BE8229B2E29ED1E40BB4BBBBA63FA0D31E9A00549AB62C1055 90137442D48C56F64ADD71E8C8DBF7D5BB9E5875048B63685FC3BE1C6A5F1DC3 E4A19F78114F50239F9D7AD84B5F7C08CD32A0C31366D07ED690C556D202CA4B 5DFD1C8A4DAE40D9F39A7EA64ACA7F0363D501F87311B729BFAF8B9C775E6A52 A7B351D00667CC645C1496910214FD1C4DAD027ADE8586A1B75C61E3F00340E7 641DFF93CCAEFF605241C990B9BFBE38C79866BCD1EFB0FF938BD1A199737A0D F4B13C2EFB8092A4EB9261E93F601513B111FB67BD6D9A0DA09D1AB6BA5BDB18 1D1959C8B99269A4A6B284D7EE6BCE0F9C39DAF3C36CD6493E5F9F4834F10D79 D897755993BDB4227C4E28FB97A1A57E7EA903EBA10FE8F03B273B0465E98CD2 AC87E4571B62BDA4EB46327F00E5085BF58531C0EFCDDECF4B641D6B49DEF943 ED75BB4485FABF23A5E518541EC946B70FF25C41AF71C911A5A4306A7EB6EA71 A1ECC68D72838B5D5BA0A96C07697A24E5CD46E089895D593BFC3072E494FC9C C7843A20C938C713DFA1DCC63475A2F7B788CA428DB43F2C9A9085F21135BCAC DDC5908B83F30DA0591D8D913C18321D361B0F941C68430170D308FABAC24EF0 04F537C7904D63F779F674EA042F98641E67AB0EFF90FF025CEDA4688AC93D92 4B3D3C56239C4C3EF58D2B0DBF1318BDB27484293FAEF48CBA32BA4F40D4F441 A917632B4E1513034BD7E35C4BC84218B29C99F185EE3B6CCDDBF6A94141D82B C83524E9D934D2F684B56675938836B4257BF26D8E690EB3E904AA0173EF92D4 CCB3529FF157D3453E0FDF5E376CE79E3D91B947EE26C8DB3B61B8BBA8876F6F 6B46BC1A458D08461232F5C67B3FC09BAD5B6F40F69C8A47E574CBD4D7D3CAC9 C9A45421830A5B2252B75C66BEDA027314601CD2C7618A8B5B901AF7051A59E4 13C9930552D024847A748FCA97C6E514C1A831BBCED2E7568DD6EE10063BDBCE FA2098218CB852EE36E2C8CC8989E14B65796A0515C6AB2F81AAABAD2A256A1B 84C7D9347EB9775AFD6817483EAC2A4A7CE2A518A6BAF5FB07D0E35BD1A55196 7B05AD59E2F3ADB7E3CA7780974A96A4D2EA3A48DCA66C393673A143E7C1CEB2 0B8DFE5DBC4B29AFEE8D0A6BE15A76AE9FDA8999D504B49BD36BAE5E348DBF2A 9F391E70A19E0654E440295C3FF8A7271C104F7447E79A3D88E409A18940504A 0BC30B473878049B00B3403C8657C1D809B4417042F3C401BE3E603A8DEADADD D4C83809EB46AA75FB31EA9ACCA1A9A268BDB0780E50054B4ED971827356409A F49265DAF6F3FA9F9D34872234701C56FBE1CDC41B6EC23DFABC89A9343C8DB9 D0A4E53AEEA335A8E857150F0AB661F41481DFD83B439D7806061FC970CEC1F3 46E714EAEC3088A3BE6DCEF43F62523EBE7D567BC232241046A3D7F62CC02A14 0DCCFA370F69D8B2536877A0794FA96DEE6CAFB2124D669FBC298F83DDC11C4F F4B6A605B21C0074E2FB6F5228109A6618ECE56334B137F76A3E1861E896186A 5CAC8C114D0E01325B3AEF6A6251B92B0458E5C8258BF71E9A0B0E1A905AC4F2 DE9EEF530F15418655C562FC5684E06FBE85528756921FA17AFC60E19CB538B2 445BF5AF479FB38F9B5199BAD6613062FF33371016615C241E797766452A296E F14C58C00473AA8E9B18241C604DA27229DA8731DAC217B5E2BB3754EC8CCA06 8ADF98BCC9CD328A919A3FCE6C8C852C293B97175077002C3206D0CDB30D129D D2F9C1B646028968190114956262198A81E12EBC4071EAD718832778F63F396A C94A7FBD71F3B504DD164DA406F3FABE7C94EDB0AA8EE06D3CE044167E1BB36E 8FB22CB1966B74122D45B2B0DBC95E37A9CE9309B9BA55816A385747EE54CE3A CD2AE8C17FE2989CB461504E17274BD2A5ED864266260A1153E3A15B5227A388 16F428C2F5A1F6A4AAEB8609FDDB6B60F6EDA423A1AE46538CBAC2965777DF03 011CBD443C2E5BE31B130BB50FE921C9D9E0BB271B63E626E13CA10A1DD29A20 4D418E76DD8743C5C66A163734CAAA273BEF32B0D3D93CD511398062A81276E5 84BE3D9ABA64714206AA4006EE6EB7C39A6BE8519F561B8EA2D187A5F0F17141 2502AF6B58C646492F55E6695C1F62292EDF20842376F9023B94EA02FFA6D311 3466F3EC08A804AF1A2FDEA518111418A2F3AD43AC222284267394B261E9428C 7C70041E7566C9F88537D01C3F03DB05C5C9D7E428C29787FE8464C94A5C5165 46D6222726C7A181CE80176CB7B6556A3E02E1B16EED0443EA3286F672DCA331 D2D2C453AEE835ECA28E1110862C7890EEF47B322A833E90C8F218851BEC0FBF 586AC626876BBDFBEFE893EE798ECCFF74992B5695641D6552DE95B0818A5EF4 5A3CEEC4E72370AD89471BB08B83290B4D07C83E6F3B539971641D28F31CBA04 349DCBD5405374057F76557DE269EB243B90ABEB911D00E43724AA8ABDB72D55 422399293A1A9E10CB65E99D4E2B5F28188B5F73698E8E2E8E062552AB41688E 149F8C3FB6F4BB075A1EB8ED93F260D2560D26E0B8F9948605D3E04A8A2EB9B6 EEAADEC0ED1D50F0795CCBEC1A6611326EA6609F0D8555104462CDA555972825 5609936140F371C835CD55975D13FC053B41B44F7360CE1A3E72BF6F3C748814 DC2BD0F9CC7A07D0F58B28DD9F560EE704B9853EDC7E8EF8E8A7D1576EAFA600 D4FCE540A29BE5D10FD7F2394F569798FFD04D5B4E760D1B0470E60207001B8C E2617237F0AD82B187C027A42E8B148689B443DD957DFF0C7959A198FE2243CF 4D5CC8CC138C54B9E7488F35F55AD17EA906CB4B485573ED7643EB2305E1D309 D6A72D64607DA41A84D64252E9CC3646744DEBC1A356363BCC504377A541F4EB 9FB7B9E004F393726C90DEE24B56031AD914A0860B2FF90939AB70E06553D3F2 CA77A0C3C5C1B9A8F69E4A6DE23CFEAC73969DC9CC034C3A4814648BAE6677B1 C528633778F6796999F89B9D3FD3AD4EFC3FE6DA103484B783138826F4E35AD8 043B87168A0661D274A53639E5184F62BE9DBDFE56A361F4F6D4A30E73C8888A D4F19D8249CE3C2BA6FBE1CD631FA87BB88E9B754FDB4119A5380E34B1887DD5 5BC4CEAAB2894B9B859C53355CA0D1CCF7949F604AEED29E0A39865A8CA51DC0 73749DBC071743706D3FBB53FD5A22356A8928D8255E418B41DCFB7B5276DD4E 95DA4AED9FFF1162CAD4E77F655B4B4C1614039A69FDAE730D23DF9EA15450CF 8405AD339C4A1CF342B2B8A2ECBB60F973CC9C1B49B715B33F6805F8D0272F43 1F1E82E4EE4FE24F72EFE5B0939E0B22D5A522DBFE4411E747ABCCF2C87B98E6 FA1A0AB7C030CCE0B5639A3BD163AE3683D60D360A000ECC474EFA2F170FDE23 573B897BE0304A44398F88C2356D54B1A6646B1339691B8550FEFD7808097003 1C610C3944937EBD34C317A4179137110C3D0860337D129CC39ACB13AC8412CB F0F6093779AB5B784D010FD5362CB5B2BF 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMTT10 %!PS-AdobeFont-1.0: CMTT10 003.002 %%Title: CMTT10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMTT10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMTT10 known{/CMTT10 findfont dup/UniqueID known{dup /UniqueID get 5000832 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMTT10 def /FontBBox {-4 -233 537 696 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMTT10.) readonly def /FullName (CMTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 35 /numbersign put dup 38 /ampersand put dup 40 /parenleft put dup 41 /parenright put dup 42 /asterisk put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 55 /seven put dup 59 /semicolon put dup 61 /equal put dup 62 /greater put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 90 /Z put dup 91 /bracketleft put dup 93 /bracketright put dup 95 /underscore put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /braceleft put dup 125 /braceright put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794DDF2E5ECEBA191DB82B3 7A69521B0C4D40495B5D9CE7A3AF33D17EE69979B82B715BAD8A5904C5DE0260 6C15950CCF6E188A0CDF841EB68E5A2F88253E382140F87C87E55C9EA93B8C89 14A36CDF630D6BE7CD36DBDCE22B21778E8648B97B7EC6742EB5114BDF0454B0 0EA7B1FE236C84C0E5308C871F67B973892890557AA12E00B2C20C71F516C397 3F3BBD14A1D0149CA064391056E45E9470FC7F6F556ABC82653B3C8049AB5CF4 BA83C8F2158C236B2FFD4208846013BAF4165E8BB8D334C8FF2E8D74AF5DAB2F D44788869B08399421AAA900ECC6A2D594641C121660D4B5F512938994C18DD0 FCD9B008F68F0351D21ED735B2740CB1E0C1CCD25EB548C35B844601D98828DB 556F71D07E081A593FF12DAF83676492A0FFE16E95717A07082B43A966C1EE8F 8A59E1255E1705C43A23CF29A5E4A6547C93F1680A870EE7BAD8CF74D838CD5E F806911D8FE4262ED8E7F5BC58B92C9C6D74F8AD45FBB021EC7E97393018B9DB B1B84E7B243ADB05ADD3F1DB3692ADC5D47FEC7DF93080669E63281F1576B673 125EDF08016664BE73364F65389F7C3B66623AD1754ECBEF9E5CE6948D933787 A5674279ACB2EBECD3B4E6361419AB32028A27670C9F3E18B746A10B00AF6D77 4EC00E3BE521C02A99AE5BAA98F793EB1228952BE67934B91472E01AF7B816BC 56D7F19F631A1927846D800C107B1E9CBFF9D2DD513B4A8CE2E0DFD77B1ED178 E43FA7052765E9FAF89989D490D8FEF6C536EC0D4AE27A74F474B98DA9E6B92F 15E063DB260571979A5DE2423920CE1F59F56EB11E00E3BB9D466A8263E1E385 2014BEFDA8D1EA3EDA04BE32AEE6CD15C5C010A1DF7F705A2C0C18E87C8DCCE9 05D9163181CBA56C0FAC8C06A2990554C8E759D076B01BBEADE3B5FB8B551390 6C8E4A2A1C6E7D9C708614626F3770C0AB7DD2027469C77975C27576065862AD 04E5E50CEBE907E3E991FA0C627302C0E207B4D5992BEBAB5853AD1C0D271728 C76F40A79392ACCA7358F948AC65DC823CFDA59E1FF69CEBB6B7EC3CF21669E4 70D999508F9C49E2D9F8818CA53C977D93E15FBBBAF75B1E84F0BA62BCC4BAFA 4EEC82D804C8A8C0210F3E5E258BB1F6921AF02BA9861BAD5C3D5FC8CEFABA8A A607E547B802096F7AEB09FBA99C83C9A494B94408DD607CA6561A6E6660C473 62CF8D35F31D052F6C6C8138A8E1430CBA7EA6973D6D510C1A06B3FBD79D9364 240C1A00272DA44B89A9FE8D5BF36DC1B5EBB4A78ADBE9C5EDB485F093D9517D 69E1AC9A8E6C9D7C324E3797CFEAD9A18E82E03F69B2CED7D5DDCD1A218BF2E2 ED2293AE999FE2A4B5213A10083EE0407BCF8007670B8C737EAB30311C868D84 121149ACB4A27F3ED6C0C181C98AAAF51B105F264B5672D7F745131ABAB5BEA4 0C9B43C0DD9116D6DC61F90BE72018F290D26D5E9D341055CAF09C9F45333CDB D45B7954271767F638EEC499F7B53C2CC5774EA7A7F024C4CABFB93D9CB1856A 0C671A4ECA7C62EA5242648A84E7F3AFB9547A0AFC29593CFCE6D8B873A78157 D337CABD291431C0A2CE1F37E0CD7340567AC206FF98E4B5A6410F70F750451C 550EFB54AA259A1B236CA9CB730D2CEF125EC65D959441F7CC9768F777B44844 CC9842A307C72B740680ACBBF6AA35FA7A94825069BF7696ED81A371A9E5475A 9D997F2DFAD339AADF797F7E03E654234455AC3D17702A420EE0A597BA31BDE4 FEB8DBA7C61D311CC90441A620164DC22DC2D373973EF84CC553453AB1B3337F 7B39983B8DFFB3A9425F119B45C1CD37A76F905777B3154CA6200792F1759D06 E017890F4041A385F2238E3C48B6C8EE6F5258463FDBFF7AC762F6C4363926D6 50F004D473B7B7F73CA686B559C2885F1AA761653C727A77D73431E9D110E76A 2E55C68CD50F43997C9B2FC4710F8C8540909829E215678E63BB8363C4B8AF05 9986102BB36580D9CA95CD216B7C321822CB41B2E0422CD077F3B55E0246FDB2 44D5976F67296B5B0BE4B06F6E43535C21164E6C5089C3E9BA2D6B30888C57DE 49DC8D9D46C0D5EDC47ACF2C03B72DE3B69512508539019B759280BABEA12BC9 385308A0395C4CD33182A10A5A229743379C2075D82D8BFCE4A66E1AA087A091 8F5372684FA5037D1B92D50CD9CB4F50AD4F8EE7D51F1C9E63C721CB5B9BD011 6F0A8DD4FDCD2B008F223A1036D90F0F3B252487DE7898F9AFBB3A9D9CD49E0C EF4ADAD5155A98D2125ED5A3D3907F67301649519419F33CD942E8DDEAC1BDA0 E90C431B198F646766A8FA9F8D1561B57E126EF604838C0C1966655CF31FB7EB C8CCC434FC1C96046D38203E1791EC824A3D7AED85C029288D4608CA7668A2BE 484C99639F121845B22EEFCE0A3B808261921AA042AE19E641769E91277BEC29 4594082CCB3058F90FAC4A700A8A827ACA00FCF574ABC8EB7DBCECD97F2B22C0 0AA19E8739B81AF8C6F621D69B8E6F29BAE233FBA655A0AF5BDFD7F5C6B9167C 6BC7AB693D45EF2AD999F5DA3CEFA39BA48A17EE6D9F2C4DAB91AE3F0044DC3F 5D5506CE4675AA928B0092D6F173644F91295216D8BBB14CDDE0AD524A4D545C 1B5E284A3BF0396664081CFB4F186A84A0D24D61E82F4767C1E55A0642720CF3 909FA1AB8EAB78030B59BEA067DEDBD2F1D0340E790AB2777DB18248521934A8 BB38A58B7F633DEA4291B0D5D13E9A882C974697CC6D3B49E030C94EA29B5506 CC29C44D01B4751B453A46A9F6BF3BF135AE87A4CE232AF57B66578310DE41E0 2A6AC422117F1963C4D7CC306BD25A6E724E51921779F22F029733122E23E2F0 CB340008813ABB104380C80A492B3FC6D0BB07CB8D8409E9576891EF6E5C9D08 EB8320DFA31BAFFBD336D0C2BBC3D3B2D30368B9860768FC080D30569C7F7811 0EBEDA2962476113625EEB555490B8CE4C5F99D74ED10F738C61854CFF8B41C6 9402E56BE8856144A1A05D0B05F4CB7EF728B2F4F5A439F18C3B68CEFA41E59A D8308ADC92EC1289DC84CF48D2CDEFF509A145BF945E1E00D552D329EBD2A7C4 21D58082CC8FA790E981F4AC8EAB99950678FD3A7DA3DF13778681B208DD71A0 7C3CBD0664B37C9EDC6B601D79A2C51FB54DAEE849F93209793849104E722D3F 52DFAF7047EEEDDFE744787A5801E4AC2C3D58EC5DDC15FCEE03990C53B0C57A FC54F125A04C8E4A0ADAA725808C587E7DAFB9F784FA2875689979D316DC22BD AA36B306A1ABCF907B63C6476737B746099973CAEA8C1E2C5C41F27E0F7DE8D7 F0D942E34E92F43FE902653D4D2EBB6F3B9F7928B1550A82AF234D45D028F429 067652BD3D391BF423AE72B9CB1E8D91E898161BE3A7849D456A861A2046711E E934DC59442AE7D81661CE8EF727D8D7DDC0270E937E40F896AEAE6171661431 C1025C53172F9D366834BA0054FBFD84503FBAE328B6FDEA180F8EA35B1DA937 5CC3B8F00C206908C2FFFFA6A7AC6915D15EA44BDCF29E2BFCFD4A849535F19B 0D307C696BE8205C7D84B9C77F02EF27D911056EDBB4080E4D3ED72788666CAD CD91B0ECE27A177DB23320A7FA9C31408B4D02D2A4B1CC6DDE1A6CAC3D8EC1EC 2226EC98E51046D1EC26FA20EE62D24747D83CF4941DCE5CCEEC0DBE387149CD E05B19FFCAFC0D117F9A3E60DCD4C815228D98EF95EB559AD0ACC0D50FFDF714 56C3C812EA5ADBB013BBD956A7C4CC0ED7D3E25D5C9AF5E626F18297F75D4957 F5B0B33379114B903FE98BCF35C3FF76FEE1D9AEB711F2962276531F7380EE3F E368720E0292A170A15C5539B1FC7BB954EE2624B504CB8C805B8D31AC38307F 0513606F09211AE64DAC447693B2A0AD15E9A64C34F5A911ECD0ABCA90E9791D 67C6BD202B0858EF96E7722305B8AC02B01AB1706CC6AE875A8DDD15EE349046 EAA65005E7866B506EDFB7A5A2AFD5C9E9DCC821A79EE9C1EA2C7BBA32A40BC7 CEC26DB1AC473C8C3960ACEC581B37D6569E8C8C42950BAB7930B65E1570E3F8 9A7FA719F1DCFDA45A3BF2AAB32C9A93BA3552608A61C623DE59BCB346E87EF5 9CF025A87803161221C5C1C6F6B3403712C76E9D755C7BD68D7F2DC03C14CDF0 C1BBED1D648B905B4B17037B7263C1EA7A7F06FAAC4E09E08483A8D714C19861 327CD9C32DDF850302DD6DDE24912D00C22ECDF3CDFB18FA831A41A7488EC203 F564CFE30D506F0829A96D35A7E09C3DCD107D589B627A15B55C5D6649126BEC 60B88C55ECCBB4E680265D9EAB4CE22965D3B1AF759B01ACB0D0E6C92B6B4EFD A81E6A648708979487FC591CF09631310D46891423F4EC159A73E30D8DD147A4 B0EACF6D45D18CD16CEB8176F03ABCB41F2234747B9733C8FAF34AE5D43D3BA5 0CE0FACFC9B087F84FB6C68678BC6E76022B1526D6E5B3A48EC1A110BD75F45F 1C4DC6D39F254976453F57DF873B7D635C80C42026DE020E5BAFE0DA0D54D1E1 DC634D2621BA184347E5252F645A6A1DB7657C48124186F0E4C644077457C24D 55753C651A9A7B6349867641464B515B821349C795A645420508673B93750D0C 7A3B33EB1F09782033742AE8F3A23FC02284E6C03818FADD1731361542E3FA3E 75B8D52B668C3E18A4AE967D0FC3157083D952AFB8144D549E69EAAC51C279C5 E5D88A0D9D53013DFFB4352A1598FF84DCDE6FA32FC377306B9B92C0F96EE149 8CD55E7B2445B86CCA7A547FA732D52D59025129FD8C6333AC0DF4F0CFF6287E F2036D5DBBB3B91B92F12FEBE0B61A313A4DB5A9CF0BB3DDB781A56FEBFFACCB 8CB9D1D3DBDBC4CB6AAE6769E470582403CB920630221B68BCB625CD4605FA8F D3D5B7A1A28D15E44B38E92E906C138E72C15B86F64C38E23BF0440052A8C914 54397F49DBED99D0AF7CEA3B0A05FF37C2D7EAE1412567E6776333237C31E3C0 49949EC8BFD6E0F6446CE2D4DCD2C1524A288818CC5D159BF8463A847AE4A2B9 CC8C58F822804B81B13BF4F2DEB6229C4F51F093075581791D02C36A13B855A0 34900AA7CD4F1A797652656FE3A8425A38F421C4CC0ACA1CDD44FA6B31219276 1CDE1CD63D6A58CE705CB56CCA1260F9B86E989019071563A9B4C274A87558CA 6EF1660D574EDA276801F0057740E2C3B80D253D697736484D892CE1AB128B8A DECD69712F5E70E895FBAA927E8194D792A04AB6CE205E04E38A433BBB793FB4 E8BBC4279D58A223C6673D909D6AFECD246E66A52F4CB35E5931D24C828489BD 4ECAF621A220D8ECF702BEB01C4FC7510197D3F6D15321EC87175ADBA6434ECD 2B5A306E91375CAD22CD94301763E4A8B981472890422C5488FCD523C9CB17DC ED22FBF12D5F7525D0D6BCFE8CE85B0DFB1D6F989C267FFBA0A996D309E4A934 3DB54A9D29C88B9D55D7300DA3D46419256C5A07A2A529A8DE8BD1727281F5FE 97033D861E0531B14E811378EC1AF1CC7EE9BA2B07D935843D3053F673979F8C FAFD59D555B56CE338F606747238B22BD62C42BB7238FEA335678D474A643570 A9E7B4970E8C541CE9DBC7BF70ED7BA33639D6744A18379455029E934C95E2EF 639C4848CE9A0879B51649FAB023A71782444B451F92A34CB8A124270CCF86D4 D18EEF5C1D2B2A29012613851C49F50702D63BACF95EE2AB4D72B375E0A62615 E0991E130A67ECBA9E05329B740708F1CB148724C3A6E5E3AEC1F88EBCA398D2 1CA8827C977D72734310233176D1AE26C55CF2CEACA62223315C28FCF6305C7E A22414D4739A059F552F1F9372CCCA5FED4F9AC987942848EB498900269511F3 F408CBEA0659B954F5F1B18AE4FB270213646F9B28AE4439D2BA2D3E0AAAA780 5E530E4EFC8A060EB979E12191044509DA0C14397AFF949E12DC970658D5EAF5 4EA963F5BC1407A32F3837CA6A24B7F3D60EB8E6222B702E25ED903F9D21AE50 664A095009BDEAF4B78DAF94E5A55D48366CABF07791A1684B2F54EA69070844 4F031AF8DF416C2D3679F8BA038B0DC9DD0400CA6B34667BCBBC07E62C1668A8 35A8C57C9048A7227E672E89681B54D662079A189A9E96A3CA96D8DD10189B04 1DA49BA2729F1CA585B1BD5C467295285D52E47CA904235A1A3E48EFAE9EB6F6 01374125CE89D53C276858668CF45D2F092DDCAA52418E0BB94C2B8266B4D88A 5D911507BB1DDA3D8F6E7C14A91CA11AE799EC42E993098E18CADA70BD2A1D82 2C39326C6E3F9E84CD9758B9AE43D79BF99E6A0CD713E95B3D9B7DB90D127DE0 DAFEBF850CAAACBD860B5DEF2082F1ADA64B44B193C4A1417BE221FDCA36456C BE5934C8CE3ED55AE3A11697C2D682B7D0F72D48976451D205783BE25DBD2507 39C14FFB4BB828DFD187104F38A7F11D5F0698C11E8C1D4F107CACE573FDC4B1 C56FDAE47024D6FD16A2FEABB434CA320300FC4B6C1B6CA08F76C60B7C08A665 99F404DBA8A2A1EB18EF6750E4EC186E31561A3F080BA6562967546715859481 7BA782940F5C5D06626D6F6A412CA7C13820EC7C1DF23E15E5829F698CF617BE D940523E4EE4ADECEC48C24297DBAD528BA1DCE7AC335A1D15D55415B108EFC8 6D45030D27B3EA63B2B4CD771DBE66AE0218ABB1153D4B7482289D1313CEF184 5C960B1E3C3C953912CC6F4521D1E15636C1545EEE457EFB87B88C9E43CC2F38 6BC4BC96969F4FF28ABB06F4454C01CEF1B6DC538F1E832FC1666D977E5A881B F72F1B4C7DD4BE167A5535F1163A0706F9A0B26400178DF8A128FB5EBE6A7B81 E478AD183EC06622B591337B9F1872AAEA356F4FC67EE767B34CB5A4D90702D9 39FB846947F4096FB3DCF16EC81455164783BA0B5D723060DAFF411B68307E81 7BEA1D9A47A5AA3D648E618C83C60F060029E6EC4D46B045FA7415BAB2AD0AA5 ED9C729C24136F6AF61E6409C0B5CA760B16225641E268A68CFB8260BBEAFC77 6626EBD97195E77CAB425CFB0096D805D9EE699E41680D095AE9FA10122A7882 2F00F495C9EB2102DF0D3E61833BC0A2E468C5CF7AB430FDB7C0BE3DF2C0D230 1580BAA25D65F599378D873165482A1FBB224AEA89C6BCCFBDBA42AE1C5DCF41 06969F585CD3B737D1388D6359F5468D88FCD2279BDB270F6A858FB7D2ABDEFE 5EE8FB79FA437F8F50237B92C307B73B0DCB808D07A9C3255CB9B3B17039CE5A 288103D05D132863FB522A02CEE3839EF9AF7F07D99732F0B8B384745369FB3E 7901166478F4A16076A1504C5E98D17408494E270BBF4470ED12B4332422679F 759F1D93984D7E506D16950DB6C2682FE1379EFFA6F6C95DD71F6E55BE3EF6AF E0CB25388EEB436E6527806FC75484133F6E561DEB979D5C1FFEFDAF2A6D964E 03BAE0BD593C2992AD84569C81050F7A793C5263E50C2F50B98C4CC703EAE17A 6AEDAACE312DAFAF5278D125B6EFC5587484F61DAFF46B87B7C9B1EEDECA4859 314A9A9E2248467DE1E54D90DD671660B9040B3E0DD982260822177EFD757266 74A16C83A7FB168016A320D3DF3BD7726F1F4EC90EE5DFE810C96B099FD4368D 906AE4699049EFD37E8EF058D4B97BF71106445AADD4FC6E90615A0066823A36 673B8DE32322BBE861AE251226B4385AB28702831270DBD25D666FBB0AD7B96E A44E891EA1EAF0F87013AFC982E33D67A28E96E0C9CB99B9E4192536830D9901 931A8CAFA41289633B20BA3BD7AA3414B6DA8D57CCF2FBE39920CC06361F075B CC40335DB9A0071CFF77F6B7BB47F3100DBDC9C4A58C2B81EC99E8E966AF3390 E3FBCC28BA1D79961C8A1584266454DF772FBA99664D74D4A89FC82FFEDFCFE1 4C9E4A04291E803D142E37E7ACA66AB279378F2F192FFB2B5BBAD18B95F03136 2CB594A3D6D3F8576B90A6C4DAD6D6C8EE07AF682F925F01D0B26CBA347C03BE F3B0585CF4539FDC66915E22117078CC94D621F31DCB3E021998A5D6EE94CA4B E214D07517283D56973D8E4367392BF6C1150DEBF459D141AE0941C1C8C5CFBE E735D796E365A1B0F60BB4CF2801EAFE4889EE5F338D3C4885368281B3C95CCE 251C28A90D318A8A0384439B38D63B94757252062EA44E88509FDD2E75FAAB71 7329622828B2785C1A8B26351BC7448C1719C88FE99BCB73F7DEA427FBFCDF4F 00EE079B0C712F7D2C8DF98D4830A9D8C8B70A8C5D54BC1DF3171135278BED55 DA1CF0E696B12935EB59B606AA3ABD3C4AF64523F37F17811F2FDF3C3613D391 4135AF68EE5BC68A94B7FCBCA3E246145710C4509F2756BEC93C6432DDB7D1FB 1AC28B04BF3DAC8FDD209C70847101F4BF1029876A80A6E4AD20BDCE4BF93543 5AAD174889D7FB8C85758F4B543CA53985865F40B13C41254C20DA63D64639F5 83753EA683A55301CF59F9E7DD2260BB11FA41ACD230B1E0CEFDDD1D4DFC4037 21B3B1722CD733E72674043A327CAD96B53D99DB80B4328EF0869BBEDFD82163 6C2C33120837B2AF08B7457514B78DDCC69F7CD32C1040A594A44CAACB562DF0 0B13371A11715F16FD79F34CA0C702553EA4A998C9E41F6787B44169781B07FB 944D03E082C5C6A9F2D1D6D2BC5993A39A3AE751C54B3F34E026863F790FE3B5 BDAC6D1C1C7CF6BEF0700968D7CF74E2B3586C8CB26BE3E7B8F62F1589924262 9F16F6D74D78150FA93EC9381D534A63B80CAEACF1E3EA8C7A9EC5C3EBD316A1 0D01507191B845CE8E6E9A843F698C3DAD1EE47A571930A3BC84A4B0A07BE87C 6830D19D19CB2F973174F106370B995E8562B37C8518073C479388829F331DD3 00D39506F58E7FF74FC07E862198AB53CD0FEB6633947EA65F1B8A55FDDDA795 1DBC9C56F0420E821804F67C586906EB3D588F93D2104418ADB8B5F8FD83C8F0 1DAB3A6B7234E6136DF3340B70EBFC7E2B72320948A9C1DE54F4AC61F328BC05 24E33A7EC167A0E5CE18889C60A5ED00659D167921F7AE3AFBF02918E06ED8C8 D1DE9085E8F49B1083F83F1C90C79771C91DC4D297178A491C03E90188AC03A8 118F1D84C16176C785DF12DCADE1D98BB57BF2330879760E6E7AF5B0E2A5D443 7933118D0E40CDFA5F2C2171F5DEFFEB31DE8F683B0C3A934884BAA246F283C3 C28E6E823E0E6CD27426C24F4C762AA9B6841E1D2DBB94964F50D5D2859F99B6 687D0DE3C875DDDC6B83C89DC5317E4517E94A9DBE4B521162955419F9D8F240 85CC68F5FC85DECC37773D2F111E83C0424B11FF6F7E328026C915CBF178D2DF 91C9779B97CFF5FB9B87835D19E6E2AE73263D210ABD362BEB0644E52D859C3E 435A0ED749F96AF896F9B09EE3E3D802565F434E0BE039808F3FE6D14576F81B 1D688DDF458C739DC37DC02088BCC1F92A7445FBA36C6FD9FB3B65CFEC04D731 F76C3596F43A6F28B999AE54E259EB9FC3E60E60177E357EA977B02A371DA5BA 433F5050DEA499563C06C306C72EE296F2D5402ACC52196821FF2E6B9BED13D1 37DFE3F01A3DF50153A74F13B01343474F2D2AF1190501F09FD4F9538E888052 537A082E7C9C50690DB088FC00EFAE6422579852564EF01DC42D1203F6C05E47 78CD37D499B0C01418D6735FAFD19C449E201F2914E79D8D291E4A5E4F1019C1 6712687FA7D21F1F9BA0C92E9718D3C9086D5E67556376AD9D14395ED19903A2 987B202917DFD3124D2729AD43AEC2F82D79FE087418674406AAC95F98546B4D 60320FA0F2BE0D1A21C3AE4393C1F3EEE7EDD0E35BE08B5AE68AF03A081F367D 4B8995D9ACD4E74B101230BA9D11DA371149EEE110229CF7199A1E40ABDFB7FA 8C72DA6ECBBD065406F6B915FC1643D6601F80F27AD0A0C738185A229DC9FBF8 911B1F13829E41C9222F5496AAAFE55A785407F5D445CBE89FFF1C58C65FEE51 2671610BE659E88FFA971BF1AC746E31F12DF06C8C3B0209EAC9A171D1EF5662 07C6CE2276AFC26CE8F6E2EC78B63B17C3414A9E2BBED8CCD04DE347E31DD589 85CC28626BE77E199348DA6F2553CD611F999BA08C604A56F95075FB6018521C 35916C2E132713EB34524B4B479F935965C0F6194B337FEBB3037BB0667F0386 3B0B186E72958752CD7956AC3855719EE320699D6B93FB8B2636170215CF151F A2AF75FAEF2D0D67799E435270B17B9AFE2E8CA5581065493899D6EA7E6053BA A3CFBCC9DBD1CAB9CCBCE4D0167B5D485A6B4A80C1BFA827E471BF75B7AE6C6E B17A3D740B367040A11D6ADDA97FDB0804970813E0C46A144BCF6A5C4AFD1590 CD86AFAC5D18F1960B6A87927138F36CA9A8557DFC573A246069B7590395F5A2 1DBE11C81C2A54EE85590044E7BE82799B6F0B8EBABF491A61ADF483FB742D4B E7C79850BDDDEE9E0BF2EAC1FF191DB1790DA386E334AC9628FB3AA261D18BB1 A26E4C265E3F3151E07CF0A0966ECF94025114B9210251859C2F3022195A5738 BCF2FB96C3C119E92E2623131202C23F0032D6CF19AD21819FDF6DED55169B08 E3CFD0C18A4DC943D45DD3F56823BF823189E548FF846C8B8B8A7C02A56DF81C 249DD9258264CFF7451EE57207D2256C232F8973C6C573F7466E4592BEBF74CD D683CE2ED2B7A747DF8CE75C8AF18F375EB0BFEDF2C3D6DCF61FC5E3354F40F2 E793A0ED8D14B54788C90A482EF94FA727463F50DF7DE9372FEEA0BE40546542 40D3505817CF5FCBEB7D5589E36CD64D0678BFF16DAABD24A0F23322B5F5B1AD 9F62DD354C81B7D37F18CA0AEEC44A7EA651F0984AE715F1E099964BC0DB78BE 9E806E91506B5FBB1D6AC298E164F6C182B2FE7F5CB3DC135B4F6C77CAF53A3A 5BE99F52DEA3BEF3241B9F62AACCAF6F1B79E0368C29BE3D579E248EA7F8B22C 0DF8CDBDDDCE64BB429C542FF8A143479E2ABA10324BA72B582039473814B1E8 FA1AE5A90F64F6F908EE8ADD63FB1FFDBF0D5737FEF579DD9711C36D89CDDA49 58F9C9892C30A435D2D1A310597F8A88A1F1696C978182FA71CB2012D5826C99 A35034A0BA18D30FDBE3F6B2331BD588E6A423889B0BA55D14E364E979AAA1DE 3496DAAFF7C4C754E80A93FEA61864BC5B6BD3DE890C89071AA261A58D4398DC F5C2191489A889A0C9635D2837E0218CEECCC1CA2E2B5B94EE31D0BB8DB3749F 033E9A5A73A643FFF0F2D0E4E7FEDD3708B3CE7A6EA499A52134382E9202831D D0DC39B8E629C4F09CAAA37CEDF28E1AF9F86BE6A1662353BD7457BDCFBEA8CF A3C86296F7687BF270FB1B65CA59023D79E9171CFCE02C5B48A174E07C4CECD7 3388F5B51C2D9CEC70C5765EE4CBA318052DEFF1C4524F6773BEA2EEB5C57B89 8BC56EF769E6B0B4417A68C140C6E4579970114551BA9A67586C7D7D305A32AD 1B55F146D317A6B838C924B8A3BB90CD7B60B99EBFE979174BA2FA50596C0BE2 F8C446355944F75938153A5B50512D726E3918365CAB5182A5B1D2F81FA7B40E F14B2C4E81DBEE2C34412E94D765C87234DED4718532218F9F12497329EC18A0 E10BB74DFB2577BF21DB3DA86CC7879762E01AE42433D8B0F3F9B50AD39F9B24 85E8C65B05C78AA57B84B3E2C1716330C915C37C3B0B0773CC09F9AE9E27AEE4 4940D6EA66DA06922D72DBD35D0F10B2093FADA2BEC71DC0EAC1336F6C27120B 29F0F49B9D87245E905DB981AD2F217393FF87196E02A971E0DE2FE0488076C0 95A5D68DE82F489A8267BD3BFF4FB7FD56AE2BAAE8515DD207F1A6FB96B28190 E339E2135FCC4B99561F366EEA7F627C7136DAD913B09D1C8EB2EFF0FE74B69D 52AF3CD6A985E03B45448F55A7331DFAC234918A2CD038663E886328D56C900E 073D84CFD089A117C629431590218856842D07EF57AAA0DD465F925260A89111 CD59D87FC9A731AAB9FD172EFC612D163C93CF586EDF45FAE88FA0FEE0F1EAE6 3094E1DA9A851A92B79E38B969E99C9A74137FDB12C4636F53E280323D9AF0AA 070AA652D54D1C3E58431B9EF0067E21FC978061C86B00EE909530C8E5F758B4 C8C7817048ADB99EAF5BC4FE78732A36F8FB636E37D4DAABFBB640BA956443CD 7ED35E66C37E649A7456D5327C8E2842B937F3A114EE1BB0E0FD9EBA36CD0E7D 4012B1D818C3AC9C28958B1D3B395916605EC13AEEAA18FFFA8CFAEC369E0453 2D6943B0968956EB31347807DFAEB7D10230ED7749B7F844795F2C6D0B9BE54D 49A20760DF56B4B78B183707AA1DC66E007188E9211916733DB54AA03FCDBBC7 CCF03ACD233FB68B76FA4CE24269A7D5283A01106D1A502E3B0586371D12141F CFD9631B09DFBDAFEFA16B4A040CA1985214ED6D256855C874304B66C6BA835E BD37C67A93B0726F29989A1CCC1F9E3DB781E566AF3B6106A953FC76638AC79A DF07432EE0245092426012655C21D6BE17D09C7A3247CB4E9005EE8B7F893265 8DD8D017ED1A16D6311F841CE6819FDB40BA1FAC000499BDC079624078C28E61 B4FBC92B82AEC24D41EAAAB40061A6764E55B81B6EBDE7B92FB6A20D51F14B70 096C4CD267B666CF5B4BA3F9E2B9D9170D1CD029FD053E92D51E886045A5A035 81D8C694262A3D786BCAD514270D7F6AF19EBF1120BF3CDE4D6402C263F318C5 FD52396445E7736A9818D2B29EC08AAFE4252BF4EBF75114B9C4F160BB0EC921 156D3A26AD7CB1CD6CCC4EA2DB28077E30FFF626B0F88EF4DE7D7DF3D7B36411 81FC1ADFA488881FE161B8A648865C66099469CFA9F72CE4D4DE517FD462E5D4 79065CB219C926D4519FC37D13DCE411BD3EE9962AE5DFDA0BB6145275C12EF9 386D37361DB66D5705845CEDAE7A721DE2EC82B53E744A080C6BA249AC718E86 D454B75D0DAF878B3BA1F6DBCA1C5AE6A1BC1F52FFDD417F70C649BC1DC6BE12 426A2E6C56014986F56644DB8F9199C40F629961EFF43225FF68AACA906E268A 701EE5404C0F4F70D4C532A0C3439DE34505ECCEDEE70D3AF152875399DCCA82 686750BDADD5777020AF551C73883267CCD43D79C16FB8B1FF12CC992AFA7EF9 74B6C1022B4DB4F39E06FB2D6D988318000B4083E4E1DD24CD8A83714C8686B2 9D34969033C963D048D8B3B8673BDFF8CA09B9BE7759C1C6AD10F3552D802042 1EDE0DC95939139A856EE127C8E19D62E9B13089E0D3293A17D3CF188DC520F8 09517FC3F1B12A6F5298A0CE6A41E88BEE23C6F387772E7959B42782C137B1C8 C547361CE4629D15B1DF9AC9FE892941054633D584E52642F47AC95A050E8099 0347326FF3C20A9A1068F257FB278433DDD20785F8EF110F72E3BFC31F20A8C5 F2E8CD2B07E652D67073C0DAB07F3656D97F046777C4FF473D81DDDE03899D7D 64ACACE5BF517FDABB51647EC5864910DEFAA87CBCA3B284572AABAC64CC245C EFED757AE4935CFE8EE06A46D071CC3E5E686B6ED823793FCECA53608173E9DC 5D36241438AFC0438837913DC65F4286062288B19BA2A2C838101B58B7B41BA5 AC8B314183C9FC0EB062FE72EF6E9378E77A078D0FBB823DC59288ABDA3D260C 93F250BE6F6301B4A8D5684A3388B0E517A4718CA62302EF6B6F81D47454DE26 DD683DDD8B75C736ADB556F04F8806F751F3F13932CA4ACE3408D8051EBD8555 7FA2452DEBC337B8C3754928F3BBB733B52C7FDE3C4C724CC462A39EC2D0F767 4B82CA2A5CCB0990177506BD03BE150F41F84042E8BD1374D2CCD97DF777858A 5998FB0848300F64BA0E80000FBDDF25282ACBF1FD8D9D09844177D363413F33 712FCC0E091A42FE3B1B32010A8F7709B2C03C4C107E964247104B371029C630 51D67764F36BA48E28114499682F278705A5D2EBAE990BC25EAC68445AC259EF F9EBD5F3345B55ACE60CEB3CE9F1967C4C271149672066512D01EE879A5262E0 80B895C48F54DAE562CD1C2A441FA18810A358E8836FB1E6B8CDA2A664130804 DDAD4383F32408DC0380A11EE504208295801316FB4EF38D50F799B48FA73CCB 2B212D585EAD924116D3B95FB31A7A4310D9046C2B656932081678A4DE916147 B0CAD42306A71691636B52EC3A21B64A207B32EEB4AF83ADE1FF443BB363436F AA228B9C47E3E78CBF6B45532E6E5C7E2C6DAAA0F1227982ABC236FB29D9AB36 1DAF2404A43AAC01866DCA0AB1EC04DDD7B3DAB845DB7BEB29EFEE0660756A69 B5D8573F76B078AC92DB1F43D3F6710CECEE6F1AD60055BD7BA3EF0F9D2AE0C1 2C9C05BA685C562BADE8C218E063B51B744808EA54B8D7AD7442F72B9D92212F 8A03FA41E360E468046C58632FD0FC0B46BC1922AEFA4CFC0784FB97EDE1C45C 97C1752A03C8E0F490B627CC84DA27F88346362C6D57D37C817DB41958F30A48 B5EBECC398A90461E6A295E3511DA5964B35D56E65C5A302086E30F781266D0C 15D2151651095040D7E665F98FD1E568B0F9C16058B5679966B5FE7EB4641093 42824AEA20B955BC46333A708255E193225BC6FC4B7075CCAD57E4D3E329E1C0 43C9C5316A49B9ACA050997BCF4047F892DB0650016F39B791194FE91E083C09 002ACB50E93A19A1D4A99B5E0154CE2816BDB62D2261D21A4496E4A11F7919FB A0B1BCEFF5C2FC3F7C628198FB3C5D95458DE4BC50F53211F7CF8FA22134C1C5 8EE282D79CBDBC40652A283C56E3D7E46B5FD0431B338ABB76190094CE835AB7 705A38E3F396588EE468BCF530FBAEFE9FD8AE6EAA99AB0996AD629BF5A2225B CA4A116BF243BC23AD4A040A604E12513FED5ECCD4CA861425C084EE417DC736 C636EE85897B25BEF59042993948501ECFF0A3676823308528703527CFF759F9 715E2B62B49A806EB1604927470A514459D3557BCD065A333262D8CAA1F21969 4E2ABD91FBC7270EEF1940B54173BF894005FB893C1339B35FE02AE41E4DEEA2 13B386DEAF610501025745FF4C3BAADF4671C88FC0090D4251108C56C707096D 5E7A54F23D7D8349C60A072032971468D3BFC2E24973223CA980974BE12DA573 41456157CBBDD90DB7BB56AE229966A228E2BFAE0394410D9018B6C554B3E76C 71C144D52510DB4BCE4A040930C665211DBDA6EC8105EB8462AC71FE63349488 7A243D08A28F4F965C80A04C12EB64736245A16EB6A389AC8DCA737EA535EE1D AD4B3C2A9BA469F56A1311A9DE8E24CB790D7353A5A4B284AA7C25323DDCCF30 8ABF09B9B2E1B42B32D5D9F6B90E56D715A400F083F7CF750E89B2800406CCE2 702C1F3D229C345DC40A77DA113E70CBB25D7881A21A2054BDB9C6D4A33E6927 B9CDC3FBD07D6944C819E8B288C20A59AE40E7A764E205F3CAA3811A3AA2D1C9 A84BDE55A972867F21A5B1172B7ACC4104CF52101DC1C9E7C63A2B666CD97766 6683D9F2C224318BD3367614BAB04B215B5AA246370E05422AD8A0C0D4437F92 6E78EA5FB1EC423A14E0E74A86C5432834A51FA15AB0DA2A9B951D467D0D68F3 B7AC337F006B9357E876BEC885A1A5674A69BFE6557A6682FC322DEA26BC23A4 6914E1AFBEEBF866BC0BE3DD38A456C50E69582319F96785601137249A6EAAFF 45D08F00B6782B232DD0F578332D077052865DC2306CCB4945942005D5F42940 2B74699E13EC95D113EE1B3C1D0478BEE9E8F63042DC074C7EEB732DE810C3F6 746FF7ED9D236F3452B7AC195AB2E2487E6B157525369063C7498E9C17A5BC88 7C0028B2BA4099DC2C923FC7919D5A462AFC4E6FAC1AE19037063283082048F7 BDF0B90EC64ED729DEDBE7CED039B6E814129A7DA6B7238DFE93EB25E7FD6B68 2229F24706BC62095DB64C871CA5226ED195C8C492243ACFDFF66451D5D58974 0F52DC17348F279BB6094A9C4D13EBE8869FD086F9551BB2064C61DDE5810861 C4659CAC32284547FD907EF216BE5253317E60DA96C2B03D48A4633723C00FAC 3C4CC7CA9E72111A24552FBFED5C9170110C651AB0153D422ADDA509684E84A7 C0BD7D928F3CEF422CE5DE002B89A86BB977DB153FA6FD64473EE939F16663C4 335DDC9E966AB5D5A219D9B56803DE877D33E099FF2B8164156184B86A75C262 C18B94955EF953139A69571E88FBEC486A1E7DF2DF921F912663432C805B4AB3 8229031242FEAB62708252EA9340D0DA3EA90DCFA5D38CD16734D9663D063FB6 C38B1EE2FCCC2A679B5E7F3163DD1ADECE1D72F98D2744D88A5ED5E7F937F09A 677A09A36E369E0BA0F554D666E702D466F4B02AA0AE6E04A4D022A4C24359B7 D8BB900C84ED8F4BFBD7CDCAB7BB1C1EF401D2F8496FB53136E5B093692C71AA C78C9D1AA6C9E75B153A3A02D6EBFDC963AFCED93DCD2F98E1E44C258D2B27E0 C4F8145102C3755B036ABCA9D0EBCEAF3519F025C448994DDE16C2E02D4A8F84 2A1DDB4AA729C3929E62678FD86A3D8E67EAAAB7883A92F88270B4D611CF192C E7A56867AA378C8BC29F0608A7A908D7B1FA2FDC0BE4C0F8D92EF0096C71CF14 E38094E7FCB093AE7A133A5F56A2F14CFE1BA2FE697B946829F1636D1698D430 7A3B6E3F8A1A08FF652F97EC0722682711EF06A297AFFCD9D6AA8A404B53AF53 96F6FF9C773B02B4631A1666599EA17C9CF75BEBFFDF5D34DDF090D6FA1E0D85 1ABCE4F0CEBE345A6C07F9BD643C381DCFE93BBFD08A277459298F9618ED55B9 BC0AD9843E307B2587A10E1C5CE86F47137DA849DFACDEE8F04A252AB7CD2D06 47543C130DC51BD41AB2783E9549B6E792B15B1B4FA721AEDC558F30326F1BEF 4D1B367324842DDB72A40774599A5FD62C336087307534F9C359E585C56D4881 125E726537A9EF24745577AF0DC5E478537538527F017FFB657782214FB820B1 B5075C509BADB97F3D8AC4CCA2A0F4F0EECD4F32E16173B67B5CF26F8C6A61D4 893637D9B75FBB8F253E3C4E65BA40D4020C4FB16D26517097D3D658AE3700B0 ABCCB516BB89A8B36B45F42B98D163D601328D32CC741350077C96419988D199 CA3AD9E3D50EFB77F5768DB061A7FFF5E0E51DAF32D00BCC822AA2F8AD8F94CB 767F00D1EDB94761302819EEBA326EF0BB11D295E4E3541006D141314FBA5D74 6177824F9884A1BF4AE8B304BC350E33AA9A2157EBB4F9BAB4DBDD62C21C937E 6BD40575BB9EA37CF6A567DAE115C76C322E06BD16DB828E77B6939263472E5B B4D820B1DB4E22AEE8E0BBC244D7CCA195C142688286370EF5474748A7B5A29D 9EEE6BF0221279FA0126466059853F7FD77B432DBD9075919D4FF27AD2FBB896 26F2EF79B25706B7DC9DD363F0AB2D1230583B1F785F8CF0233696F254701089 1F8F9C49E32692D63408801D5CE0DA864606C3CA0662158DA95B10F6621A79D7 61D65E13AB16F33E1AAE3187E3557E6831099B9CA1CDAECC0FFB2CF3B5DBBDA7 9353F8D1484D60B3F3BAFC8302E1C0C3B7D60EF291615F5EE3E817EBBAAA5E86 D13FAE538FA9E76B3B8213C9244CF737DE76BC080AD71BB3252C2C7A8347D0DB 6EBC93691A2AF5F881B31B07BBBBAEC325104928DF2A0352619917A068103A20 D82CADE3046D34F4BEA1A581DAD91F8F8850E76E8C56B71473CA85D0D77E7411 80B1F2F537B3DE53D567DFEC7572D6AF00FE6EB8B915643710D0BB7555899D26 434C884FAFD5CF2D965F0D22DAB05A6A83A4030ABA9C15E98776098C87C87350 4F16A3C7BCB3E0D8F3A0D44CA03FFDC4FCEFBF09957589E9A0990544E4AE8839 EDEF40DD9D5C135BE8D6ECA1928084EF890546EF4C33C1BA1B63C53ADE8020B7 934B2931BE0AB98A236742B4D70AF749E52C20D25A713D1CF4F05099FD443F76 BA30589EC7A110D522674F25CAA44BA3FF05B69F178F76683E61595EE22B426F 5826DD2661A27BBF739C4E96996E5B3DCBD203D95702A6AB99516EBAD2929A18 9D5ABE729D6A11DD93EB4543F9E4520FE0A495CC7FB1A98FF9F8AE3C3D3E0D5B 9141C20B6E319340E1CDF81BBB3F74000A486D9F58976F94434C1FB737819872 1CED2C699EBB94DAEA23C2E21164ECD8504718A53285FD33BEF18CD92A79E723 112513FE37F35CA27B17BE0078B737DC34F55277DDA6A97889234F48F82CC076 09F9EEE08BFADA9B07B757CAE62A2AE0CB9417CE49CF60C7CF14DFA467A64AB3 F9A0D0839BF2B39FF74BB51BC42DD2235DA901D7611B7F1D28463526B60707DF 42CEF94FCEF4BEEB244B376F918E20CAA0971821F7A6D6905B6240BD5D26EFC4 793F20918038354B09F306633232F25F6FCEED3A72C1C6823ED9D1FCFF6B5141 06DB7A39FCD726558F6775BFBD7C5532869369310B0DCD1E48793350B09FDA9D B743DACEBACA1D4EE9212924CF1AC013899BA432D0D945DD6969CB7B7BBCAFD8 A1BC8BC551FD607C3A04CDF77ABB560BBE6F0D3A1EEBAC91EBF3AC68F31C33DD AFBE1A712ECE33EE8864C64A65C5B5A87EC9C8299532C5940356F75B82B42AA9 950148CD9BE858A02F9C388EE3E5E8410051665BC22146B2FEE436A8CA620E92 E25BC10199F0CD89E2781DF204B48C5E6956B87CECE5725676BC0485A09A9689 91B0C8CDB09277442760B55E030FECC30CDF54AB00EA6752A8B698B722589F91 CA56DA217A31F953FE18D406AA8AEB410B34778EE114FDAAB49679376864B7DC 75ED9D7265745E6CAB880D4913A23D0C168DF095E2416A0ABA73C7BADAA5BBE9 AC95701BE66F63BC5BB7DA3284B5B7189941369F272DF7878BF936D368FC5568 2B6B8B33B0DBE86A3A80AD33A33E4DA36537C96976AB01FE1DD82FF3970E2357 7C8E774C8AD9594B1974064DB156CE05AC8E7E4BAAB9DE55C8AB1A3D9B16BBA8 E4E8B5CEF0D8ADF84C734F7907E250A3E1CAD2030A0D4832D1212D8CA3BC5B3D 76762313C9436C800182E5A93C5D3A24F308284B0E234106635664C7E5DF937B 9D8D98A67D49F53BC444329BC8ABB5E8C6961F5E72FEE5D544F2BEC138949052 92B9EC19C974A08B9BF5C1E2EA478E148835EDE96B87202F1F6B3B55877AFC9D 9746B815690BCD5495164627EE5BBB9A23DD658836931C104C10D351F8A8FAEA 675664835FE58EB764B91D12BF9D2C8267B5D6CE68EBD65843821067927EC467 53D44B4B8F0A3A7298E76CDF9889CC2B46A7CE7B0DF243B8C4D1D73A9E321EBE A2483E3AAB231E6AACE721782E75093CAD02137F85C5C5C48497AE7D9F5757D5 B7B96B037BFABCABF9AA7A8F82FF6C2B8E1CF7D4197B53C0CCF985D6FBCF8B94 A1E766574EA2A7591C9EFB6A8FE46ADD9830D76AC9C46740CEF2FD9C1A89D3EA 8E8A31F4D9AA7ECE27D744042A19BF6D39F32DB82611F85D5F0267F4AD59E77A DDBC8EFE5F759B9D167FD26FFB57752539B782CBB6F77D932244C9063A312D60 C95E4791B2444907576224BE55F3F9240C6C0E55197890652C7892354727A942 CA3BD084BD5ACEAF2E28D981D410784E65C8765096FF95AFF9CC4361B8A68B5A 20C124BABA9DCDD639170173705F5EBAA818C613FFDBCADFE5B71F46CC00ED6C E865E545144B4126E6814920E59629C1767C0C51385F3EAD1B1F13829E41C922 17AA0F9D3C1F28A983B8413272873F255B5C00C2020E06BD59C2335ABE2A1680 4A4997AD37E495508A6F8EE27A7956388BFB3A0B9080F63365BE6DA39F1B97B0 F565A9FC7AD91BCC5197EDF378945D41C3A8BF3DC3A547F0002F4AF2FC31C101 A6B3AEC358E2DE1DB2354E7ED7ADCFF74DF85B90A9CE76A89473B6F7F6A4A67D 6789DD300D8FB93624A6434A7F0A8A88C95F23D9B797162D04000B91793FAF70 D0163F2C603AF67AAF5233FD3FF09621FB1CE79B6500A1A95A0BBC59E77A3969 715EC49103A7D9BF094C35ACAAFDEF7EA769ADB62F8B25C671C8AAA2C569515B 1BDD40FCD2F2201F708CBC337F0B56CBA7040836DCF7CF263F8EFC90B5AC533D 360FC2594A182ADB4C621C0AA4291B0F9607DA76BFA02EBFAA38012B2306F05B 2DA6E0A3F60E3C05E9C8AFE3BDCE703DA9CB9BAD9503E6611094DE664535D3D2 0CBD00302353097769635FB767F1A27300321D9AF959828AB02B44AE51731FA5 4F772F5F4858C2F690D2E5ACBC8C84C867836896562CE1C66636060D0CA93B60 2C405A54B701C4DE7E02CDBA61BFF81B40C82FD347E246C7BF40EF2B1CCEDA14 70564AB496098ADE8CE75A92445F425F36FA1D9905A3E1CD472D44E661E88B30 C08E51EA1AC75EBBBB1EC1AB8EF3261427EC4AB1B84712ADBA9D2F2191A7CC7B D895B39D66FEAAB73CDE7AC7B6091FFD9143DDC01CF434ACA05AF4A720DCC31D 6B40E259118A9C2CE3247ED3EBA258A009779594FB9F1FE66D12DD60B6791ACF DB2D00A6DDB514619EC118F156028386EA61FCD0E04217072A3830114C73D8C1 91260003B9DAB7CDF6CDE8766289616E41262065D92A158470EECFBB71121DD2 493862970E76D7EA7F487AE3C0DCDE0E837CB52D387E2AA15530D3D68FD0E1D3 BE481466A00CE38372755E5562323716156549684588450E4B7CDE7207B00327 A8C6C47C7DFB2ACE27002E63B77DC96386CEC7F8ED7C623EEB0CDAAE35D3505F A92D35E7301E8DA1D956156F0F7B0F9B2496F2966E4E3FCE765CCD227B70F41A F2502980C4B557BC69BD3D0CB1046DEE73CD6A00EA2900C88E9A3995ED7B19FE 1EA957121A05097D561C2F8DDFDA4A2DF112DD17E915CF044B06E29C585B220B 6A2E9EC4DBBF022F28E83D23EA56A1B57A96CC8699D5F8680BB826A3F23AEBD5 48423ECB9EA76C1BAD41FB278C4C3D58331AC9C886A88F4C474958FE7626AD3D 653B3D0CBC78F64DB572EA6046E11A88B43311B5CD640DB5B45FFFA7E528F2EC 49DAA8149041BAF29C0B6E5040AD32EA12E44DFDC8B044E0C8AD2D255AC37033 C4E12311F1E9F7F528DE904D9CA1F755590EE2F967813481C6AC1A33CF4AAC76 A8905C6A047C9C979ADCD6524CC67A5461153F155D7FD9A9F76D48C80BB5053D D24DAD277F45A0223A9A4B96CB4D296248BB037326BACF3A59FC1105A91F3089 8A10AD0A053A6BBAB6F6A8DE10A25B1FF463B79C410EB9AA97DAE6E37E2CE79D 93396C409DD9C4998E3F32C37D7C00D1EB617E2C3F547DD43F083FF95357BD29 59420D3FB53AE14241271838CE8AF98CE787177DB91E103584567620E241C27A ED0A1CEBB5E970889EB4C85207A839D9EF1BEF8E69A2D7AF15F9F96867D3A5D8 E1D024E5A7B66E426F4BFC83EE8E920F454FF0BA692CC0495DD97393C987FAAA D7F545DB5E49F4921397BAD6426DDA3F3352A483CC31BB4569743940804380A6 BA16C359AFC592570530A044F11DFF148110D299641124EFDE01268D3BCEB338 8B48FF2BD14883626FB8F8FAD751BF26B2498DE48C51A156F6684B9556C54B0E C8A8908CDEEBDC77C488D4FAF75139A7F0FD8B9FBC392143032C905426CCDEE2 139C374C70831D49772D184A18B6438803E2FD256ED20ECD577ED1029615FD97 B77451EE5B7E4233004C7A00FC952CC312273F301E2309476BF3262C3AED4405 6FF82992007B2A6978DCAC90DC762C67CD2A95DB30863B642D484A188B41E1C0 083E5E99A93A5B57144E4D112FCBCED479FDF3259A0EE4D021E307E2FBBB6CEB 8324D15E8FCCC5ABA9ED1C59BAFA30623DF056897B3BB12812578037E09962E4 6C01B02399A59A4075BA2315E9D0C7DEDDFD54E6B3B943B8EF882AD9B3AEC6D6 339904E8875F17087C4B49B1788F9A88172329807082EDA725C41614751EEC70 9C09DE7B5BE1A7273D318594B620B1845068E7FA061571A2E5D6D0C62F0A30CC 13CF9A97951369A3D261AFD729E426CC153F64685BBCC802454C97A4B30E9591 01F5A98B4F14F7278E4F2C2A1725396309B99BEC5E82050F24AD2173B43E40BF C9D3D0D823093BAF5C5EF754042E6B2068181800CE5B0661031C7F2FE9AA29CF 1F100C701C28694389641691D5E5B73732C2CB673085C3A383CC8CAB94806E57 B5DD0392993086DF85B29E888B9393593711001FC1163E4D894E1612FC40D829 0CD5F4D1531FE094598B39946CCC0F29116DCFA9549BB81C8188B4CD44C72140 8F270ED8D4964C547B3ED9D984F80BB841E679B0F152572D69B728129FC58B1C FEA242D7CF17D5405F841E197A6C809FB1AB22AE53F6591385A93FC27CC1346E 503F2E6BFB72E0A642822A8A39456C7259932F92DE145DBA84CE43E46F869E31 EDD249504EF7C62B79F7CB798BCDC7DC9181AA2EE5CEAE066475C01584DDE5A3 FC9EFB52E8D60EB8F1001372EC3FD82E541F546137B0D9009765F083C934AB84 C78B450D3F30164C6C6A385B275F237727747947EEA88F4532255AB9001F0FCD B3A56E3854F6D9C33E48D0BE0C490E71845D20F175702D304C08052863E47299 250A1AD3F498EB33F599A92F1046809E22FDA5710D57E10BBC9F7F6ED856D801 EDA5D82C242B6933BBC495AD52B92FACFBB62D4BA6A684D35F3AAC276799FA72 B3EB1453CDF81E58A449869FFC83A8E1C8583681BDA5A471AB33CD8CB970CAE1 05BF01A4AA61FA8AEE60F4563FC6011F2F408002F87615612C2012424B1C93B4 C6BB8EEA0F6941A63B3E83B3EBB1F1EC7A5534F2F991826EE0CED29D7F824CFE DF6AB5B72AB98CED515AE509081A31F3CFB4DA45BFE3527ED670C1B1485A5E33 35AECEDABE8AE0CDA4EBFB60199264AB73EC25342630FB829A3991505A53DC44 9D9CDDE074B2E110AA9B36378B0FCDA62F38BE95D185066C8198477ED1C9CACB 101801A3E6C3F175A16E7B54C099CC660B97567C21C8314928780772064CC3A0 6C0C859D783AFD449802781EAF84B10586D297C1B1948F2D67AA53C69B1C0FEE 03BE3EFD5A77D1019B05F9BF44A38C35890FF8E00C3433D00FDF3EAF0CBCB482 60BFE734183654409B8171A982623E24E06601A5CB6A804815C9FACABDDF1E55 18D395725D0D01D2403053A15C28DFAA3D32E3EF46534BFF8506B9830E06C0CD AE6C134CA73841B7470DC5A6FE21BAE6252896C9EEC0E7BBFDAD03489CEED5F1 A32F917CF2382C1C261BF7867A798F5FF31CDDE58D4D3192AB225D2B489F10CA 367FE42C5B3B6293EA03EDD91E2E3E23AE23E03C64C396A83EEB19B0BEABE5CB B7BA46410F876D74B7EE6C8E43E0E39A898D7963EAAE1D686136FB17C840A822 3DAD18DD4961EF922D35EFEFDDCD75495E5190722EF6C4037C4E696BB051E930 FA7ECCA02D0D7FED3C280E2FCC8ECC8776B6F517B934026957FFBE464B966A5C E755B77C4E66D7D0E79A2BC0264A1813DE9D72353021A85CFF51454E8BE591AF A95230FC5F3FB44690A05E38274FF0FABBCECE5D95AB88013CBA429BECC5DE3C 728740C66F32168AEA9640C62D9F45871FD9D03BB4FE52596816DB203A174028 CBB2A2EDAE29A727FF20278947A53CFDF6DB3F2022A6AA873CFF7EB1F6CAF50B 6EFE5FDC6EE043164FBB067476473B5F88CE4E162E31FE2C0F96DD9F64DB0E0C 0E323584A16FFEA0A638E3F6C023157E646EDF2B3C3064CE810F772A96C0F377 63B2C8BF7E1806F88FD338EB4A3C3E123FB1D06923B9B32062C03F1B2B8597CF 20568361052E85CF5EF11C300D4ABFF029F4B28A5D9A2AC9B671898E7DDA6CD5 755FA3684FB7F80079F5065F952794321D889CB25D7E977021D12C2BC2AFAA6D C60718BB722B146A133749529087F9DA555CB34D6B5431565001EB542CB1A05D EAD1BA9D81810D06879EF48FE9A2613A01EA65688C4F96F6E3F3693001CD131D 1C726947567595F096D0C3BB6CF0FCD275A1461C6DC7B793156A05A1B83EBA09 34E23D655A9B628CB1CE4649D9AE9B16C50A02F5AF3BCFAE2A4FBC87397CE27B BA0EDD3CD234AFA0901B22EF478D784EF2ABDF87206B3CB299CA2839BE2E46A0 CAA00F038C8373C4CF379999483414E11635AD03C706403D4B59B989F1A855C7 CC1DF7E4194CBD43F43C148AE7FE23626FEC940DDD1A00771C46077B8936B488 29C7313603CBFF5C4B88A8D87E29B42051DAA179BB6B4BE60BEE49A9832C3032 5C6E85932A6452930375492267619AF94629AB64972AE64A1663DED8E582AD0A 356526F4DEE6A51FACA3AA0EA6801D8CE715F9932417AA0ABC5551FE95D4D66B 669675756FCF92C6701520AFEDE3A0B7F20E9FD073C8B1B636B108AD4F7209AC B17AD046BB9A8BCE50E0A2430BFDEDCC91BEC0EDB8BC6C79A501FB43B0DE5A71 3426053EDA8D5A97C1B427B6AD0843CD8DBF61645D6F5BA915BF94FA7E0D033E 3320BF1BBBD0FBEC0CD384FF4B8A8E3322760A86757B87102AE18AA8B1575851 6B89FB03E9DE9EE94CE8E750AEEBDD83954CCE169AF3A3107B3289D208E84F18 B4932C087482C7F259CD39B042778FEBB1F04730DD6409B77ABDD9B9D1CFB9B1 EAEF2F8CC0CC5D814BE55AD53B193E44AEA2A014C93B39B487FF356F8AB05FBD 71A68000CAB2E10F735B93A861B20EC8E88FCCBBB8A87E50D49B579AE8CD441F 6C52D995D66F58D5CBBC96D888519793E6092F8E215D2AD72588D488D8325D9A 72F3A42964C391AE9D6C37995A0D9FA98C3BC3EFDA1CB28FD812417D339B7440 0B60860B88FDAF03E618A1C53D2B3BBF44A624CDE5F6E2ECBEE5237F4BCFCB5A 77FF7261C901F17060BA938EBA93CB465C6A7909E0C52A0A58E03F7B2C277F97 1B5EECCB2E33A3E6AC2E1FD5799165E2C781E61674B3FF213B6BD0C6B189A594 B70EAC63D8C7C0296C52E17D045829C5415D58A8F526F89CB8984B8EDEBF93FB BAF119397F07753E8901C5E5151DA7556ED36F5BF1560CA613306A0C1936F267 29E6F1A412C8EE452D5DC5D6F9A4CC9B83C3EE0A8311D9BDFA6BA7EA824C8F3F 3B820503211E5C913FC8EE99D00FCC1C4B45BE1719892EB840DE9F1DA37AF4E1 242E4A95A31053C4930331C1E93278111A80A386D4E71CF5D230AD119716A8B8 BCE228707D1AB6309F1E51D50663848C5360B0AFCB4A5C7B9A01B3C8ED27C90E 62242E476A6529EB9AAEBA355DC03CF0B6C34F23E956350A7835EA67415C204F 035605E915A32037A11D179D3003D7DC3285A192F654F5CE5922024EB167D2C8 C1A1A7CC29F87F28C498B910AA2E929ED63DCF438FD40CC4254F4918F893D65D 10457B0F3239B6CEDE2C2BD78B1D8CD93712D4076939CA1DE5C29AD892A5C051 1ED17253E7800A5E386FF7BE83826C63DCEAD5E506E00C27D7ABBDAB7FF35CCA 06EE5AD611A0AE56EAFB48071A5E2195992E830D82F610819BAA91311D638CAE 11C44A1F484269C7D6F2C7F2BF16EEED 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMR10 %!PS-AdobeFont-1.0: CMR10 003.002 %%Title: CMR10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMR10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMR10 known{/CMR10 findfont dup/UniqueID known{dup /UniqueID get 5000793 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR10 def /FontBBox {-40 -250 1009 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR10.) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 11 /ff put dup 12 /fi put dup 13 /fl put dup 14 /ffi put dup 34 /quotedblright put dup 37 /percent put dup 39 /quoteright put dup 40 /parenleft put dup 41 /parenright put dup 42 /asterisk put dup 43 /plus put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 47 /slash put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 58 /colon put dup 59 /semicolon put dup 61 /equal put dup 63 /question put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 74 /J put dup 75 /K put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 81 /Q put dup 82 /R put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 87 /W put dup 89 /Y put dup 90 /Z put dup 91 /bracketleft put dup 92 /quotedblleft put dup 93 /bracketright put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 120 /x put dup 121 /y put dup 122 /z put dup 123 /endash put dup 126 /tilde put dup 127 /dieresis put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9B8591E5F01442D8 569672CF86B91C3F79C5DDC97C190EE0082814A5B5A2A5E77C790F087E729079 24A5AC880DDED58334DD5E8DC6A0B2BD4F04B17334A74BF8FF5D88B7B678A04A 2255C050CB39A389106B0C672A1912AFA86A49EFD02E61E6509E50EE35E67944 8FC63D91C3D2794B49A0C2993832BC4CDC8F7BD7575AD61BCDF42E2E421AA93E 3FF9E4FAD980256D8B377043A07FC75D6169338028692CCA8CD1FE92FD60AD26 D57B7519B80A8F8DCE9CEE5CDF720AF268D3C14099498A843D76E3B6C0328F24 D36EFE7F5C4E5B5C612786200C8DE3A41EE5F1FFAF4097653CFCDC8F4FD32E0B 03EDB3E413283B9EFB0AC33B055617005BC9B0057FD68C52D1B0E67F0C571685 767F2AA85ADE4E0104A1C777733D5E318A22A9944336E5B98D965E50D31F357A 8B6EA5A0EA98E1B027CE68C2EDB149EDDD04ED74A1B3D206D471A0C11C11449B DE190BBFEBC08C9E1B7513B43DA3134D6B11A2516E6E86B67F68C970A320D05E 94FEC57FB347606DF89989C33482BD09D011C55AA920319E7B26A205D3D0F004 22466F09C0482A164CFB27EF6ED2B040ECCC3DCAF345B5A73676F193D43123B7 72FD6CFC5E37930E61EBD5A6307E4DE70194E6384EC0D79DB6AD86D3B319A31C 8B0589D0FE28241D8ACE280D0530EE99C80723E560BB72AE9D53F4713181F491 344B06D3027BA4E9E94D4305BE1D817197C54C8FF56CD6964165F6448ECC8A8A 64B48B4F0FD69299A137589E2491A283509B21A3A5772F75B7602A9F60AE559B 07A58436D04222C73EAEA72DE9A5A441F88D27C11F4F91255EFE280E91A4ACAC 1E98A4E5E6C57B9AE86FD218C3CD8F24A4104156A80F13821384E529783C52C8 78B94AB3A0096090867ED32E8A30980E737922037F75F062BD83BF4F5929BC51 CC22AEE2DBBAAA001CFFBFF41D258424FAD888FFF1BEAB796A44E3126159E120 7E4025C676CF94888A1971AEF8B6764B3AF4A92D36FAF6FC56FD049710EE3782 BC2CD84FE2473F133BE03C1346B875463F126DCAB15C7A9BCC9A727D23611462 4E8D2BFD2466600285D79518712B8681ABCD69608E6AA9578F7BD771EC36E01A 5A17BC17E375020ECA59B43790ABEB9DF5F4FBBEF807E5699EFEAC563E1ACC5D EFA336E75DE6D8248E9381BB110884FDC89C2F9A41EBBC9A8A1F98E6A41F68BE EE30E25CA148C1EFF42DFF8C214A6537AB11F260B8C329A4947B5FC8DC9C5622 4DF7BF4FBFB00380D47BABB03BC30627AA74103E553F55278F538EDD8C1E64CE 0F1398CA0AB5A86630139B4A7E8FC02804CAFF3830114640AE50D2FDA3B561B5 C63AD7EE3347804CBB40FB1E77A6C89735DD870351C3A1811591AB493251B904 314F65791963C0412377C1D02362C5E9655F1C3D4803CD379A8EF24C48218C2E DF1165840462BF37DDE1B8D5FF09FA2C3B261E2F1A65ECFBE5D4EAD43B52C029 EEB3948CB8A252CBAF545C8FA1C31E920E23A12DD7222CEF2D2A513BD758EA13 DA33BF5FBF1D734653EB83DA2D374A5B9A0CE316F24EE375D6DF6BDA49954C2E DB25A88821193636119D469BA66E5DAA9C92520FD4F84426A4E54273FA469084 7517817A6EE3E21176D333825E88046F50B3CF6938AF9BA79A2F51398239EB91 1A2D07F7FCD948427FF62F40FF95E39FE1A1AA8451411563FD5388472251C155 69BDE9283B41900B21EB1190D06E6B13B7794FED020D2C1BDD205AE77B084BCE EF628249398B496DE85B406FC2E1939EF00DFC84C07E26CF72EC401BAAE756E5 7F6673216E7560D1C2A723CB405EE5CA474A07F61B81F8836482F73DC9516D67 CE0CB770EAD755B6B356198B4B97EBB29C63456953270CCC8D5650C1D006E69D 38DE2DFEAB27DAD50A817F0D645D30AF5B75A7B53CBD3D2B8D87BD0A7E525AF3 22F7ADDFCE31716914C2318260C2E2B4664893921B68C5A93334A361D94A759C 0D7B146D6FD94F0442D672BDA0F6432E18F3C5DFA37ADA378D95B75F413C9ED1 BB5C606A3EC7DFB3F796F59B0478C13FD1900381EFE0BB5242D5B5D34D03AF1D 4BDC93EAF8020E26CA23C8B0E7DDEBBC6762A557067A4CE05A524188A8F02E2F 3625DA38DFCF381727887F5646A3995A8A38A5FB1E5D5EBB395FDD0B7C8E71AD B48EEDB62AB2CE99D121435EFBBFCEEA69AE9ED8238B60CC7288DE33C766CDFE 15B767B4AE2E6CE0965E77272AC9F86023DA620548CFAC85BC751C44218A29C9 849F1C2DCBDFAD895B54E51A569952ED50F82DC8A19F367E7E44643854EFD6B3 FCAEB04E55E4661C82D31E2932611748480EF61FB2FBFB0CFB940BEA81AFCD84 4C6A6332D7A600170E38A8EAFCD4F93DC153C43175434C86BC747348FAC61B76 1FEC9027C1A193E55C80F1F20B5317AA0A05AAA36AE235F6E49F06E570FEE798 84857D7552EA92EF3EFAD52DE39C2F8F43C59E3A957B7B926FC95FC4B60186DF 7F3523EE2AB74E294C8C4BCD8B4975E84849E0FBDA6C0B0F24A636DFA578B122 CF97BC5089E21E9F5298D1C9F30CB8BAFF6A3A11BB4D9A0A5CF2B18D055C44CA 4FD4D8FE1AF3630907DE7E585AA811F9CD11FB2C8FC791851D651009FA5DF20B 3C33FD2FF848A9E3F5652BD294965A332DD3F246C91B0ADA34017FF2451D1394 F9C3C95AAC6EC8062BE98E8914D51DA6A164AD13938693D446044859D03A949D F9AC5DF4A000CDA98BB516D762CB9F6D44B5268FD0C26E88BC4A760C0F75A140 DEBDECA4F511128B7D2805872160C55236F0A0FA7637FF0D4E94AC079CD3C8A7 D03A5A56F26B0438B577C46011A10532FEBCAD14FBD6032E224F45691A726886 56F305231EB2FCDF59C8BBFCB5DBD2D093A0E84D62AC93A2312CA69295E937C4 8DBA1802B85F54B5E7E6D6216A918F911FF705D3B5CF055F1D873B96283A0B53 59344D910CD396D883F6F7836BA65FAB4393A773A8F6BC298069E5BA38210EED 49C9D920F718E3FCE692527DC7CCE6963BF744F2C91BC5952564196D60574E86 87A0FAB21F2DB2BD5A51D7FBD8FC19946D24E5A228462C4772F978E650ADCE3B 8D66B9C21279C531CA1C3A8ECE3420BB65837287A7222CC3673A2A5F8BBFDB60 C719CD073EF9A23675198462C7C87B24CC92D6AEE5C25AC63855CC3281494342 D28F3D2FDE0C183486769A4FD5B0143193D31FCB2C2A14E487BBD96D0BADBB64 D1B56021C363A795BF10E2DB448261C363A54A4AC1182B470C457AA82DF3F5D1 F4B329806141EBD53CAE309319B94133D7EBDC2D0453A905ADD207364371E178 0A95C2686E3B34C4A978BFC0EE968C39ABA00889BC5149162C2B54483D44FD3B 5CFF41F611C7E03B94945F414560E874D7CF27FFD0630890D7D7EA66CBD15448 229059E1C436BB33D69552B5367AB5D53591C4678D0C704DD3EA23F5D9E8A7AC 17D003C19E333E726FFFA2961F33C70F429085F7BFE3E2510F59B78F58B19CB4 01B48E184BAD9020FECCE3AF52048A056981DAEA02AE78197E65855DDB170616 F54278395D9EA50DC83761AE759F9CDEF9E1948E7002414FC05286ED793E6662 3347F2A9AF8917493D7305B92CF93E8E9185F70015F5594084298A6C2F9FD3C0 689F262AC9FEDC9B89577ECDE92F08D3142209FBCE7B5C0A840CC767BCA56C20 4E4E545E2BE4D21C53855CEE4CD0AB35D1A604C0FFFF77DBAE4289752276559F A05FEE65F45ECAF44E95E23FAB6052195C7948AF0B1126482D4E02D72BF8AB03 DE0F1A632F7672AD9DDE70EDC82AA993678A82BEAD0BC2649C4707FD8509810D 364B5C6FE0E10772E95288C622C2F06C634F4DF8C7FD1432BC9310D5F24FEE3F 7AB324863D6DABAA1576E70643CA79EF4D7DF4105093D66CEE0F3B87D2164A7F 26EA05F5C4645B22D3E1BFD2219657712C168FD90DE801FB0F32759E80DEC1E1 43CEEB19FED12D757205043FC98FEC62D6A8D8B97BC083B4A0E985AF7850D6FD 8716B9957C1C35A0675BC53DF672C425C79F43FDABAEE7D63F092CF271C9A9D7 C41F40C4189510987887942E60A412B3EEC84C9A6E1AC7D54D528F5604B72C08 94B7882621A5BF1F325B92FF96B80878CC550D1AE4D8196E41CB1251856609A5 C4D3BD05A922D0D45E039D9450DEF8490A3E924E41434194910BF60BA1B08BE1 B41824345627745541A4F1703E956328F6227D11C74946B38CFB096139979E56 4E723B889B44C6D78673868C89912F8B4F0B4B485F1587A637B630F92E6072D5 7F3B44EA6FD96BBD4FC28A6C1D90805E3BE3E42A7BC9C880762966C55BC04E01 204D083AE976FAE6F37C94F27E68F8C0F28D52B17F6C0FD7C9150701FD78F8CE B8E8DC9260E3974005EB5CA728171F482D765016C94D4ADFE4A42EF42212BC56 7E4EEEE8B0D2A7856CD4E44F55C0BAB762F92CB8D64C17022D4BF3A47C12F5E6 279FC23101FEE93753653CE8CEDC3B75C9CCB29BF1D4554C6120DE8EE750FCBB E38B5D915206974962E320362E59B3F21B3AB1875703191043D03284D4467346 CFF2F98CEB4845B73ED8E003E0DC94251B73E13A9B51A3F1430BCF6A21EB9B7A 65E17FA411F53BE6432F1506232B8159E008FA257F884A4A01AC53BE91754D78 BF14A5B0FBFB9C31BF4908355F8A762052968DF526D118708CCB0B7CB5BEE285 6DAB6CD2E3934178E60BECB11AAB5478623CF6C50C92F8BB5D1A583609028FA7 B8A53B791BDC9EF76A124F3F7641857E4BEA0837CB36176EC9A522EA7F41B8D3 63C37D1145367BD300F17B54522A834BBB74DE12BF9EB26ACE6F24A046D58F89 4D4B7DF74875F1A0C1C9D97BE0849593D7B398EB4B00BEBC8C8D1497B6EF831A A35380FFB7F1AFA4D888AA52C9482E8B1755CC209905F98F40D95B44D4DCBCB6 67423D1BC2F3560FF0A8B4F0CAC352A4EE2C1D946E45AAEC8A6AD40303F3382C DF0756BFA3B1ED64C169E56ED1C760F2FF0E24DC5C9F41306EF8D2628153D30A 5DCB0791126BEFD4947D7EF08301FE015F2B0008DFFCBF9F2D4D859FD43EC7D9 C5BE237E9BF6665B7B1BEBB362F0C0C3A8D86010B9C97FA741C97C2E0513386C 9C26C235B14DD2A58BFDAC7B5F63DB4DA6D5D37D0098175A9071590E1DF66A3D B8173A047C29D7D35557F06132CC920B5460B8AFC11D23D09A4E45D089F5EB51 963FA1A6256E359D485107FD143B2BF21FDE9DA5744BC2615E86C31C89470CF0 D06C6397D9FCCB316EA9989430240759D2C4945D941F159FC02327F34B042BAB B5C3A47C78E8C1A6FBCD396B1A51CC4B020B8AD401841EDABACECDB482D6EC5B 72D2BFEB4556720FADD49D07307C8B22ACB7E310CA4151A85C71EEF70E8D15DE B3B00F26E0E166C14647A65ADA228A3D1C89025BE059306565DB1B1EFC37D358 8C1EB024254AFD049BA977BD4C2C605050E17940A89D0D4C5D963E792320F5DB 3706682E03D25D9E02487247819551465092CC22B6B56E93F3AB528038FEC3F0 668F866707A19B0463BE706EC729D2EE1653AAC7E29BD25BFB3241D4792F5152 ED415B4E7FA92C2EE5A22E27E8B75542C492E56D811C192E95542A6FE0BFE5A5 69273C2ABED4300D491B92D2AECDD278404CB84B1BB1BD7AFEC858215837D118 C0E928BE7E07CFEEB51A6D21375B772B8248C994564014015232A0DA4BEA1754 3274F407FED0837A236371F1A32056240F2015B1E7F4B2CA72C6B58610A66F13 407CFFBA5E0A2893C1F572D50F51286E9133B5A84239C9493B0574E77D281D01 11D00683354A000C9700EAFBC1FD104EA19DFCB87470190E7E2CE26E3A6FD0FF 2620B87B82AC8686B6206B530F17E9348BC7D04B948348802CE53A312443DB87 4DBBA5313A6A2A8DAB8A1CC9A594FF8C299281C0A261C8CB2226B732FBEEDE40 2C6ACC74A1A61379E2E1CD5548CD908268A32FA83D8504C442EA0E183ADBF7FF 9FD09C037AB03516ECCA93FF048235BD11A25DB07F164512A079C5392AC7F889 CE96AE5C8D9580BCAFCC087C35E76EED1A671E87C12E3045E15A687134736DF8 DA984772AFD189D68571A2ED7256F1E204230E41D3D9DD876F938951714A3973 0CA9310489F8E807C1C7A4E51AEA5BC030610A5D7263FF7E0F9FDE3E5E37A362 5B919000BD94D978583B942EB79CF2BEAC33FEBC9A67272EB10865BA8FB75FD7 9D280AB59F91B96C16C982DE848D76D8FA8620DFD7C80B7DEAE7264350D6FB3A EF04794DA3305844A7CF718F6D1A4A3AFF6826173A076A1372ABFC54ED3AC6C2 09C9287FC830556CA694E21CA5342ECA7B10C90AFC4783D841D7B1E34FA3DB7A 2B706F3E21B0FBAB23E7257962FC3BC309CEA2C7239A9D6B44CC96825115ABD2 AF9A2566D2F3382C01569FBDB94C8D664A5DA0F7DC3DD140CA77C743D7BC1420 324ECF9E4780280EB119885E96A6C619CE3C0C8E1E264E2DEB137E5DC8149786 486D65667ECF47B1A1E20E9E6E4FC8323E0BC8E61BDD3BCDFC6575C69C03E31A EFFC290472CBBD049DE3F840AEE37A2486034240F80E75D8A79E0762377DF660 52B12EAA16D678990B11A9BFBC03C1D4FCDA9FD4FFBB3E88352438102F10B7C5 9F04C013B6575B5E948FAB58EA691984A0E54E6B9F3F505FFFEF74D06FA1CDF3 4B8A95904C8A2763AA8AF5B71D00F5DE09DC1CDF87A08B6D181453063E14C12D B7BB3775A6E2A901636273D9EEB833EA8CF20FD83AE899E28DADE10EEEC20BD7 BD93085A4B1AC80AC1AE8280C14767F1A487BD066007A0D050317BD081131A14 6EA0898ED59E46DA7B6254BDCCBC660686E2EDA0E77A705A653733BB5C5497D0 B130359F866CF293FB6EF0C2AC5BAA2DB0DED045E2DED3A2612D078333260359 16CF0CCB272D34767EA069E0F0B0D42327A18529D72E890EDA6195C2688438ED E9ACDBEED41E81CA8EB5E43C2B09CE266EFCA03F2D7FF57F12B06F9E54FCC6A6 546676F6FFC5B8B7D3F0982B6FF0D21D949309F0C0B175CC1D0976F8C55C6AED 6E821C39041E22D91AB30922F2B2EC2746BC7DAB484991542FBC82D87B487507 559AB466F73EE23C2D3194DC5CE4C9AE66D3164613AC5CBB3DB501B64DA7C91B C7ED2EE9027FC0906820B35D4F2CF66C4F9CE4A884B7C07155BCA884ECA5EB3A ABB83F84DB1F5639599DC7D3F51241AB5D95C3BCB7AB1EC90B4BC989F74FB354 04B2D7366A34D335A47B8C00C05CB423482BF6C7970A95545424A08AFF9A035B 7F83F52B65A9799CE76E303B85664B624C65E9CA58184C7BE2BB9D9C86A4DE5A 8165EE3DA2E652B5022EE7893896BABD88931DE1D538F615787645DF5ACBBA0B A8E5B899A37321AA7D4B283AC9234978C2DD81813A1EE5DB6EC170DAC1B6EF02 94892635B498765C07A38D2E9DB0B7581B11056C28278F89B0E60998379C07EB C0EAEDC32AA69B8B836F92A61AFD35688315B2C3F860632FC13E4BDFB63214BC 41CC6859EAB3AC3034449213CAB99FA1D216563419CD6D6CE4E1B56F33E6C654 7AA9DCB5B05FC068DF02AC32408C8010AD004F6CCA9887830927F8CBCD49CDB5 18CAC1EAFF815FF2F6F527F936948201565003022C6C7390B4E3C2B219FB4F76 9F12BD25CA7B3B61D1A2F8DFEE795D04D5428B42FB66E0C254AF7B7A10CEF7FD E5ADA5E217BE24851180E9A1700FBA66C7D2B0D7BFDE4F4EED1D24B821A40947 5620363657F6D048E651A689822CF815E72FC8AE9D835BE31D1DD8B54C9A717F 4DC319B4B59AE073936EA40B070524C7E71D5A7B64436DA107749746B516E29F E3BBCB8F8C473E706670E11E5B221716F315FF097CD1841D0069FA69EA1898FF 9F9EC2518C77806A19730C97F54BEAD604548D553D4A6EDB247853225E24E7E9 89D71F6BC94DB986467E755CCC99069B313F5745B02B4BB608A39F0A0A732B87 7EA2DED68219754BF1FBCA350327572D769C962EF9242132D93A5C8E9725D8D3 AAAEC15ED0F362471AA58488620156F3474FA59CA080EA96FE995D2B3DEEADF3 3141D157481C66507725ACA5953CBBE1ACEE7E3F02C72C6552D15EB3D612730E 61A06A43575568DC3CF3844BABF04CA767E2995196097015E0C4F622C4356B6B F41DBAFD797A4B9D7AC22332C552043EF98913D0D9B50CA6B7CDAF903BC5C04F D20A952BA5CC35B646ACD0A287C956B98C450051AF6AAF79DF37F8954473F8F6 652BF03AE2AE82B99D820CF93F5FC0BA17EBD7AF90313E70594EB5C354023BFA 07912408F1757319C7288E99872B907D5AB583B082EEED8AB079C63E38B07D11 6744856E689A479CB3A8BC081F33CB06755926204981DC0A45B3ACC18F6865BB EE2C50DB43B62E3630FC1D9B1FFB3BFFAA6D0A20C0381ADF48E4D916BEE85BA2 BB40F538F55C11D50F882B73913840B45161262BC8B0012694C3EF26452F9B77 2CD7C7AD6BFEEAFE31C8A721C2D46AA00C10681BA9970D09F1E10DDB693AFE84 246AB18279A2B24E5B50A2FF6337B7B1039FFDD4B00ED3667B5F2F7BC2786D2F 525A0E82234B30711AA835EAEAC2E404915FC7EC0081B194765032708B5E11CE EF6868298CD26E5B9EF345BFA3EC2911E2B96A0B40AEAB95BDCCEE38F5EC170D 3BFB792D2DDA7E57BD2FB7669484EF9322A1BEE009594901095DE2BA9A15A0EE 4DD77404CEF16EA6C31FC04A8FBDEF27B9FC1AD3264388B650C641D6051E47EB E7EE41B946B5A54D2990748AAA64237BD4ADA31C10843E1C235AFB36BF1DBB47 A3FC8AC6F98C72AB9F84F3C354A44EE0530145D80BA7810314D977917A4DC4BA 2CC4AB63CD3E87DD7D040E8FBE63D94C9BCB476AD94BA7E4C0AF953BF4821182 D723D9BCC92F2B14A8769B9EFCA8FED9DBF2A836BDC23E27AE1BC097FB3D2297 DD32DFDD7E7BA91C05B33583D92EF193248C70B9B0A260A7959045DE6AB129F9 05F7F25D087EA8024C9F63852A12B46114C581719B4723810DCCC8183D7E6F10 450511BFDF8CD29A57EE9653F2651D54A62141A8142C8B857B0D3E2B9FC5DA3C 38D79A7AFE0B565A57A7C4F52DE6933437EE03D0DC1D286880896392B5C513BD D76497FD980320FB10E6CE08C3953F99A3618675B04C8EFA2E2DEF4511B4300F 2E5C733D69737C7428840FEA2A1D89133341DE4BD065034F7316B5922CDA4D83 D8804D8DED8CD4409859CB18F45C838D6F18CE8DF82B78C79AD664A57F705D8D 9CF82E48176AB5869BC634B2BC053A299600E1F9CBC66EE5715E9C70D86E6909 ACC25A0858B10DC043CE7A5AEFE9E3F8C28EC36BA0E34F850CAF6C0AF664A142 AC30D3EF7D61C7E85AF9963BC58143F92B5D64DA3F8C8F131B190E8333769BF9 0186F3840565E7C3CDF85409DF3E0134C97837AC17E7F988B62D82E068EFB478 5D8BDEA6D3A49A83886DCCEA341E9B4012EEA7944F69564B5F0EBB5360C067FC 70DE0B05B117732530099ABEC6F1FF955C9F269CB29422AD7A3F2BADFD97CCD6 3624B8E757ABCCEBE5B1F2620B814FA2A3DE2698BF0B06CE3AF4C560DF372AB1 A79B06195FEC5EC862560D6767FD20EC17481FF64AEE679B05EBAB7AC520F240 E2EF71614A3A93D4697747A6BAC42DF8DD4F2AE3CF46F1DA8F0A1A0372C6F83E 5857A31F725B28DE3AD77F1DDF563C4B3E8AA4CF5A1BE4B4D0C672D68ADA4FAB 5DD7F618B1222BE7727547825EFBCA21408C5F84E3E7781B5ECEB19CDA8EC4D2 120A75F8FBE6B0D64D79096233696BFA2AC17072EA6C9F52E42816C85AF34C21 215E72CB2995A8D7B363AAEF5CA4DA8F2567B40B01049191626A4D1CF8BF36EC BB17A076F501F8A81C0AB9C03E26CAB4684ED1672AB0284500CDDF5BACCB90E7 95EFFE1B505F201112DBFB902B72F566E0C6E1CDB8CA34EED9D5F6A831AAF04F E092089757CC61819159F7D3AA4123C21C6FC5F56A0D634D0DF2390D6F0CB442 D649D3F76762C4F3F49140D1BDB5E5E19462485F52DAA9CD4A32CEA7C6281EB6 979310262C103A833CF1B393E69BE17EECF31A8D36B6247E10FE60D71DAA0EAE 1B0CD177142080FA5687D01B87AA24ABC3CAE648B69A407E66BAD35866BEEE6B BD5A238C064A25664DA6A6F7407D0F5BCCF856D1419AB9DF15F1DE86F6072ED5 D31B088F7C1E4451B54041BEA187D705B3D99CFC9E2707D02F4C721B7ACDE325 5CA12E155C9C41F07E81764507E20F83EF6C45771D7EE187BAB92F32E1542F26 F0AE670C260111B76369299A5DAD5E4D11753CE4F2239692F7782E865F4D3739 E02E669AD27633AD9936DCD84192F14287790E822515A98E24A5373C30B5E4FF 5FE4EA0F868E0B1E18FA0B92C402082E216E49D3F598517B197D0D05C9974D86 B435DCE5A4276EDD80BC7EAABB279579DF6742AF516EB3125267D929CE8BE76F 42BCE1F2E4CDD1813257163C88B15E33C3B671A422A78C234FA2E075B9FA9483 F087CE013C9E099C3AD51EB826FF3B34D01186D4CE3B82A57A69AD94FC46B31D 347252804F6C4F5CA2C9BBE16D87C7A070B3DB13F27E7FA18B6D1028ED40265A 2AEC1181DE27937481B72C4CE6818C162250EC13D1FED060F7F5ABA1E3A2D69B 4E5750AFA81AB32C3C1C49BCDF2B2AC566E43458495C1051D2AAF24378427684 B6F226B7DC848F97A1B88EB2BEE17A3E9E9CC51D9A05435B93CA1752F2D5CF25 6101EC0A83496AF0832A7B76B59DE1A9AEE59B1BEBC3E1D081D58DA932B6A4AB 74BD81D3DE3CD424E81D2C3A43FDC27DF9B98F911401DF5CF1EE49A9084737AD 3DA9C0AD6002AD1D4E21E95678CD04EAF8743167002ACA1C42FD9E7E94A82F4A AB385D080CA1F400843DE02DBF04B2C3EC3FF323AE4DBE6BE96708A6B537292E B04F842B599EE30047F3977A5CC3691D8B004941A0225F1A61CB52ADA5A9AE55 9D3043D71283D5629E85DBF1AE8B44DEDD7C1963BDE07B62DDCADE37CC09E17F ED13506D083CAAD047D01F2D9B891CB901909FB1F68429124249C54838A8EB7E D4E760F493E99265F409BB93B5428A088081FF6E74A474A399FFED1E2A80716D 2687F51C00F8BFB978BEF90CF1FF6BF1E4357FA03C055575EE2B52D2DF3305E3 8DFABCE1A31F600A210FB3D5490B831F88CC9092CAB7BEDE1A59462501570880 C2E5A57DA12111596BA023C63A895FE66E14EF646EA978F6566A86289F22C0E7 9B3EB047002A969D2207BDDCAAB1A7F3B114923EBC7674E68620F1C442A41C27 58A9C728804F0E765A709CB1CD36EFEA483004AE42C2732F9FF1B7B2AC0F915A 89ABAEB8B899BE0E8A59330B3A7E7A6D3114F656E7A95DE4100D2A9BA91191DF 32EEEC6E72A40B22AB73CD6CAF6B5030731556026F8BE4E5D88524F65B2F073E FB4A636A244C70ADF03B54407D48B08D8966D2A274CD739F6A9A799B115C9F45 B93A3B1E7AB1D6BDB7830E328DC515B6EFD3DCA7C6C5B704B2765C66C1CD8D65 65A29B18C26ACFE9014D3C1CB916BD2674876E0AD902CAE371B595868C2D59AE E6E116D35D034F1AA5CDCE578EAD409E898D3C6804107A1394C9F82277403C5D CEFA4E1AF8FBD99AE73789CA43DD26CEC8F4A7556F8A3579BFDF6C561E641D2D E8DC3D2215787F1E73B67016A5054E48724D1FE9E7FDBFE860AF59FE542BC917 08ABDEFB84EDF6A219C3FA379E4735659C5D94588BB274601A0E75865EE4C56D 3C57E1499528CDC384E41997AD423287B6F78CEE2327B0B4C9191CA240C9AB79 C848AC774970FAF1BCA49C719F1809741E1CC19BBC573976734134560B401703 9570A75CB813B1B792D019086037107F01113EE503B0E64DD4865C35DE6F53DC DFF0AB763EBF6194A28C83FBCF280A2C563D31E7FD87B9FC479F08BFEBB38A71 5587AC6CB717302D330A414824E7D6770596B4957D602180678D9C1E3D8055B6 ABF29DCCF92D53126FF6DFF41F388E27D7754806C2CB3B80BA145CF95C9A005E 086914E683EA3F96389F38DD5BD23DCF0AD4D0BE1213516176ACB9C1A395C123 006C8F7F69823BAC1B0B67383DF8DF84EAEB5A9C51FB7428B7D416CAC30CFD23 B10F40A4179A6870E659FB85F9AE85700C5BCFD3C8AD6DB05B4A11392682FF0F BA71380CE0BDC67AC9C3B91DF9A4D8001D35D78C3F21E3904411CC584658CBC7 1E3445C34734EDAE24108EDFAA15CD75A524232A21D3D7D7F7BC33B34BF3EBE4 B4A90C6135DE3DF72D6E84D6CC0A1D4DAB0F4FD5F09064D63A97A885BE3CBF2F 821157EA905640ABC81D54F30AA704F40D787BA5CC45608100C7E5AD79A318FE 4EF567658555245EE4CFB57BFC7CB2C21B8FF4FE1F33CA8422DC11C6CEAAD97C D805A21E6F8B7F840771BBFD765577BBB346796DAFB665EBC12FA942684069FF F2FDED939CC0D4BAB0A091F57AA482A5A5B657F53C2FBD8A95C9109C39A9619E AC1B3A7A437619071A21615E11C8A3D3EFFAC78EFF749F464AC2F03FE60714A7 BB90C42718F3A2191FEEC5105436910F7C7AF7F466E2EA649EDAD7215E301B98 B6C6B2DC4C9A95BB130930B54DC97804AAB3ABDCB710C770821EEB9C73B320DC 91F4F641AC73635161493A5EB7C06CE2E2525D044CEFAD7B3AD5EE7E847435BA A0D56F55A52B82613D74D9121CBDC0C95197A439460EAE7EC87A8BE474409134 FA15687F78572CAB8D0E7995FB9B1A139A1C0810E4DA96511C02BBFE778F0B75 17EF22246092022351D5DFC2B81BC41075CF5B5C3C4AC24003602C0030700842 148F7ABD682B577BFAF9BEBAED2F1FCF741AAD05E48B2C312C584B1347449755 5E41856D173C1D34E503E1DDD0648B32DDEC71EA73025EF91861D37F8DF4FD65 B97E79240A71D4A8CC9C85CE344B45F5419B710CEBA27DB128C6BBCA59CEAC3F 500A09579E6B72B6DC388216355EB3A8B9340262A8C36587DE049231A1587225 516DCB203D4764C17B28AC986D0A5468A4EF6C9C27ECF49AA5F5CF2B524907DD B687A20A0BC04751CDDA97D6000031341B9D357F86ED4C0CAE289BA8180C56F9 C9F79C66BA03B4048404C55B10E417890B3135FD942A480C5EE7F4CFDD8305FA F1229D19B17E7201FC1E99BDD39C74B2F8AC036436F7BAFA2D0728B4B9F65900 ACECD7000F89A3CCE561AAF7AED1318E03B97B2AC04F3ACB4F9030F1A2DAC7E3 2110282FB5B1B10B93D10E3B8BE0ECEE39C58B179CBD38FC5C8FEC71EA0645F8 9E12CBD79D3E9EB538522D048080030F7E75A41242913209CC87B7E179013272 99F520664C8187A4E90A6DCF08F1BECDDFEB6B3FBB44CE7189ADAF3346396DB9 CEEA508952BF68FFDD95BB0C8BE08C2E56EC2B520F0EE6469D7D9E8FF39084FE 111795DE5AE3C1ED22D0BC4F4E2FDA2E6DC05F3D83E637CA476FC9B13064F839 841CCC4A4520DEBBA92296A904B77CB3EAE8CEA05178C5BECC6AF12042706E35 8550D4549B48C84DE86FCDDDCDA695F0F2D020584E1B1638C3F4A94E428460AC 283786C04946B5FA4A4D1B4C1DF339EB031E46ECD6171CCE5A008F754CDD6F13 1043AFEDBE95B28C6AA99F2B5C58D86C9BEA0AC5F74B12030B7027374647B323 36EFBB6492968ABD7E4F34A34019D4295894D4D4F580FD6B4E891C7BF15A00A8 619911CE536FC1DDF9BAAC1EF3020CF08735C6899B71B51FD2167AD18EBC91D9 BB1026F560315D2280238998351708F6A2B5151A836B307E597F3577111EB066 C9F2E6EE2D00CDF1579DAAE078099F7153981E161BBB4314AB92166F8ECD6E60 B6F0A64F9B6BD46923BCEFC0160C004716CA04FE6988BED94CCF8D6D7C5689AA CCD201C3D141396080FF8C3D871C0E8535886C8EFE0C5A4672E335A33475565E A1913D0BC45C283551C2325A684EE5419BA18A63BB617E2E6C3253D66AD70F12 74D33A6A13D001797F3284CABC445E500C128AA21C5DB2BE535673F289B151FA A901A694BB6D3AD30B1348D6CDA9120EE915950C02B966DC693EF4EE39B7F6AA 6FE695D89E2ED682FBC03F41E081FB79BFABA197219933FF997B479CEC07ACBF 08E66C682B9DEB1EB161087995282D762BC357915D8019C40403A65E8CFC1519 95733D7422CB55E15A2B7ACCCB18845424D1A84A308B5FFF7DE3ADF9CF00B75E 523ABC5DFD3752482641D5F88DBDBE6BCBB26060705A3311275406FA1A5FE432 C6548495863E078DCD989A88B148054ED14865FCE20A07AD274CE4521A106B5A 2E87DB2088183928444A52AE8535E8ABF39413A62CC54F6FA97ADB4C0F2B7C29 3F9315774960A9D3616C9C6D3E7835FC4DF9AB8487CC2A08A57DE146DD9A2507 B1A9298C7E0E99612BA003F0BDCBE4B634633D6BCAAEC4D0D112F9D7651DA1A2 A5FDF2A98CDCF567ACEEAF0B3A0509F2199964FDE5154703104FDC073F165C98 D0BDFD96AD8E86F68D52E2611B87CC6E2E1CDC04EE776547485F9BBD25A32684 4BCEBAE4B3299506E270C6F06199D958787F2B8A4C307306AC481F1FA915CEE8 5943DA78AB58680C0D84C6E0403961A958D76032D462FC5BFB6120064BAE8E92 E60D9BF483BD772A95EC75C3B58C7B93A535D09DCEF1BC7499AE17A7576FC1B8 FF826CF518CC4E160F711E220711D2E0A869BB7DE8D069D77F58B7E3D4E055DB 74FD3088AA86F207A9AEFF07477052E296C5CC9A94A07AC6095F7E28A93F1D07 D2D5FBF5077E7F61D30D49106DD7F72BD4148137ACB079498092F75815C8C07C F9D35B9BBEFC8A25C0C57CA97A5E1C707163DB78211E92E0B4BF7A72675F0CFD F31E8D495FEE04CFDD7C17C6913DF50F76845194240387D0199E70FDB548414F 4963B019BF9A7C1C184EAF99B0C58ACF333366A913C7DA0E15C5A78855733D23 2A5613F9083E28093FD0C566B8849EB07C5388996F8A98BFA1B35106C90398BE 32E1DE24B89F0ABD89F9D6C2F32CE6C8848436F9F8C8B23B41EBA80D8F938772 EA132FA1BE687B2FC81812755401954400BD0FF821B3CFD860CCDC78F5DD4378 07DE1FCD62723EC4E3E8FD7B1468CB49F3B5E2673EF1FB52A441CDD6422F2010 10D1DBCE55D12E71B01981AD1D5324F6CABDEFF192D2B2F767511ED442CC584F D6EA91E84C239A9DDEBF60E2D248B7008ABF1CE73AC182B80BE0E2D22870AF13 4A871B219806B5EEA91DF3D3DA823055886C9B2C854591EABBBBFBFF643DB2C2 28D165C2FDE02BDDA3F5D2518FB0F617C0D475E29CC291916D132C9A31FDF617 03CCE814ECA3B13774DBB134EA16F93848528274050F4A88D747A132D4219FB5 C9E9AAE87E2B357518403C3B262DEDA00F44427B0B2D317026B2FA32AE232FD1 1348693B095991DE9FC54F7931C4EE021C8E0D06D0F2A92285B4536AE59B949E 4311189A4328163867B2CB72E7145754F29741CDA47BE9379B9FA5491D5F6D00 AD587CCE63418BD50DDD767FC4998E9410400BA136E6D5958C3104087D1428F0 2F5A880B546A6D81B332551D2C6018A2D6D9A17C26DC0C9483A0AC1CC6AE2A0B 38008A0CA8EC1DC71B97C91F86B8FD8EF3FC186A6B81054DC6E3FB2BA26C54B2 F0983F1145C00C4C79554A0B62731CED7039BA91064CF3B2F29F6B63F6081129 D9955EC233023015892C0F40F4BCEB7CA9E5EF3B111BFB3281179D3C9F95A7F5 94B309BEAC0337A99D43F8492CA43B70B3416E13A655DF1D2582B71A6F3CC3C4 FBFCAB9AF8BC723E81A49FE768EECF460CF82F0336FA74933298CD675BA2DA9D CA82F275D73FDBE72ADBD06AC631340B8E117284B169EE1D25F0AC07E9CE354B 56185EB6793C7AB6065A636512C5333507555BB07495EC29320DF1E997CF1F1E 942F2F5C2C295CB5B95188E19ABA457219B93BA8B75CEA05B308DB208CDF26B5 3933D37C9EC0D48EA3D00F018C74B3E2FD3752528133B9FADA2FE6351A0BBC0C 8EE73F2A1EF958DFBF83604E0D083D5C72D4DA1173BF2AE417556B4AD8332FE6 37971ABD52939697F3939C27E28AE3C0B8DE05E7EC8975721695CE1B61AE9D23 42DAAF7363775942CB08141540001068863FEED057706DB15FC15C353DC08CC4 137EED39BBEC14CFB10A301C554624090B5ED6A7D42658D36779A60952608D85 CA294957C7244EEFAE4641FAB1B1945B0231DE09A79BC5072F0BBAD79B9009A8 FA03C7D9738E03D9B516B5BFBE015D3BE9F9D6440275D55DD3B9A50DAF4C3448 A2D771B91A749D61C9A95541C427672983CF33908C0EA063A6C6877A840DFE06 D40CA54249BC3E2C6A1BD6662F299EF1985CFE103BC9DD62DFDFD0A0E30EC267 45642152EA01EDD26D0DAC64EC7C1D138047E9722F9D71F02BD0372462159BC3 464956ED3F9276E3AEBE39F427A55B56433BC45F3FACC7016F8124485D49F107 18B63DBD3391F9EB9D98DFDE15022365AD72A0E371784859A923747680503DD1 DD87D6A1B65D47A65C5D87E83220EA2F706A63B28237569412058CFE3623F122 78D727FFAE8D6784A4463B098AD3192D416E4A31CDDCBFD606D935EA4E1CF1EE 96743630B3BB63C9CCF5606EBFB5689D443F17D1D0C7314D9F6E24E15D0FD70B 80D2C8A17A870B0050A0E28E6BA1D2857C72025A4D28BD0A475C4B56CDF486C1 F979FD847713E7A6F5725C450A1D20A40C3B566C603065B0A550A67913E57B31 46E4B0EBB10DC615D28D46C1ECB8F18CC386797D2A23AE98E6EE063C4A0E6E28 F98656BE6993D10A16631C2ECD93ADEC53D66E77938A0A8698AF225BAD2EDD2A FAA30480214B806C311522A904B5A3DA0C3C8F108B2ADBF1EFA41D0CEB3EBC90 274767469E2DACE949BD1E92F800DF3035A5B588B23F9119327664A3E7F150EF 45FFD33B8CCE5B3F43A586FE363A088934830498F111B14466D94487C749071B 7BF6AC05B82CDF5A25635C54139E59D7FF282B79BC3FA1308A0B5BDE0590C420 FC07980792F1E4D7DE3E6F2A11662BBA53266C5844CDEA6370911F496CF36D31 5700B7A7A68E1CCEB1520A98D6E42585BF5AF0CED3DBC8F18AFF4EB970CEFBB8 530B33C11196FB42062981229603950EFBD251030407662680A5922EE77CA0CE CC9E789BAFC27C6F5CA6D7598D70EF246BFDD7B194C785EC1BB6E19BE9B15F71 72CBF45D1E44BE43B5EF8DE710BA218F2366A746C8146C4BA036EA7F2985CD59 E30902146571E9686D0C759D07FB79ADB281AC3668D4C912AFBBEDC9C0EA0E7D CD290A9E211B609D9EEB724CD8787178B2C9593569C2AE7A86DAA893FCB1AE5A C12C76BFCB6D92BFF33DB4A9DC0024F78B1C7A05385234ECC46C0932783D5948 FC5B7A19E38845B4C8FA3045F884BF5D080B5020918D8F56F673F8B53A68E21F 777221E6079B31229797D040505C802753D457B8728D72CC5E4EED9F4CC58A40 DFFE590BB2F986A07402EEFFD9951FE6C99CA88DC1A1661F1B05EF732D8586E7 3842437BF3779D1D6BC88B2F012374FBE612B88CA153DDBB4DB25D920EB8A29E 444358B2B22E5022453913B7DA38CCDECCF05E83B34705B9A73152DB4A6779B3 2D4438B37984E4F92BBE6D5E1B7BFFCBAA6606E892B248A1A7FEE63C9CFF0E05 4657ADBB047ABE44DF8BC52B806DA5084E33A4A646AF803A37F78E7BAFB549B6 9FA3E1BDBA86DE28CF5CFF341E53DCACE099CAF7ED1BD92EA6E95C789BD085BE 65D3D7B69F32DD5664BC17EFD4824D0E1B5F3E70349FA75A1ED7CB80346723BF BA368CAEAFA8636584302940F6B1E9BED8C92D824C45EF5796124CCE3049C6D6 6C9022A5D28DCB8053CFCBB70E29B7078C1842DB61E47E2691138AA7581B2DB5 34F6DC9A8D97F83560E4210B70428E5F0855AD39BAE6BF752FBC873CC7A71A1A 5E580086FE43244D6D973C87C3B1B6E9AFD1231FADC761136F4C41A9D68BED0A D559FBCDA05E5F5D4E16702F978BD62C83B034D5599B9FF8777C54464B77CCD3 57D8CAE40AB3576D87647C633B1671BE526B64882DDCB32C7862A5B7C78EF9B8 A646E5FB72CFCCA6CC89A85207D7BC34AE32A19257EB1D82727B0C7BDEB3F41F C62ADD4166987A20F1732E30BB4354290E98F4380236E11A4AA80E19485C8B30 60F7157AE144FB13453149410693833943879373EC01657B8A115A61A354C53D AE298CA30AC8D77598EF55D10427EB046BD9A34BE55A23A75338F8F062FACBFE 7EE6C637F2DDA3E61D2052CFD792702F0C877B75F6028BFD197883F1C382CA2D 3D6A2977776748ADA866AF21F4764EA9CDC2767448101F2C0405E1C30659B28D F9410C0B563ED262B4CA4B77920CBBC78AF65870EEA499545814BC2B3B2ED5C0 3D5E4F3E23EBC2FA1A86D466C487DA2B7C927B839DB03E05AA8F20F7613646DE 8A9658B5297A68D25153B8B30DF769C36B80A8D36DBD3F94B4DC6AF115F89534 4BAB80C6F0DE9A410CC4BE7045F9419B2E9C73350865E5B82BB6B4FDB6DD6686 ED6E1F78CDC43E94530B742B38B69A5EE85B9811C65BB6B358FC9490F94EF054 A7FEFBACD8AF6F30573D5B6F8EEDCB6A9CBFDD4CD25C76F19694E68F98449FBB 7D85097AA63532C74B2DDE25F4BE2316ED3CF31FD4CA151134CD07DDA44D6D05 88F9C3D7BB912498B65E00CB584F37299573F45D31140D5F184D5E127BAD4DFF 77E90E0F462F309418755C35FA2CC0AACE842AF1DFECD0FABE68CDDE1EA369D5 BD02BF9D7922A09842355AAAD017791F7D234C04D4AFB3DED005F39830DF7582 E296838D7D6FC1BA8E716009AE5BCBBCF5D71D9B85B220D96A9417CFA693595F 9DCCF3AF9D01BD78C66B629F0F5CC0A28D4AB5177380AA9A1FF86D74AE541153 FBE789910D108C8EB5384A463980FEBC7AE330E3CD328417A999FB69D6889401 F6EEFF87E5039A376FA33C6A1555DCC3D39A32E4071E75C91E94756826F04A63 CBCE1E6FBD2713E449E1B74C0885DC8DAA569C3FE3AE0AA9EB424E5FAA7046B1 26AE80A947E5B11D8A8B109526FF86F3C8E0A324242CFADA9D8ACDF14328D931 B7909B6D300C2F5B351AA4DACE4380315681700FA7042C7E215948FC85FBDB11 8EEB9CB0568414BE0A6A747E8AD0B6FE2C245F09450EA6400CAFB4F98E519DD4 6C1A9EA548F0D92C0E215219CF10DCDD636A526206B3EE49455D9DB09185F6D3 B2F5181ED82AB900A35317A41B61D186E6BB57A1ED3BB67FE8318B295EE5E4D9 771C3B3FC83A0FEB1517BA61D67646E804A5BA948B8B7D50FA9DFF8A4B85C7EC 4A127D21385C4360FB38E6EC4C842127CBB918BE5297110D15653A13D40262D8 9CB174B7CD5737912037604023626FD572D119A25B8ED7C6BBBD713115FEA18F 9B029B671A19934263B0F2BB16DCDF44D3FC206CA83FF6FB81B0C447E8A74A31 80059DF227ACE8173BB134AF38AB6D89C614E143D1C65656AD78CDA31EF50C2D DFF406DE95D1EE2D62F7D9AB0F6FFB92578DE556FBBEA7697FFD870638BAA98A 642FEC9A6B1E272F934E4AA3F7A168EA2360A83AB78C4A46F62FA391830B21E3 955B49E5C98151B500D1D6C55A3692293BB39F6CDC3FBE2981A902BA6739BE31 F84CC0D26D8FECBCF2A4BBBA7526B18B8B60F9EB9FFED0211B30AF8F24260BBF 5C7BC820BB8C320AE698847AF686A20DE5B439A3173A962EF34459C8754CBFBE 48DEB849A7B6ED32A9C3ADBD825B8A2E88801AC0BAA0787DB9DF3A22B5AECA12 D6C24711BE3D40B36F2BE87D4A564FD904E3D6401735E3944730C77D3825B6B6 94279DB64C89D00D7E847D795D7407596312DD28AAE55C833EF18210A2D30FEB 41B1E6A1A9A5263802834B4A1770AC44E798F61AC6EF5447BA935B93A08414E5 CEAD55614A6EDA370198F93D04ECA9DFDBD937265E283DFA59ADF721B9B442E5 A4C20867D6A77F92B504AB2F816712FDCA99F43322BDFAB2E3191F62062A8E8E 6A151DCDA78B31E79D84CACF2752651DC087AA0FE6C196D2C714F15229F1F780 E6BA614B5F0B77BA6997800150C6A669BA3AE758CCBB97F823C35620845C4682 21349399ACEBEFFE9020799226E53B46DB56C9D89D6336C90D4AB26EC1546EDC 6832D5B305CFE48CB29ADFA7E344C14D15617FE858219E819ED643E358E33508 22509EE13DBBA9910B4CC8A43B3C67076E4BE30AFE8974464A4A322194063D6D 6DBF176879D76597A15B2B749092D3E316DED90C3366CC76803386116CD45924 45401FF984FD85B26D98793DAC95A55461905B682A8632487D7A534DB8F4AA09 99D7A0372F54F12F03ED77C0A809A8030036EF262FCE716FA798DF15E6734952 92D8A43D304E3B4715E7B7EF9EAC25709E40162C4BA04B5B2874283B145B5C31 62054909E6D2F9A688C9AF40018FAEB99263CE063A3AAF07A282D0EAA2EF5F74 BF6EA23D8A0A9414842E60069A4DDEEF922957FC4A1A0FAEDD938665A93B8CB5 AEB55BC09B1253D3D5BA837563530BA8B4CF14B3CA0AC96E060E4035107B6BBC 2CA0C0D2E8F8B964F2E0AFC75BCE2151409A9464AF070AE6EF6DA148598BD455 50853E45347692BF9E3ECDA7A057BE8B1AF525D139ACF0ABEA0C29D6778ECD97 202515CEFAA2769298175E5025B060800781D72F9A6A03EE1F8C52475F6FC169 86A488AC1C412EAB2CBDE08C815F7B3A4BB94CEAB7C0D8EA20EA384D74764D90 7754B888C860A5D7BEE6E4508D67426FA0B0F777F881EF7E6F045EC83A8738F0 5C919C3F308A0F91E1E836F5A656BF319256B2D374B9309381911991D3FA42D7 32C630579EE692F6C4DD0B4B601E440E513D1987F6B177EEB8B74DA842EB24C2 F2BF26031161B8382260569E3E776985573375745686414A4F0D0117817DCFA7 EAAB069DE029C50A0C9CA4B61728F4917112788E5C94289020274B8F9C8306F5 D2234B7C4105F597D9EDF5344BCDC7593ADE5B29BE591BCA3E984F141EB3D61A FB413BA9135FDF86B3D56388A1C5115FB77EF824E9D12F9593B2A9513893598E 00CABF89509F8F8DE41377CEBBED16946525734DEE697581EC055F557B5D0760 2F89C41C71C118F3872DF6A2536A36B8CE9920DDAB9FA90384B84579127FB06A 9C4369B8AD2C9FC5EA716C914946E60D7AC152861E11448A077262DA447777A2 D5F696AFFAEFC852702562CB08CF8AD1E6FA92E4B7AA8D70528D845AA298810F 9F9394D722A875F1795DE7E896ED0CF00CB443CF704F17BDC1FA2AE4BDA70862 151533AC508DAD9CAD9C491CBAD7D9E6DA0B3B59017621AFD264818132E69581 91BA90CD27F55C66A7F0FC720D5B05B93056D37565910670FAF8EE6A3BBB7558 382B2D2DD9BACD68162BB343DCD94576255E629A0AF08A8360D70705F54EEC3C 5FF19FDA8224BDF6960375EB0E3BDAA95609FBD0AD545DD849AC0A798F1C6E4A 5E974B8D719DC8706F286ACE2120CC8F270E63C0DABA9F9663A8FA4CD2224F82 6ED35B007A8DCA5FD464584BE157D04E8ED1C64A9D5EBD46BB21D9B5839E2026 8B9CCB90DCF9A69E3012ED2B87E539590CD41F9457F645EE5A6E30056384A5BF C5A4797FBC84D86F87CD1B95CA1895AEB0A9446A5F1E3BA5E5B6D494A97E7696 145307F7521AAA59A287CAF0949D6E6B5E9C9F09512FFD3B6B9FE2C53E0DA6EC 8F97A82E12B2EBBE3C47CA945C26E497FAE3BB01F0C56FCC494F7792E17AE1E1 FEDF323546B6A3A0C5AD9DEEA4BFD811B80D75E06FF863FC6871778833178F54 FD7A668DEF852A34019DC6718957DF4D621CEFD87DD1A8447957AFF35B71DEC8 F12A7C7CE3C767061C3B2452EB1EAD9AEBEC546721002F656ABF0D1F36B84F58 9580B9845C0B304243D5EFB58DBCD3ABF5257AB077472C554D4C67500168568E DF5F51ED2B44DB8A7AC4B91AEA7FE8F4A55C94C9BB4F650AD06F21ECF134C6DC ECB2AF4C2D2029A47DDF8DB31C4819FEBAA84131F4407D1FCCCD1AFCB95DCA57 C746D08B25A8C95DDEDE68EE5A619B7FA01DC794AD0E116E51DEC7B5AACD636C 682DA663B86A76E019BADD4C3376EA3F8349E829A55D5D0878F89337944B3B9A D12612792D82557CBC940A92E77F10FB1B0C2F24315B53B0F455D147A5E5397A 95F535FA66DBB11467D41EF04C112E5A0ADE4C7E7375D7887C4CFD751A6B7C9A FE6131B11862DE7D668162A57AE1668FFBBBEADC64A96550FA4C7A1BAE41E4BF 81244CFF81C417FDE109B6A5C676EE4C0DB4BC6EFF574BA6F3A167B82C33BBDC 21EA37FBCEB424EDD7B16874DB805141E8E37042492F3A7E84BC11A1B03D85F6 AC9DD0C1FCFDD8C31DB553C1892ABEA6DF187A3EC5D301FAC7F7B6CD9D4401E4 C32A5007F0E683DA6990C40C211359954942BED9FF4E2A18BF9CB6E3C95DE34B A4C3C6C416003F96ECD314D0930F79866EFD121FAC1745FB154EB231A17771D5 607BF0F586F530AB07D680EF6E588E57993F080A6472E2C23DEAABE3999720BD 9649F1628E4A4CD6B570949D9438E78B684C80C7669AE9A2BBBB1EACC0961756 F589B415ECF478628FC7575C3AA7F776E6FCFC29395EDB59F0995550A71DA472 A302FE65B1893D73FD6845AEA58E08405FBAE1159E30B3556F3ECC8EC1A506B6 5F8C11C0C4969BE68DAEB153CB2FC86F44B61E58912A2765AF96787BDB5C9072 223DC5F651D87A87E129BD15C7EC2BE736C793CA1079303B30F8ABC9355909A9 14824CDBBF254D1E4A8DB0FDEEB87B3450F87AFE631657BE616771DD860DBBB0 0911C51CF980B0854C6A4A0243BEFC8D1A2F4CE848BC13E0CD4F483E55BB01D9 5D43FFF63B0177735FE0C3FB9B49D1235D7A39EF3C8153DB7995DDF16B0AD651 213961087EF0A3EFE2AAE31A492B856CD86E6730D41E0845EBBFE9A9A5176DF1 C32A747B4B73B0A70AF05EACFEAE5238B8DA684FA5EDB6B62DECC297B6988DC4 7DED8E671E876219132A8F4985D3AB78065B3D6B6789EF43E59D6081C04893D5 4BE9C620C802E233BDDC2B59018EC31814351B224515456B1FD1B4D3AFA923E1 373CFD0724ADB2B0D28DE0DE2EA26E4B3AFA29025753963229B8D2FC38EBD8F7 C2B503016F4F479D16943D14757AF3715AF16A2494362F25782A4FD4C189079F 9B190F2C11340DACFC293B8A51ACB2F03ACE85105A908486503FC07175686D89 8678DFD88BE0CBD791015B0EA3942344B4EC4FDE364AD65DEBDE43C6E51FC26B AA4EBBF78A88CDE236845E09AB8BBD6B49303F141CB6625D33E604BB41C2E18D B465475CFB85A52EFF7A35483F87F74CB48CFD02B12B0626B4E34F75CC8A22E1 AA7FF8FCFF43C2157C06485E8B4FD7F6CAA2754EC7409D75381AA85EB7F51823 F2427C7739868C84BB9713EB52C0CA86ABB93398AFCCEB1761891305381D127F 45C73AAE3FAA5706504758E3B11EF8F5E08276D9240AC873AA9741D39141E829 7FEAA2F8414D2E640FCF1E7F0DAD74EA3165532C692D1D8CB33D66255D52F8DB 533D8941AEE5917912BD37F28C5BA43CCF6B0D2FD103AB87D2345B92FC6E91A0 08D6A3AE7EDFEF0E9740FEF5BFF1AB01E0100DE63712DC59F22059BA350DA5A9 E445BDB41D8B02E3DC8F150AAB7DE04F365155DD41E0F22C02FEC986E9DD6962 1D486F03BD87DE3693C32F08A7FF1FE78CE7CB42193B026CEAE61510BB745EA3 B394CE7624DE372EA10AD9F9F8E25351C8C944F0D32A79A4B2666B66D3253F75 9C599255D0C710BFF00F111CD526BBD37168AE9F5AB3A13D674248E74057FBC9 55FBF84F10BC9333160E4CE839C91FC2F689BDA688346C52BED07FB51808601E 586A4F989F9F7349A36783B3942AB489A1F8FBFC440A4DD636ACF2D777A3E9EE 6D1106D9C4587AC495570D3147EDDAFAE54754BCDECE086591AB7DEE51E1FA3C 3D87F35417E98CA103843347C5F9C9A5F02251BE926F63A95496A9B53ACC901C 8F7006914AA4C34600BDB1162A682E62EB95FEFF6DF1A5734F88C0BFBD0ED447 731716D09F83C5C2018FD2BE3C2BCDE2729C7CC8FC421CF5580373A140227C00 107B7D4E9D41FBDB970C0F04A23EB6275C98FC15F74E0C911798AFC2E2DF374B 9C59D84DCD8093C2E30234F9B810563ACF34CAB16B7851BEF96F179178144315 48AF44ADA49D8010A15C6B14715CC3BBE5610A0A11D36B85105ECBBDA2735168 46E5FE2B1300DE4994C73FBBF1B21DE69CFC83D09CCC87D34CC406334C850A1F 4A23741B9828D51E84CE0217B0175EED081EAFF30C8E2EB38F4F7DCFFBE73C3C 9C43CCF98DC49367BF3F08CA9D5105155FD82D0F320960976E8B2969D3DAFE4E 06CB794F2B4754E18B1DA52F41DB850A906F989868D9C0D075FADDB5AE3869DC CBBDB6F444387A1223CC60F92F44F9E514FBFD62EAAB2126C3F8D72C58F22457 0791AC2DE8DABE5E4F6C3CA0B50004BDDA5B6D1085B61BCB55F88AD951AA24E1 4DB4D22BA8A24B4EC1D4DED5368EE41F481EFBF7A4C7356B1573B9F0272472E3 C05B4D33913642DBC8B3852CA7FC1D04453224AA8245C3A28DDAB4C6BF9A8DFC AE8B468A490C91150EBA1A8FBD70A9DAB06582C52B1718263C9529C5EDB04272 9E0548D32BDC6E4AD1F558FCFF4E0ECBF5FAADC8816ABC7A305034228E5CD75F 31DEDEC9DDDB904BC9175C220CBDB1FD978658B3FCB66AB53112124041F1F093 3DDFA363DD518DE581F59EC5999122216C5683E553C27CAAEA4969611726106E 7E613187E4B770F99E30B191B00A7378D3118BC036390748D091644211556A69 E38FF76D3DF77694FBBF91FEE78CE1AF15ADCA683B7B25C0A74E029A6438A696 953D4592CD55F58A8708694F8BB14A7B843F96EC84AEB66988B37698E6BBE9A2 4466C6153C2BB2166D06E544F56B5C565EDE32FF659083F035DEB823FDCD18F8 B2A738041AAFE35DD523CC0AD88F5196D7FF1A09BACE0E2D49413A3D2AC1CB8F F63824FF35C54FC59A3CC03E34FAF18D04B2B6B7B174BBAD533A9BB612BAD140 7AAD073F7E07A419BCF4DDA394D68DECFB5AC2D5C99DF29CFAC92B4C43DA4578 614CC3C6B3277A057EF480B212308C64B2C98BC1B73A4402AE1DA23BFB012701 C9EC7EF9C484A2399E5219AF9C4B7986FF49CC46CC387F3A5B61DEFBEBAD0ACD 245EDBC9770B676734CEE1C5A177635FE57C02A994A42A6D71B7374C678CE9FE D4BD7D5011EE175771278405145A96103B6482C45C0730D82A8EBA94C4EEFF23 A5FABE751BB4E464CDC5503F6EFE882E65874A807BC60D52F05E28A7A96B3FA7 6D517D3C1C3DBCEB3CCEBC4C07545397376EBD84467B7C2514D4A8C902F1E2D1 F7BD40CAF3D167489C2065EAD3B9310B9F706A13EABD735333A3634E31707EF6 8C31953E9E4E68FC1AC897808DF6D4C8AD8D9D7EE57BDC320050BAF813E2474B 8B6194C755CAF81F1C63DA41FFB3BA9E530785862B68749FA9DF2A720A4C5BE8 09907BC0D46B62CFA032B3A6F5B7619DA092814A22452D07641AB9A5012FA5DC 180A1873DF149014DBADC393BD24AE7062318963C19C3A021780013E8E564965 ED5D9F46A89E14CBD0FC0C94A45C3D3E587D95AE46823D52871D6C932C4A887D 92E20619DA3D5C18EB557953936E05AD0F187980AC5C92E6FA1E8FE0EE6A8E81 708781CE7706D6DF4E80585A7C1689D653587C3AF55D048FF87F1B8F543A87B2 E8FB96FEFE76345EF1F59C098B431A1DA0162E7675443113A4C65CEC5789D3FE 1EF88CE98B19E8447AF2ACE3BAF3BB48540594829BBF8F745561BD2CEBFEA0B2 A8E26F79BDB77358E1658CD8B99A9D0136F804D8EE803508C28EC218BA0E87D5 EA7679E2053F0C29EDB85C11CCEAD10B4867DEC8D555DEEAF1625F0C0398FF96 D87C3B9197A1E4BFD81F1C8E01C2426D61DC0D716C5A48FF09487397484A419A 7D636386026CC9F37CED7221476923903752D994EC7F493099AB6DD09622EA2A A6AEE072C875CEC099C57B16F1B2713F185503ED65E119E28DC1387C4F786415 CD8264D89E64975A1D36BA74FFF4F9E734ADD88910B2557FFFE45F64639A4484 279F98037E2C1A022943BDA4EF7E6B334B6BB3BFE3BD231FBA7D04E2A36433A8 DF5D9CA562D530E814884B7FCBA449A0E707C6C05D77195C3775136014CFC8C0 D933558AD3060DACBD1DEA8DD93943C7317A1446174D5B882D84E7471B8A03FB DA9C41C5A5130ED121F00CD425B8A0C30B8B2ABF10DB798755DBEE8C8619D0EE 63FC55CBEF26FFCFE29275E6E2514101D2C2D93969E97B9B630CF49735BC70AD 71AB9014F0AC29F573329CD096FF6BF00E26249391D873E264F6F1F7DEB330D3 1366880941D0F8D81E7F02EC4AD3E5D8C65FFB65C69CD93C8FFF4C986F45176E 867FA3B61C95445CE00F997AECFE5FFEC3A7536C8956A39DE15544316CE91AB1 2E5F76F4D703D12A140646582F5D878179DB2BA84F4D412B79E8BE6FB9307C5C 71344365602AD39DC88AE6DBA166B8CD8C2EA70CA1F0C13C2EFEE06682CAFCC8 D4487C15490DCB1FB537D092785A5D0C30F5E9E541569D2B1E586597F32CE1DC 1CC921745ABB3575BF3DC749ADF63E9E490578C32CA4F008F3A2B4A6EE580DF0 7AD851FB76B26BF715073C6F29C064DFEC115BCDA35949204E0B54096A0D8907 26ADE54403BD5334C8E96480B9EFBF4DBF10C92243EB76708A6E2918ADAAF75B 8C6A6BC5AB0ECD4368D99B58B24EFE4C19D3F3154883CFE4EF049C665D6B4E05 B8BC289426EE7D799F9D7CB578B325CF150B8DE3E4F2F2E5FA6BA9EC328D9D3D CAFEE14FB71F2025DB83B22A287C0662E380E0D96FDA1F3B1B8BE4F0FE0ED1BD F0884037A05733BAFAD2500CD1142872CD9C497D98447A75BA76B05A8DFC7CD8 388B3634A22C8441D24BF3D9E573DA7987B9329AFBAA7A8C4E23155C04EBA072 7465FBD0C939BCCB56720BAFD6AC9A564FDB6326560601EDF8B5CD3F4995D9BF BD1CC0D23CFB9268659AC346D885C06F841B3568109BF144A4516CC5997B59D9 C6221B6BA99442AF9CF3282AABD252DEC7C53DC5CA64ADBE57B646F90C6DB519 60D0F207B3B72E96A1944190AE8AE462897F17CE37D5EDD1484E08FB216A1741 780A8B488CB32742316AED9FB7F5FC1751C28DFE54EA0306BDB2DDF9CEC807D4 F69380FE11F4C0E8D799D0C11C9379FC48F162A088DEA9BFC693613394575E6E 2C5E79BF75B4DBAB3646E608AA51B3D060BCF759CF0703FDBFFEFD3F1F3CBED6 4595CF903920EEBE5D4BC0DC80EBE89E874BDE7F8231AB87CD23B9124DDA6740 646047610DF73FE8DBA5E443D727D5A7BBB61B6E64D19AAB6DE62842FBABA914 BCCAD72BE7F89D1FA85BB383994E4F1F04D66358877032FF981D4013B4AA7F12 4325AEC53766C7214C6C904C3A232CA3BA3338D2D4A303EFB687C9A156EFB148 62C67A47C668A75961BFAA8C97B163331CDCE7831EA8B936BE864CC49A1ABE7A 59C2CB29A537973CA8B416EE88941553396BBB7497DDE5252C1D066E165BF330 5293710FB172DD578FAD3F6D5579C8E282FE8B3671F4B117E5A9B38000D8097C DC391E3E3C8B46126CEB158AFCDDD24E610683F4178F1DA022C3EA75E5747A9C B793E62983288C0B8239856DF2FAC9D91211517B296F8720B6BA311D947A14A0 80900211DF9F9CAE0446882FBAAA77CD0472480E84913D20F2A75F55F6E911F5 0CE83A921C215F26EB06E57D33098F1B2F50308E9FA2DEDF7B0B982EBF827C24 10B7D7A00907CAA46AE7AE44048780C2AA2DE80E9328E2B2ED55AA3EADB023BC 446405FB81C812E13D98B859C1630027BC757A176DD83BFCDBB48A369574F738 63E28456EEFDD4F5FF547C72715D0F504C586A4506FAC9BE2E7E546B8B0E192D 187E0636B08309094E6A1F6CBFE3EB0BE9D053F69949A843EC4686CA0AE56248 FE32C5C13CA9357598E4CEB73C9C7DCB94C03D4FAD68F0CB3CAE3D931193993D FEC5B0E30F9EC9C9E8B2F2B71E0C078314BC0C1BD449221201572AF04CC06A2C 666880A6E99D35F5B0BD05A4D2F6CD119F11286A0C6BEF84184ADECF6A89B870 74F11550A66026E4CC6ABBCB67A773E734197B702010917CBC5E709A1A4A2789 B62F5EC76DDF5D46FF55293E36362136599A403AB846EEDBE8FFE7A696A43EA2 5E34BA765D20BBA7E5FCBDFDB236BCB443FEB1AAA2033E29FDEB9775DF147ED4 A754AECE6A186F8CD73A664FD447ED51067AF7FF59AD49DD654194D95E370245 43028F4C73263EB43AE3256B535439357A14684738AECB544BAF02E1465185AB 987F44B6C5101A2068D9DEB8495F84FCD75490FCE2C747E63D4F716CB05A3D44 6F4F13F1296A986564C912B046CACFBAC7E402F1090A88CA597653E35D36B5DE EEAC713F7BFC46847D92A99C067B1A83DC9A73F5EE9BA7EF5DF6E038E656AE4C 9E6637038CB3004923BB279025DCA068716095423F2925986E5DFFA59E891AF4 E8B5889E49203F620BE9DD913795CFB54D0D005CA29AB9DD3A444A0760CA14E1 8E553B4297FB2FFC5C274BCDF68892F2717B167A5EEEC8A53EAD506CB45BE549 A4F94FB1B9997746AAEFDCA7C8D7578519B0AE02D4B8E824312A5906622D2907 EA9CD957FB2CD7F515B3D8F6C32A30E9682E0C1C2B2E23BD459B9595D6ADF0EA FD32E434F71E06B46E28D5FA1021D85D9F71DABA44C59DF49333EFDDA876C0A3 57DA20F72312D8BA203BD9BF91752F5BBCF836F2BA9BB262810B38A74A007CC9 FCB58D66FECC8B238AAA28FE07C004DDE2B15B9A6369A91D9D646952F1656144 2728B753E25C0B5E4863E84BB32A5E302EE30C643F54064A55FC2CE63403BC7D ECA0D87B040FEA888C37CFDEE00B56803007717307A1C068F77AF7E59EFE1FBE 7898E6730451F240D53DF28304F211EC2F914B9A2AE930145C65985064816572 36A903054E1CDBA6643A3C900149E551E997F61BE2BA7CB30586069538C1F908 7E6FC6C904CF806B4471DCA4A22A8226ED559C5C9B5AB6222102DFD6DAC108B4 47EC0855271F9A1E660E4E76DA513103DC280741EA08C8A5D8E14E3D2EE003BD 9018E77B7811FCB86BC1E5882197ED0ABA7D982441DD28A78310B18C11A081CD 4EA026B98F7C377314F9D5959F3689C26AA5832FB38E4E4807B65A66146A7390 FD6B881212C833D70533B0DA5F7546FC2A938F6582A7D9A2A4BCADF06BDCECF4 B9CB9DB9D2F1FD8C46A5BE5E9E34EAF93CE3D1BF91DCD1754984231A07952471 3A0CDC14EEB34E9074B3DE5F95F841924D07D65F19C6769E96F157B51B98880C 209DC10E963C6DB36053325D93C16E71B166C71E6805769C73165C45492EE28E 84ED8CAC736A647CB77BF0E568B1608AD410AEA9CAC3C1C4C67421A46B89EA7F C3295703700C2BF7D2828D9FB3AEBC387523C168B1B0B18AE523EDF18A7940C5 335CEF8EAA16AB3B2A97235032BAA84883734C49DC698BC2F18D751AECCE9DD8 158165466057583C434BDD165D032347B6FF81288A37E6A4F358FDF0027D7BD6 1D73663F18B1AF80616E8441164E24FF27669F992BA5C3014A859CD19E78F8F1 8B4C43AF9BEBCA8984FF36A0C97B2CB6CF782D910A738A2EA8D486D234E8DE58 27523610301F14469D32CD3766B1BF6661B283BAABD685F6ABB92DA83D82E6C7 0ED62EBE24D3B4556393B98D46ECD461D65948A4E7E6E5F61A10379B78C6B5BA 2D046F5E6D34A74A4162C3AF154CC0C2E93827C23B7643C254F26FB1BACABB9A 7352B2C902EA7F5ED5CC5E37CB3205C034FF44F98DCD39E53BC2502F73B52545 44A9CE09057F594962BFE5CC61B34FB31108398A7856DD2AFF6920DA37D183D0 9B043F2B11EDA73F56366575FFF2420AC70E6B24052D303ED67D860EEB64DD4F 95269ED305820A6353AA43F6EA7B8380CD1A3CD765199FBE088594F6EA196A07 CAB0F1AF00C6C757576EA0E468FDAEFCC2B0AD8B4A5E6CD19D2154B51D0EB540 7EDD822FB42B3696B26858664D1CE0BD6FD503A60B04B3D2544824D3CE51BE59 F9D16B7CE05C5D4F09CE92267A2CBC378585EA803B60880F56C310A8FF9E4D44 94AEADA36855296D9B6867061ACBEFFF336755DD2F8CF6FAA93E055654D81084 B7404B9B198EE188B1F7096F340906EA209AA42B4A84AFA99EB665DD0E5FFE64 2F3D36660D57F91DBF2462DFDE3762DFF12492BCE8FD1A44967F0436E665BCE1 0AA9A4FEA32F06FE06A843E9EA7B8EF5C9FFD4B7A508F64FF0AE48BFFD7F5E7A 92A637A3864A238E4C88EB2319AF03986BAC6C753E95F2953946B187B9D4019F A6C77289E7F79FFFF11A5E77A7803A9ED06DDA489581CDEBD18FC04D77F68293 ABF8446DD4140ED2DE31B6ED54A8649F81F054C86F72DB75B900AE4CE0DFF48F EFA0D9F1FA4A66EBDB45A3B5067E4FFBB9FFF70E575FED7811962AD08A13A17F 0523F8FCC87407BE6FF1EEDD301146FABB1D3928B7CE6168F52E0921CC471128 9D8182727E9F5AD0DDB490761651B94565D94312D6763737FDEA9FFD07465EEC C5250F60277A155081578F7EF9F49685102EC779D4BB4C1B1273F8424916C3A1 97CD6DC33B1C00C6D447A1C6AD3BD52EB3C48C87F1FAA28427B929DCDB53A4E2 65F9888BAD978B7717601C0D313983E4E6143AC96C2E998A07EBE1973B58F6B6 9754E7C58BF6CCBEB49E75DD5F428D891EC9FAAACF6B08883730D5FBD969900F F578BE563C5FA74F84FC550C6D1A1853676226C8EAFE9DE67B68B30101053041 C8922E79F7EF8EFD5B8C2A716524290D0F3E6ADA9F0F1DF6A8B83AA7C95EED39 1D485629FE834AC021200077C98B8BAF14E7523B1A11A9B27071A56515211E80 E26CC6D50834E7F019789812E8F5D0258AF931828D137C4CF346CD50DAB2E514 9A842E08B2267D8429523876363D911723FD32ECED88B47D26C2F44AC7AFCBCA E0D1C27B5342D687A6EA6A1D454D362C42C9B6F1BEBAC331587D516C3134A185 CDFE624A45089CC19D773D31CC233C078F8F474698284B7663D87410EA28CB66 D1AB51993FFC3DBE5DAE088BE53F7A074EEB6C658622D280045EDD4E3BB9C39F 0D7EA635D49B87CF1845E6886496B04916D1E0D5B77EC888D74BB9BD2CA723FC BBACD079DAA55F6C8523E78C315ECAAD7AFE6001D6031D477F7263B3CE7D1749 969DAF3B72CF76E7C7F0B8347ECE9E53AAA0B9024B68972F6596A7ACEF4304D5 B947965813B68F1EAF7D68E2E3C9D7906B58636B2B25BE4CBE5F6CA950C26CBF 88651E17361E48F7EEB06072627F99D64B81E42F571C646841471ED9E245CB95 03BAE32CF75BB3C4FE783E6F5DCDB83878677404EDFADB975B40BC4BA129D9EB 358D020467D499F43C9B7F7230D1AFDC0D96935159A7BE65DAE7D08051B113EF E699D68A59B00086607FDFB2E691F007D932595BF8A90BD36E3691C08051B3D1 B3547A0D39884C8625CB193929E69668967CF38145D92089DD99BDFCE0B32531 FAC8ACDB5AC4C9D76545BD68C67F207BA46AC0133D88B25DFE0EBAA82200844F 7ECC2E11DF329C957D518A62E83CC37172C2C4CD44FDE38FEAFFC17C3C2AAEE8 358C9B8FE4C3A47139CDF05DA63402166F691C3F140720D96D7FD151484F386F 5C0969C16DC34A00AD5922782FBEC5CB971E7A6984FA658133547EA470B5D940 1C2F142DB1C4155F69DF679A8C95CA581E4FEB4210C4CABBBEFFD6D7540BABE3 5F4948E5B047E39F4A459BCE473CE985AF4FCA5E3E17D57FD768C94A30E73C5F E3768B844E0002115B973C6D0453A108E23C4568E5EDCB40C26D4DB279885D27 6444513BD19D54E43FEB980C13AD335F447D76FDEAFE8AA223F857DCEE3303D7 A75BEC0A42FAB4BAB6E9B4F161001044E865F88A9FABD59AEF92117148DE9DE9 0D2DF3DC0536765D24CB64F05A0EAE316EC41F87082B4B5FF62DB21E80B5B587 08CED009F04427B6F1988046D070639DE4DA61033FB29D57F1C610DDF729F2A0 C36BFD6B60E964D6F5D93F19FF8DAD883537A0F8C9097A89B78B702B90D1C2F7 5AA7817D8F283AAA7304D61B5746D7BA945659A79582BDF47C29070FAD858E68 4884CE4542434D37934485D402F352F9C717C558E0EF7262DCE9C0A0EC73B0FC 67D4524C4A509ED01DB1F5BFA31F2DCD0BBAC1222C90DA81C0723C21D6B7F517 6A7F6ADEE0858DF939393618CD8EFABB372393FE6581AD7792A5836458965160 3F8B491E9B92A70E6AD8C823205DE74CE18AB5857DF57E3DA9395263B507B4B3 55B26813BC9CDF3AEC45B28DC4C3E62052C7F01E3C4DAE74C2C60ABBED30FE66 D16990F7A3A794BF0124A34C3B8FA85C926794576158E710D450BF3FB5C32B5D 528A8C198016791AED3C1E640DA7C6B2A6700234D3E3EB6C2CAA0CD70847025A EF49573E7B77247D4D5A9AC9F41D607474A8045EFF13A4474FE216DB9EC9728B 1EE87529D18C6F3DD5F47879C2409F77D46BB13416854D1E757A25D4501B8BD6 7EBE4147577282C8727276C247918A068BD34ACB1D3C660C22677F5CE6EF6B43 0BAFD51654EF10134DA74AA5CBC5A37C5579A28419448F5B7BD60E082967717F 7AB18A2B535802860C428311779904B2454C3C2376705B1CEF8D07AD2A6A37A3 4EDD1114EF66A0871AD2C451026E8BCB6F57AF7FC568F46AB5D7923BB00B2D7A 9D3DDF94589AE1F8F0A8A4795C6D6073BEE8E51F2171BBA9B82235C85FD86E8E 6E26941D9A40651F2177F924BA6E83A4EB95E90B79F38BFDACA929F4C72E1407 E015DB5FD2D467C0FC78C3DA920461FCBED14E4BD099BE01117D8EEFCC8E5951 7DD5AE0E4CD71D3C062B1FD85E430AD1C308FE439B5A1E5F3190F5E7388E7291 C88BEF1561BF92FB2FE38082586F0E2C4A127533B75D0285275405BC6D7C268A 314CC800730DABA5B2DBA9E9C3AB1807BA32EF715B88398811CE3C9D29A27AF3 DA2A908D934A197415B5D8DF47C67E36E8075E91C81865F1B00E0C6269D3EF69 9C84FF17ABC8EF1320670A5272C446F7BCCEB7C752A0104739B389473EA6D201 87B6158731771C482CA9725FFD01980D04458354394011ABB915A8CC2B1D3874 7CF9EF9FA0D8EC4860EF1758F096C6DE95D82D607617C5F67CE801EF71327381 5DBBA0E4C9F7905C07469837488181361AB02423CDE0FFD18F27730BABD26116 2F2958E213B419AE3CB353025DB44AE9EF1B75132DC042AF87874067B1060FF6 59D0A4E645D8E536CB6AE9EBC1D17904F22ED789031E6D4578A9299CD2F0833A AA60FEE674D53A7854CE0A2A5C990C6D7164D554EEE7ABDC9638A4457B12F3D6 07619C1C8293D60DDBF329305CAB0CB1D0F67E63F92999F002C2CC5EE8A1D1A8 1DC99A7E0298812D05E2A66DF67C8257322BD7733EE5B28355D953F0A1EAA755 D659C49FC10CA5954386281D58480FF0BEE41656382B4951B69EF74942CFC83D D8CD545CCAFC24E28275F4FFCA8B0A99EC2F78116EC8583A3E5DA570A80CC7EA 69C552B6EB7EB777AA4D22D43C382019B88E4A543606E2AF0785E920C74DBA66 F5FA87940EE2A118685C654C8D9CF4A01F06A5A6051143861836052B25B28F0F 0CCBEBA46B3A4D461FF37B4D21F95FB1E632AC9A2D3CF53839EB669FD445516D BF40BC9376DAB79CE27B235CD00A3F3B39BD1783EF11B5E732C833500F088BF0 B73A502C34012F813B2036161AF15C837C32533B8BDFA97D5C8E74A5438DE387 B8F3DFF2E9CE81098CDDB7CFC27A9844BFBAB1FC57E91C0A5B0D493EEBB9429D D4033432F5D4939BA08E8306F7A8510184CA6E1576C555C30F436DFF750EB473 F2B0DEAAEC80946CBC6E82555CBA78DFBDEA6DD326D41166BBC6E21945E47BF2 3D84912E94D487BDBAADEBA1BAD89A79650634282A4A93968324E1F67FA557FA 3CC55DF4CA 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMBX10 %!PS-AdobeFont-1.0: CMBX10 003.002 %%Title: CMBX10 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMBX10. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMBX10 known{/CMBX10 findfont dup/UniqueID known{dup /UniqueID get 5000768 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMBX10 def /FontBBox {-56 -250 1164 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMBX10.) readonly def /FullName (CMBX10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 12 /fi put dup 40 /parenleft put dup 41 /parenright put dup 45 /hyphen put dup 46 /period put dup 48 /zero put dup 49 /one put dup 50 /two put dup 51 /three put dup 52 /four put dup 53 /five put dup 54 /six put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 65 /A put dup 66 /B put dup 67 /C put dup 68 /D put dup 69 /E put dup 70 /F put dup 71 /G put dup 72 /H put dup 73 /I put dup 76 /L put dup 77 /M put dup 78 /N put dup 79 /O put dup 80 /P put dup 83 /S put dup 84 /T put dup 85 /U put dup 86 /V put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 103 /g put dup 104 /h put dup 105 /i put dup 106 /j put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 113 /q put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 120 /x put dup 121 /y put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2D43B233BABF23DF8DB B6C2BD2F04672F9A3B7FE430263E962F16A948319C51B8ADE6E8A80D3D88023A 6DEA4D271676C2C8615C4A0EA7DC8F6601610F398673A4D4B905F49EA868FEF6 39BE073001A36DEA6C08ED51452F062B971740019692E221F4455EDE46AF24B8 407A98B791F6AD525C72C09776247E194043281D04FE1CD1D8AD8DCEEC3045B4 F95B3B41CD3300768D8A049815348BD7AC1004F5500817E3A267D694AE108BAF 285B288FC5F28A03E9D34FE5D9B2F9A9BB26ADE66B1CF8EB5BE606E83D213C33 DE083C20D636EF780E761944FCE3B8A950B1E6E7568F33B557C6D59E0CEAF185 53E609A4F58AC4D5269116F958C4D115C44B5A6DABAB79D3BB6E60BDFCECE108 74CFBE258779F32C80CD7D9A7CEBA50A0966BD9961F71560119668C4A0C30A5D ED91ACB30940502B24F33906D6E0F16F81DA87EB6D7FC8B7853BE388C40D75C2 2CA8F94713AAA1561F5321CE97997CB4AF0E37F44E25B0F73CF4986422B1CD89 8F861CA623004ADB1C28268D7F8C484AA10C9519B6AEADC95AFAA3304D60E85D 718B2F67D2B734095E5A92C90785252C98067DC05137BE735220BBCB7C341D61 C4B98BFB1EAF883D38D7A93195A059EF82B42027F23B6CD633231D704B891A9B 03D11A646F13898F20321D7BC150C63FD6DC6BF9CAFD8DA759E95384B729A0B2 767B9F3E55C682F7A248BC1184F7D294CFFAE0B246DFCC8F215625DDD4F49F09 FA8D41CBF4A06152FEB152C61539ADF7E70A4D23AF8267D25CE3B12D39D62377 547E2528D18DC4134FA3BE0437EE0B3509223D71F06D44C6227D62BD01AC0A2A 3EDA975E894371C07CA1027B102549A7D552FFD25ED2DCC68E29E71BBAB43C62 57B0BFC6A953ABC2EF703F35D112F6B5460018CDCEAD17F149DBE5B52C2B9E10 9818EA6D97C8AC884F6841C9B600A7D868F59C1D80E98DE0741D06D69858EC84 1B33C6C9938B7E8A6FF6C12AD456EECBD3EBAF0D7331536B9F6422019FAFFFA4 822E79D6D89D6366DA636CB708894FEF904F366E295F1CB808E78E883913C4FB 1631248ED6A7CF1095C0C61C4F05E4B9DFC47533A5FD24540AD71A0E2907B98B 28085EB88ABFC3478C9644594C7DC4244ED5A7C1CA8D960B65497D56D174645A B88F12C2CF0A807DA314017984CF3C4FB7F47392A651EB9CFA961B28E2989893 9FC4D97171BD5338673F5D1CE2C3C08D48A1B77769F01D5058236C655FFD864B 80E28F900191D4EB349AA5E400A7B0A0FCA0F3E79D7A7C69775BF754329397B7 D18B20B2683CBC4A19729BA878B3C17EBA0A7E9EE297A5B67E915CAD92C8F356 582B8299DE6A58E73408F525F7EA895C48A8F0D626A06A96A50348DFBE479D89 4272576FBB0CD332193D28A8F11503BAE98F8E1D73CF5BCADF23DCD4E6586ABB 323568F5A34E359661074D50CD8D9DF27191FCE24F10225A5D721EFDE2547E1D CA998077D2340B1A4ADFFF570AA677CDF3305D5E3A394BB1626EB35074D4EEAC 2F037CA2EA389F7683FD17A8E07C12B4CB3BA8C249C9B12D297C618009F76717 0EBF5F2DD39A6BDA10A2E5A811D4E190660F5FDDBA29201B6F8042620397AB2C E59267A7247B0463891831A6F40582BC3F614E5167B646A8F53D8A31717DD9A1 9034034E705BA7884F0E0738307AF69D3517147C282747F2788462FDC4336A4F 9CD222908401A25F0A1F7B13B8DAE622DC965AD0BE62497420B70C04AF432237 E0FDD043456187658ED93B0F9822A3998511DF05E59CC85B7B9992CA0CE3B814 9723BAE70D2631F32B4BF93511F67179FFAD2075E1591CA5907A4C67701B56CF A5E5B02EB4A842BA1F18D6864E5677359C2FB4AF5BCBABAFB053F230CC129B45 8D15413F736EB07C571521C7DE2A13F2AC1C133D491B0A607197BE9AA1231D96 BED7968788246B2E4D2BD330F802810F5BDA3760FEA5210CFC6F54748FB1D921 5CC3624BBA5B8962AA7D94159651589540B17CF7A785F297264F9C1006D36928 6E2756D3B623A6087E4B106FBA76255903C624C07E18A1AF4E185A533C640711 86BB477A906ADD36EB6C8F4A12BC2F01B2B98412E4E105977640930CD998D990 0254A1E5E9843B7A8ADE0AF6D5871E6D3D666465AE69813A2E26333213FF6713 6F08D55A90C079A56E1B9AC655F720FC22B5AD8550FFF26DA7B0C5A0B60DDB05 64E8FAF684F3A455BA9BC9278043D79537D201D520E38750335A4C8FEA887377 879331B68DAD6B253F4FF9981D0F9B9550ED5179B15EEEB00E560A3DB6E5973B 63403E4E2F40A3D0B937246E9652000B917B1369741E0F913C14C2D2D6D1FCBE 2CEC4422177C58523715BD070002EC2E13D383A1DC8C84228862B6C5D3B65667 9FA97E175239BB7FE7E37E14B96DD7960A8AD49DF428CFC13B5D3CC22E245317 47B5244DA97F1DF954CED2D552477237CB23D037C0DE728E26C82738954EEA1F F34FE497DA005AF03746DD2ACF77F6E6F2C224862A1D18AF6F7A5DAF34564387 9E01DBFF49F8621C058C04C2B3F4F3033FF3E8A977B2CD6B2A3CA4A6C569B19F C5AC457AE9AF334DA66A730960C7565E93A2D373C0E3DE14646FFDA05DF4C6EB 6D4CA8ACCA3C3115764F77B842581760BFB9E5C0EBE55308B0577A8F4D968CE2 BA3361D79378D451DD150C34D7E901397AC63B33BD7DB13C50D678F5DE999238 4B4EA15BD449C46F262D931478F5685CDEEC4C4201FC3EFA607AFB8F27AF6751 125DE42D2FE2D31DE769B7E7FD8CC8C5D91343B537139A822A5BC4160BB5314E 37501F65B4FC35475FE9E03E34CBF6795AE86CE409500BD0799DE39FA69978B6 EC74D2197C03632D3F59B85F404DB31240968FA75059B2581B101E028CDECC2E 7E5E25DFA106E9B8ADB81E82BE9ED3BAA9D03EEB22B7B67AB1262DF6AF5F5EFD A5627EFEB84F3A5F92EF2557EDA2843D7D18C592635623CEAB14CC3620F33986 410D6DBAEF9F86E4E6682054540E2B01D8FF2161F10E66851A188BC15BD6666E 8D3F21709F196A31EE676D28A2D12639CC2E7020A52910F052E61A0710DF09B0 064171D05611451BD24FAD64716F141E1C41D3218A8115A3D73CA041D02B46D9 28C3D07DF0FB668E8E91409C8D0A26A65CD737C075E026AC0A974C9BE658199B 3B9D82ED95E4646977D8F60717DA4C68767DBD7E8320D5AA1D5DEB2E6B009759 8282F27D64F1F904830AAB501CDA4D9233FC2F12F77F0FBCC46E6B729C71F6D5 E6F3EA02EC35D1048394F4EF2177FC5EB726DE5EF2DE7997166B8BE5B5105D08 EAAC3481FC612665CA112D3F889A0E5B7843EFFCEFACA24A01B6AC2B7DDE02F4 A9295AA2409A3756BAAB44608DACBB56840060037869455BEBA46F10AFC68DD0 0563843DF111C6D34911CF13AA6023E5E899060B5EC60D0F78FDEF3E981151A9 24903EB13ED1A67EA1977449716D1A5A7EDE1A2E9465C9C2B20A58AF02D9F373 73E627CBF296B3A6A4670C39F3B5EA30D76F0362C81020A1777F0ADDBC6B52F7 213FEE1718214087837049CF2AF00407639657428B9E8B532F68B631611A3501 3D9DCA38090E227BD0D6D0FB4130EE866DB6B195C873AFD18DDB3B1E40F740C6 B3B375ADCBBF628A07A5FACED539FEDA3379D3B60216C2EA6629BE2F65199D82 FE3AE627D7C67270F3497AE75F7A9514968B5950E2D63C38DA240AF4E6CAE88E E25167D179108679876E7C80C85FE1D2BCC2EC9B88BE76A8F5736E8E6B3A9CF9 42E58A4ECB7914865E67C1468CF66D658206830B9380FE346DC2DC4BB56A92CE 4B5E4EA9036C177869315A2D9E6CFE97E3BFD7CBE0747D40CE5E8A3A0988576B 8AD2B1E4314C0D8A0CBCA08844A49F7E054D31BA7543730C0A7390BC4A288D10 CE29E389A4791305D3AC1BB6F77C805F1032787306F78FF76A20A9E629899F6D 13356768D33D7B9E294E8CD50CBFB9CA02A193922BD9B4372C912D1689B6644D 52CAA30F7421E8114D077288119AD9514EF21E5B9989CCE2ABA0C12549FDF493 FFB39736AC9EB72DAF45E4EA6057527FA9F5AA0A1A3F03C12F7482E465C766D3 760DA7714D56C91BDAED507A5572BEB51A895F8DD3BD5AAB042650154FC7E4E5 5EEA6194DF73AC5EE2CBD4EE26E29B1D2D0C458B4850BFE842DDF2EBB4E2A25D C6A11CA2D8F346E2B736DF88A3D57BC0380B52396A6C039212699F5D3342EB58 0C3DD5D01D5078479BD9FD10C07925556C0AB0F03606F33796BA72074549EDA6 E33644F62CA35207D7421D2727AD8419AD1772789D33405FCDDC9286BC34C974 A52297F5BBD2E541E8BB473F733AE5097BBC9D5FACF18DE4173B4711E28B23ED 16E0A6746A60F6FF903026A3900169EDA87D98396E762C2EC963D89197B8CD0C 25244806BE7CBF46BE60A8F9171731EADFC969C28679B025371E5572E52A0EF8 B3FD9B4638D03E20BFDEC9345E70B8166D38846DCA68E0D0B4B53629C7E7620B 45E0A610BCD07FEF8814CF915CFB11119F42407D1C6DC1E6353451D40A382C2E C74DF2A4889ED5A3495C3E973565F7178CA190D22C9693C10EB12C1E7A8679CE 4AFECFC964CC98111BA4ED2BA9B10292A71D5B11870EB08EB483922CE8628A06 05E7CF6DF93E112B60EF888AA8DB52994EC33DC7277D7B7A4F913AD30257261A D6EE80476A9A8D316D190BE6CE0046CBBCED365AB305495284FA921BE0638E00 63DB2AA4C5F163340BCCD1061B469504DEE350B82FBE1689C1B65D095405614B 35997D6F0DACA7190D64ABA351705B17B23FE2EE5996FCD607F49F54392463EC DD5B944A4B82FA2BE3E75E2946D483060DF99277340B0AB65A2042AD088E2B75 BBDAB869D1940F64B50D25078519D18748AD64AC5615EFAAF4F3105B0111AD40 70EE173ABE6A4ACE486B4E5999158A4377FDA6922FAA6E9305F48570D14BC81F BFF4C663E1EA9D1E050534F9315A663C4C5DA52CB02EA6408AA473C32CB0CD71 169BB43C0508A842F400240F0063243B4C459A1FCB3312C41C32ED0EE87F591A BCB6D5D3830AE4645CB4D40336DB4AB6540B52E70E1EA415CC6D886827EBC5B3 EC35CC5C136243B0C20B3C603B648B132B99D05F9B48263ACFA59A856BE74441 FECF5C6D1FE9D1F4F9942F460961901E16017144C37E83C6822177B2A6C47ECC 6C47A1104460665E5BCFCF08874008302750EB991CD98D0D8D22B921F90B99B9 05EE7C39F2BC2A7798157503743C9F2F267BDBE2E8A4CDA7317F81DBF8962E1C EC02822CC7F770FD4D08D335904375BF0C6DAA0510771627ECB9EE69C0F47D30 69A87052989DF80D9F4F19F75B070C3689AB3BE0966453F9D56CED6C1745B50D 813AE6D7E44B73423AB3778ABE4CD2C4DF40E14C5A426043F7057E2DFA2DAA70 EA6723F1C7967FECB1E7C1C0CA283334163FBE31C32254490170C3513580A552 19A5DD75E6C4ADCB12D33517A03318A6BBC7E4214266E125140D8C40F78A0340 1F95D9FBEC4DCC55B71E89375AA94B0D55646F6C069561480407D0A3AC127024 D7D1E9ED6B599A2A8766B8792F46D35508B66F302D289405B101A3C6BADA680D 8C56E2A00B766A4CB155446F862FCF17537A2BE85418E20CD77C4F1F69F70BC6 17BB5DA8FAA876D0E8BABE273A19C04A8697B3E3CF4725E2C77C8761A9243F24 96F8AE96399996001A57FD75106745AB4646FB9C6421F1D4EBF3BE533BD11AE8 14BFBD6D308376B26E08E4ADA490DDCCA94BE8240403D5EB0FE3549061DFB668 4105B4FE77189546619B6BCF3F9723E278E98D50A17DB8A4C46744FA21760635 5B332689316BD17C966D466AE737FE3ED7ABC443ADD88D4823A10BC9747ABDEE 027515AC353A420523F85298029475D8BFD83A2CD00C02CA07974BAA581D2215 A850E6E4C0A5E17E0EDF91C63FAC18C70093F40FEEAF0350B403E2806F4EAE96 BF616A805616EE55C4657418C26CAF54187A6684821B86A76F15088AC4D5B551 66C3CA8DC61E9810858D1204F899C7E3A1754F483134609F6EEE6364B1CC04FD 92C86EF194FA3249601AD722D75D1D395CD15A93C768EC60A486AE885683364F 93DA00A865C1035F913FDA69E7D9A0422880FB81EC23C00427F07A5EA3CCB613 83C859958AC53FAEA26A6BB39ABA068863CCE3D447720BC31A5136E08EE58963 093AF587A72112D55853A1048A2B1695DB2D7F13CC924F2F0902071260C33ED6 30893A04577C0ACF0681C0FEC23E5404F844A83BB5A2F8DE1F0792196139993C 1152094BC36A6AE5BAB4B8281E506F485F0BAEEBBE71E174B7CED1E52A8242F9 DBDF3E0FBA296538D964EB5B7A4E23B1BB0F59872C9D4FE8498203E3AC08B71E D2B965AA6CD5D20DA6C83FDC86F4A5D68A58A72C5BB9BFE9BC755C56B24025CE 6F24443D3CF32CD711D3D94C7C1DC275DDAE3341D840090F97CB6CAEF274C94F 9F3BD3AAB3F98BA8A7B5CE5E48D1462DAAB37BEB1C10B410E8D33FA42D898183 BD4F807112D78AA94509E33C179BF7C9E82E55AA7D09E128A0DA06A330CF4AF8 5DC861498CE029CE8C1BD15C923A708F2E7AF98E4F7B34212A0CB417553C86EB 6DD46B0466F1A21D29FC5111226794ECFCA5DD4240C0B8D106CCD7EA6F03E133 BB7733F055D6FFA04EF5C6F872B4FDA3E42F0F036C4825543D75682ACF71B548 DED160ACD05625274799D0AE201305DA526E01A3D2A719B1B15C05CC09467F3A 5627860C0F36C503EE392E1786620F3F2287AFE56634E03566B9B1F537FD92A2 913166228791871A8F8CBA1A1DA634E8224058052A10FE1E67CBD3FD21A6C07E 243CBF58BDC78577847664EEA5225EB8D6679AB17C563848A9D4D58995EA3609 51C1443B752A070D9872FE1643F0677019235AC25DC2B29169D38308F2170A1A A0FDCC59E6602197D2815B914041FFC7106DAAAF30CD97400C6D0826A40385A4 C8520119A065CF32CF2FC5FBD8DFD29222528A7F96FDA533145846B3428F8239 E50277C366418D713F84B12A5FD4F904DC13DB1844A391FDAEB97643A6FD2945 942FD4FC5A4A35E184F23304B8B4D93D0C37EFCC4E106D4FCD0DA3E5D2117589 3FFC2BD1D121026562C55C455C3585050B9460891B006F62D9D9B66695C3D348 A467C14C0256FA9621CB056E7CD389505194FF463BCC4010897F9A690EA87D9D BB3ED4C174FBADB8A4744C6E4A44D773967FD703EC37672F9993DC48BCC8A060 6CEFE8E6B8F10886E15BA0466AF410B90DF0020FAB88BE493606B6A734EA85BB 926950EB10D2F2CFDBD182B0F133809612CCF6ACCAD049C8005A42FAF78368B9 E7684F98DE421BE0A3BC0FAEE024A7BE67E15C8394F17FE84DFD8156C2A3E94D 08259E15CC657E8CE3088395BF6B5F825764E141AE15EBD186DC049261623D26 8636705E06C6E4A1F8ACAEA59F91B042DF5DB9C2AB986A784384706A43E5F18E 42C29CC1CA86D4F247B3BBBC89F3633EE074DCA4AC15B1E33EE4822812A62E88 C32B0AA57249980EE17AFC1346074800FA529445D18649A0475246A25CF325A0 BDA06AAF392FD455218B13D9ED577D51A9500B9FB7860716A8E2FB3A8C4BE3B3 6656C6A5653AEF00184020ACA0BCCBF48BE3BF91E11C8658686C89848E714E6D DC158DCD1C1BC03B83FF94C60B1DC71CE8A86B46DBE661C9F8F4677F8A2C7CF1 E41A91EBDA2304735147BE66CDFF2673F09D408297302124C127F0B35690CAE9 CE1679120CC4D582FB69550AD34A047DDFCD9D411724554CCED753DB52D6AA7B 22B0C55EB698ADDBB0F8ED15C971AEF113C74B9E25DA29199237B98DA4023665 C2A63A837E4CAB38F8DF37DBAB5DC80C0AB25B56BCA5D899F1575E61ADF75676 F48EE26C054AD9A75FD88A3E17498AC26FD4DC8000A125D6DD423540B8A98779 B28CE97C9CAFAC45693FF43249E4B559E7F19FB349F94B60AAAAF05B5FBF244E 982B4B51D997DA5811CD43E1917DA885DD96133A5CE1A290DBBFD88AF285A879 D3136C41C839FD2276760A7B4F21F4026AADCDAB3F113FCCCA9588C7FB72643E AB8F6D8AEAD1DC3DCA6E436B3DF24E7DC6AD37137B49327871EA80F3B8AEE932 D20D9A5B4779DFFAD7B3E5D447023D6433575F8F5AF589D7E094DA3786555D0C 046A427ADF128E00AC7B458D5A131A130D6F49A7ABF47833791F172D69FE6393 EAE0E90E7FF7BC2333D4E0215D5201E4B209591782F8A664335F67B9DDE36DBA 793EC77E5EB405862D14EAB6A99218B3F66F11EA2F345629C402BD8FD9CA0AC8 FB5A2E119DAA9F80083C9BC54F4586C44320993CB5D9CBDC8F8522001F82A16C E307F175B794F4426E5D273581A6D2844444D82093FB03482B270D693391DEA7 CB26D4A418E48A2989167B7DCE251F0D53D5C9B29D359A568FEDB965DF31CBF3 900392FE739A2B43BFA2363CA74FA72668FC761D1A17B9C0B56D6172499CDDCC 90EA538A5526FD5AFF81D04BFEA703E5DA963B11042723106704021C1B90557C B7AA96E076842E2C5F929FDA6D05E0B91B5548006EB4A6EB262077411083C2EE D51D0D237A85D6480DA41A9D8DC24EAEC0C849E0D53D9FE1E54ECD82C957B8B9 ED68D7B29A43F369C28272083B7B4E700546D293DEDAC7E74EEC946B4412B0B2 0639AB78E79402C787F50C4F78991DBC12D73F5B371BBA2CD9535EEF0550084F 40A4B2C4D178C0C001E63E08DAF15D064426F6F24C49E02AF5417D18BB7997D1 46CD6476615EE2F496EF2D2E5A6DE68ACABAEC2033F9F3689D9F8CA23483C81F 8E9CC42B7AF2BC3FA80B68FD37E3B87FC27AEB7AF6D2DFF9B4B7A60D26292AB2 36461A349D3BEFAAB8918729204873D7793A647387156252B5A1B975639E02C8 9715F8B4853B592ED9E467BA41B32363ED0D7557EA0AFB8EB093B4CB1FB3CCD9 3369A67A60448575C7CE305DE7C1B59DC21DB0132F2B67B7B31EA068C5942DBD 7D1BE9CBA33107AA60AD033EA5B3618B83BEBA01BC0DB592BCB0796AF520E8EF BAE6CBAA5DAB5897040D6CB1E3EEE78A98B59897138A084E64E116446EDAB213 46AF2FED3E303F05D7EE630434645AD21B410AF8C1808A79F96CFC56741F62B4 431AD2FD90CCF0A876EDDE18506E73B4E390C752DB45A2E8BB824F2E0310C59E 864A74877AB522D1B477F5A3D7ABF80CC031C2F2BE5D633E49E6D10EB6EB8434 F17B15274840BEB842587F3B9AED05B97DD603AAF94D5FA688675B55D40FA43C 6D97741D9FE5F54C7D441AA62D48801769531ED7EFB3C438EFB1B513E93686D7 1738FE955FD7C67F11323E059BCD0C4BEB275C26835080FD2AC78DE88BF65298 A8EB4181F48C420D219CED950E4C0FC0330B49547E593F961B2BA33F375B75AD 3EC510349E6F496EBDCD1206243547DEC26F9A61DA31D6CD94A54CC54EC81B0B 176D21AC6779041F73E5DBC0A2107B612B9B89E20C373A057CD51327757DF12D 01742E9AAFACF24F24D18733EAE10725F5FC08EF5B42BB4E018CBD983733DF08 E018AB3151658D98F325882A033464895EA4D374541DCC18D8A4547FEC9B7206 07AC80FBE732ECCE672D5A6EC117F5436DF8BA8FBF153088937C8E9A419410AC D7E07F98077963B5017C7EBB3D29226084B9ABE03EF7B5DF5CC7EEFC4DE5000F E419755D83B9C22BD3C510019F7B27C4B5F2AFB896001714CD4537F92A91C903 4808BBC4AEA48817C33FB55E506188AD415C0F4F5DC6F6724B0190424C7B39DB 049E9C2DC8A7CFC020FDF6FD6D60F4F5A5B281ECA2AED40B40B3B362AA3B778C 47E857E4C2AC635DFFA0F186285247CD38F0C8DFC61D190A6667BDBEDAE211E4 53E036F8612A24CCCAC6291C2267587B2AA2F546E4C7C91A997A440C27F6B3D4 DD81F4CAA14A4820220F8E758BE36F80E78403F01B527F6EFA598F92F6DF0EF2 9037E30DB8618BB04B76D7472614302E40E5D7A03C82395611EFE5503D5DF066 7F8DB576258F9DE7DD83EF741603D1E0E18571D354090A78792C8D5EEB882398 BF3BC34FC651EDE04A42FBEB0E316AD709E0CEFE5BE1C84AE6E32B58AB6B24E9 BA306CEB579D102125F05D7E53F31C7A391810154177B46BFEC2D34E337A4FB8 D462224F084DC243388657C645B8C21052CAF35BFFB6CA67B661182B44C57DE8 35AB5980A3D6FCF468B0C088FE4F9FB536923ABC7DE7F95F61E82BF829509F99 1185B9107C47CF1332C99D2222F413FCF52983DD048E774953FA1E3F06F6AB2E C17F47F2DBC2CEE53C1C62C3E0FC983759EED3DD3843A49A6C9F87D601F46245 B0AEF9EF209550EA13C05A0F517BBB355CE14B628BDC67DDAE6C06BF39BD4A05 8CB2CEB9827F51E088BB444DC219A82801FC5B137FFA9F826CA988F0A87B546A EE0F06A9D97BC863AEB9F26D0EB2999E51455F206EF1B9E6113A1C31F10CA6FB 22B60A69EEED94FC1CEEC17B5D953B3FD4D3BBEE44F33A75C620A66F4541882E EBDD3FEC7A79DA57838362FC3263D410CF19713A519065015FB114015FC9684B 7899AB695F3BA48374934CF2F01C5EEF3E864746DB532795AC264673FAEB074F 2DD6AEC706C85B72E9CAD2D3D3292FF2DF4083FDE377A8E800BF89D9FE4E6532 47CE56D2692C1E1F5B8AC39320CB336EFE1CC175AA223ED7D51AAF61C5F3A6A1 12882F7FB7F00EF49BA1CC118E988A8CCDCC5FC40B70F0710944FFFE300561A0 26799526E492876E68ED7FDCE5CA4EEDDE8AA07FBAFF57C6DC01DF6B808D97E7 87F5BB1B4BD35FAF0BFD6BD22B45092646DDEF079AFEE6492DC08BEFE4CAF9E5 A800A3127D04C8E0875032E159ED90EB50D0FAF6CDE696534896B02C7C42ACF5 2D1D0956BED14A09CA899B918DFD5A15FBF8489EDF6E2BA7CE1FF9E9A154B663 63BAB6B21E9E5600EC56EC46F7F9B4882EAF773AB709E420B978DD641CDF0C04 5914B4D5ADD1EAE7FCA4E259856E0D408FEDF7AF15B43804BB3A694CA58AD8E2 BEC0E903CFD661ABF9A72CA61944A050F9E31C71A08EF5FF90AB82E4DE8AD7B2 401CDCF1C33E900A61AA4AA4A2C04E1AFDFA11B122D5230BF4BA6428F8EB3563 C6894BFE937A388A76423FE888E9E75FCF37B2C1255D017F15CD7B0686CDB772 2E297692FC96C9EA1E458E635B4A9AF8EE11D3C2C161A28C5A324D31BF9BBBA1 6CC86C7DB62ECB4EDDFB4E18D5539D528CF7567369573A5A5995E2DC852C945E F2B23B7D36DE58928B59A875DA58F030163B60D8F8B5B0E1003DBA37248C7EE2 14AEFC6CE2A1DA938981ED9201F87E0F4C5C5FAE1B40CD3DE5C91E85712917FA 1AA2624B0764FAFF860CA83C4823FE446CB294E9511AA1C5BAFFD1B11E93F60F CF87DEA7C73EECCEC90B036F773A35572FE436EFCFCB579F00758FD38B763B9B 36CAAA2257B2272EF987438FEBFAF98AFDE23BA3CC6529F7368F8AA18780ACDE 2953AD42B7FBED0E2FDC57FAB02C18D97F4C4B370ADFBC22A644F074C9E55D7D 93EBB27FF1B095531321E4CCF342930B8B56DDFC14F2CBB58922F050656BB49A E4D35696D8E84846570EF3EA5CD0D7C7AAA65D1FEE60EFE200B8C2AC4D88FD80 C1661826435F0C163F8C8D80B216BA69195516941EE5C1789B757A63D6035B27 40915781D9E726E9FEB0B277D73B3383ABDD138A2812AC5E209AB870D60B45FC 867C26294E5E3A83E42410F28A2EDA072D1DCBE9512BE0E7388BE98B54C19D41 199B130264B9A2AE6B9E1AFF44AE114E041743A673DDEF254EA509FEAD8D88BB 59034060C90D2A1B932C5284AFFEE9F152F85493FBEA5FB1D267A45080A26CB2 3E517FB49D78602657410BE7BC3A04BA1F3E668B0082724961CDD8AB05CEAD31 5D86C0DD0015DEA01BA7890B3AEDCEFA90E57D2E232CC2C15922E4E9DFE07CFA 1DAA573BEA7E93DBBB37964E8F0A9F6A25464B7E5F602A5BB27A4262F0EEA2D1 9C5A1F04D706591E538A6B926317883DBB1521E14C3D3D51EBE1659F2D5A29CF DBF2F5BB056E5B645F8F7284E4F4008C3728D40ECA7BB3369C51A6469628AF5F 6F4203D306857A8FD2DD1576A1D87C459BF4601B02FCCDEB2A080C27CA199330 DCBB86F1F58CE924EB20DE9E1878D8523FE68645A78E38EEAE7C78BEF4BE89D8 A48BA3BB4BD23EA288DBBE6607526944E5E282CFBE701698D949711B879E7E80 BC1CBF14ACB647A9A5EB624CDE09D5AC94B585EC641392F67D5546CE29726A19 9D9A9DFD17BDCFF2F3F3C5C09A06395122440F6EEA4648AAB4C0481DDA495101 84577E2D8BC808A1D7BBB2D3867F7712B916A36B448B3C4DE913F28F0A9A7FF4 F92B6528C90569EFC6FF219E00A39D573BB0770850309B8BDBDE5D208E98790D 39E03949500496531E0E6A5CFB3DC998C3E8E8A52E625B5A2261CE59C9061882 4CEB423A66D0C5F5AE3D07ECCD16BF6D49DBD4D6ED9CFB3E353B8229A84D8935 443906000D60FC7CFE61561D7D909A0CFAAF2F7EB2105B769A7FEB7F637DF90D E2A423293003C38AEB7C16292A2A8B306540D415F44D2828175BF3836DE63E80 5ABC39D7552EE41B34E89F9D3FAAB0D580CDDD1ABEC94925B94DE33E7DCDE318 6851A5238A1F1E4CC627EB46433ED9C54E914CECAF70E987D2F5D850D17CE3C8 7052383BB3DEA58EFD3175E1D7A67B1004609EA6C6DF6C253741F6E4867BC38E 59D11A2F7A0EB4EBDDD5FB1A90CC3884CFD6B56AB56737158C6389E60C2A3AD2 5F99AE76C3166F0C74DB97B230EF218BB6B3B722AE0CF0D29417744D8EB84918 9DD4D7449437A963D10D128C720F5DC41D53F35F15C4B533F2C7B116CEF297F8 493D3BEE760A8C80ABA4CB79AED105E1FCD8A68243053C29A03ED01C2681D055 0A216F43C7643EE4A97F0326186E45ADAD378049B83C7C8912AF55EF78B6D1CF C5E64E5E1B9A61DE6491DA4659E0BBB0ACB2E67B9AB6297073B3A4725792B76E 314D605976BB0C55C681AE571CE023BCC0C22674B895AC14ACA85A480F8B63B7 27368B60AFE9D076CB1766C7B1AE04709B28E38E6BA31284D9B07CDF8F93C6BE AC7CF07A7A30FD7FC234C9DBF75355E974E2B31E72EADBD7E3F49FFA5CB70AA8 2811C912A0609B1C0160DF03D05097622520CA285C2B7B1A4AE7902379FD7A9A C453189D32DDCE43FB579478CAB053AC4ABCB64B531590FE767761B25F0E3F4A 76570E77DB50FC7C49906439B4FC51B5C18F91B27B74F7593F2CC8CF00A5B356 3D02FB238EB28164DC66DA0B549275B20BC469E835D4B597233080FA6284FEA9 9C119AB53D2D95FBE5BDA4E2513D0B3F12022D6B157E1991C92369BAAABE1282 52D7238E345C4CFD886F01A6E3360826FDE7F9A66D8B4953F6175335AE3859DE 67BB92D561B0C7D7DBA96F4C107DBF41F967DA8ECF35E8016464E4FC4E8B85E9 764CBD16665EAA374313EEBA433EFB799522A015D41C58DC508E16675F850B12 CE7E1C07C2179DD2ACDF43076EBC3AEC895C9620C741ADDCB78BAF75CEB19E4C 04E23B1A233C3DF74A162E8EB1E15CED59784C265B0497ABD3CC0C2CAA4B61A9 89102C9AA75F508FEE70F91CE46AB7C50494BA4085FDA1E57F7C3D8A3AB9FC2C 09B0F9CE34DF675226CB2CBADFDF49FD6C0C9C75E9D762759C5D6E18572536F1 EA8CD24CAD800E37EF98E7CB36F38347D757838B11DC4A60953735085A0BCCE0 7CCF4C82B3B8F7406FF07B08A295B68E106960E08E98A84AE21FC2266F2AF832 77E45E1F562C441DB3E17B5BF3E3EA02F32C3989B8797FE4944E738CE815B08A 857F6D0A5B80520DEB42190528CAD9C8B5DF7D5F17AB54378B62DF9FC4D79D4E 48A084B7191C1C3A3C73D869AA706308A6AFE2133CDFE120FE562C9CDEC7F0B5 D283B0814367355D7D3E6402A8257AAF18D25F844CB66C168D36362B46282CA8 E409F4DA7B8D9F63EB2D9B410EEF70D41B03F41BC15D76498F5037F5762BED1C 784654F1B6F205212CE206BEBDDB2AFB7508F6D4B1E2E0319EAA1ABA690180F8 C8B7514E8278E889493761084DEDB579CD6DB6532C450E371C2B88B4A23443D4 25A6E3EB0FD8D959EAE77741FEB136525317667305FB33E0AB6FAB602570FD54 EB9515B929A876985057F98CF56F5D317C17DC0A4ECDEBF39EB250895FC95F03 A0396AA98C17C3E73728A55039E41729BF0BCDE5388F733D4248854CB4D79D17 B93EADC6260ECC14C3384C5D9B927D0AAD752A46E91F35ADFEAC1D9889D81712 3A44160FB8F775180EF0DEB22FD4E95C8E9884710793F449814F2C15A9643F62 553F28574AFF99C3C949954647E44215C862329690632A12708F5200369F9844 5DD5ADC8B026F8F00DF6AE8B4F1CC46627468C7BCB17C9736111FBD63AD190B1 DCB5DA175C16633BC0F64F6A2F5B45FF242DA493EBE41BD57EFE6A9CB29D77A4 C80FE262E36CD5356676E2E52327ED7F72875A2AD00F98B1FAA283309D3C8DF9 B5FF90091CB2268C9C6A88D2DE464BE042923729D14A3E453944106E7AD3FA10 757AF72FF47FB5223BA9741F9917B798F49EDFC10FDAEA5C84266316817EAF28 C60843FE592A7850918C929BA69FFA1674FD866B75D104EE78BE77AB036D8DDE BE75588B469BC8B3C1EA4A9738211A39DBFB0FE059F649811F93F67D57425BFC 054B96438C7087C05309A87B65D64E04671BEDFF54D34C604A6B82CC7CE181C9 7C509A3C486FC240126641B534A5D953D39B55F8C2DCB16EE6B9E6A7B7434830 FFCDE2EE476216B15BDA07AAEAA793047C4E0F6075F27833D4229137AA62E57C B6E3A40FECA9AA326B30714B930EB46F8E9B4AD73F29D5FACE40BDF74921C5EE 308969AD4B8D4D88E04528E7C3E860C0DDA487F420D614D1D72EA0BECBA7A7FF 0ACA340FB0B7B864A351CF97D591EB3810282413AA3789E1ECA38D7876A31AC5 C05D7CC5FD1E600AE07E8442695E3CFE44FAF321950BACE0A05F1AE0ECA5EB73 4E502FD3C93977AD719F45E9A07224D2B4E0EFD78B718E6C35A87369C5FB818B 85EA9D40504274F968EE3C2DBD0A0CF5F36B3DA0FF939BD62D8C2A1034B7CDC5 FD0010C7875FC4744ECCAE17FE570599542B19DF7926460AC3DBD7340884BB2D 00E93B0E65D22F9CC1DC6BF1B9027A316F2A2D8C70B472B7FC54DB92F00C72DA 5AC53A506A3C87EFA824F6D7D492EEFB4F83203F228BF9E8D83B0CB5F9980555 9F05DBBEB8E758D8B31077D05A82327CFDC71FD640519844725ED499B22DBAD8 36F32D0A497C078ADEBD4E70E8DC077AF8F3D61CAB25E480E41FFEC88B016BC7 B1B1F8EDF77072717AA82644262B6EC0B54DFB1F9CF545C6230A0CDBD266298E AB1F5AE6A7B8DE3FE7E2E0CE667C66E12751E6F15F1F1BF4BD7319679D54E272 7EA6AB5D7ED205A0A1A00E70D455B0F717C9362E68909AAE25B4B10EE6D55DE3 38BE9DA53D98D895D8FCF5BCE592AA0FCFE0A33CC6E3BE02502D89E81E5AB77E 25FFEA1F5D203AB8800316F4E9998B35F1F066620EE41C6E84FF05ECF1828B7E 839DC0870F11032CCA7113E0EBA099CEFFDA8DB9564E019548786929D34A0D89 006CF9B63043E8F86A1B4EC09B85F6B87A261C6438073835BF90A2B7340E72A4 0A49E390B7C85B3B3F8C9EB82CBDBCFF7E68D8A782D26FC89CF0AB898AA52606 1BC95AE09F68D5338A60A7F0F48A78560A9EF22CE7F227CC55557CCE63133FB6 92A3800A1543BF77515AFC161EB107CCC7564FB76C84318E761AF6905A01435F AFD516F4CBCCEDAB382D5BCDD948259293DB485A399718182A1F54D6BC228AAC 2EE80A6A6B57AC74360FD8156FDE4F17A05DC3D9C35E9562ABD41C06271A18D7 4DD03DA723B7D306CDBBAF1B1E0C8129F4B0403120F8C4C13A83A8E66EBF6F54 9B2D88DB59B8793DB1F4D5624F64AE0B61D7B3793031E6B953CB2E68B5C17D43 CAD163D67BD6A39CB8548D2DDD50B79604178C6797551B372A263D424CEBBBF3 6A390CB5AD522DE71EE72A507A5C1AF3B22F30C4220C27A1248F62334456696C 5B86A05CE6FF619AA43D3FB654AA1EA3FA0F1FBDF269E5C1E885F1F49B59EF02 802029161C6A6AD4465E76DD7F8C6561FF3D38716DF7287D965F3DB3DBA53CE7 5B5D8E34DEF85D00D6B30371349E28B618850F18E41547C688CCAEA9B961830F 92F38D5549BA28D92487540E8EE3616C6C0D6C3D0F39EDC9A8B611FE2B50CFA8 C01CE7DC6C12293B2ECA4073324A554E9FAB57B04B19D0D2525359506CCAA62E 08DCDBCC70EAB5D3E7844CF23341D56F781D2FAC1941BAC301175BC9DEA125F3 F6B4CD3DC1DFBB653F8C144B3E863B381CFF32809D3668A5A7102229D32D89BE 470407EED60119AB4C73C82A8D266A24B15D99DC17970AEED3A8B44A94EAC296 100EF0409999B0D61D22D9EAD1F782C833946DF624FC0B40D1F96C8A35E9A4EC DB6F11C043A980B44CBAA1EDAAC65DEA65630C60AD3A37ED0A625F5FF96D9A31 52B8EF73510DD7B4BC919C3C176492C5262DA8433509DDBE502D996306B47FB1 D4D4F4C921735EA4DC7114211A2D14A824FFF7C7AD7F7E892D7FEC6B87C503C9 1FE032886B5C3268DD455528E747588AAB5D92F0C0103CD029A4E85EC9438B79 B251273B6936704CE958B46F7401A1E53FAAA684862AF46A396CB083D83C22B1 A8A6E9FCE106C030DC43B2245F24B2E89049CCAEDA86B7A904260A69924C972B D9B49861314C2114626A37AA000133E340420778EAB669F8891433F904AFD2EA FCCB517DDA26281F3CC013D4273084F73AB6B98FD0B1087C9A817BD6FCCE1B1A E37625739A9CECB3F38B5F65098587A3DC4B70B0E1B0FDCC639260BA769234F3 02E2473E920FFD73F3EA014C4D4E9A5DD8C296DFC700E9D795E093DA97835BAD A00DD1899CD7A549298CFFBDAEB778169F06DAFE3F6E0D1F6C36EC8B2F33A7DC 9F5E3144FE3EA5E30648DEDDE731CAEC85DAF1DCFBB37498252DB1B3FA61455D DBF318271E34A4A70F6F2B01BE468D05BC23E11B8627E4556BA22D6C67D63660 B5A22B380F3A6154C01E31DD0367BFDAD97DF51ABCFAD64FE4C3140372125093 40A17618B015FF0FCF6EC92FA9101102BA4910BEC54B607D80D9F10DF1D03D82 C82636EC463855C3C4DA36ED0A910971213378C889F968F76CA564386CBAD025 635B8059776076084337F4073195C2CC36025EDF2534FEA74D86D1519A04E4EB 72F009DA201A77E5A8543C9A7B46FF483BB880188E3F7E89D0F165F80A565388 16ED2FA458D59FCA1E5F167D721909985BBE4D54BC9DC2F7CA176AFBE65CD159 B7433C047213AEDC309C0E76B4575B983C4EC97D58EA441B50F5E3B50A243009 EDFE755B142BD1843374D7A3E8BE1D08951B787791DA592099E933D4AAC1784C AE3D0FACBBDC1FD3E506CFB5AC50AA2FED916F50D0ECA7BAC0A73E0957C9522C 0E9A2654F178C7E3129C37996BBE29C16D6C90EF092CE51B595C406288BEB18C FB6A9912354AFED37CD28FAEC8FCC62ED456A81604BEA603C9BB5DD8713CA04B 08870B6EF3B8CBBD6997E4CD8FC28756D1EAE4983DD4FEF4C0EFA2562210B47A 76EE0E3A513253127342BBF83E5226EEFD4EE57FBC1CDF953EF009FBCB913AD4 F4CD38DC2EAA1519E2DEEB905E0FC1C7D61D7111DC51F96AB76F7613D7A94307 0386F7EAFA2FA37E262BAF707F70ED07C55A371210B6ACC330B68BB2688EF6E7 2A67684A3901839FCD4E284F5405BDC24C8792A48DB34E772E6B526BFBCB7819 36ABEF22F048F11E10BF3E84D67EC584BC25EC6D8099D6A5FB753805762D5BEB D53410A1D3BC89E36D00EE304BD22E74D4C6FF77CB1C6CFD5572E8B8CA567171 D20B27D938E4E2ED19D91A2E179319E5EAA1AD660A7AFE9E67C66036846EF744 2B016C2D86D8DD67517FDF17A250C62181142A654075FD3BFBF868D93357CA38 75F9CD9F4DD605DE8748322FF83C787A9D0D28B25C9B906F0AA3B90069931272 21020563755A2B0C6DD4234FD596EFB934CDFA10DCF51BB1388855F1AE96030E D2BD5ADEA09EF2669381CEEE80FA1338FBC109C3968B6F8C6CAF3BFE6C952BFE C1F75247874340A2E37A18A6FE9088F175005805658A8167CD9D85345D35A20F DFBE9F061B7D20976DF840F1692E0030B7F6079B3591F821E5284FB4D65E8FBD D08B2037ED1F1B72801A7E60AC03693A8C22651B6E1F91B477652B265C047DCB 885D6BC4BD067AD5042EB55A26AD560344BA6D24ACEB3D0D42D615E4DD265319 CBA71694CA4FD213E516115AEF33F568E9736C0BB6FA46005F720CAC362B1361 B65DB0B96D109CE35222E8AECE82816FB31A9C5776B5084163BAD38726219B8B 8ADA8386B7E29B4BEB4E3BF26D73C005E4C6F36737176CD88D31938D43CBFCEF 2D9D172522C1CDB401059DB00F337979DA040204E41043D0AA0FDC8CF8F07FC7 DD6C300537FF209975C1E4BA268A6E35DC3FAFECA8555765B09E4EEF0DAC89FB 75C75143DB478C1B6572710F1D29ABA317A83DA6193DD41663C2FB1A244FC51A D783A302585EC0AD2E492A3FE9EBE22F1366B3AE74A26E6FDFBB4B384A579CC1 94B0EF22A686932A7F1D646ED8D98D95706C17822394F2B6AAF47DF55B773C9F 2DCE9CC56B6A61DA81831DC88E6252EE0010BCCD95C8F85F04C0B01903A6D257 9BB862CF687F350F50BA2B88808EEB64BFA8B767A53EA949F46B331AB972DFCD 855892977088984C075D19144C97B7AA00C59E084246F7DF6600BCCEA6020689 41F0450FF65C632AFD8077240DBFFAB0370D8120EBDCF97F86D82BA535A3BD3B 8EF7905834C81AADB7280FF23EA5036B4514E990D99CBF7E2E447C8153A9F09F 0427D2B180559F6135B4D084B78335798DD9FE5F72473D865669906EB782C5DF F5C74777CB10E18956C61D1AA61FAC2022A86FBE4EBCAE4B083210288FA04D3A 74A0BC91CA1B70207D432F8E591803FFF13FB74E28B962CBDDF1B8BE0DAEF01E 64CF022837D7986EAE31C1CDF894F68C45132EAC07E1A9506247186BB4EA1391 412448030C812059BA8C0777F8C2E64B7E4B71D0CF8319A8215D0BA3BA77ACE2 51A2EAD99EBB6FBEAF868DE6DDF8039DEE8714EAFD52DEFC7A218F4DE4F82A5A D8434D62B0652A6345C6EC3AE2DFD3B2DF9CDDC8353A6EFCCC3979C86CFBEA8B CDF41DCA6B5FA0AF456B444437AF9E71041F37CD7967E130A094C47A5F2AFA2C EB77E8F65BC363EB07855013F6726171CEA9079ACF6AE83EACC13249563C949B 109428BF57206208BEEBF020271E431C64B17105CDFB18D695F250D690376AD0 2124DACEDA2A141929547C35D61C635D46DFF16EA69F5917A72943B7519E02F2 8966B80B7B8AFD7745E6C6E9C0A862B856F3B3C94E1307667DBB57189A7312C4 C8ED6044D205CD18D6ED6E292BC925A2D63A69D4F2171CFD6D2CB7B61C08763F 1478F8FCF81B325B2A4D4DCC77E0F81F48C1D226977E3C3684D468C0F8F19626 DB5A8CB63A5B33468FAB2C155556B1EEEA288F5390DAF9887733BB3986964346 52138EC137F460B6304CBB16A16B48C3FF433169154E16A99D29B5EDE027927E 1D7E87F12BD91B79C496F4980B063EC223B9FA0427B43A034F78E8156FA049D5 F48917F44B30CCEEF451B1DBA8262B28DB931614111394D11C641052CE9A9ACE 79D983D48DA12CD933722BD9ECD400D1EECFC0EA3CEFF2CE8693A395D2A6F63D 872AF6AC529FB8BA5FC8DD64D21CB110416BEF178A54C1665951EF8E1BA713EC B88ABA0DA539118AFC303756A466308E4FCE76405B34E44ABE49EB54EB3512E2 BCCE4D3EE8C49138B807F37FC3BD15FD691895515E56DC383099802BDEE30908 E3EA9300A2D2ED67499BB7984763B65E6ABB126B81EB97870C2434CB3C1CB7BF F5765E28A1613E64FC52175C422C0623C62D497E314929BAF6BA2FB0D46666CC FAE58CE0951767023CC14C510FB51E2097E9C7E0C1E093EB351E21C2AE1A1102 3CE149183B88D6C1529CE7DE0CA5B59A1CF020AB478F5805DDB85CE2EF89A4D2 5E3D6AAC0DE552EC7786D655DD7185CF4F7C6DF0B60209671F0B94BF6CEACB37 17E0DBD465AF4B6857406510EC1FC3DD7B9FEB0FD13CEBF5C78E0B69A2A3E8FC 7E2B72320948A97BD1380BB060F8ED6264409419961D7AB3666701D39BD55A74 DC3ED03F4667B629376C1CB981E36AD7EE870DC4CD526C6DC91FB9D50D852FCB 9B1B80ADC259C9D654F75BEFB592497C70CEC2C44987080EF31E213A586FB5B9 2E41C7967CD2AFBB9411370A87C1AE0E16954A449A7E130DFCD0CC15BF02E4B4 4A440B5BAC980CFF66049E679A0199877ECC9431C1FBAE6B9A4DE13941850AAD BC326DEBEAC9AAE6975C7A32D52416AB097CD877A49A3C83B47DD0A649DF7478 1D6BD737C829EFC2C49B6F8C7724E778E168F5D5E48D8BAF6505A70F9C964E6B 1F2B36E995485E41486868B92B9EEEE183B53B70C294DCE0BCF5CF56E6836B7C E443546886B8C4388179E76128411F6F62DA81F7C46D687E1ADDE7DF0F3B3432 F433BC4C57BA96EC6FC25E777B20E11B104FEFB51DCA275464091DE563D681A8 928839405C1771229CD3CE68E00C744D6606FCB4AA745A8E35389A2D1E3680B5 64DBFC92093039F9875AD113B04E96484564701F96EB99A19E4AFBC3FF0E6522 DCA9E44B40AEC73B965A3B525F24338F0DEE77208443FC961DF131B7BAC8A526 BF51EFB95E91EA64381AD55995A6350ECB6B54D7B183482113B41ADE5C07132E CFA8CA4214819E1C7ED84A5FB04C2DF6D92A3E38E33B2015F154DE4DEFD5C423 C14E3ED305D9FCB096DDEC023E5EC4F0B0839F1EC7F73ACBA639290C2C02536A 3D2DE66A5E05872D8843AC39D7A71BD65E8979B793B5B3640F6C96977376ED5F 86514E9DF626F91B77439E78CD4F7B67B453AE183A07B76CEDCEEB9F0E180D18 E961B2DE2A339159977FFE47CC55EA6F94C20ADD64D3E4CAB1CA1649B45B5C91 5A510D8BA1D799726292F5039C2C5CDE7747BCD3F6B2786A11BC905EC6FCC160 E59A10518F1A8A13EE2970B3F047ED4645E9D79823F3319065DFB78326AC9506 5CAA47880404ABEAC6087E7534669AEADC53AB670AAD02B53B977F623167204E AC415851FA13588CCE97AC95EDACDC7FACA976945C176C1F7F3B1709BA192D17 749E73EEE9CE4CB0D4B1E2DCD73BC62F94D06FB90A3477DD2F549774B8301DD5 7C0EDED95D5323705AC575EFB60D410F7025286ED199914E4B60EB8390B2BF56 99E0C2D57FCFC704863F7BCB50B31CD1874039BD975A743D814A37C99C52DF9A 1676C5AB674093C6487FE59DF3AA919FEF0F20E197A5D31821BCBA08665326CB CC3F6462465FCEAB5C34656B00ECD9A5A7273588A0BC76838EBAB5509F818CBD 108C60DAB60FBF5B731BAEE26C39DB8D63C1B646D45E873FD0654EA0EFD303F2 B365C2E64E8429307C2C1ACE00D4212BDC729BF2060CF283E4F8C5975EC550AF AF6CAEB55F001D006D5081C8395A6FC6922C054F8CFD51FB2F4E11E5F40856D2 060175EEA2ACF73306A6BF5C8893C4577E7C9E9045554E1549580335E9411822 357961EC9D9CBFF1DDFDEA258EEC3CEEFF1F19F1D4A90BAD81770FF541F20B29 06C311DF9A7ABBF47B2F3BD7BF2C076EC4F48F4F6486EF84CD4F35274CA26831 524B38164F4646926694A4AE284A1DAB3BB85A73FACE9C7D5CFA118A6868025A 0880B3CF663CFD975FE0ABFEE19D06B285E67F8C17A86F0B9B7A8F0FEC61E802 BB8095B44BCC19A5A6E2635DCADE519968245752F3ADAD5B135F012B13CE15A9 E2A661961A3F766900F6C7D3C9AC371149BAD912EC4EB9AEAA95107DE25B767D DD83F20396334BF5EC2911EC5870F647619A98984746C632E23654CD20D1EA0B B2C2E85FB8FC49698F7C73132F39B45F20971992A68D0CE6DA02605B38BE275D A68A3870D69501E05BD45D40352D459BDD8E305D959FBB51A200A208E87A5D14 E6EDBAE1BA22A97EE30B57874707D001CCC7AC68E0DD7FA37A45EAA466E59ED8 4791DFDABFD230D497E4F0BDABA4232818EECF3776899EE23549633A812F39A4 6DE2E09EF5F7D63B9FE7E1601DF4074124A3C3E9BAFF3884E303061F279D5B39 0FB3C7DC3F4A32B637C564C10DFDA325A2225DE946F0BBF7FECDD74F22599E0F 58908E1C7B0B3975FF24C38A2639C632624E1FD0DA923FF43F255E653B178507 9ABFDA1218DD625B5C1AB052156DC02EE42BCD7995282423AA7BE9D3EBE4472B AD84B1524E5759B3B89C3CA02B1C67BB57CFEADA9130504D259BB8230836AD05 68899B6C2E54D63674E53EF3FD8543CF030A7C2F281894A04F811AB570C182AB EF901A2F41F66460EE016E70D67A5AA142AF31363D6DD82BA52863FADBB4163F 29F4654A7B67BF00A02BE06F05DEAD85DC059F6FDDA0059E3D3D4506B66860FB 3512C269034C1AAFABC2920201D708B24C508494D7D0D67608E12E15E4A06920 238AA29E023E48AB72D011BCC4C9CEA3AC341A81E218AE1CFA61A79CC8B30300 5ED1D111F799EA7393704B548034D0964097CDE3A04C930BF9A1F4229CCAABC4 56207E310D63CEC3ACC7BB18A3D25EF9093B066F85DFEC82D791BD65B363A68A 47C6503E97B9EE20234D499C7357D6EEE9CF1701F6DF625D0F3A531FAF94AF9D 2F1643078BA6977DDE736360A8C942DE34D9D77570FD19F3754ED7384B4C17C2 6A2CEEA2DF86ADA4EAF9308E09276B0089669805023C5CEACD92777CA33DC519 4CB3007B5CA663FEF0041BCC6634C9002638FF8F42A4FEF6F35468EEA87816FF 0F656374B64C3BF9D9BCD12978AB6D3A232AE5A795511045BBF605ED49EC0E2F D04ED454FE1B670FA7D4231CD381E8FDA9F8628D25390B39CF605CEF974C5F1C FAF1E6F7EBF70AC11066BD5D1BC1C1844465A43ABA78DD0BF2BA47E3E4A8EF4A BBD8404B0FB5D5F8CBD788F524804998D3A103A96AE837DA27D24119EEB4383F F9AE8BDB295C298294025AB4D3B19F5313A9F241C6AF0FD58A23791F041F9C7B 07B0FF505E1036BCBC0F8C3126BB8CE61F60DE4C1DF8A88B36A763B44AFE6566 A87A9C620BAA165AD7E8AB2B6A71C4CE0CE7EDBD66CBC7C45EE9CD00331555CD 9CF416060DD6878B41992A8C199CAB02D962F3EE71CBD0CDE642166663496421 32ABF537FD881B2142CB1EE2ED82F4F6CE103ED03FFC25C02AA432586A873647 021925A0D0ACB04982DFD5C5FB9926364C3C51471ED3E72375D17BE6AB5F2301 D0BB557C518F05652DA4AF5F67EA320E205B8F8FB3C3630C0F1FFF2393CF521D 9FC883073A30928078AF40955832096A6F68F5F70F441EE0A3C2723A1A0E6A91 8341B73ED5DC062661F6A566346AD5F694B7754A98587244A0C10A7C06233944 6AB8F2CDEE51856DFAA1F46B5F6BD88537D57F4399F91A4539E04E688CD717D2 655B7DDBB5EEF219896C9EE92FC070447B6A2A87873DDF8AA6DE8A44806785B7 CEE7F56BD847A5D92BEE886723A05573371BDE83C96AC4897C55E30E29847F87 07F0D7C39F220FD623CF62047A3F156D68DFA5391C2D622E779300AC6B7DEBE7 DCAEF12A1FDC95CD8C0F86B61CCA75AA8D5657A0E4A5F3C26292F0D711EDA658 F8C7D7DB044D0F0169FF1C9B8CDD16FE5515EEA9CBEEA44FFD0F9FE3D55BDED7 B250595B82F904897EF442C89CBA16C1E12507F08AB6D343951E9C99287BA8F0 8C2A9A9D9E5EEDAE53FBF8510876302C6769F72C8DB903C21CE3BF8EF97F02D7 0437FD1FCFAE7294EE0DFA79781848E1D1D442529CD6E1A490D794C9567006BA 84859E8A1137126E2787572AF351EE7396877376A303E28088E8865558883613 765D51B9700B2EF60002702D06DAE955A305291513F4F2698DA89221D3CEDD27 EE4E5DC26BFD3F1FF1C951B75508D4823C4ADF3E23CEB5BB97D53AEACEB604D1 B4B43FBAEC5441D1BCADAC1C337503FE99887E70B4C04802081682A4A75C867D 1981D33910F8B54839EB77F5C862A385A9991FF0E856ED57CE48202AA607203A 908684AEE7EF777F9706F7E2149FD276D4349396A0B043C66616B9C27BF5B6B5 7648EE82D910B3C3D86D49B6C259C82CE4785F4CAA29ECE4CD2902A4AF92324E 4F9DB72AD2AC1583B04EDB533F958E9B692ADAFF6440460DBAAB090E28DB9EEF 53CA9AC641109F5EA7C36E64C394A57753AFB4353E84089283181317AE694862 851C92142C1CD62F1EDAB2547CB0F264E1384BD37C2C0ADBE79862890CF26C92 FE8875A2D5A5B681834CF025F9D47B4A9D221CEBEEB41DEE9282CBC77D89512D 904954FB55754871BF10E02AF73FC532F0FE0DE1D18CBE094A7B7769629F4066 B0A05BC16DDDD16FF7F563C1BC4F5F4B2BB9AA6828CE246B0167D3DFC0239D70 76075F79B21CD6E1C65EE76EE1318E2B319800E035BAC353B691B500939D82EE F33E05DCB66589BE30A275140F509EDABC659B52F6CEA8930277A914796E1019 76DD854AA8B3B7018F37A74BF271859D69BBF4187663BE4B8F426694C0DD1098 B8D461F62FB44271F8F18F1440ECF7FC3DEA04284069E16174719BDB7A4574B7 1D622DB9F54B63345044AEF7AD0F9AA3C82AE44C3A3765C167F1BF51B13B8CBA C23D18D9FCE19E295EA457C757E10086E0E1AA97D44C48834B82550337F55024 E77A7EE2DCE909195E059231BFE444FA724C1AAD9854B69319FE91E176563D0B DC674BB01C683B40FDB024897AB6A615B7EE381D1DD9354C76C56CC31EEB9B11 93323CA67C848F20975DB191271ED52B125D2199DA8809C0AC5BF809A604C631 11DE7A6033F276AA15A15953E703EBF4F9841FD8120BCF6FF79FDFE673DBED2B 682F461933036812C1E5A0C1CC706A0CAE3BEBC4F3F66FD39111D1FC5175699A 289B7251D2E9F38F69DDD9CB6BD7C9E2224AF5EE3208E461937191E63D7083C6 4A11D9A90E62C1D3CB04BC84D0937825270A3433A7327D1FDA4EDA79E212DBAB 287C984683BC05CF36BB6E56F28D8E34C02B02D935962D8F490C5E7D448A 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMR12 %!PS-AdobeFont-1.0: CMR12 003.002 %%Title: CMR12 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMR12. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMR12 known{/CMR12 findfont dup/UniqueID known{dup /UniqueID get 5000794 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR12 def /FontBBox {-34 -251 988 750 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR12.) readonly def /FullName (CMR12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 40 /parenleft put dup 41 /parenright put dup 44 /comma put dup 45 /hyphen put dup 46 /period put dup 48 /zero put dup 50 /two put dup 52 /four put dup 55 /seven put dup 56 /eight put dup 57 /nine put dup 67 /C put dup 69 /E put dup 70 /F put dup 72 /H put dup 73 /I put dup 75 /K put dup 79 /O put dup 82 /R put dup 83 /S put dup 84 /T put dup 90 /Z put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 104 /h put dup 105 /i put dup 107 /k put dup 108 /l put dup 109 /m put dup 110 /n put dup 111 /o put dup 112 /p put dup 114 /r put dup 115 /s put dup 116 /t put dup 117 /u put dup 118 /v put dup 119 /w put dup 121 /y put dup 122 /z put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9C535A5E57376651 F6823308463DC4E0339C78699AC82C769542FD3B410E236AF8AF68CF124D9224 FD6EE92A38075CAAF82447C7AF41EF96F3ADF62F76FB425BEDE4C4124E7B1E0B 8BF254D91912D3A99557F5427907A56514C5A3EB961B94112077FE9417B70DA0 B2E1C1FA3E1D6F01D11F640CF848E45BE3E205258E64FE36AFBD4DF4E93F6B1A 966C8E7FBE2CC8FF43C1F67BF6C361678B5E90F4BA524FE8A4CAD6AB28183E6E CA6C9636E884845105595A2E40CDBE8D4807A81AF4DB77B31873FEB221BCADD4 2C4669459704CB58A7BC230FC59F867EEADE660E49AEEDEEB042BA9A7DD8193E 56C3A36A1F639F7EA512EE4BC6992F52C2FC82A890EFDA730105B0AF7B819295 EE00B48F64C2B5BCB275B1DD62F289CDAD4AD9B7EF057684642FA6FA6322C277 E779CAC36D78F7779CB6DE12638B3C65B70C6B5F8A8C6421A379719B8DD44973 5F52856A4A29B2ED37F2B1FBE6EF4B79B7C0CD6395C756A00FACD763C235914F 847D1D99831023CE1FD89EFEC83AA7E313131C0C197248605EF5BA773D0A4000 72F607551A8EA6F0FF19441ACA179177D1FF7B423FEBDF58B0C19CAE3C10EEF6 3538D8FC4762B77C5AA023A8186C40D0365A4487DC3564265B3DF908572DEAA2 57E29EC669DD72974F806EFF5ECAFA9ADF1F9D2A63087FB7BBD100F0F81C6FFB B1EA1C9DD46548AEDD147EE64B1B4894972DAE1DC3E8569D6A3CEF9F9E46DEB7 547E10BB2959D374A33E47C58F1B20419920AB485F166062FCCC08EB5CC9AC88 F388F0C0155027B727729488E44CCABB7064A1432E179189C4627453C5231535 47D1F2B8BA43069696830CBB6E5F9A135CF22D3D1FE490A3A63C088EA32FF444 24A2427BBA63033DFE2E06DF8CE67949B6AB02F26335A376B57376814D2A7DE7 64A4347577EBE9A6E33DD2FC214A09C6D889C8FFBF1D567032548851B8F97204 49E215CC7D222F593E1EF1439ED60AD922D41E0E9EFB5CA48F2FEFF75AC5FEE7 FB6676D8B8D4DB6885FBE8B61B586313E4DAFB09D94CEDC0507E93000104F3DD F83865A2C6F6A7DA8562BF86F5DB233CC9B53391273A1462E40876A8AC2B098A DBADD5A160DEAC061F86A5FCCAB495EF8A9D121AF07928EAFD56F618E4EAEA97 CF89A3AFD406FC9DE1E9769C1E1EB83BB883786BC075EB5DA2692CD59C4DD7C1 7FD2FF9B18AC740A390C1DB38670DEB18C67721A1DCD502FE7368F47DB4281D5 459B3F020595FA3B10544AAE9EF786A0645FB7C9BB29D091E1432CD878A05918 1665643005BFD9A4B0FFD347ADC84CE22D6F9AD4EDC05E8C7179DCB360AB57D1 6ABCD200A4B4AD56825DC345984D9A3DE11CDA5E9EC1E5006EE4181E4EFE0846 67D8C27BEE8F84A1E01947E945BBE988702DEB2240C4BED952E433E5305484E5 71965D3DE95C4115FF78CE9EC18E323C599727C8B93CDFBCD1CCA780DB8C81ED C4B5E596E1603624308972FFAE9A57B0EDB51FDDB6E23EDE2946F61BEB241345 2A192D8CAD53E823D687F9C64A70A4B4B703291FA6317C051DC6A44BCCE0288E 3839D726A8F2E39BFF429865E95C726E808E02CD06F36C1CC9AC77999F8E28BF CE9D74B699CA982479E9D0DD98EAB24D29C981EF0349721D6819549A39413801 F80182D567EE316E2F0AB208068E15693E4C399A381BF9BBA625E597E6E109B8 16F3A84C8EC92F2ADE288821092A421A8D3B907048FE947230810F0777EE2542 29A3485223FEA079B359034F70464DAD2F0E420271A4E0CCF57A0ABBC20AB327 0CA71B292126D395E0D083B19BEC6B48A9DE2BF470C3D01A8C3F52075BD4BE02 A0C518355814478202FD4762EC542F8E7B9B1F7824F0554660CEB83E35635E1E DF0D03C94C903ECB36B4948ED98B6324E0094EB1DF70863142D4ED3A932D7346 39D69F8F044B6084482D7748C27328AFD24A3A70B99D1F7D32CB984488672254 28B6A9E9DCA2C9FF6A1B311D72413404B3CE5428BDB7FF3C36357D7975184F56 FA6B32AD54C37D0AF7576663AB1397B80D4E998F0B4C4F6D90B483029EF2EDA9 D4C4204C1546EFF3100629453EAE01918D09FE104E626ABA38646F17B6A94CE8 116BC7A8D9C319434CA5B830859B4164DFADF1D7C3ECA5C78D8DEA930EA4AC3F 59DBBF3148C91A2E807FB934E3439D4F67C6DBBA9972854E6E3688E1E0A34B74 482217CFE031CD7B5DFEF727C3EF8DAEEEDA08F4C90289E62FB2AF2357EB2E45 4BC547980FD479101FFEEE477AAC6268DD659E8DD9E244676FD3C6909713B71A 323B211E571BE711D103FA23B5B9AF077D84E2D20FEE805E81D20C03501F0F17 C3B081946CD0FD577F00E50B76CC37CFA97A61B89C25DD43911B28857284BEBB 5BEC61FFE3A14C64BC5425A7A82326617F6F1FA4FEAE56071C9F559F91568179 46369B394A5CE96FB7420FF8AB7C61CB83492FA5AE4A4B0799578594C9EA67E1 E54498AA5CD6ABA34AD3417F04F5D8D664A7EB39D41E2D17643CAEBBCCD9C38C C5C9541641A09335EFBCE0D276A54253EFD68141807A66F1DFEB4BEA5889FFA3 4D20BD52012206A9F8D3E0F6AFC03FDBBDF3E51506EC6336E249CEFB571AB84C BDF8E471E3795C04E38A5306BA6D450D72E50910D1AC385BB06CCD4B8E433A32 5A4B7FACC976BB31FCAA1E62DB2C4FE06DDDE7367930E336B49F47DAD91C8735 9A35D80CA2E117E86B52E41E9278046ED923454989E48610ACB3B1663F197117 52659A9D7BFA561C7ACE0771794FC778675F83C5EDCB132AF124C7E6540A140B E0A268836C73A3C746DC964E482E63C56C0D396515283970FBFF182F9F684FE2 655FD8F5D057D22246DDC3FD11B77552DB4D90ADBAB77BBB1FB1592129DE0AEC F822D7D36E52BCDABBD560B403A5C56C5E1BE789C3AC049318C7FAC5E5861E42 FD66C3C0F46361078D7E036281682BCE9BBF77983C93ECBBEBA9B359769CA442 87FCA1B98F4EEC4935CC93B08AAADDF355C99816453587310F08C50B9BA3D107 5388A1F3AED2AE32BEFADF0285DA90436D1D7EA85D7B9B6DF2AC4B778CFADFF6 6EEE54D1A1C5DEE3CCA7EFF57A7C2931933CEED90CA26DAAB45E4388EC4DC366 B9E88518D6CF094861D2A59282044CC06E63EFB390A6DF4BA5EAC7CE39E1EE03 3D84099F5BE96612789AF3EDED07266EF10A0FC23EA1EA97040B6BAA63138B1A A9CB8F5DED781260962D7618EDB200C3ED976033E8967A8CC676E9C11F74BE34 343A7ECE7EE97E8F76F7E95517A6D6163527406EF5A669535CB2BF4031F29046 BB2D0FFFB47A576F5EAB1D00A582965C56F28C00B3BB7BE2CC8D8391F789070D 775EB775437F0CD53DA840BB3575104B63E4B0BF14E3F14B320EDEF65FD4CAF5 8596DA491BBCF3153DED3B718F833D106432DF8DB8B8E6B34D5308C9010A5DD0 7E0E53260BB84BAB3EA748E8D72F75901604F80F4416920D69B4B983DCDB72C5 E9928F01A4A85954FD74578AE336C782CDF81D1EB7EBCEBFBAE7ED8AB4862584 397928F502D65139CCD582CF0723C5262EE54B9D2B8C39614652A8A90E1C3B65 7D26B99DA298FE4B9A7E98848F619C9BB4FF9FD215B72F99506F06355B332689 37D80AFD9F9ACD8172CDC51FCD3A759ACA0F7D4EBB07840840EE42C2D5B8B257 2C6DB3A7657B75F2F0B9730A20112745703E2D0FE709436CA6A5F36F59E64D9E 37C0A23D6D289E1AC1DA273872F5FC5C3DA2B127F078A4D7AB3FD7E124455817 DDC796D54EF26A1FBFD539D3A21B86DD4477DA49213259ABB3FF241424F2BE5F 89151E02FF87E0BEE26E85C0E518D8BE7CC9214B8E9A9EA1DBB49C6C212CCF08 90C0F23E9858947EE344062EBD9C574979087439975EAD4E85CD7BFAD3C91CF1 EFF577843AF1427D06CB2F3BB519ED1591974218C43F0D2038665F9E2E3960B7 FE68CD3CB2DB6B36C7997C6B21EC11CF1DE049541001FFF26D14C255E3AE862C 5A5701292FD2FB3D04523D6E2F3547923BB117718DFB6E6520F0D0B5450C695B 8C9242CC8671B7284CB2E1E9EB097A3DB1B4D5E8EEB93B4DC7E38C0A10474665 54DDCBAF079B92EA494F6FA75A84C5AAFE280284D0823D7C22249A21044BB0E6 4062074ECD17B62E03EDF4945A294BFEFB51F5FD870D9D7230FC91B83C1D85A8 86CDDF326FC90E04362145D6E8630C50594484FB829DA18F5C078F2EE67D2F2B 08DFF39AE2E8C9741FA989AE494C7166F122D2C5F71B97C973B7CE8500E9F87E D59C30F2E99CC4D34713DAB680598F41955FBDC26A14CF1E73D6BD6B9AAC8D3B B998F2D0D647356CD236DEAD6561389ED3A6746221B0CF15D6648412B35A6B54 6A0EF5BBB34AA376D9BAF025BFC650C1B74333CE85413D0EBB2F4D082A26A5BC 3C0A25D2B12CB159F140E00E262F1CFECCB2C802FF94CD34DA0CE9B4B3830FB1 DA85B9B670D5169928990A2E9CC869891CA2FFAD9774E6B92549644DAA5FE00C A5BE4F5FF91A0B6D2FD8F96121D766391EC4ED3E73DADD476B7DAE1A50AFCD98 DB7E27E44D30416088D9BC07D4661D9ECEC0806830ABF14CE55AA3CA2DF66E8E 748B8ED46466F1EEB072AC0674FE6FED231E0DDA59ED7C42BC05EF00E176050A C4834D893DE42474EA20DB1E25059E84BD137EF65A02CC295B0FFDE4CDE95879 0FE88BDF2519ABAE7F8CC3E6386ED35E04A14F1E3861922645E3A3F43B48A5AA 1999A5EFE192515FCC625C829FF5A7B337AA422F5E920545F9BB269C869A821D 6C4C26DD2AE746EF0F0B4C1E7E9871ADB5270E1CA9BE28225F7A0370D4C52422 E25263EE101C4EC1C7811B05AD42F364844A56BB91EE72FC8ED53CC6954D2BD6 F945D739BE4C61E36143CE890FC0CBF2F610018D678ECF7CEAB18FF5A0E48F76 FDE2463D40A99380D679B3B76D39C664F4992D23E5988B0D1AF33DFB04894016 E852EFD1EFFE586153C0F31ADBDBDE3F73FB49C5EE64D0D02E1504248FAFAC3D 903FD44679BB09C30288139B41B1E90A10139CA3172677250B16535A1F3E5E4B 6F4264DE58896E66051FC677030A121C5A285C47B6129CB5A3998830CE070D21 2F093FC1B44089F603A21F45F60960F134A47226874C737EF6C085634B0A4A66 139420501351F737A73F39D960EC38420BE46E5B09D298E7C16B8E32F01507D4 0141FC52DA1DE718D634AD9C8B00E46EEEF84356759324D2B9A3473C5DA38DE9 E30182B87F91B6A7F7BACF29A93B44C879CCDEDB063F9D2E51E0F1FC9F018FE1 2433D85AF24B55DE3A61C4D0A2DA4FDE933F5F6FDF17E9FA9932BFC46E2D71F6 585EEF5B2E4E89E797A24B799D7F064DD1A817A53677FC9EB8CC3E7F93FE50E8 D50E3191052943FD6C98B573BDD1F6D70349E1F8011599E3F8FDF1D6E80A710E 51E434E85801617C6FD8ACCF1B77B4BFCCDD35CB4C0367F4EB4D8D9DE8284D5E B4F43E2F8320C2C5A9AE90ECBA7E65D377E91DB69FEF27069235366AD3E126C3 A73CE97F4C90BA00D206FA012C327FD69EE59AF4470A315B1799CDC0539BF90E 512C8FC3BEFE4D1B01D969EA9E3FEF976CD6E0FA4C9ECEC955B265CFD58AB8E5 F7371E479279EE14B689269205C5B506940606CF3E24A1E7EFF3CA96ED30AD6D E243DE57690C3D69A401AB3315FA49E4BF4ACD4DD1CA39272533E82EFDD508E5 1C2CD286CCC5DE1202C7C7F654521750632EB637F918667E2233A43DF75239EB F28F3129EB5DEE2FC5BFC331FF709B0FE9B327CBBCE98BCA2C861C6547E50407 1218CEBE6EB5F9BABA4F2E11BCC6FB553A544A567B459E06375102C69F8018DF BA6A227CFB13E2D74E6A521E01B74F2963E9A0A1C9FD87A88EE6356E3BFABF55 BABC751D2BF85E6712E8EF57914920775906662E4BA68FFA21AD422D34E15578 43CA0568B431101A1194F8AB1EF25E886BFCDFC10F4A5EBD9530816548BC298E AE4A0B6B52B8B59C644C409B4191B6F4203F52314F2675F02AEB65A72C66E92A 2AC703E15D8D381522C0AC30C165B822A9B8D18CAECC094EDE020756018DCF51 D0701B507519C4270B70D8CE94B436F640C15872F9B5B77892AA3D110E4D6A65 8F0815C61A5127BA25815378683F46E69E54A391A8675977E7DF9C2D4E6FA991 9F029E50CC2F266B31EE9F9F24452D5838905F330CB7E416B8AF836C5AC26AB8 BE2ECC6EA4BDAA08C30995709E225C21D35DB6369167602CBFA8DB2697635925 969002CD1BEE745DA2E56C17EF3F0C05E3847147F86963C37A221C8827195A8A 3D38993E4939AC915BFD9A212F5FF3F826F742B952018986F9FBDDB69C3AC65A 845F7F33C55D4BE60A1817EBBCA7E1538E8087E1BD5C083A320D52953BE65F31 E8339C612A510B59CE48D2EF7061560C4AD258E7DC59694493E3AC878246F37D 6DE89253EBC8830C6B209E818213C4AC4CF1F391AD91D57BE76FB0E2924A1407 E4A949C905E44F54EAED6419F13D59942C8079336A172D4758BEB5D3E786FB93 3CBE4FD2EB53E4E1DAC34E821EB30FD44BC6CB4298242C38F848FC23AEDC9733 52BE6F32E31E25F18301370F8936810B0566B664B042C7AE0D78ACF0A87E5BF6 F9B66E358168B2CEA30DCD940074F3ADB793CDB136161FE2522905E87B8E463F 95D4DAB7E14A3DF7BCCE8141C5A08FCFA2BCE9F2D1B05A7642E75877EB840149 AAB007CD239AE47AD115929427717F219B0A8907F0EC79ADE1B901DAEE87A2F8 39361DAB43DFFF69650F601B24061A9353CFD619FF9626F63275FD09A5B13BB4 8B3379EC4D147C41197E8387FC04DA7BE409524CEF74EA91DC066808A7FD0EF3 957A44E2503EDA67B1C61827479486134E922E560A673BF314D601C66003CD07 55569085AFC8428389A140EB976CCFB8F29E27587E46C413ABE2EFB51AF5913F 53EEB74063162E0BA1E24CEDCA320377D3E11BD374F0B44E132A5C35835B6E2C D32948EF9DC7931D104C1385709DA882DED6458319F21C2329938396BC074106 CB9CFB9E0A915F8DBC8435F386917AC87A2BA45D857EC30ECA66FB4044F5439E CDD556B82A0E43418D179AD883C85AC276E1190CEC242E3E1D86E725ADC39E46 BB6C47FE9E17E29F8EA81E870302A00D91434F3B7A05F243176E6EF1082541A1 B9052191EE5C2B8E94A2E02DB65FC769653CA8D1C07A13CB853544AEC7FC35C5 218DE3128AA31952DCE19C55C23FD69BCEA2C661F57B11B8F9E86BFA718D1521 3346E78C701A5E51923D6D937E62FDE3669B214D240538F069A100A542720A86 31DE88116DE775F7ACC2A49EA6C02A24408271A846990669F2AF60AFAB4C16F9 7F4E88E917F0FFDCE68F22998AC0AF2A60A73258C3A4BBC42A2F918123128195 196D0E150D79AC3CF4628503D1F3FC528265ED8324E56849A47B3B07C29940B9 1BC270071E221D355EA51E9942D3BD7F99816304FFFC8F5B036C953B38759341 ED5D7B9C8E6B70C409DD8362FD291201CC385E4A98D73E8518A4C0E544152563 82032FBD2FCB6E403D34B85ED4053A8CB619BDD4DE001F4C3007B1F317579651 E6D6662189CC2D95AB85D7473F65C5D7B4AC63B0FE928F3400035D5A9D443D0D F3532B99F3AC26CB25EA3CD64C341159061E02EFBC7C033C05CD919BBD827A6A BAD50D9C98DD94332DB4C7155F8A52013F9ECB7CCE3CFB3E667C57B022A0A753 A45E41A9D8229D5198031ABA3DAAC142AEA5FAB6694A6433629E15AE45A67FDA 34DE10D995ABCAF45FBB3B6B73E80D05F4C51F8C29D4B0F67C8A86432A6C5E86 F0126AB25A5CA2875B48C61CB8112A4CF9AA08F8B0157396CF63CBECDB8867CC AC10F060630C9BFBAD84B1FF01C814878F0C177F552BDC9BB181B14581C6E968 DAAAB2896FCFB745795C4D2C87CC14FE0D165EF1C2A06A9B89855A1E543F3691 B90E4EE9F324FFCE2D59A8810987DCF0CC270D5E734D22592A1B77DB98075341 C48676342C1C74660E7D79B7329A7F6AB723AEED60BF2E1158F0591CC962E5A6 ACDD131797F623F38B06F9E9EBCBCB1FE267B888C20A59AE40E7A7169439494D 0F336276062BE896D00A355A1D264B74BF2A1119161B0C9702F63024F683BD05 0B9CD950388B3602620481C596FB7C52EC5EB1FA50E24ED4BF84B866CC37DB18 DF7271CCF9B739669896D492E3FB0794E716256CC85C215C3E13B3F76651FF52 3EA372C46BCA6296BB76E360801E600E26408039A2F4AD9225E79CCB0C038A04 306435D2F6D05886741463E26AD6631EB80E8F51575DCEA0EF446754F54E7691 948F6D58316C2D1CDAB2C40B0D477DBA742C31F14F04B11E6A323636752F6B64 34AA25CAAA9A12874EFB39BE04CE85B849481CAE684F0A727889CE364C67B807 C255B7E0A9227CFF8E96FBFEC10D5098DFE23C3AEDFA71434BC0ECF8881ED0F1 56EB13C297818BC0CF1A5DDC5138951068B79F7F9E3544CFB758A8E3E827D706 69759B6EE224866B0E99023F00DC714B99F9F32256A5CF7AA5ADF1FA4ED47594 4A8246289558BF2DB30FD850B100B6048E9BE14A46227255FF7268EB2822FCAA 5C6E969350100A99262EA832C0EFBEAF3C4AC4822956D40710FD63C6EFADB667 85273909DB146DD2D0DA7BBE48E30A2AC2DBED838C38DE90DEC7B35E2132008E E5F70CD3A6960CCF2D2B8DA5FC557EFABA32DB544E3045BA3E3B153355F29059 19FDA13F087950A6E2121AF58A4C9861F43A39774969E8633BD0E9C04A50FAB2 5F3DD8F33E7DD74DC5F6A37C7B4F6A7499B04449C4C793B4BFF368AE118A0326 66C9813DC5E9B687BDCACEEC3CACED14896D89569AFD6BD9640029975AD8B4D9 87DD6BCA5323B73662BAA174FB03B54AA53AEAF4DBDBF64F250C0966B36A38B2 5D0C610DC18FADE715D7B8134753E03E62323B536970DD430AC6A2A925783424 FC803D680501745D1F67EFD7B122C507C7537211B9A27FBB273481A05708E0F2 1B10358FE809EA82F1244FD82BED0F9F62E0558F4EB16B97CEB22FDFF2325130 0CC4E48C65E78BAF9EDE7EE33E539C3A019C75418567C684B89C3F082CEDE417 E444CB3A6BDD168B66B237F92659A05EAF80163BDDED535A8E130B46D37E9A9E 12BF0E7358AC77A5349523CA3E06DB4711FB902A9DD12358F37393FC0C02E733 56839846D7BF487997D3BA95E7333950EA16B40D3C43BCB1F23FA9C8B4114F4A 82AD8A046AAF4FCCB5DD30DBE94EB30199F30FD21BFA85ED15BD7DB9ACD792ED E0770DCEC1F6372DB08A63A2272C200E0E0EB08CBD2D44AA562295AE5B675637 23257E298E7C41DBE5D7E6A9E866BAE054F5432D954562756426798B8D3E9EE9 C6EF17A510B830ED4867EDE140C2E96D6A8F54E8A359D2DB1A416DD9C3A7227D 1581A5DE7806149CEC51F86918A3EF300CCD7970FF7746B4567B560358F44354 84231CBC240D8B31F62B76975F9DFE9A6AB0FAB0D69A413C0FFAA2ABD077A969 E6669F738239B234643389ECFB0591B15E41F9686983824C3BB53667703ADEF9 48BDCD572232EB422CFDAB06B820CDB94ED1FC2BDECCFFB41E37250CAEAD87DC 237C2FF8DEA4851D4DB111BDC885E68D6369E252229253B47BF47C2401B2BED0 48ABAFD7C3C51F526097D332F3C445EA0B863D29F159714ACDB691410E0C567B B69206E34D82EB7033FBC50A57C42A758E813CD20FE231CC63D1788318DE7C22 3C704B987F701A691FF9E932B56E36CC0F7C9DCDD0AFFD56FCEE429C10A26DE0 FE9E9D2748369D68F242CCB900D314C29B1053B6EABC2828E52EBB43C3AE839F 80ADDE5CA47F8AF2DF542B34AC4916BE8FC5E2A4BB5ACBA5DFE0E67108B56157 5668CC10804CA7BFFBCCBFB14B4E61596C9154DE1F585E7ACA932DAEB061DEBF 86857115809E4CFD22EECC881F85FA3105DD7CE1A0F63133908F4C7F2BA34433 2069F3CFF23319380EBA8592B223DCB1FB8E8A9E63FC00A624154D4FC84B68C6 19A6AC66D3CAFFB386135AEC395AD9038DB97B988EC448BF19F78401BC81947A 52603603FC5E4869C84FBFC95CE3AF6AB12D41177092C047B73F5C463FF9618A E7906717F97B12333AD6A84D6D66EECED4C5444C4F7BD2B0065BE12F988B8CB6 EAF337C6FA1D422FCC6C15B93ED1A83D7BD5FC2E9DBCA5E5F2B8CF6E76C4458F EA45CE7BB906D2C24D3EF506C583DAB168EBB5E40D4C36ACDA55635B66DC43F6 B51FC076C4765E53A89CF9099C590E0183EF947545E912B5A7612795FD477F76 6A204C252539C22AFAD0828FBD16A247834188E264AC046C3CCBFFEE1BBB4C71 CDF48472F90FA096587D2E609B7DFE755C8FBDB4F46F8610AA31143D91714A3C 318E6FB9160448B0703F177B4C5B3D2D981E637B793E36D510A8EAA58B64701C EF19E33CEB2F07BD7397A2E015A4EFB9313E96F654A87D91AEEAA689D34DAA44 25A86A8A7C7892D2EF98393FC14396155A136CDAFDE659D31EF8490A151647AA B38E83FF781CDBA39DD154BB8D389C0E9858DCCED373E9FF067EBFBE79B1F35F A8FDCEF9D3FCD26CA69D3E2348E0AB6723FC278C8E56BC9D929BA4EECFA59EF7 7FB9FB6B232734705F961AC4AB5931B0AB096BEDF1B907E1DFFDA1F875C9787C DB2ED0572D803950725DEDFC60FA25FE225B566B4AF8207C2E5CED4F9C62D03A 47E26FE5B95EF2ACEB00852D2CD315126439C4AEE81F4CCB4A92BE08F260F5BB 176164B18153FFF3B67538D7514769C974834C22425615B5582542CAE5A836B4 8FFE83773B9142BFB077E3A798369966A4BF9302A6CCDB8CA2108512CE8688B9 0BAC52A3C8A8115A47C13597B677B7D4939EB392398FF9CAF232FC4C567CFDC0 E2CC1CD77EDB1A02FF3A091AC11B4E164D4E18FCEF0C27701BDA88D64CD3984F 1CD787ADFFF7DEDA14A0FCC62C52901735792A12FD8BACF328C2E3575774214D 7C10A241B3FB666F5F60DAAB08F274F2891BC5BCC405316292E8336E77638C51 CEB5CFF7A7B2F3367BAA513CAFB39F7A5C4562236A950CE5ED334FFE1E3863DE 84D26C5B4A51F5BD3B41FCE091E33BE90F8B08C2810746E97D169EB1034B093A 4780B6E56710DA778FE200615AEDA1CEC6DF1091340C108C0A1DCA888A3085FE D694B7E9D4A6D53D44750F96B823F1BB95DF0656901D2B5DFC72D0DDC63A7CCA 79DB66C25179E833FDC61462D82A0B9F1423EE85D6F704F3A084547159C32927 7A5ACA2CFCF0D3294809483A715A6096B3E08AF35AC4F4E0C38673ED0AB5889A 4640E2AF8D314B0F3200369D4FC1EFCF84BC82A2D7C453015C5B8BBDDB702DCA B16C5B197A1405431B3C764AAE1DA1652ECE738455AEFD755FD6087DF950718B 051CEA6E8E824762AF8BE0D3019292B11B16F4852EF43C800683AEBC98093B40 E3BE05EF847F8D473B3594B05FA1093961A5EF8DD5EE24BC6C360B5F7CD39F2B 76C52B8C991D433F2AE1A863F2610F8F6607FAB75FBB838B6B8E0F730EE5145C 7230C7761450EF008DDA956A6D96862FA2230A63302C8DDA63799224C1D923FC 5DF426810EFD59CD116AB24FE1D558AA5FBFE54A8019D0E701C467580336CF71 75BB87ADD229CEC4634C3C3DCCF6F94CBCA08CBEDD4AB9FB82C17182B253D0C9 93EFED9FC028764431BCA9029309448C0C1B659B97DC5ED7A0FF3E010A4E1B61 AF0DCC3E7DE4151B1C41FDF1CC6867BD4DBD80AF591FBBABC3141F53C18DCD94 95E7B52DE4D51A3F023C76A322F6DC3299CEA559D73C3F6AA7684E01201C1AA9 FEA9489C31B8DAEDECBCC244802F7A2B67D679A7D25CDF95D0CFA6C320AF4BFE 4F430B8F843F17609341BEE3EA1504CD138A0FADA15746A1624EC769CF415D51 489DF0B815C9E65A02646CEC1D9D61A91A81DC874E12D74AF43B995A6D6435BD FBFD572FD4E8169BAD184EE9FF0F3E05A2D7D2E6084D2ED6B364A4D565F05014 3167C332988AEDEE4924CE10659B22BEE9C1C4B057DBB099852F5CF4E5467251 299118CCC1D88343A5892B8C26C871FA7B33F0B6A313335FDB76FBD07FC1D85E 572A49179039785222659D30FC926D6716FE4F68F15B6EF35A59AE3A01F9D957 4E1B652BC36DDFBBDA54707EDFD1743C53DC5A25D02346D18BD61B57E3EE12F1 0AA1414E98CF69544BA4117747194D1F8399EF1CBD6D00209457AE2AD5D2C47D 30D552393F813B9FC976A048CDD6DEEE9DF809521F8A0B0A78D47A7ECD9B4D42 6313B30DD8AD5FE44B77949B9702081012AF44B3DF2A1F5315006BD50651D40B 82C6C5F05DC4BDC0BCB6F5615D53A3985B6ADD9012AF441D9FA741BB528F03E3 6602453720AD0F13942565B5FDA13CD86C130E50DE9EEA10C62F7D65F80C9F12 2A919D3EF82618D3964A1600230E44B370E3336FA1429FAD1E552AE05329F968 96E44F6BC0309109DE9776C81DB12FCD31F8B5AED01F42611E098616B240C5EA 3878875E8389A1663E47F6952F1368874BCF44B17C08070AD8E9E807BF558A20 60D07DD036957DF9059895E4915405BA24D74F3528B9BAC3030D481423E2D22D 082220D203094C7AC32DF69AC4CCC85DA1A667725231988C1D8A8F80CB8F837F 7DD9D52906652B41D63EADF2C8E94F1E6D363B0F0D3BC4B7EFCC0E02A6B5B2D5 9E2B13E1D0EB3666C242F132CEA608AF7EA5B33B3A34E5F5E2584A600A35E6B7 5A39C0B15F4DE2E1FD5A7DABC9034BDC203A28CD32F5725BD54EA4A7B8A796D6 A672FF690F22C3716E88273CC6D90C7CAEE974C0DCBB8D47EDF6BD53D7088B67 F14B81BD35E5D4770F76689953BB6EF442AB7A01DFA5A6DCBC666A9FF5F1B5A7 D3A46798F5F975076B7A8B5FC4AEDF2BED41DFDE1D5FE2EED0EA6ECA3BBD974A 6FC025234365F48D82584B54F415C88FB8715EA1A6B47674D856CF5447CB27DE 9ECB10FFA6021B5B7342ACB8B66A0BEE5F3EF7AB369A707D19C0F1C8697F7E72 80446EAEBC08749FE478FC94D4CB5373843B46F829267B14EF4C3CDB3F793AE7 0233FE898B00F189F95F7B10AA0EDABB8E7E5BF25CAE01E4F7D6DA68000B2016 6A64C404EA2FCFB89AF74D390BFD2E7BA390ABCEFBCF0EE8497D20A0594C3B52 9A6F8BD66DC7E66694F14B70FF5767A3772FF0CEFC3E8E10B0A9CAAF8773CA1D 57923503CF85A0EA4B6723CA99BA729D8A91A6C76BFF0158FF8758334BA39768 79684292CEE480946AB15AF9270F2DB77C82023CFBB8B3B27D64262913E186A3 4BC4FB7423BCBF25A26534CB52FD4F2A4D5304C6234D97C3F52290EE6464E8EB 37C3C1CCDB7969994D5444313FB6808CB2B405900F9B196DCB15EACDCECB92F3 D8DD55B0D4883EFBCA9AE74F82F94F290901F45026A6E3B7099E3CFE05602626 1AECEF00099DBB0223DAF121188BAD789E956F186A3A90BD121558DAF431B422 8F56A32831C2E0BFEDC8A96D46A9E37FB7AAED1A5302BDCE92530325C2BFF8B4 79CA1809043CED9053C20D6EFFD9AF31B54451006D13C563CEFD87AE5CF69860 0C9625ABB5D7F1FF035FCC80ABEF73AE1319FC5455EF6DB5C155C7E4C30E3253 A83F50074E448EB98D1B927CE31C55ACCFA4FA09AEAC963DAB73AB153C560518 94197A2B6BC981983ED44C5CB58E72349A6FEA79C4E6F0FEE847E4B63F7965D8 75E8B1D76D0C9245FD6E8CF5FB98E8249ADB5D3E324BD82019E2784B66F3A93D 6951317054C895B892E5F68565C9C3EDC8FD1141DA7AC7653438168B8ADEB519 236C1771EED818C5A6329FCE8CC02E6414DB2D5D1AFA380538BD66EE7D92E2A6 BB264C7DA0828D7060BC57823140AEBC757B08529D0A9E19B7BF58CA693F2EAF 8057C53451EC4BBCECEC0F21CCF82B9920385876CE72944C66F8086767F7F9B9 B1FEEEED43CF4A57944CDB89426E93E1C9264675F35C64A2334C81B2077636D5 EE6D824FC8CB80F4B0EE3784C50B4D1ED54510CAAD6050EB33556C80D4E2C7A3 8245A1C1570FEBF241D36D8414A1C9BA7074CAB5A70873A0C3739C41944B9D12 0A678E4479A493B075885A0634012F0B9BC750EAE772E18BF0A172A4FEE39D36 9D44BF1753F5A5B03606A6BF5C8893C4576D76BB6CE9068CE6BFF3344C26AE2E 49394C79E5D8C0E232BE378B6D2CCAB618954C22AD3F8437E562EF2551898171 32312E24CF0EE98AE9DFEE55096B9D0CB7C7BCAEF48D11A2E5A507DCC2889675 2ECFAA9B91EFF17734D34ABBD52B2B52607E37BD0D2CD3D22CE921B7D638267F 3B734724033AB6CC5E7E81AA4BFAE23299F65EE618B8CD3C26117B1416D39764 8AA11CD34E6A41F04EED90F3E7DCF0EE1347E4D3197C0662BD3663D01B050B3E 1EFFB620976C6168F93D9B0AD58472E2A8D38DA95C7A083EA97D9A7C1178FC3F 7BE44100FAA241367DE369D7088F63CCD63CBC54BA7408F2782ACD649F534238 8353E38DE8226800066259B657B72AF18DCE2F245D95F6D917DD4F4F5D002DD8 92E8D1C6F57A46487A361139EE0CF9C24908F595816387873D46B133ADBC5314 0666D4349189C5F7309E40398B28E4CB0E7CDC764384427AE7152AEF486D9E13 28FD1BAFB8CDCCAC5143A3630DDE392C3612503C33FB11CDCA74E0F3B191F7DD 6C1889E7F673ED80DEA3A9B0D59C017A2E8FECAAF3FFFFABD9BD3AF5CF75BAD3 5808EC5247C561D30A12E9379F00B58CBBFBEFB01B206CC35E531EDC41099DAE 1EE681618D930B69AF22F3C01D1C4E222619275E07F60D4DB32A21F99D78356D 465161E44720879234DB557B026B2FAE6EF68EFD69547025704AFB354BD7DFF6 BAF663B4858E745389F24C7F1E17310B1467D92B15C318B3F8403E3F93E8C78A DE6AFA138B1F5E3903D41649B5A46BD3DE5365AD13910254160C6D4911928499 A9D0105114AE68EA90A872875550C90317C29E51EEBF613DC3DBE5E6C081DA8A D46D4257242D57810725250F2C487F18DF04C6F8DA03494E71BFF214C9499C4B 2BC2E20E825F430CD2777848B0C3FD30F68F8DEB87FB54146674568119F59090 7F850F1960D71901B08F4023B131DA2585BEBD40C4347F753D0A2BCE0E7AFADA 2376DF7ACA04B20E95E924B15C7AA5C5230D896122B3F1F54DC5D2929DD526E9 BDDEDB883488B13A47B720D72882C4F4C22C30B9B9DEF6B993B58E26C74242EA 9A401337D33B2240487B0B700F32151765E4FB11598F1848BA14B1B6D98708E0 B5D19EE1BF22F12AE731957CB62390F0D308C11E76145A8B689F98AAA28BC85E DFE7767527035F63EA9B0A6DA1A2C68000AD665B4624D95121E6F576F9879DBA C8BBF30173FE5718DEE6094E0BC72DC4B758206A7F7B6BFE04EAE51534B146BD B5C19C39C7C58FFF6CAD5B833DC8692D18BFE44CAA49F5B7E1CF6FE127309517 4FE8A72096B102C49A3E6FF3F022DA5DF130E7FFD130A643A4283D40B5126186 F919B32C762263EE26395F5FF6F9441F2E8B0435EE6895734DE2E73E21F61EC0 A96E02C265937471908022C1E05D5CF1226EB9FB9FAAAB394FD4F39693D6CBFF F11E2CFFB83F9131462113249E825F90DDBE571625217D03CD917E9E56263362 340FBA2C87599DAE0C6BA99A78FBA330321E2860679A688C3DA0990E75D12F97 9E2BAB29EC0567881E6D73B155079DA06F92CEC7D154A9CBCDBF7354998008C0 0B6B2A4CA29AE7A0E030471F5E73FFEEEECD0375BA50A6D1BE495E43D59D111C A643C8A3D36EDF9CDCBC7E6EE87C6F3DD34C38D94C6B26311280897CEF52EAC4 62A99A001BECE84360E696998C01BBD57BA59230368EF7BC88C42B28E10F2E40 3B56E9C028ED637CBCD134C82731F2F3FB1295FD859091BE9656B9DAFA2D82FC 1B72BA70DC153DF73FAB3DC1C27DBE565AFD26322AA2BE43EF31AA59A98DAF73 B2E57E166C9B0723A497715399906C70C56237C0D78D4DCB4AAA03AFF2104188 B254AEB53FF7BC3FBE4795DCD03EBFC1A1167752D0F890CF9A51371F4D9B1F00 4B148CBA7E1BCC9F014A64ADCA7BB88303AA789B638108AEA78A175694C55FD9 BF20F85B443D4DE052AECDE558F9635B364A9FB1CF3B19FD593E5079011A0197 E26713C2ADCBB0CF4226DE51F08450C623D74E0A6CD4FD00EDD43826249799A1 E08418B1C9276117C8920BE3DE0D52569371E723277D25B7084E2486D04E566A 9D9080CBDAF63E8E85B75FBB9B49113C4872B932299C861BE0040CC8B00CEB16 DABA30FF544AC071D0F706BC49BB69432A6084329CAE091C157AB1A5612EFA3E F44DBBC667779881AD4652068CC1AF4DB59AFAEA65B38AED63EB27009B40D74E 4E48BF49608804F8ED72CF2BFCD61DD6FC9F585BBB814FBB25EF6BCD35E17C1F AC5B08C843565BE04F6DF62BF45BBF6784FD27026BEA230361C6071E8F87067C 77429857921E766081D901836951E0DE8620C224012E15CFDEE90917B969EFE8 D885ED05A5362778CA57B794357FD01C3BDABBC0F60312B166BFAE52B53BDCBA C5E9C7E64B337E94AAB38ED1F02B5F76FE3295768933E149C0713F0434C4CC94 77CB43DC28DC44BAA6D0BA24EBA4E4AF1A5A086EB82BA0D8D85AF0C82DF26155 B0CECA935F0979BE2012BD820C74701B1ED7FB3FC3AABCF78D27427FC49A4B3E C07E3E6A84DD8BE8E16EB4D51475615A180EFABBD95ABE9D528CD2941D90D1C7 2E255FA2BA6787316772FBB87BCD82BB636F738B29B14B23C5101C21E3B1F71F F102839F1BE630683575D4C06AE914D006D7580100F387B0A05C85B82E32E0D8 A00819CCF53C803A6D62CC3B6DC73374D5CD2DF30BF1DB26771A3C39508B56B0 D37F900AF404ADAFDDEA86BD1FB13ECE9BD1272579360014965C40CACBB8A6C9 B3A67A7CFEEC3ACC262EE5331FBABBA77767D63DED4B28D2452BC3CE3DDA08DA 0B6003DE5F7C1CB34EA526FFA4B77D01FCA063488B818D5FA1AE1AC92D53ED57 B645E455441ABA137E02F6A3081B9DB5A91BCB6670B6B6D915F4533C8909E8D1 A9608546BF08AA89E35A1049B194EFBA49C79085122B8D39BD7FC55116553CFA 7FE67A1B779D1560F0DCD2812BE902DE19FFFE4FB7B799674824271BF93C53A6 2E1EB958E172281518A58A0A532011184BA2A031C9AB2AB69385B432E0D0F4E0 C2866D7E792C45CDEB194D1300CB6C4DBF85E5F282A5D19175FF59719C7C502A 7FF70D6F60A56F3099479EE99D378C7E55CD216BCC66DD482CEC7B12E6DB08AC B79221AD07F49F4ADC619D41840087BAAE0596CCDEEEA42256F49B3CC3B95B0E BD5BE710396777A57D4833D55C81A94E9179EE9CF05A8E24AE388399C080444A 1A981EFE9DEEB86169BBA105B28112BCE7D1ED21E9B897B2670398DA7FD218FF B3DCBB4A0C106341F4FAF762A291146F50D9B917CDEF68FE0078DEA29492A3A3 D378F8D9A740E5CC45D5057A95B7D880965BFAAF2F1C1752709CB6FA400D377D 851E8422B311B4C6033E677C4348FD6C750DF260956A100951CE2D8B0D436DAC 8F462EEA0CA3143264EE27B9D0965B107F43DCBEB5404A18EC5F2AD1F417CD3E 80DD81DE33AB0B1A4E245BD7EDB2A565B2ACC47594C4AF7FA54DE5CEABD426E1 3F208412A0B4D8136C1A93A5A8034B3D8AFD6D0365E11E984D61B1917E06958F C1560B3DF5EE5FFD82F871E2A456F3923E9CEC5BD9DCEBFD4704819ED3FABD6F F3F335417E74F746574A022C9629404B582C72ACF218C69B69DA828AB8A7A48C D3614684F29F38307A6D9963375FF41284D90E0D08A55BCE75F184A15007D4E7 4901790C25D6E9A15A2E9147F0ECEF7191055996ABEE1CAE6421A12970F38E70 CDAEEB87322F7B9C174D6C0DA2375C799EE45546655ADF7DAE68037DB50F524B 9B90BDFEFAA29A34EFBF9C12B15B55D14DA97F1FC71C4FF7AFEA72BE7AC12237 753713B563981D4BEF624F4547FFAABFA9652CE739C8516BAAD532F633A13730 2E4EE456F2C293A9B71D64A39E13D8BE4C973450EF9AD0424C914532F6DB55F1 E06C123F907489C114464F5ECCEAF46AF9BE08E0CA53ECA3166A62A64406DEBC F876E1BDE7B6315E576741193330B8627E1DF193701A34068536C9E29AE54FE9 6C8DCD95BFAFA7B1C784CE21B9D2FD34A62E240489A25BDB7AA5D8E83A418782 9D7D0089DB1CDF8D0923C0796807BACCE991A61480BE363C1758ED1371C12D5D 887FB5CF58E0A1458A21A4EAE857A7E106CBC8BD9D2D6306A758650CBAF630E9 07802DD3247FF11AB308FEFE0866E4498A8F2C43E463748CE41B10F275AC8656 28AE6E1745900B0F8061C2838F0ECCC42A9F4F58EC3C79530A6FD8C3CF58CF4B 6CFD62DC025F10883CA6A76BAB9800453DAB7032819E28352BA59874600E28A4 055091ED6C0FE5D02BA658F0C5B27D80BEEF4654AE3E7BCAF7E0C8217C7D0F0A 7A90186EF63B80ECC50465962FDDCCAEFCC59F469A99679FB57B6C0FD71A0216 44D8740693B4D864891896BB37907FBF8C3FCEA39A5FEA59E5958CA07580B322 77AEAC287AFAF12C000367B8A0AF1E47F464FA1C5883F08158FD063F9493D5A5 896D6AE149DA61B6B80F0052DECCFC5CBE8E98D9E7DAAF8DBB4669A0FD245EB4 958AC973996FAA6D136F25D5EC2AED8F86C267204F1396C24117B81B90432777 C940E6672993080C19320F9FEB408098D40509E3B0096236609F6D1F433071F1 9CECE3EE560C8B38C997FF659AF66413EC719F80FC9B635E4F3A8298AA677128 8FABC7C3EF031A8CF0D18C3E20D9675D595AC266AAB13C31BCE772260CD43DBF 6DA8F2BBA5A1AF9B86E0927D0FD6A4C54A22C784436416C0072B3A412B68FDF2 DF9CC1326B6B0BEB0B435838404F0112DEB3879E3FDEC2DC4D6E394259FA1152 DB1E97C08A8D60C683841AE7667F0CDB6ADE22BB126CB02DEEA16365D771E316 8EBDBA2A637050B4FC70C905468FD4349CBC253C6955ABE5A9E624CEBA7718D9 15DB2602389D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont %%BeginFont: CMR17 %!PS-AdobeFont-1.0: CMR17 003.002 %%Title: CMR17 %Version: 003.002 %%CreationDate: Mon Jul 13 16:17:00 2009 %%Creator: David M. Jones %Copyright: Copyright (c) 1997, 2009 American Mathematical Society %Copyright: (), with Reserved Font Name CMR17. % This Font Software is licensed under the SIL Open Font License, Version 1.1. % This license is in the accompanying file OFL.txt, and is also % available with a FAQ at: http://scripts.sil.org/OFL. %%EndComments FontDirectory/CMR17 known{/CMR17 findfont dup/UniqueID known{dup /UniqueID get 5000795 eq exch/FontType get 1 eq and}{pop false}ifelse {save true}{false}ifelse}{false}ifelse 11 dict begin /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0 ]readonly def /FontName /CMR17 def /FontBBox {-33 -250 945 749 }readonly def /PaintType 0 def /FontInfo 9 dict dup begin /version (003.002) readonly def /Notice (Copyright \050c\051 1997, 2009 American Mathematical Society \050\051, with Reserved Font Name CMR17.) readonly def /FullName (CMR17) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def /UnderlinePosition -100 def /UnderlineThickness 50 def end readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 77 /M put dup 82 /R put dup 97 /a put dup 98 /b put dup 99 /c put dup 100 /d put dup 101 /e put dup 102 /f put dup 105 /i put dup 108 /l put dup 110 /n put dup 114 /r put dup 117 /u put readonly def currentdict end currentfile eexec D9D66F633B846AB284BCF8B0411B772DE5CE3DD325E55798292D7BD972BD75FA 0E079529AF9C82DF72F64195C9C210DCE34528F540DA1FFD7BEBB9B40787BA93 51BBFB7CFC5F9152D1E5BB0AD8D016C6CFA4EB41B3C51D091C2D5440E67CFD71 7C56816B03B901BF4A25A07175380E50A213F877C44778B3C5AADBCC86D6E551 E6AF364B0BFCAAD22D8D558C5C81A7D425A1629DD5182206742D1D082A12F078 0FD4F5F6D3129FCFFF1F4A912B0A7DEC8D33A57B5AE0328EF9D57ADDAC543273 C01924195A181D03F5054A93B71E5065F8D92FE23794D2DB9D6295729076BD8E CBC0F4C1BE246922D2482233846A96D867B66D9CF25A1DB661141D36B8506E61 A022F9EF8BC1F2F674EDF1533E67A78CA29A612AA9268E113C5EB84DA56CEDFC D7A111403E6E2A8682DB04368889747E003A124395ECF0C7FC81218552EE7C6F 60BCFB4120893528670D0E8A4117EA5676915E3591AE5652D003EEF67818A41A 8882E102AEEEBECBD15DCF632ED246A6A58B6A7780DB6F1F9AE3FDAC8344585D E104F2BA2DF06D68945889A2A3B6C262FB53FC670BC5EB7C56887FBFB7AA7026 84115872CFB0652C6BB330447AFF8F0F665EFD6A41D6DB6877B08052F402448F CB21C26BDC900636C99CA347B79AA73AFCDE9762A992CA3DDF7279E5C50F453F 52098529850AFB1F501A442D6A02E0A2896F81C8AC735AF1E7EE47208B4CC944 649DF6802EEE813F1456205C6126D7D0B1821AB62DD65468F3A30575E491623E 0054E2E680E4402E1C8C538DA389B81603BE88D6DC287A076F92B224CD58A0AC 44B8D490197341808DEF243660971F444A560C747BC6F52707ED42A99736ECCF EBCB694A561C3A70A319D204CD40D402FBF937A00BBCBE85DD26C9E3F91B7D10 D85B9D314BC3AAD5A58B107F5F341BE2C53490924142566417D6BE03BB4977FA 6635EA58DEB9508E40B9FFAC75FF44C683680CF242FE210519C9BF92483B0A54 83F48341318BE16D2F8C988FE3DB2E7914581F579D5E323148A31E4ED03BC24B C990372DF5F3B0C5FA32EB2CA4FA0EA33316569133C87697BAA2292E685C26CC F8CD40A2366E60B47D47CC9D0FA29D2836011376A07F78BA7664DE96E775CF45 9BC91559A063073A4C2FAAD0893C517C5C46A1425D07EDCC2B57162E3A45103E FF26A2D2F98B194256A4B052AAFCC08965A50EECD7B9E8F35AFDF7B6568B3983 8030655E7C2BEC961A2F20539D617626E8454E3FE9EBD3EFCEF7F63498441DAE 16CB509BF239FBBE25EFEF07A3E16C9C71EB8D9DCB8403916FB40FD7F4E1A52F 72F2DFF94FD14D7D49FE775390C17C37C1BA0CAF35CF75D682B7833A83224158 D54CE962CFBAFB1B2CA50B60CBEB1F8F58DDB2F5470C355ED9632342D9382AE4 5D33BCA3A0A25EE9E5B39BE5370E7F20684C664EDB48E7973FEDAD9676F9EE8F 701CD4D8CC9B9EBC06E8C86EB88AD56E15CEBB8E1930E8F711CB6E01D5D14967 D7E6C1BDDDE2C4D00384EF4CB02877DECC27AD53FC981338977BA0CC0257CF7D B42E9BC91AF45D9722461EC3CD9DEAA8011FB855FE14B74BE0A102008EACA2B6 0E287BB4F466FBFDD6E65A5262B9322F95E20DAB875A10A84572D982E6FC7ACA 23C0C37E5EB47B8E69C07507B53CDD98CD1B6445E1699CF35B3DA3E0DC56BB76 F997C40E2ECE47DBDDB707EB527055960113F2DABC87FD9EC7D0AB36B400CE33 0D54D4F197B2830B43DF0AA802DFB2BF747A4C44B31FB708B2C8BBE1955A6A28 379C91AA4CC065A50098AEC0B837E180B76801865A43C74859DF18FE1DA1483B C17843BF1C7E1B11A8C6D8BB8CDB1D552FE6A1FD0A696A8F7405F2320F8621EA 17C1A32056C45A9ED35D2BD12D02D8B26489CAAEBF4EF33B66FF4BD9B46E4823 6395831A8F3366EEA0D0EA88D612DEBF63DA7FAA24DA979ACC1A52544BCAA007 6C39946BEA6076ACF45722B2B8E4D0823EA2D12B14A98367BB0433A21FBD9F94 18DF298C56F67ABC9DB1868D431A854DBEDF8E1F49E359A545C75A7AA1FA4D5A 50F1EE6B45FC68ABF65FFF257964E4E50D8B0C1FAF498DFC554073697C2F219D 4A68DA9E873B270B9C56F0DDBC9927ADAF9203FD684DE615F68C24ACFFB44690 89C0D5322049FA69E7FD00EFC9C9B2BD177B5B339907F81C31496662847BEC1E 56B5DCDF4FE618970F4268F475B2EF7E0F28CC986DDF098E59DDAD818649CC35 4080C0867A884B8177A6880F06F1E5CC130AB4243EF8DD8032FCF390765BAB1C 1F0C9728EEE261A09F8C1D7ABC7A6B1550551BE2A7D19D45B656650DB00B3A5E B3E1186043E173BB4DD5EFFB379654F88146382AE3F7196F099BDCD6D245FB6B AA2FA9B6CFBC9F0CD52798DDF2F13874BDE5B124DFFE0DD93E24C9DAEAE4C3BB 71A9A13AE2860F620B4EC789F95221015D9C510CB4AC775EF69DB9E32E59C896 1AF82C9F0DCDB4812A37761859A3D3BA0CA57F244489C78065346FFA78F5F7C8 0B2E8CBA9EE62FF5C27369D0BCD52857D40F1FB8F8A1441B83565A4150AB1945 0B54D6E49F66389E43096269EF5CDD39526A288C0CB81E324E75D326EC9A182F 2CD966368CE300B41873B08E17C3E6BB51804460D2562AF5A12339966F44CD09 114C6809AF246B5BA6937631842CB9417781A58944B6BA4FCF961465C208957C 81A662D560D0F81BD3CB53C06B6D979F04F6121CCFD5D52702CBF6C70C01EDBF 2040AAB9CB144321E68C4010E0E98CCA2603EB55DD62E881DB621C37EA4108D1 528ECC7A0121B57C6BB1E26F8AE7161ABA7E88256D2D6A8B7CDE2E730D137493 3FF628EF6030DD2330D747FABBA03B44CF600418C245C388F33EC5559E7313BC 4B530C4FC12530D38B27D6408548F25FC084DD0523B27D29D6518D3115AE7755 37162CFD4CF528214466FE525B13782F9C3CD78F3D6C7423E63A134C0A371F15 10F4ECE1D482C647B563D3D15586F80BD9DF7381BD53927825D5AEAF762E1CDC 3BD184F345029A95B3AD4D1B66E79AB4F0809418C0CFD4D503457A190D02F134 3F57FC04FF655AEEB783D6791E4EC300755861837D3D50649F6B7F60766211B3 8148F8E575E28D6C2DE75B15E722ABFC6DAADAE53D89FD295352781DCC2CFF6D 982F6DB778D6FCBF1B7BDCB53F3A23AE6EB499BBFA96E8BE04C3C8E5B660EF24 01EB842DAEBE979F2C2DB72AAB4D21627063B1D3C6CD40944E4CB81655698FBA A343766CB22E392E5DAE01DB33A00918D6DAA07F2F38B336A3C5DF3708865E75 0DE04D3AFBCA27A249E97377D5785B4E28EE0E93F7D353619C200DB967372ED2 153BF8BE945474266EB2FD30F80042A11B7E3586DE4AB1FBD4A741D36DE583E9 1CA25DA345520AA60634EC819E7EB493CDB128BBADEC3890F055455F060A1100 D5A41D7B180027E08AD6EE7E393DB9F83799544404FE397F557773BE6A130541 157C0EB37E036C94825B5090EF85F8B4E3DB72895D86687758C20EDEBD6D1079 196E9949DC6ED0113571C70B150B37E446E319EC54D44CC0CF6A14760953DF4A D0E1F33A54D240E236AB63B35BA8E071D77776BE5B9312245F2C6E4FDB4312A0 0D9CF723E7D9A3D8546C4739C00C301A89ABA60A02757AB1A0AC40B24CE6CF12 5850485B11E16646D7150795EABAEB08364A53161111F46A7BC3423A0D3BEB69 BF15726C1F8363914945DEEB29CB8766328318AF3B344FD6D77BBB92BD7FD161 93356493D4D8252AD125708D47C124E44232FB2BF7DD75F87889496DCDB75D03 F58A57D4122CFC194B75A9E9C4789C9A33C0435FB4ADA16AD4A6191928D1663D 05FB8152C0AA176FBA4755205F8A66713404787070757D3721ED6E6D55A59DF0 C92BA8F05EC7BE05D0A2E66DE85E75373483EA3BBEE0F0DFC7E2FA5FBAFAB118 058D095AA71FDFC8AF37E5A98406B64E58BF476C6926725D7EF3C2346CE3F662 1E5A4A18D966479A37070859014719456EA2C7F23E68E1AB2F25ED3A0C00A18C DD403506923BC983F89CCA125780DC76A411472E38173BC0DD4CDA7B43E13419 B5AB0B9A35E77C58BBA12AA4F5C7EBF8A29996B059E4FAE6809565570442AEE5 D56CBF4407E1CD9A4398B1F3ADFF023F64B230E3D29F526B62D964F5C8DF801F E94295AD85BD9E1C18E6327977260A871E921C0745CA06A263E335E344686E7D D6FE3ADB4EE0A7E462F3C00873C3E95D183CCEC71C0E5DC1D2FB310B28FC3611 67C23DE336C374F72368F4973052B48E39969305791C986E6EE35D0350571860 3A8ED849712CF21AEF444BA390644E8646CCA16559BA4642A5800827A0DDC453 7CA0818BC47DF6348A5209A2F0A10CA39840CE6346E89CA0E842BE8692DEF25C 4623A5A0E0B98708B9492E9F564324BB3872D6B953CA59E9F393C477E2AB85EC C557D333E88C111CF995FB79D9432DC94C2BDB3BFEE13C0D7D1BB920DAFA6158 8548447AFC65CD5515D5021E0ED7D213B0C08C35BB424AA91885CA023D7AF767 B83E619B15DFEF5588D2F0564296E14B5A6ACE03751E1016105C51BE76EA5ADB 4167BAED2A8899031FD7BA05C410ADA25ADD94A787EED1A7AE133B0568B1DBA5 44B41BE013782CFCA3D81E8E8210DD506ADFCE7DC7E792EFEF438221164A7D1B 5E7089F476240C5F94988F081943F24DBF7CC3D1E58CB89E1C0C1624682CC3D8 C95815ECC9183A4B3E353C7F920B7E64086E01672DAA7C8A81319BAA03C1FBB7 8E5E84CC5BAE0E107754794C755B7AF00953504094E1A9DF357D51B578259613 8D26F0BA26AAC459BBEEB90BCC98B865EDD26AA4DF533D6624EDAC762C446B6F CF9F86DD2D8989D4655775E662B93BF51805EE3CBA0AE2293D95F166E80973CC 82C53042D0249C598B0821E9E7F218BA6114EEC86C158F277934F2651490B723 7F0D0288560DA5BEBAFDDF243048E590871AD18B3B220EC56549004DF122AA03 BAAD6971D790BC644369FDBEE74A324083CFA9496C2A333774F06E35299242BC F4B26578907CC5AD1893613F2B8622CFBB7B55810162EEBFAAEAB2A6D69CB72B D7859C73843E665125FF450631F32E64F13A6207F368103C7A7318DBAF2560D0 F1CDD83C3E48CB30C62AF1E0896E1962C655D9ED98E1BB38477C1C60ECDB6B95 067D3A638AD43EE886338F7AD2D2A574CE6FD2E21F6FCB4220EFEC85ABF8272A 82081CE70E4390A74EC717F1DDD168F4A4A080A79EE2ECE0F98A96871DA4B52F 78441601AF47763C2219F5A167604C32F478D498835EF3A6167936994F7C7139 3019FF43C97E7978D3CDA641C1E391FEA572D308E759F28DDE2B40B5BC207A4B C5EB6A93EEE26782016F8B6534420BE4D790A2E1A65B6CDBE9468152230384FD 14E9AE84418A44F94E6825DD7D77D0BB5486DE26A692B3DA96C81FA4440C5D44 8E7F3CAA9B8DF38F87E09C4D78841F629F78F4E7CC8580CC44E59E5D9AE8B2DE C0682F793AE7AEC12A8AE688636197E8A08FEB70EFDB6203681A60223B9B0D39 2DA656E5E99B82130D4BE38D7AFE18568DD30B0CC3C73C1E2914ACE11A65334D A9F18135E7B86157122CD221C33C62012FFB16D2D2F3473A53BE3E7B9FD4303F 66ADF0B07155C7B9B002EA68C6AC7247EB3CE7D2670A60138049DAA964F86A05 22983EDA7242E6BEEB90DF61C937399B2CE1061DF1E551CEED4A80D86C2D4649 C9FF9A1F93E96773CD392478D5B70D5336A03A274E0A6EF44BE8CB2274324142 706BC2E340DC944339D647961FD7BF29944503B4AFCDC69A706AA6B0F6AB2CB5 D220A96ACC1EE5E7826F6F75F044224E5260D581AE761AD0C752A06AA03FD935 FAD65C9EDD4E5505396E331D45DE88F0D1A4303D766ABE0702C17E2A7F53C0EA 96A4DEC5A6B6186F5DBAAB05DD78E38AFE630465BEF0EC66ABA9C1C9232214A9 795D105C33CF069F6BE20B179F4CC9F484AB63ED25C1212C457DF62CA0D56E20 608572216F2D4C09010B03A8AA6D287C8F514BEEDC1C912552CC2489858BF4D3 084882CE4F4B6FB9EE27C0168671E6DA154018ABEAD013C88E1D3EC918371251 63D95BA0FE20212C20AD3F4DB614EE36B488A3F55D94C1EDFCA8E68E54A1EED4 7DD168DCCF07C3DDB5E2B499DB5635C5C5056A7438120DB4839427D07F96AB8E F842E285243E40259F6DF029E27779CCF3D3BD7206B2C341045A5A4AABACC2A5 91C6830FE05ACDCFDE99046F16F2AC183426ACA4A89FE5F09B7EB2F811BB5FB5 AF073BDA2886070B2327D582DCBA66B47E8948C3BE05E837BE4B81402A583403 74FF9E938F0E9DC3B1CB81B93DFD4070F9EBAED40BA570DE8F9A5C2C0A097311 22A6065139A6580E332473E9410D9F4C734794F79E41D0D437CEC7381919DF6F A24B170E2BC97A6396A4E3AC3D844AD6E2B8FCE1C6AE97DFC5319F49130C3D6F AF2541EB2384D5D4CCBEB976846EF8C2165DBF706112BDDDEC9A57D157F5996D 95229FD5C71B885D16B177BAB06B9DF5740A45C2A005778EE879193290419C0A A4A339029E37E685B8A05B111DDF94AC19B1D85C8E6026E57E3D3B373C08557A F96E6FE3916695ADFC1F0BF5D558565F42A71C61ACFEFC9026424397F0646642 7EDAA05794BCCD164A645860B57EAD53CB6899B18C6E9496EA4DAB0A0C272639 DEBC4FCBA94B3BF123F7771F602E7667C8F56E12429669F2219C7D8E294BE07B 71E88EA62F5616CAAB7C0198E6FF12A348E36B306FE2684A401399431B6A84CF B46EE4BAA0F4099E65E9AF3B70274EDD6B6524F4FA38C23F9CD5273EEDC8C6C3 E7312B6E0497C05AD3F3C246638F01387CC11DBCBD287ACF54D8E24759F51415 35ED64132EF4158F54AB9F4D567482B3057880490F805822F71E7E2C52F7BC38 8B1F803AC3731064B90E5E97AA3351D17E73DC2FE526CD6C91158636E395867D C1150FD3BD12493FFFB813AF0D08C8ED0B7418A2CF90BD5B783364358605D075 5DEA95A9299C0654EFB28E2FE8A41358A0DD124D0314A27558E42ED5F2D74BB7 056DE04D2CF13B9B804A3CBBA29BC155A3F18B8B48283194C33CE8291677E1EF 0721138F8E0409D49BB99F217607586D2DF00C29A25536E21924B4CF6702CF85 C02DFBFD2AA4DE3DBED1D2C02E21052A8D10F96629D0D18154923638FE0C48BD E2DEAF11663E20717EA77A5453686AAA39D6FF7919AF09B1AD956FDBF734F49E 262F3076F62E77BD45122B55A5913902D9F91C4246FC235BA9C0FA4A96994291 830638949BED423387DA2D455A3C9122484EFF27F5367D1D3DD27D207D973815 965E1CFF36F43C653ED406F65348671D9FFAF55BA3FC266D438AF473181B7801 164EA3F04FEC870743195B3F467DE36B3719BAD9BF15A18637A314C887D46673 445BA3C212749B0A33136FEE9FE2C9A13D62E7ACC96378D257FBE0EB06AD4D4E D41976AB92AC720DFD33B0677062C32E6F5C992A0324FD26E984B5341A58C190 D20EC3F1144697D514D9157340A6C9F82E62AD8CFDEE59F6FF86C6250CE33D6B BB82DDB4F65BEFC6F6D0E4044F7BF307CC346E2FFD191846E3CA288C6F91CB71 5FDE855FEC5E38816CC635C470BF15263A10A409F0BC4877F7E6D4C223E3564E E7BB5B320AAA5AAF4F32528F7413BFB97C70FF5E6843E1FE501472129BC9758D 7531BE576C75840CBC4CD3E6D9E5FF52559B68DE6E7827128BB2ED1BAD43F36E A0CB68C1A147A7093EB02062AC5492DB7EEE08B1BDB187E15339A66269E459BC 67495937B4317AF66A498923322B087ECF47B601C26E253D223A784DB2D204FD 0668BD403A73723848018B7C86B627B9AE0BD9038F567CD5F670CAFC5C4D86FC ECA211B713ACF8C1370191161CBB6C2592E8B9DBF3471133F2D9A60F15D72F9C 5E5539D59A6A7E124D9A38A6FF6EB7C71990716F88E1888295584F17D49144B2 B57252D7D87CFB7BE009E0E1AF68C57E2041CB837A1F9DA290FC07240D616876 CBA29ED23952F977F27ED97503F6C6CB48DA6611E0ED9D90FA865D099740C6CE 8A5DDBB1D6550B208321C365A5104F9ABD66A9238B8A2106AA74CAC58D1163F1 DC4A62013C0F6DD8A3E8E1A6CC6E553746D570A744863FD8EA705890890AC5BC 2F0A068C740572F045B32289A2AE66CC44A1C13FB8BBD4E1834995731D19B47E 7C2FE360AE79DACB95856B01EE39EB3C7C9EAEB3D47348C47D928BC883B8E760 6724D80DABC4D736411942BBA8CF08157F21D63C18924282193C5C8E44E09048 FDCB8DB2E01C8A496FEE2CFC19A3A0EACA508237C8BD988ED6D33D01EB548B14 61A546886AACDAFB7C8CA69056B1F428D725429A5540F57E3CC590A42542431F 82220D59B3D6309952F77FE43566F4893C6475A474569BB1CA0B1F4D1C8F6587 F15E2678B2A8BCF98679477C99CAC1200D868A4BAF9118E04C70956CF9C6E435 136A89F68FB40EC6EA37087950474A6B9FADEA03EEA82CC07DEF62EFBF5FC003 2585945578672E2C3E09FF08B76F2A5CEEA68624A95FCB223A84411195CE8FB1 BCB344532308E60F2F6823DB1E2C926474D4597595C087421A091D672A62FFF7 418A48F0B5A40D670AA31528CA2103C7F4371F8FFA06312C5740652F5158842B BF2AA70232D4A20ABAFB4EA37D8CCDC517074B9FC8C3A19D49A05973021B8DA5 801B1026B6525A83EEE9AE3CFF7D0673929E173FF841E0A23078AAAB81CA79B5 AB204356395DE8C33FCFCD1BCD217E344379FBB364CF9CFD0442A0547E665419 0BFB6A2D8A584D647CF2F09B992EC3B91BB74C89F7B6865B23661E5796140B3C 40512FE533198D5EDCC0E10D868864572110B889C49CE1610D79C91EC6A9EFAB 8AD99FA5599987D75F938BD4CF8FC9A1C629AFFB31531A021B0BFA4D53A123ED 97A963375EC2CF5815604A003C27BD2A47E8F4450DCF1599B610A2DEACCF72AE 99D7B1BDA5F0E2DDB7CA2E8D593DF19EC69C250AE4582742300CA9667D8B0A1E FB17355894D3D99789D9A53E1899ACF940B3C6F57AE93F1534DE0F44F78776DE 72426B736677745672AFFCDED6BE21F2186B5DAAE8283AF84B13DA8F3C19BDD6 64E29D68989056AE847C7D3D93177D04DD57295053C943DCC35773DDDF53AD45 B0ED6C97CE1ADB796AC08254EB10D07500F5CA3BB0A6B08F5B110B7201AA514B EDB2D7F5765DCA96505E9503EA373DA4EDB8609BFC703855F9A6702E51CA8BC6 EA5FF51EA17B3C38694872E6B62B9CFAA40D2A62F5E55572AE85D77F05794C8A CFF78741382A1B7C7A91B935D37FB7FB9A3CB0A1C0F026CFD630791D4BF83FF1 D0B80A449DEA34A63D7D8633D0455C50E35F759C39A7E7EDDEF9587CFCF4E484 131D7334F73C84C92E9D1C64CCF0CD931B0276DB69BC83558B095C99F4A22F0A 6890A6C3FE013A25D533CB310D784204A93436BAFFDDBE7D1FF98150C642DCB1 1CF9C6E16B39B60C419D5359241724B61987CB8C203AC8B389B3C114420D9012 E280829FDFB631C618C6C5783467747E7EF4B416E9235E8A80DF91E4D94AFF64 21514CF7F189D666DFC966FFB4EA720521B9D29C89BD121ECEACEB36611F25C4 F0F14F883648BDC0B5E7A1A1E07B141A6217604333F64873C72503A1845F2960 0E998340D684BAD183D8632BA7663F58C8D083D1DC0CBB5D8E5661F4652BF7EC DA17CE427F4BFD8AB2359FD9D7D0007128CF269F8686C90CE6E7DB533D9FEB55 A1BC7DD819A401488B3C50DA7334E31E8BAEF479385A97D355C6AAE1F9247C74 2517D4A9925055126A324BF8712D4A6C380ADB6A5505850959927920E20602E3 5952F5584B092371F05DC9BAEC295E886D774F0248A40BC2DF53F2AD0C8E96CF 68C06EB5A18CF4035C2A127C83F4930D5E5825EB8CD45A2CAB17865F8822465B 206E2A58A62B0AE5C53BE55920AF12098BD44451164A88A77ABDA238DBDB3032 4F35E3F41FD27AF981A895899014974EFEBE6AA497B3B1A4978E8A8BA4F83F6D 4588E27C40343E1E92FCE569CFEEE361271908008AA37C17B84F9A7FB32C2E68 C5F9A8E209D3B5710858C70D1580984EE1D08179ED29E891C5C9443E4D8250E6 5C478DE16EC67291B990FE258735C9482CEDE8DE231A07EEE88CFA0266A03A91 7CC273451A1629E98ED119DA8654422327BC19872E1DD346A7A160C7EA8E450B 5F360F594BDA80EE58D83509B2F97F827FE75B68522226EC800F9DCCEAAEDD3D A0FE4E11E2B25E4228B2F5CA09A10F7F44B0784523D3921491EDA940518F9435 505F9467F5053B7F999C7382C0383B5FB05E346608F8220EFA4B3530D6728D85 F4D5452F57F363F804ECE09FCD9F113694814A23E1D0C18FB0088BAB53367093 8D262865AB173581450BCCF674025C8D120F45AB013656B304EE706223DF190F F38B2C572680DA406FA44D70EC99B9EE65BA9F921598F37306FD3747828C2DD2 D7A41409347EF60ABB67F9B4EE51CA3E105B536A19278CECBCB5927230052580 5F9EDAB7400A7E80CF212680309018DC7F4079C03F256F7C2BECB4E6ABCAA0E5 4B0BA555064186D54287D6697ED27571D5F25A0714FC84373DC31B3314BE10C9 3B1339CB106D9EAE7C8A93CEFD6253BFE99E4B923AEADB536A8F70192A541F67 F9191C1D40490C3962143140AE810D9890EE34D6D4647B97B00AA23E8B64B181 4DE3A9760254FF89A9E72DA5D1B4EB434017BD459FCF895DEAB7C5CCF229C7EA 9A58A3EC1FEB8E557626BD4BD7670E0F634558054CF059F7F4B5645FEB30BEE2 B86A4F0931430F795E00F4B1D5B657323B04E14725765DF6719E0A834DDA5CB6 3B70568FB2B239BE6DA8496509A4A47F10EB33250AEE9ACE66D745B7F4AC1EA3 D3D039F8BDD894C2A7DF5B53F9AF8C741298F408FF7895D216E8F9D40FD8F180 258CDED0635AC4ACDC7D82AD2A1FD65328E2889799ADB5A7D2C3C0E6DA05ACD5 FB8E1EDC0AB9F7D6EE7C73D673BDFDF2380E02B90EEED06273E1E4CC71BA9B8C EA1FEB47B40214B17B8A348E9E9A36EE65FC3C5AC94EF2905850AAE2DE31B018 6085FD421D031C9BDC75DFD0C5BB0E63187C6C3955809E08FA7288011EF309BC E333290FD93FE2E874E0FB7C063A518A59B7C5AB58C71EE0757CE3FF69028051 A5428B91598B9C1A2802C9CD6F4B229AC6CA57D8D0EA7D165ABFD6269589585D 1C46F540BDCC3BE671CB9476F10A177B7F71B7A5AF96214E77C35DE27F204267 8BA0F2BA14A1E9C04DF931AE773AB14F077D3360D1D5F81ED476310DCECF7EB6 BB21F5B15DD809A83B3D8ED95A68F0ECB7A775D3B87067604E02700B2605FAFA 2432FAAB25F0E965FFC7D92FDE607DD3A5776D7EFE4609FFF2D9CE71BFAA9408 D6CA75F92D9FD9389EC178804EC9EDB14A3F9F65CB83B5F2EFECCBE52E7BCD61 E20BD4B2E4085C237C3C37398618889D1E738EADEE4B7819661A00E520EF6481 2B5FAEA9DBD18851F2195CF5B6FEA5C5025679170AED4914F42723AE2C5D623A 3A5715EB6E 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark {restore}if %%EndFont TeXDict begin 39158280 55380996 1000 600 600 (cddlibman.dvi) @start /Fa 173[66 82[{}1 90.9091 /MSBM10 rf /Fb 139[51 51 51 1[51 51 9[51 101[{}6 99.6264 /CMTT12 rf /Fc 255[55{}1 66.4176 /CMSY8 rf /Fd 133[50 59 3[62 44 44 46 1[62 56 62 1[31 2[31 3[51 1[50 62 54 13[62 3[84 1[106 67 2[42 2[70 1[86 81 12[56 56 56 56 56 56 1[56 31 46[{}31 99.6264 /CMBX12 rf /Fe 149[25 106[{}1 49.8132 /CMMI6 rf /Ff 132[46 37 44 42 60 42 49 30 37 38 42 46 46 51 74 23 42 1[28 46 42 28 42 46 42 42 46 10[68 68 65 51 66 1[62 70 68 82 57 1[48 35 68 70 1[62 69 65 1[68 6[28 6[46 46 46 46 1[28 33 28 2[37 37 28 26[51 12[{}56 90.9091 /CMTI10 rf /Fg 139[25 33 32 3[43 2[37 29 24 4[36 15[41 84[{}9 66.4176 /CMMI8 rf /Fh 200[35 3[35 35 35 5[55 43[{}5 66.4176 /CMR8 rf /Fi 145[45 3[25 2[45 45 10[61 33[51 51 5[61 28[71 71 17[71 1[71{}12 90.9091 /CMSY10 rf /Fj 133[42 1[52 1[44 1[33 43 41 41 46 44 55 80 1[47 37 31 1[43 1[42 47 39 39 13[53 56 69 1[58 3[62 77 9[68 2[71 45 1[25 25 58[{}30 90.9091 /CMMI10 rf /Fk 133[44 1[44 1[44 1[44 44 44 2[44 44 1[44 2[44 3[44 44 44 1[44 14[44 4[44 3[44 2[44 44 1[44 67[{}20 83.022 /CMTT10 rf /Fl 134[44 44 60 44 46 32 33 33 44 46 42 46 69 23 44 1[23 46 42 25 37 46 37 46 42 9[85 62 1[60 46 61 1[57 2[76 2[43 1[62 65 54 57 63 60 1[62 7[42 4[42 3[42 1[23 28 23 2[32 32 26[46 46 12[{}49 83.022 /CMR10 rf /Fm 139[37 38 39 14[42 53 46 31[72 65[{}7 83.022 /CMBX10 rf /Fn 130[48 1[48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 48 1[48 1[48 1[48 48 2[48 48 48 48 48 48 1[48 48 48 48 48 2[48 48 48 48 48 48 48 48 48 2[48 48 1[48 3[48 1[48 48 48 48 48 48 48 48 48 48 1[48 48 48 1[48 2[48 35[{}71 90.9091 /CMTT10 rf /Fo 128[45 45 2[45 40 48 48 66 48 51 35 36 36 48 51 45 51 76 25 48 28 25 51 45 28 40 51 40 51 45 3[25 45 25 56 68 1[93 68 68 66 51 67 71 62 71 68 83 57 71 47 33 68 71 59 62 69 66 64 68 1[43 1[71 1[25 25 45 45 45 45 45 45 45 45 45 45 45 25 30 25 71 45 35 35 25 1[76 2[45 19[76 51 51 53 11[{}86 90.9091 /CMR10 rf /Fp 134[55 55 1[55 58 41 41 43 55 58 52 58 87 29 1[32 29 58 52 32 48 58 46 58 51 10[79 80 73 58 2[71 79 82 99 63 2[40 82 82 66 69 80 76 74 79 7[52 52 52 52 52 52 52 52 52 52 1[29 35 3[41 41 27[58 12[{}56 90.9091 /CMBX10 rf /Fq 134[71 71 97 1[75 52 53 55 1[75 67 75 112 37 71 41 37 75 67 41 61 75 60 75 65 10[102 103 94 75 100 1[92 101 105 128 81 2[50 105 106 85 88 103 97 96 102 7[67 67 67 67 67 67 67 67 67 2[37 45 3[52 52 40[{}55 119.552 /CMBX12 rf /Fr 133[43 51 1[70 51 54 38 38 38 1[54 49 54 81 27 51 1[27 54 1[30 43 54 43 54 49 6[60 5[70 54 72 2[76 3[76 1[35 73 1[64 66 1[70 9[49 49 49 2[49 1[49 1[49 1[27 33 27 2[38 38 40[{}44 99.6264 /CMR12 rf /Fs 138[73 2[51 3[73 1[36 2[36 2[40 58 73 58 73 66 14[98 4[122 77[{}13 143.462 /CMR17 rf end %%EndProlog %%BeginSetup %%Feature: *Resolution 600dpi TeXDict begin %%BeginPaperSize: a4 /setpagedevice where { pop << /PageSize [595 842] >> setpagedevice } { /a4 where { pop a4 } if } ifelse %%EndPaperSize end %%EndSetup %%Page: 1 1 TeXDict begin 1 0 bop 1238 409 a Fs(cddlib)44 b(Reference)g(Man)l(ual) 1635 661 y Fr(Komei)33 b(F)-8 b(ukuda)1235 777 y(Institute)34 b(for)e(Op)s(erations)g(Researc)m(h)957 894 y(and)g(Institute)i(of)e (Theoretical)i(Computer)g(Science)997 1010 y(ETH)g(Zen)m(trum,)f (CH-8092)f(Zuric)m(h,)h(Switzerland)916 1219 y(\(cddlib)g(v)m(er.)45 b(0.94,)32 b(man)m(ual)h(v)m(er.)45 b(F)-8 b(ebruary)32 b(7,)h(2008\))0 1596 y Fq(Con)l(ten)l(ts)0 1800 y Fp(1)84 b(In)m(tro)s(duction)3133 b(1)0 2004 y(2)84 b(P)m(olyhedra)36 b(H-)f(and)g(V-F)-9 b(ormats)35 b(\(V)-9 b(ersion)35 b(1999\))1670 b(2)0 2208 y(3)84 b(Basic)36 b(Ob)6 b(ject)34 b(T)m(yp)s(es)h(\(Structures\))g(in)g(cddlib)1784 b(4)0 2411 y(4)84 b(Library)35 b(F)-9 b(unctions)2892 b(6)136 2524 y Fo(4.1)94 b(Library)30 b(Initialization)47 b(.)e(.)h(.)g(.)g(.)f (.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)128 b(7)136 2637 y(4.2)94 b(Core)31 b(F)-8 b(unctions)65 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)f(.)128 b(7)136 2750 y(4.3)94 b(Data)32 b(Manipulations)86 b(.)45 b(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h (.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.) h(.)g(.)f(.)h(.)g(.)f(.)83 b(10)345 2863 y(4.3.1)106 b(Num)m(b)s(er)30 b(Assignmen)m(ts)24 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f (.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) f(.)h(.)g(.)f(.)h(.)g(.)f(.)83 b(10)345 2976 y(4.3.2)106 b(Arithmetic)32 b(Op)s(erations)e(for)g Fn(mytype)e Fo(Num)m(b)s(ers)47 b(.)e(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g (.)f(.)83 b(11)345 3089 y(4.3.3)106 b(Prede\014ned)29 b(Constan)m(ts)94 b(.)46 b(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g (.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.) f(.)83 b(11)345 3202 y(4.3.4)106 b(Sign)30 b(Ev)-5 b(aluation)32 b(and)d(Comparison)h(for)g Fn(mytype)f Fo(Num)m(b)s(ers)58 b(.)46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)83 b(12)345 3315 y(4.3.5)106 b(P)m(olyhedra)31 b(Data)h(Manipulation)k(.) 46 b(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.) g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)83 b(12)345 3428 y(4.3.6)106 b(LP)30 b(Data)i(Manipulation)j(.)46 b(.)g(.)f(.)h(.)g(.)f (.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) f(.)h(.)g(.)f(.)h(.)g(.)f(.)83 b(13)345 3540 y(4.3.7)106 b(Matrix)32 b(Manipulation)k(.)45 b(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g (.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) f(.)h(.)g(.)f(.)83 b(13)136 3653 y(4.4)94 b(Input/Output)29 b(F)-8 b(unctions)47 b(.)f(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g (.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.) f(.)h(.)g(.)f(.)83 b(14)136 3766 y(4.5)94 b(Obsolete)32 b(F)-8 b(unctions)49 b(.)d(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f (.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.) f(.)h(.)g(.)f(.)h(.)g(.)f(.)83 b(14)136 3879 y(4.6)94 b(Set)31 b(F)-8 b(unctions)31 b(in)f Fn(setoper)e Fo(library)66 b(.)45 b(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)g(.)f(.)h(.) g(.)f(.)h(.)g(.)g(.)f(.)h(.)g(.)f(.)h(.)g(.)f(.)83 b(15)0 4083 y Fp(5)h(An)35 b(Extension)g(of)g(the)g(CDD)g(Library)g(in)g(GMP)g (mo)s(de)1393 b(15)0 4287 y(6)84 b(Examples)3219 b(15)0 4491 y(7)84 b(Numerical)36 b(Accuracy)2724 b(16)0 4694 y(8)84 b(Other)34 b(Useful)i(Co)s(des)2752 b(16)0 4898 y(9)84 b(Co)s(des)35 b(Using)h(Cddlib)2740 b(17)1766 5090 y Fm(Abstract)352 5234 y Fl(This)31 b(is)g(a)f(reference)h(man)n (ual)f(for)g(cddlib-094.)46 b(The)31 b(man)n(ual)g(describ)r(es)f(the)i (library)d(functions)j(and)227 5334 y(data)j(t)n(yp)r(es)h(implemen)n (ted)g(in)g(the)g(cddlib)h(C-library)d(whic)n(h)h(is)h(to)f(p)r(erform) h(fundamen)n(tal)f(p)r(olyhedral)227 5433 y(computations)24 b(suc)n(h)h(as)f(represen)n(tation)f(con)n(v)n(ersions)f(and)i(linear)g (programming)e(in)j(b)r(oth)g(\015oating-p)r(oin)n(t)1926 5682 y Fo(1)p eop end %%Page: 2 2 TeXDict begin 2 1 bop 227 44 a Fl(and)38 b(GMP)f(rational)f(exact)h (arithmetic.)66 b(Please)37 b(read)f(the)i(accompan)n(ying)e(README)h (\014le)h(and)f(test)227 144 y(programs)26 b(to)h(complemen)n(t)h(the)g (man)n(ual.)352 243 y(The)37 b(new)h(functions)g(added)f(in)h(this)g(v) n(ersion)e(include)i Fk(dd)p 2295 243 27 4 v 30 w(MatrixCanonicaliz)o (e)31 b Fl(to)38 b(\014nd)g(a)f(non-)227 343 y(redundan)n(t)26 b(prop)r(er)g(H-)g(or)f(V-represen)n(tation,)g Fk(dd)p 1854 343 V 31 w(FindRelativeInt)o(eri)o(or)20 b Fl(to)26 b(\014nd)h(a)f(relativ)n(e)f(in)n(terior)227 443 y(p)r(oin)n(t)40 b(of)f(an)h(H-p)r(olyhedron,)h(and)e Fk(dd)p 1517 443 V 31 w(ExistsRestricted)o(Fac)o(e)33 b Fl(\(F)-7 b(ark)i(as-t)n(yp)r(e) 39 b(alternativ)n(e)f(theorem)227 542 y(v)n(eri\014er\))f(to)h(c)n(hec) n(k)g(the)g(existence)g(of)g(a)g(p)r(oin)n(t)g(satisfying)g(a)g(sp)r (eci\014ed)g(system)g(of)g(linear)g(inequalities)227 642 y(p)r(ossibly)27 b(including)h(m)n(ultiple)g(strict)g (inequalities.)352 742 y(The)f(new)g(functions)h(are)e(particularly)g (imp)r(ortan)n(t)h(for)f(the)i(dev)n(elopmen)n(t)e(of)i(related)e(soft) n(w)n(are)g(pac)n(k-)227 841 y(ages)h(MinkSum)h(\(b)n(y)f(Ch.)37 b(W)-7 b(eib)r(el\))29 b(and)f(Gfan)f(\(b)n(y)h(Anders)f(Jensen\),)0 1126 y Fq(1)135 b(In)l(tro)t(duction)0 1329 y Fo(The)34 b(program)h(cddlib)f(is)h(an)g(e\016cien)m(t)h(implemen)m(tation)g([16) r(])f(of)g(the)g(double)f(description)h(Metho)s(d)g([19)q(])g(for)0 1442 y(generating)29 b(all)f(v)m(ertices)i(\(i.e.)41 b(extreme)28 b(p)s(oin)m(ts\))g(and)f(extreme)h(ra)m(ys)g(of)g(a)g (general)g(con)m(v)m(ex)h(p)s(olyhedron)e(giv)m(en)0 1555 y(b)m(y)j(a)h(system)g(of)f(linear)h(inequalities:)1032 1750 y Fj(P)38 b Fo(=)25 b Fi(f)p Fj(x)h Fo(=)f(\()p Fj(x)1530 1764 y Fh(1)1570 1750 y Fj(;)15 b(x)1662 1764 y Fh(2)1701 1750 y Fj(;)g(:)g(:)g(:)i(;)e(x)1955 1765 y Fg(d)1996 1750 y Fo(\))2031 1712 y Fg(T)2111 1750 y Fi(2)25 b Fj(R)2267 1712 y Fg(d)2333 1750 y Fo(:)g Fj(b)20 b Fi(\000)g Fj(Ax)26 b Fi(\025)f Fo(0)p Fi(g)0 1944 y Fo(where)37 b Fj(A)h Fo(is)f(a)h(giv)m(en)h Fj(m)24 b Fi(\002)h Fj(d)38 b Fo(real)g(matrix)g(and)f Fj(b)g Fo(is)h(a)f(giv)m (en)i(real)f Fj(m)p Fo(-v)m(ector.)64 b(In)37 b(the)g(mathematical)j (lan-)0 2057 y(guage,)e(the)e(computation)g(is)g(the)f(transformation)h (of)g(an)f Ff(H-r)-5 b(epr)g(esentation)45 b Fo(of)35 b(a)h(con)m(v)m(ex)h(p)s(olytop)s(e)e(to)i(an)0 2170 y Ff(V-r)-5 b(epr)g(esentation)p Fo(.)141 2283 y(cddlib)38 b(is)h(a)h(C-library)e(v)m(ersion)h(of)h(the)f(previously)f(released)i (C-co)s(de)f(cdd/cdd+.)65 b(In)39 b(order)f(to)i(mak)m(e)0 2396 y(this)31 b(library)g(v)m(ersion,)i(a)e(large)i(part)e(of)h(the)f (cdd)g(source)g(\(V)-8 b(ersion)33 b(0.61\))g(has)e(b)s(een)g (rewritten.)43 b(This)31 b(library)0 2509 y(v)m(ersion)j(is)f(more)g (\015exible)g(since)h(it)f(can)g(b)s(e)g(called)h(from)f(other)g (programs)g(in)f(C/C++.)48 b(Unlik)m(e)34 b(cdd/cdd+,)0 2622 y(cddlib)e(can)i(handle)e(an)m(y)i(general)g(input)e(and)g(is)h (more)g(general.)50 b(F)-8 b(urthermore,)34 b(additional)g(functions)e (ha)m(v)m(e)0 2735 y(b)s(een)e(written)g(to)h(extend)g(its)f (functionalit)m(y)-8 b(.)141 2848 y(One)31 b(useful)f(feature)h(of)g (cddlib/cdd/cdd+)e(is)i(its)h(capabilit)m(y)g(of)f(handling)f(the)h (dual)g(\(rev)m(erse\))h(problem)0 2961 y(without)38 b(an)m(y)g(transformation)h(of)f(data.)64 b(The)37 b(dual)h (transformation)g(problem)g(of)g(a)g(V-represen)m(tation)i(to)0 3073 y(a)e(minimal)g(H-represen)m(tation)h(and)e(is)h(often)g(called)h (the)f Ff(\(c)-5 b(onvex\))40 b(hul)5 b(l)40 b(pr)-5 b(oblem)7 b Fo(.)64 b(More)38 b(explicitly)-8 b(,)42 b(is)c(to)0 3186 y(obtain)27 b(a)f(linear)h(inequalit)m(y)g(represen)m (tation)h(of)e(a)h(con)m(v)m(ex)g(p)s(olyhedron)e(giv)m(en)j(as)e(the)g (Mink)m(o)m(wski)i(sum)d(of)h(the)0 3299 y(con)m(v)m(ex)32 b(h)m(ull)e(of)h(a)g(\014nite)f(set)h(of)f(p)s(oin)m(ts)h(and)e(the)i (nonnegativ)m(e)h(h)m(ull)e(of)h(a)g(\014nite)f(set)h(of)f(p)s(oin)m (ts)h(in)f Fj(R)3532 3266 y Fg(d)3572 3299 y Fo(:)1007 3494 y Fj(P)38 b Fo(=)25 b Fj(conv)s Fo(\()p Fj(v)1463 3508 y Fh(1)1503 3494 y Fj(;)15 b(:)g(:)g(:)i(;)e(v)1749 3508 y Fg(n)1796 3494 y Fo(\))21 b(+)f Fj(nonneg)s Fo(\()p Fj(r)2316 3508 y Fg(n)p Fh(+1)2453 3494 y Fj(;)15 b(:)g(:)g(:)h(;)f(r) 2695 3508 y Fg(n)p Fh(+)p Fg(s)2830 3494 y Fo(\))p Fj(;)0 3689 y Fo(where)30 b(the)g Ff(Minkowski)j(sum)g(of)g(two)g(subsets)g Fj(S)k Ff(and)d Fj(T)43 b Fo(of)31 b Fj(R)2184 3656 y Fg(d)2254 3689 y Fo(is)g(de\014ned)e(as)1277 3884 y Fj(S)c Fo(+)20 b Fj(T)38 b Fo(=)25 b Fi(f)p Fj(s)20 b Fo(+)g Fj(t)25 b Fi(j)p Fj(s)g Fi(2)g Fj(S)36 b Fo(and)29 b Fj(t)c Fi(2)g Fj(T)13 b Fi(g)p Fj(:)0 4078 y Fo(As)38 b(w)m(e)h(see)g(in)f(this)g(man)m(ual,)j(the)e(computation)g(can)f(b)s (e)g(done)g(in)g(straigh)m(tforw)m(ard)h(manner.)64 b(Unlik)m(e)39 b(the)0 4191 y(earlier)29 b(v)m(ersions)f(of)g(cdd/cdd+)f(that)h (assume)g(certain)h(regularit)m(y)g(conditions)f(for)g(input,)g(cddlib) f(is)h(designed)0 4304 y(to)40 b(do)f(a)g(correct)i(transformation)e (for)g(an)m(y)h(general)g(input.)66 b(The)39 b(user)f(m)m(ust)h(b)s(e)g (a)m(w)m(are)h(of)g(the)f(fact)h(that)0 4417 y(in)g(certain)i(cases)g (the)e(transformation)h(is)g(not)g(unique)f(and)g(there)h(are)g(p)s (olyhedra)e(with)i(in\014nitely)f(man)m(y)0 4530 y(represen)m(tations.) 54 b(F)-8 b(or)35 b(example,)i(a)e(line)g(segmen)m(t)g(\(1-dimensional) h(p)s(olytop)s(e\))f(in)f Fj(R)3055 4497 y Fh(3)3129 4530 y Fo(has)g(in\014nitely)g(man)m(y)0 4643 y(minimal)43 b(H-represen)m(tations,)48 b(and)43 b(a)g(halfspace)h(in)f(the)g(same)h (space)g(has)e(in\014nitely)i(man)m(y)f(minimal)g(V-)0 4756 y(represen)m(tations.)f(cddlib)29 b(generates)j(merely)f(one)g (minimal)f(represen)m(tation.)141 4869 y(cddlib)g(comes)h(with)e(an)h (LP)g(co)s(de)h(to)g(solv)m(e)g(the)f(general)i(linear)e(programming)g (\(LP\))g(problem)g(to)h(maxi-)0 4982 y(mize)g(\(or)g(minimize\))g(a)g (linear)f(function)h(o)m(v)m(er)g(p)s(olyhedron)e Fj(P)13 b Fo(.)41 b(It)30 b(is)h(useful)e(mainly)i(for)f(solving)h(dense)f (LP's)0 5094 y(with)35 b(large)i Fj(m)f Fo(\(sa)m(y)-8 b(,)39 b(up)34 b(to)j(few)e(h)m(undred)f(thousands\))h(and)g(small)i Fj(d)f Fo(\(sa)m(y)-8 b(,)38 b(up)d(to)i(100\).)58 b(It)36 b(implemen)m(ts)g(a)0 5207 y(revised)30 b(dual)g(simplex)h(metho)s(d)e (that)i(up)s(dates)f(\()p Fj(d)21 b Fo(+)f(1\))h Fi(\002)f Fo(\()p Fj(d)g Fo(+)g(1\))31 b(matrix)g(for)f(a)h(piv)m(ot)g(op)s (eration.)141 5320 y(The)k(program)f(cddlib)h(has)f(an)h(I/O)g (routines)g(that)g(read)g(and)g(write)g(\014les)g(in)f Ff(Polyhe)-5 b(dr)g(a)40 b(format)45 b Fo(whic)m(h)0 5433 y(w)m(as)32 b(de\014ned)f(b)m(y)h(Da)m(vid)h(Avis)f(and)f(the)h (author)g(in)f(1993,)k(and)c(has)h(b)s(een)f(up)s(dated)f(in)i(1997)i (and)d(1999.)47 b(The)1926 5682 y(2)p eop end %%Page: 3 3 TeXDict begin 3 2 bop 0 44 a Fo(program)40 b(called)i(lrs)e(and)f (lrslib)i([2])g(dev)m(elop)s(ed)f(b)m(y)h(Da)m(vid)g(Avis)g(is)f(a)h (C-implemen)m(tation)h(of)e(the)h(rev)m(erse)0 157 y(searc)m(h)d (algorithm)g([4])f(for)g(the)g(same)h(en)m(umeration)f(purp)s(ose,)g (and)g(it)g(conforms)g(to)h(P)m(olyhedra)f(format)g(as)0 270 y(w)m(ell.)k(Hop)s(efully)-8 b(,)30 b(this)g(compatibilit)m(y)h(of) f(the)f(t)m(w)m(o)i(programs)e(enables)h(users)e(to)i(use)g(b)s(oth)e (programs)h(for)g(the)0 383 y(same)35 b(input)e(\014les)h(and)g(to)h(c) m(ho)s(ose)h(whic)m(hev)m(er)e(is)h(useful)e(for)i(their)f(purp)s (oses.)51 b(F)-8 b(rom)35 b(our)e(exp)s(eriences)i(with)0 496 y(relativ)m(ely)40 b(large)f(problems,)h(the)e(t)m(w)m(o)h(metho)s (ds)f(are)g(b)s(oth)f(useful)h(and)f(p)s(erhaps)f(complemen)m(tary)k (to)e(eac)m(h)0 609 y(other.)61 b(In)36 b(general,)k(the)d(program)g (cddlib)g(tends)f(to)i(b)s(e)e(e\016cien)m(t)j(for)e(highly)g (degenerate)h(inputs)e(and)g(the)0 722 y(program)30 b(rs)g(tends)g(to)h (b)s(e)f(e\016cien)m(t)i(for)e(nondegenerate)h(or)f(sligh)m(tly)i (degenerate)g(problems.)141 835 y(Although)39 b(the)h(program)f(can)g (b)s(e)g(used)f(for)h(nondegenerate)h(inputs,)h(it)e(migh)m(t)h(not)g (b)s(e)e(v)m(ery)i(e\016cien)m(t.)0 947 y(F)-8 b(or)38 b(nondegenerate)f(inputs,)h(other)f(a)m(v)-5 b(ailable)40 b(programs,)e(suc)m(h)f(as)g(the)g(rev)m(erse)h(searc)m(h)f(co)s(de)g (lrs)g(or)g(qh)m(ull)0 1060 y(\(dev)m(elop)s(ed)c(b)m(y)g(the)g (Geometry)g(Cen)m(ter\),)i(migh)m(t)e(b)s(e)f(more)h(e\016cien)m(t.)49 b(See)32 b(Section)i(8)f(for)f(p)s(oin)m(ters)h(to)g(these)0 1173 y(co)s(des.)38 b(The)22 b(pap)s(er)g([3])h(con)m(tains)h(man)m(y)f (in)m(teresting)h(results)e(on)g(p)s(olyhedral)g(computation)i(and)e (exp)s(erimen)m(tal)0 1286 y(results)30 b(on)g(cdd+,)g(lrs,)g(qh)m(ull) h(and)e(p)s(orta.)141 1399 y(This)d(program)h(can)h(b)s(e)e (distributed)g(freely)i(under)d(the)j(GNU)f(GENERAL)h(PUBLIC)e (LICENSE.)g(Please)0 1512 y(read)k(the)h(\014le)f(COPYING)g(carefully)h (b)s(efore)f(using.)141 1625 y(I)e(will)g(not)g(tak)m(e)h(an)m(y)f (resp)s(onsibilit)m(y)g(of)g(an)m(y)g(problems)f(y)m(ou)h(migh)m(t)g (ha)m(v)m(e)h(with)f(this)f(program.)40 b(But)28 b(I)f(will)0 1738 y(b)s(e)37 b(glad)h(to)g(receiv)m(e)h(bug)d(rep)s(orts)h(or)g (suggestions)h(at)g(the)g(e-mail)g(addresses)f(ab)s(o)m(v)m(e.)63 b(If)37 b(cddlib)f(turns)g(out)0 1851 y(to)d(b)s(e)f(useful,)g(please)h (kindly)f(inform)g(me)g(of)h(what)f(purp)s(oses)f(cdd)h(has)g(b)s(een)f (used)h(for.)46 b(I)33 b(will)f(b)s(e)g(happ)m(y)g(to)0 1964 y(include)h(a)h(list)g(of)f(applications)i(in)e(future)f (distribution)h(if)g(I)g(receiv)m(e)j(enough)d(replies.)49 b(The)33 b(most)h(p)s(o)m(w)m(erful)0 2077 y(supp)s(ort)29 b(for)h(free)g(soft)m(w)m(are)i(dev)m(elopmen)m(t)g(is)e(user's)g (appreciation)i(and)d(collab)s(oration.)0 2359 y Fq(2)135 b(P)l(olyhedra)45 b(H-)g(and)g(V-F)-11 b(ormats)44 b(\(V)-11 b(ersion)46 b(1999\))0 2645 y Fo(Ev)m(ery)34 b(con)m(v)m(ex)h(p)s (olyhedron)d(has)h(t)m(w)m(o)i(represen)m(tations,)g(one)f(as)g(the)f (in)m(tersection)i(of)f(\014nite)f(halfspaces)h(and)0 2757 y(the)h(other)g(as)g(Mink)m(o)m(wski)h(sum)e(of)i(the)f(con)m(v)m (ex)h(h)m(ull)f(of)g(\014nite)g(p)s(oin)m(ts)g(and)f(the)h(nonnegativ)m (e)i(h)m(ull)e(of)g(\014nite)0 2870 y(directions.)41 b(These)30 b(are)h(called)h(H-represen)m(tation)g(and)d(V-represen)m (tation,)k(resp)s(ectiv)m(ely)-8 b(.)141 2983 y(Naturally)32 b(there)g(are)f(t)m(w)m(o)i(basic)e(P)m(olyhedra)h(formats,)g(H-format) g(for)e(H-represen)m(tation)j(and)e(V-format)0 3096 y(for)h(V-represen) m(tation.)49 b(These)33 b(t)m(w)m(o)h(formats)f(are)g(designed)f(to)h (b)s(e)f(almost)i(indistinguishable,)f(and)f(in)g(fact,)0 3209 y(one)h(can)h(almost)g(pretend)e(one)h(for)g(the)g(other.)49 b(There)32 b(is)h(some)h(asymmetry)f(arising)g(from)f(the)h(asymmetry)0 3322 y(of)e(t)m(w)m(o)g(represen)m(tations.)141 3435 y(First)37 b(w)m(e)g(start)g(with)f(the)h(H-represen)m(tation.)60 b(Let)37 b Fj(A)g Fo(b)s(e)f(an)g Fj(m)24 b Fi(\002)g Fj(d)37 b Fo(matrix,)h(and)e(let)i Fj(b)e Fo(b)s(e)g(a)h(column)0 3548 y Fj(m)p Fo(-v)m(ector.)60 b(The)36 b(P)m(olyhedra)g(format)h(\()p Ff(H-format)g Fo(\))g(of)f(the)g(system)72 b Fj(b)24 b Fi(\000)f Fj(Ax)36 b Fi(\025)e Fp(0)72 b Fo(of)36 b Fj(m)g Fo(inequalities)h(in)f Fj(d)0 3661 y Fo(v)-5 b(ariables)31 b Fj(x)25 b Fo(=)g(\()p Fj(x)637 3675 y Fh(1)677 3661 y Fj(;)15 b(x)769 3675 y Fh(2)809 3661 y Fj(;)g(:)g(:)g(:)h(;)f(x)1062 3676 y Fg(d)1103 3661 y Fo(\))1138 3628 y Fg(T)1224 3661 y Fo(is)p 141 3808 1178 4 v 191 3887 a(v)-5 b(arious)30 b(commen)m(ts)191 4000 y Fp(H-represen)m(tation)191 4113 y(\(linearit)m(y)k Fj(t)60 b(i)770 4127 y Fh(1)870 4113 y Fj(i)901 4127 y Fh(2)1001 4113 y Fj(:)15 b(:)g(:)61 b(i)1198 4127 y Fg(t)1228 4113 y Fp(\))191 4226 y(b)s(egin)191 4339 y Fj(m)99 b(d)21 b Fo(+)f(1)100 b(n)m(um)m(b)s(ert)m(yp)s(e)211 4452 y Fj(b)153 b Fi(\000)p Fj(A)191 4564 y Fp(end)191 4677 y Fo(v)-5 b(arious)30 b(options)p 141 4715 V 0 4869 a(where)38 b(n)m(um)m(b)s(ert)m(yp)s(e)f(can)i(b)s(e)f(one)h(of)g(in)m (teger,)j(rational)e(or)e(real.)66 b(When)38 b(rational)i(t)m(yp)s(e)f (is)f(selected,)k(eac)m(h)0 4982 y(comp)s(onen)m(t)26 b(of)h Fj(b)f Fo(and)f Fj(A)h Fo(can)h(b)s(e)e(sp)s(eci\014ed)h(b)m(y)g (the)g(usual)g(in)m(teger)h(expression)f(or)g(b)m(y)g(the)g(rational)i (expression)0 5094 y(\\)p Fj(p=q)s Fo(")41 b(or)e(\\)p Fi(\000)p Fj(p=q)s Fo(")i(where)e Fj(p)h Fo(and)f Fj(q)j Fo(are)f(arbitrary)e(long)i(p)s(ositiv)m(e)f(in)m(tegers)h(\(see)g(the) f(example)h(input)d(\014le)0 5207 y(rational.ine\).)75 b(In)40 b(the)i(1997)h(format,)h(w)m(e)e(in)m(tro)s(duced)e (\\H-represen)m(tation")k(whic)m(h)c(m)m(ust)h(app)s(ear)g(b)s(efore)0 5320 y(\\b)s(egin".)f(There)27 b(w)m(as)g(one)g(restriction)h(in)f(the) g(old)g(p)s(olyhedra)f(format)h(\(b)s(efore)g(1997\):)42 b(the)27 b(last)h Fj(d)f Fo(ro)m(ws)g(m)m(ust)0 5433 y(determine)j(a)h(v)m(ertex)h(of)e Fj(P)13 b Fo(.)41 b(This)30 b(is)g(obsolete)i(no)m(w.)1926 5682 y(3)p eop end %%Page: 4 4 TeXDict begin 4 3 bop 141 44 a Fo(In)30 b(the)i(new)e(1999)j(format,)f (w)m(e)f(added)f(the)i(p)s(ossibilit)m(y)f(of)g(sp)s(ecifying)g Fp(linearit)m(y)q Fo(.)43 b(This)30 b(means)h(that)h(for)0 157 y(H-represen)m(tation,)40 b(some)d(of)f(the)h(input)f(ro)m(ws)g (can)h(b)s(e)f(sp)s(eci\014ed)g(as)h Fp(equalities)p Fo(:)52 b Fj(b)3036 171 y Fg(i)3060 181 y Fe(j)3121 157 y Fi(\000)24 b Fj(A)3284 171 y Fg(i)3308 181 y Fe(j)3345 157 y Fj(x)36 b Fo(=)f(0)72 b(for)37 b(all)0 270 y Fj(j)31 b Fo(=)25 b(1)p Fj(;)15 b Fo(2)p Fj(;)g(:)g(:)g(:)j(;)d(t)p Fo(.)41 b(The)30 b(linearit)m(y)h(line)g(ma)m(y)g(b)s(e)f(omitted)h(if) g(there)f(are)h(no)f(equalities.)141 383 y(Option)h(lines)g(can)g(b)s (e)g(used)f(to)i(con)m(trol)g(computation)g(of)g(a)f(sp)s(eci\014c)g (program.)42 b(In)31 b(particular)g(b)s(oth)f(cdd)0 496 y(and)39 b(lrs)g(use)g(the)h(option)g(lines)g(to)g(represen)m(t)f(a)h (linear)g(ob)5 b(jectiv)m(e)42 b(function.)67 b(See)40 b(the)g(attac)m(hed)h(LP)e(\014les,)0 609 y(samplelp*.ine.)141 813 y(Next)c(w)m(e)f(de\014ne)g(P)m(olyhedra)g Ff(V-format)p Fo(.)52 b(Let)35 b Fj(P)46 b Fo(b)s(e)34 b(represen)m(ted)g(b)m(y)g Fj(n)f Fo(generating)i(p)s(oin)m(ts)f(and)f Fj(s)h Fo(gen-)0 926 y(erating)j(directions)g(\(ra)m(ys\))g(as)g Fj(P)48 b Fo(=)35 b Fj(conv)s Fo(\()p Fj(v)1598 940 y Fh(1)1638 926 y Fj(;)15 b(:)g(:)g(:)h(;)f(v)1883 940 y Fg(n)1931 926 y Fo(\))24 b(+)g Fj(nonneg)s Fo(\()p Fj(r)2458 940 y Fg(n)p Fh(+1)2595 926 y Fj(;)15 b(:)g(:)g(:)i(;)e(r)2838 940 y Fg(n)p Fh(+)p Fg(s)2973 926 y Fo(\).)58 b(Then)36 b(the)g(P)m(olyhedra)0 1039 y(V-format)31 b(for)f Fj(P)44 b Fo(is)p 141 1163 1202 4 v 191 1242 a(v)-5 b(arious)30 b(commen)m(ts)191 1355 y Fp(V-represen)m(tation)191 1468 y Fo(\()p Fp(linearit)m(y)35 b Fj(t)60 b(i)765 1482 y Fh(1)865 1468 y Fj(i)896 1482 y Fh(2)996 1468 y Fj(:)15 b(:)g(:)61 b(i)1193 1482 y Fg(t)1258 1468 y Fo(\))191 1581 y Fp(b)s(egin)191 1694 y Fj(n)20 b Fo(+)g Fj(s)99 b(d)20 b Fo(+)g(1)100 b(n)m(um)m(b)s(ert)m(yp)s(e)272 1807 y(1)182 b Fj(v)543 1821 y Fh(1)282 1900 y Fo(.)282 1934 y(.)282 1967 y(.)499 1900 y(.)499 1934 y(.)499 1967 y(.)272 2080 y(1)g Fj(v)543 2094 y Fg(n)272 2193 y Fo(0)g Fj(r)540 2207 y Fg(n)p Fh(+1)282 2286 y Fo(.)282 2319 y(.)282 2352 y(.)499 2286 y(.)499 2319 y(.)499 2352 y(.)272 2465 y(0)g Fj(r)540 2479 y Fg(n)p Fh(+)p Fg(s)191 2578 y Fp(end)191 2691 y Fo(v)-5 b(arious)30 b(options)p 141 2728 V 0 2891 a(Here)42 b(w)m(e)h(do)e(not)h(require)g(that)g(v)m (ertices)i(and)d(ra)m(ys)h(are)g(listed)h(separately;)49 b(they)42 b(can)g(app)s(ear)f(mixed)h(in)0 3004 y(arbitrary)30 b(order.)141 3117 y(Linearit)m(y)i(for)f(V-represen)m(tation)h(sp)s (eci\014es)f(a)g(subset)g(of)g(generators)h(whose)e(co)s(e\016cien)m (ts)j(are)e(relaxed)h(to)0 3230 y(b)s(e)f Fp(free)p Fo(:)44 b(for)32 b(all)g Fj(j)i Fo(=)27 b(1)p Fj(;)15 b Fo(2)p Fj(;)g(:)g(:)g(:)j(;)d(t)p Fo(,)33 b(the)f Fj(k)f Fo(=)d Fj(i)1592 3244 y Fg(j)1629 3230 y Fo(th)j(generator)i(\()p Fj(v)2231 3245 y Fg(k)2306 3230 y Fo(or)f Fj(r)2460 3245 y Fg(k)2535 3230 y Fo(whic)m(hev)m(er)g(is)g(the)h Fj(i)3241 3244 y Fg(j)3277 3230 y Fo(th)f(generator\))i(is)0 3343 y(a)c(free)h(generator.)41 b(This)30 b(means)g(for)f(eac)m(h)j(suc)m(h) d(a)i(ra)m(y)f Fj(r)1995 3358 y Fg(k)2038 3343 y Fo(,)g(the)h(line)f (generated)h(b)m(y)f Fj(r)3002 3358 y Fg(k)3075 3343 y Fo(is)g(in)f(the)i(p)s(olyhedron,)0 3456 y(and)26 b(for)h(eac)m(h)h (suc)m(h)e(a)h(v)m(ertex)h Fj(v)1099 3471 y Fg(k)1142 3456 y Fo(,)g(its)f(co)s(e\016cien)m(t)i(is)d(no)h(longer)g(nonnegativ) m(e)i(but)d(still)i(the)f(co)s(e\016cien)m(ts)h(for)f(all)0 3569 y Fj(v)44 3583 y Fg(i)72 3569 y Fo('s)i(m)m(ust)g(sum)f(up)g(to)i (one.)41 b(It)29 b(is)g(highly)g(unlik)m(ely)h(that)f(one)h(needs)e(to) i(use)f(linearit)m(y)h(for)f(v)m(ertex)h(generators,)0 3681 y(and)g(it)h(is)f(de\014ned)f(mostly)i(for)f(formalit)m(y)-8 b(.)141 3794 y(When)33 b(the)h(represen)m(tation)g(statemen)m(t,)i (either)e(\\H-represen)m(tation")h(or)f(\\V-represen)m(tation",)i(is)e (omit-)0 3907 y(ted,)d(the)f(former)g(\\H-represen)m(tation")j(is)e (assumed.)141 4020 y(It)g(is)f(strongly)h(suggested)g(to)g(use)f(the)h (follo)m(wing)g(rule)g(for)f(naming)g(H-format)h(\014les)f(and)g (V-format)h(\014les:)0 4198 y Fp(\(a\))45 b Fo(use)30 b(the)g(\014lename)h(extension)g(\\.ine")g(for)g(H-\014les)f(\(where)h (ine)f(stands)g(for)g(inequalities\),)i(and)0 4381 y Fp(\(b\))45 b Fo(use)30 b(the)g(\014lename)h(extension)g(\\.ext")h(for) e(V-\014les)h(\(where)f(ext)i(stands)d(for)h(extreme)i(p)s(oin)m(ts/ra) m(ys\).)0 4666 y Fq(3)135 b(Basic)45 b(Ob)7 b(ject)45 b(T)l(yp)t(es)g(\(Structures\))g(in)g(cddlib)0 4869 y Fo(Here)g(are)f(the)g(t)m(yp)s(es)g(\(de\014ned)f(in)h(cddt)m(yp)s (es.h\))g(that)g(are)h(imp)s(ortan)m(t)f(for)g(the)g(cddlib)g(user.)81 b(The)43 b(most)0 4982 y(imp)s(ortan)m(t)36 b(one,)i Fn(dd)p 736 4982 29 4 v 34 w(MatrixType)p Fo(,)d(is)h(to)g(store)h(a)f (P)m(olyhedra)h(data)f(in)g(a)g(straigh)m(tforw)m(ard)h(manner.)57 b(Once)0 5094 y(the)32 b(user)f(sets)i(up)e(a)h(\(p)s(oin)m(ter)g(to\)) i Fn(dd)p 1343 5094 V 33 w(MatrixType)c Fo(data,)j(he/she)f(can)g(load) h(the)f(data)h(to)f(an)g(in)m(ternal)h(data)0 5207 y(t)m(yp)s(e)h(\()p Fn(dd)p 345 5207 V 34 w(PolyhedraType)p Fo(\))c(b)m(y)j(using)h (functions)f(describ)s(ed)f(in)h(the)h(next)g(section,)h(and)e(apply)g (the)h(double)0 5320 y(descrition)j(metho)s(d)e(to)i(get)g(another)f (represen)m(tation.)59 b(As)36 b(an)g(option)h Fn(dd)p 2680 5320 V 33 w(MatrixType)d Fo(can)i(sa)m(v)m(e)i(a)e(linear)0 5433 y(ob)5 b(jectiv)m(e)32 b(function)e(to)i(b)s(e)d(used)h(b)m(y)g(a) h(linear)g(programming)f(solv)m(er.)1926 5682 y(4)p eop end %%Page: 5 5 TeXDict begin 5 4 bop 141 44 a Fo(The)40 b(t)m(w)m(o)h(dimensional)f (arra)m(y)h(data)g(in)f(the)g(structure)g Fn(dd)p 2278 44 29 4 v 33 w(MatrixType)e Fo(is)i Fn(dd)p 3026 44 V 34 w(Amatrix)e Fo(whose)i(com-)0 157 y(p)s(onen)m(ts)c(are)h(of)f(t)m (yp)s(e)g Fn(mytype)p Fo(.)57 b(The)36 b(t)m(yp)s(e)h(m)m(yt)m(yp)s(e)f (is)h(set)f(to)h(b)s(e)f(either)h(the)f(rational)i(t)m(yp)s(e)e Fn(mpq)p 3550 157 V 34 w(t)g Fo(of)g(the)0 270 y(GNU)f(MP)f(Library)f (or)h(the)h(C)f(double)f(arra)m(y)i(of)f(size)h(1.)53 b(This)33 b(abstract)i(t)m(yp)s(e)f(allo)m(ws)i(us)d(to)i(write)f(a)h (single)0 383 y(program)f(that)h(can)g(b)s(e)e(compiled)i(with)f(the)g (t)m(w)m(o)i(or)e(more)h(di\013eren)m(t)f(arithmetics,)j(see)e(example) g(programs)0 496 y(suc)m(h)d(as)h(simplecdd.c,)g(testlp*.c)h(and)e (testcdd*.c)i(in)e(the)h Fn(src)e Fo(and)h Fn(src-gmp)e Fo(sub)s(directories)i(of)h(the)f(source)0 609 y(distribution.)141 722 y(There)42 b(is)h(another)g(data)g(t)m(yp)s(e)g(that)g(is)g(used)f (v)m(ery)h(often,)j Fn(dd)p 2419 722 V 34 w(SetFamilyType)p Fo(.)74 b(This)42 b(is)h(to)g(store)g(a)0 835 y(family)35 b(of)h(subsets)e(of)h(a)g(\014nite)g(set.)55 b(Suc)m(h)35 b(a)g(family)h(can)f(represen)m(t)g(the)g(incidence)h(relations)g(b)s (et)m(w)m(een)f(the)0 947 y(set)f(of)g(extreme)h(p)s(oin)m(ts)e(and)g (the)h(set)g(of)g(facets)h(of)f(a)g(p)s(olyhedron.)49 b(Also,)36 b(it)e(can)g(represen)m(t)f(a)h(graph)g(struc-)0 1060 y(ture)g(b)m(y)g(listing)i(the)e(set)h(of)f(v)m(ertices)i(adjacen) m(t)g(to)f(eac)m(h)h(v)m(ertex)f(\(i.e.)54 b(the)34 b(adjacency)i (list\).)53 b(T)-8 b(o)35 b(implemen)m(t)0 1173 y Fn(dd)p 102 1173 V 34 w(SetFamilyType)p Fo(,)26 b(w)m(e)j(use)f(a)h(separate)h (set)g(library)e(called)i Fn(setoper)p Fo(,)d(that)j(handles)e(the)h (basic)g(set)g(op)s(era-)0 1286 y(tions,)i(This)f(library)g(is)g (brie\015y)f(in)m(tro)s(duced)h(in)g(Section)i(4.6.)0 1594 y Fn(#define)46 b(dd_FALSE)f(0)0 1707 y(#define)h(dd_TRUE)g(1)0 1933 y(typedef)g(long)g(dd_rowrange;)0 2046 y(typedef)g(long)g (dd_colrange;)0 2159 y(typedef)g(long)g(dd_bigrange;)0 2385 y(typedef)g(set_type)f(dd_rowset;)141 b(/*)47 b(set_type)f (defined)f(in)j(setoper.h)d(*/)0 2498 y(typedef)h(set_type)f (dd_colset;)0 2610 y(typedef)h(long)g(*dd_rowindex;)0 2723 y(typedef)g(int)h(*dd_rowflag;)0 2836 y(typedef)f(long)g (*dd_colindex;)0 2949 y(typedef)g(mytype)g(**dd_Amatrix;)92 b(/*)47 b(mytype)f(is)h(either)f(GMP)h(mpq_t)g(or)g(1-dim)f(double)g (array.)g(*/)0 3062 y(typedef)g(mytype)g(*dd_Arow;)0 3175 y(typedef)g(set_type)f(*dd_SetVector;)0 3401 y(typedef)h(enum)g({) 95 3514 y(dd_Real,)g(dd_Rational,)e(dd_Integer,)h(dd_Unknown)0 3627 y(})i(dd_NumberType;)0 3852 y(typedef)f(enum)g({)95 3965 y(dd_Inequality,)e(dd_Generator,)h(dd_Unspecified)0 4078 y(})i(dd_RepresentationType;)0 4304 y(typedef)f(enum)g({)95 4417 y(dd_MaxIndex,)f(dd_MinIndex,)f(dd_MinCutoff,)h(dd_MaxCutoff,)f (dd_MixCutoff,)143 4530 y(dd_LexMin,)h(dd_LexMax,)g(dd_RandomRow)0 4643 y(})i(dd_RowOrderType;)0 4869 y(typedef)f(enum)g({)95 4982 y(dd_InProgress,)e(dd_AllFound,)h(dd_RegionEmpty)0 5094 y(})i(dd_CompStatusType;)0 5320 y(typedef)f(enum)g({)95 5433 y(dd_DimensionTooLarge,)c(dd_ImproperInputFormat,)1926 5682 y Fo(5)p eop end %%Page: 6 6 TeXDict begin 6 5 bop 95 44 a Fn(dd_NegativeMatrixSize,)42 b(dd_EmptyVrepresentation,)95 157 y(dd_IFileNotFound,)i (dd_OFileNotOpen,)f(dd_NoLPObjective,)95 270 y(dd_NoRealNumberSupport,) f(dd_NoError)0 383 y(})47 b(dd_ErrorType;)0 609 y(typedef)f(enum)g({)95 722 y(dd_LPnone=0,)f(dd_LPmax,)g(dd_LPmin)0 835 y(})i (dd_LPObjectiveType;)0 1060 y(typedef)f(enum)g({)95 1173 y(dd_LPSundecided,)e(dd_Optimal,)h(dd_Inconsistent,)e (dd_DualInconsistent,)95 1286 y(dd_StrucInconsistent,)f (dd_StrucDualInconsistent,)95 1399 y(dd_Unbounded,)j(dd_DualUnbounded)0 1512 y(})i(dd_LPStatusType;)0 1738 y(typedef)f(struct)g(matrixdata)f (*dd_MatrixPtr;)0 1851 y(typedef)h(struct)g(matrixdata)f({)95 1964 y(dd_rowrange)g(rowsize;)95 2077 y(dd_rowset)h(linset;)191 2189 y(/*)95 b(a)47 b(subset)f(of)i(rows)e(of)h(linearity)f(\(ie,)g (generators)f(of)382 2302 y(linearity)g(space)h(for)h (V-representation,)c(and)k(equations)382 2415 y(for)g (H-representation.)c(*/)95 2528 y(dd_colrange)i(colsize;)95 2641 y(dd_RepresentationType)d(representation;)95 2754 y(dd_NumberType)j(numbtype;)95 2867 y(dd_Amatrix)g(matrix;)95 2980 y(dd_LPObjectiveType)e(objective;)95 3093 y(dd_Arow)j(rowvec;)0 3206 y(})95 b(dd_MatrixType;)0 3431 y(typedef)46 b(struct)g(setfamily)f (*dd_SetFamilyPtr;)0 3544 y(typedef)h(struct)g(setfamily)f({)95 3657 y(dd_bigrange)g(famsize;)95 3770 y(dd_bigrange)g(setsize;)95 3883 y(dd_SetVector)g(set;)0 3996 y(})i(dd_SetFamilyType;)0 4222 y(typedef)f(struct)g(lpsolution)f(*dd_LPSolutionPtr;)0 4335 y(typedef)h(struct)g(lpsolution)f({)95 4448 y(dd_DataFileType)f (filename;)95 4561 y(dd_LPObjectiveType)f(objective;)95 4673 y(dd_LPSolverType)h(solver;)95 4786 y(dd_rowrange)h(m;)95 4899 y(dd_colrange)g(d;)95 5012 y(dd_NumberType)g(numbtype;)95 5238 y(dd_LPStatusType)f(LPS;)94 b(/*)48 b(the)f(current)e(solution)h (status)g(*/)95 5351 y(mytype)h(optvalue;)93 b(/*)47 b(optimal)f(value)g(*/)1926 5682 y Fo(6)p eop end %%Page: 7 7 TeXDict begin 7 6 bop 95 44 a Fn(dd_Arow)46 b(sol;)142 b(/*)48 b(primal)e(solution)f(*/)95 157 y(dd_Arow)h(dsol;)94 b(/*)48 b(dual)e(solution)g(*/)95 270 y(dd_colindex)f(nbindex;)93 b(/*)48 b(current)d(basis)i(represented)e(by)i(nonbasic)e(indices)h(*/) 95 383 y(dd_rowrange)f(re;)95 b(/*)47 b(row)g(index)f(as)h(a)h (certificate)d(in)i(the)g(case)f(of)i(inconsistency)c(*/)95 496 y(dd_colrange)h(se;)95 b(/*)47 b(col)g(index)f(as)h(a)h (certificate)d(in)i(the)g(case)f(of)i(dual)e(inconsistency)e(*/)95 609 y(long)j(pivots[5];)143 722 y(/*)g(pivots[0]=setup)d(\(to)j(find)g (a)g(basis\),)f(pivots[1]=PhaseI)d(or)k(Criss-Cross,)286 835 y(pivots[2]=Phase)d(II,)j(pivots[3]=Anticycling,)42 b(pivots[4]=GMP)i(postopt)93 b(*/)95 947 y(long)47 b(total_pivots;)0 1060 y(})g(dd_LPSolutionType;)0 1455 y Fq(4)135 b(Library)45 b(F)-11 b(unctions)0 1658 y Fo(Here)24 b(w)m(e)g(list)g(some)f(of)h (the)f(most)h(imp)s(ortan)m(t)f(library)g(functions/pro)s(cedures.)37 b(W)-8 b(e)25 b(use)e(the)g(follo)m(wing)i(con)m(v)m(en-)0 1771 y(tion:)42 b Fn(poly)29 b Fo(is)i(of)g(t)m(yp)s(e)g Fn(dd)p 947 1771 29 4 v 34 w(PolyhedraPtr)p Fo(,)c Fn(matrix)p Fo(,)j Fn(matrix1)e Fo(and)i Fn(matrix2)f Fo(are)i(of)g(t)m(yp)s(e)g Fn(dd)p 3415 1771 V 34 w(MatrixPtr)p Fo(,)0 1884 y Fn(matrixP)p Fo(,)40 b(of)h(t)m(yp)s(e)g Fn(dd)p 832 1884 V 34 w(MatrixPtr*)p Fo(,)h Fn(err)e Fo(is)h(of)h(t)m(yp)s(e)f Fn(dd)p 2125 1884 V 34 w(ErrorType*)p Fo(,)g Fn(ifile)f Fo(and)h Fn(ofile)e Fo(are)j(of)f(t)m(yp)s(e)0 1996 y Fn(char*)p Fo(,)29 b Fn(A)h Fo(is)g(of)g(t)m(yp)s(e)g Fn(dd)p 872 1996 V 34 w(Amatrix)p Fo(,)e Fn(point)h Fo(and)g Fn(vector)f Fo(are)j(of)f(t)m(yp)s(e)g Fn(dd)p 2611 1996 V 34 w(Arow)p Fo(,)f Fn(d)g Fo(is)h(of)h(t)m(yp)s(e)f Fn(dd)p 3463 1996 V 34 w(colrange)p Fo(,)0 2109 y Fn(m)37 b Fo(and)h Fn(i)f Fo(are)h(of)g(t)m(yp)s(e)g Fn(dd)p 939 2109 V 34 w(rowrange)p Fo(,)g Fn(x)f Fo(is)h(of)g(t)m(yp)s(e)g Fn(mytype)p Fo(,)g Fn(a)g Fo(is)f(of)h(t)m(yp)s(e)g Fn(signed)47 b(long)f(integer)p Fo(,)38 b Fn(b)g Fo(is)0 2222 y(of)33 b(t)m(yp)s(e)f Fn(double)p Fo(,)g Fn(set)f Fo(is)i(of)f(t)m(yp)s(e)h Fn(set)p 1388 2222 V 34 w(type)p Fo(.)45 b(Also,)34 b Fn(setfam)d Fo(is)i(of)f(t)m(yp)s(e)h Fn(dd)p 2738 2222 V 34 w(SetFamilyPtr)p Fo(,)c Fn(lp)j Fo(is)h(of)f(t)m(yp)s(e)0 2335 y Fn(dd)p 102 2335 V 34 w(LPPtr)p Fo(,)h Fn(lps)g Fo(is)g(of)h(t)m(yp)s(e)g Fn(dd)p 1116 2335 V 34 w(LPSolutionPtr)p Fo(,)d Fn(solver)g Fo(is)j(of)g(t)m(yp)s(e)f Fn(dd)p 2654 2335 V 34 w(LPSolverType)p Fo(,)f Fn(roworder)f Fo(is)i(of)0 2448 y(t)m(yp)s(e)e Fn(dd)p 307 2448 V 33 w(RowOrderType)p Fo(.)0 2687 y Fd(4.1)112 b(Library)39 b(Initialization)0 2858 y Fn(void)47 b(dd)p 341 2858 V 33 w(set)p 518 2858 V 34 w(global)p 840 2858 V 33 w (constants\(void\))41 b Fo(:)227 2971 y(This)31 b(is)g(to)h(set)g(the)f (global)h(constan)m(ts)h(suc)m(h)e(as)g Fn(dd)p 2032 2971 V 34 w(zero)p Fo(,)f Fn(dd)p 2409 2971 V 34 w(purezero)f Fo(and)i Fn(dd)p 3130 2971 V 34 w(one)f Fo(for)h(sign)g(recog-)227 3084 y(nition)h(and)g(basic)g(arithmetic)h(op)s(erations.)46 b(Ev)m(ery)32 b(program)g(to)h(use)f(cddlib)f(m)m(ust)h(call)h(this)f (function)227 3197 y(b)s(efore)37 b(doing)g(an)m(y)h(computation.)62 b(Just)36 b(call)j(this)e(once.)61 b(See)38 b(Section)g(4.3.3)h(for)d (the)i(de\014nitions)e(of)227 3310 y(constan)m(ts.)0 3487 y Fn(void)47 b(dd)p 341 3487 V 33 w(free)p 566 3487 V 34 w(global)p 888 3487 V 32 w(constants\(void\))42 b Fo(:)227 3600 y(This)e(is)g(to)h(free)f(the)g(global)i(constan)m(ts.) 71 b(This)39 b(should)h(b)s(e)f(called)i(when)f(one)g(do)s(es)g(not)g (use)g(cddlib)227 3713 y(functions)30 b(an)m(ymore.)0 3951 y Fd(4.2)112 b(Core)38 b(F)-9 b(unctions)0 4123 y Fo(There)33 b(are)i(t)m(w)m(o)g(t)m(yp)s(es)f(of)g(core)g(functions)g (in)f(cddlib.)51 b(The)33 b(\014rst)g(t)m(yp)s(e)h(runs)f(the)h(double) f(description)h(\(DD\))0 4236 y(algorithm)28 b(and)f(do)s(es)g(a)h (represen)m(tation)h(con)m(v)m(ersion)f(of)g(a)g(sp)s(eci\014ed)f(p)s (olyhedron.)38 b(The)27 b(standard)g(header)g(for)0 4349 y(this)32 b(t)m(yp)s(e)g(is)g Fn(dd)p 580 4349 V 34 w(DD*)p Fo(.)45 b(The)32 b(second)g(t)m(yp)s(e)g(solv)m(es)h(one)g(or)f(more)g (linear)h(programs)e(with)h(no)g(sp)s(ecial)h(headers.)0 4462 y(Both)k(t)m(yp)s(es)f(of)g(computations)h(are)f(non)m(trivial)h (and)f(the)g(users)f(\(esp)s(ecially)i(for)f(the)g(DD)h(algorithm\))h (m)m(ust)0 4575 y(kno)m(w)e(that)i(there)e(is)h(a)g(serous)f(limit)h (in)f(the)h(sizes)g(of)g(problems)e(that)j(can)e(b)s(e)g(practically)i (solv)m(ed.)60 b(Please)0 4687 y(c)m(hec)m(k)32 b(*.ext)g(and)d(*.ine)j (\014les)e(that)h(come)g(with)f(cddlib)g(to)h(get)h(ideas)e(of)h (tractable)h(problems.)141 4800 y(In)k(addition)h(to)g(previously)g (de\014ned)e(ob)5 b(jects,)39 b(the)e(sym)m(b)s(ol)f Fn(roworder)f Fo(is)h(of)h Fn(dd)p 3056 4800 V 34 w(RowOrderType)p Fo(.)56 b(The)0 4913 y(sym)m(b)s(ol)32 b Fn(matrixP)f Fo(is)h(a)h(p)s(oin)m(ter)g(to)g Fp(dd)p 1402 4913 32 4 v 38 w(MatrixT)m(yp)s(e)p Fo(.)46 b(the)33 b(argumen)m(ts)g Fn(impl)p 2859 4913 29 4 v 33 w(lin)f Fo(and)g Fn(redset)e Fo(are)j(b)s(oth)0 5026 y(a)e(p)s(oin)m(ter)f(to)h Fn(dd)p 602 5026 V 34 w(rowset)e Fo(t)m(yp)s(e,)i(and)e Fn(newpos)g Fo(is)h(a)h(p)s(oin)m(ter)g(to)g Fn(dd)p 2364 5026 V 33 w(rowindex)e Fo(t)m(yp)s(e.)0 5207 y Fn(dd)p 102 5207 V 34 w(PolyhedraPtr)44 b(dd)p 852 5207 V 34 w(DDMatrix2Poly\(matrix,)e (err\))i Fo(:)227 5320 y(Store)32 b(the)g(represen)m(tation)g(giv)m(en) h(b)m(y)e Fn(matrix)f Fo(in)h(a)h(p)s(olyhedra)e(data,)j(and)e (generate)i(the)e(second)h(rep-)227 5433 y(resen)m(tation)46 b(of)e Fn(*poly)p Fo(.)80 b(It)44 b(returns)e(a)j(p)s(oin)m(ter)f(to)g (the)g(data.)82 b Fn(*err)43 b Fo(returns)g Fn(dd)p 3269 5433 V 34 w(NoError)f Fo(if)h(the)1926 5682 y(7)p eop end %%Page: 8 8 TeXDict begin 8 7 bop 227 44 a Fo(computation)38 b(terminates)g (normally)-8 b(.)60 b(Otherwise,)38 b(it)g(returns)d(a)i(v)-5 b(alue)37 b(according)h(to)g(the)f(error)f(o)s(c-)227 157 y(curred.)0 345 y Fn(dd)p 102 345 29 4 v 34 w(PolyhedraPtr)44 b(dd)p 852 345 V 34 w(DDMatrix2Poly2\(matrix,)e(roworder,)j(err\))f Fo(:)227 458 y(This)f(is)h(the)f(same)h(function)f(as)h Fn(dd)p 1559 458 V 34 w(DDMatrix2Poly)c Fo(except)k(that)g(the)g (insertion)g(order)f(is)g(sp)s(eci-)227 571 y(\014ed)34 b(b)m(y)h(the)g(user.)53 b(The)34 b(argumen)m(t)h Fn(roworder)e Fo(is)i(of)f Fn(dd)p 2260 571 V 34 w(RowOrderType)e Fo(and)i(tak)m(es)i (one)f(of)g(the)g(v)-5 b(al-)227 683 y(ues:)55 b Fn(dd)p 536 683 V 33 w(MaxIndex)p Fo(,)37 b Fn(dd)p 1111 683 V 34 w(MinIndex)p Fo(,)g Fn(dd)p 1687 683 V 34 w(MinCutoff)p Fo(,)g Fn(dd)p 2311 683 V 34 w(MaxCutoff)p Fo(,)g Fn(dd)p 2935 683 V 33 w(MixCutoff)p Fo(,)g Fn(dd)p 3558 683 V 34 w(LexMin)p Fo(,)227 796 y Fn(dd)p 329 796 V 34 w(LexMax)p Fo(,)d Fn(dd)p 806 796 V 34 w(RandomRow)p Fo(.)51 b(In)33 b(general,)k Fn(dd)p 1905 796 V 34 w(LexMin)c Fo(is)h(the)h(b)s(est)f (c)m(hoice)j(whic)m(h)d(is)g(in)h(fact)g(c)m(hosen)227 909 y(in)29 b Fn(dd)p 434 909 V 34 w(DDMatrix2Poly)p Fo(.)36 b(If)28 b(y)m(ou)i(kno)m(w)e(that)i(the)f(input)e(is)i(already) h(sorted)e(in)h(the)g(order)f(y)m(ou)h(lik)m(e,)i(use)227 1022 y Fn(dd)p 329 1022 V 34 w(MinIndex)k Fo(or)i Fn(dd)p 996 1022 V 34 w(MaxIndex)p Fo(.)59 b(If)37 b(the)h(input)e(con)m(tains) i(man)m(y)g(redundan)m(t)e(ro)m(ws)h(\(sa)m(y)h(more)g(than)227 1135 y(80\045)j(redundan)m(t\),)h(y)m(ou)e(migh)m(t)h(w)m(an)m(t)g(to)g (try)f Fn(dd)p 2009 1135 V 34 w(MaxCutoff)d Fo(whic)m(h)j(migh)m(t)h (result)f(in)g(m)m(uc)m(h)g(faster)227 1248 y(termination,)32 b(see)f([3,)g(16)q(])0 1436 y Fn(boolean)46 b(dd)p 484 1436 V 34 w(DDInputAppend\(poly,)c(matrix,)k(err\))e Fo(:)227 1549 y(Mo)s(dify)27 b(the)h(input)e(represen)m(tation)i(in)f Fn(*poly)f Fo(b)m(y)h(app)s(ending)f(the)h(matrix)h(of)f Fn(*matrix)p Fo(,)g(and)f(compute)227 1661 y(the)36 b(second)f (represen)m(tation.)56 b(The)34 b(n)m(um)m(b)s(er)g(of)h(columns)g(in)g Fn(*matrix)e Fo(m)m(ust)i(b)s(e)g(equal)g(to)h(the)g(input)227 1774 y(represen)m(tation.)0 1962 y Fn(boolean)46 b(dd)p 484 1962 V 34 w(LPSolve\(lp,)e(solver,)i(err\))f Fo(:)227 2075 y(Solv)m(e)28 b Fn(lp)e Fo(b)m(y)h(the)g(algorithm)h Fn(solver)d Fo(and)i(sa)m(v)m(e)h(the)f(solututions)g(in)g Fn(*lp)p Fo(.)39 b(Unlik)m(e)27 b(the)g(earlier)h(v)m(ersions)227 2188 y(\(dplex,)d(cdd+\),)g(it)f(can)f(deal)h(with)f(equations)h(and)f (totally)i(zero)g(righ)m(t)f(hand)e(sides.)38 b(It)24 b(is)f(recommended)227 2301 y(that)32 b Fn(solver)d Fo(is)i Fn(dd)p 936 2301 V 33 w(DualSimplex)p Fo(,)d(the)j(revised)g(dual)g (simplex)f(metho)s(d)h(that)g(up)s(dates)f(a)h Fj(d)21 b Fi(\002)f Fj(d)31 b Fo(dual)227 2414 y(basis)g(matrix)f(in)g(eac)m(h) i(piv)m(ot)f(\(where)f Fj(d)h Fo(is)f(the)h(column)f(size)h(of)g(lp\).) 227 2564 y(The)39 b(revised)f(dual)h(simplex)f(metho)s(d)g(is)h(ideal)h (for)e(dense)h(LPs)f(in)g(small)h(n)m(um)m(b)s(er)f(of)h(v)-5 b(ariables)39 b(\(i.e.)227 2677 y(small)e(column)g(size,)i(t)m (ypically)g(less)e(than)f(100\))i(and)e(man)m(y)h(inequalit)m(y)h (constrain)m(ts)g(\(i.e.)61 b(large)37 b(ro)m(w)227 2790 y(size,)f(can)e(b)s(e)f(a)h(few)g(ten)g(thousands\).)50 b(If)34 b(y)m(our)f(LP)h(has)f(man)m(y)h(v)-5 b(ariables)35 b(but)e(only)h(few)f(constrain)m(ts,)227 2903 y(solv)m(e)f(the)f(dual)f (LP)g(b)m(y)g(this)g(function.)227 3053 y(When)g(it)h(is)f(compiled)g (for)g(GMP)g(rational)h(arithmetic,)h(it)f(\014rst)e(tries)h(to)h(solv) m(e)g(an)f(LP)g(with)f(C)h(double)227 3166 y(\015oating-p)s(oin)m(t)d (arithmetic)h(and)d(v)m(eri\014es)h(whether)f(the)h(output)g(basis)f (is)h(correct)h(with)f(GMP)-8 b(.)27 b(If)e(so,)i(the)227 3279 y(correct)38 b(solution)f(is)f(computed)h(with)f(GMP)-8 b(.)37 b(Otherwise,)h(it)f(\(re\)solv)m(es)i(the)d(LP)g(from)g(scratc)m (h)i(with)227 3392 y(GMP)-8 b(.)32 b(This)e(is)g(newly)h(implemen)m (ted)g(in)f(the)h(v)m(ersion)g(093.)42 b(The)30 b(original)i (\(non-crosso)m(v)m(er\))g(v)m(ersion)f(of)227 3505 y(the)g(same)g (function)f(is)g(still)h(a)m(v)-5 b(ailable)33 b(as)e Fn(boolean)46 b(dd)p 2206 3505 V 33 w(LPSolve0)p Fo(.)0 3692 y Fn(dd)p 102 3692 V 34 w(boolean)g(dd)p 614 3692 V 33 w(Redundant\(matrix,)e(i,)j(point,)f(err\))e Fo(:)227 3805 y(Chec)m(k)28 b(whether)g Fj(i)p Fo(th)g(data)g(in)g Fn(matrix)e Fo(is)h(redundan)m(t)g(for)h(the)g(represen)m(tation.)41 b(If)27 b(it)h(is)g(nonredundan)m(t,)227 3918 y(it)d(returns)e(a)h (certi\014cate.)41 b(F)-8 b(or)25 b(H-represen)m(tation,)i(it)e(is)f(a) g Fn(point)f Fo(in)h Fj(R)2684 3885 y Fg(d)2748 3918 y Fo(whic)m(h)g(satis\014es)g(all)h(inequalities)227 4031 y(except)31 b(for)f(the)g Fj(i)p Fo(th)g(inequalit)m(y)-8 b(.)42 b(If)29 b Fj(i)h Fo(is)g(a)g(linearit)m(y)-8 b(,)32 b(it)f(do)s(es)e(nothing)h(and)f(alw)m(a)m(ys)i(returns)e Fn(dd)p 3606 4031 V 34 w(FALSE)p Fo(.)0 4219 y Fn(dd)p 102 4219 V 34 w(rowset)46 b(dd)p 566 4219 V 34 w (RedundantRows\(matrix,)c(err\))i Fo(:)227 4331 y(Returns)24 b(a)h(maximal)h(set)f(of)g(ro)m(w)g(indices)f(suc)m(h)h(that)g(the)g (asso)s(ciated)h(ro)m(ws)f(can)g(b)s(e)f(eliminated)i(without)227 4444 y(c)m(hanging)32 b(the)e(p)s(olyhedron.)40 b(The)29 b(function)h(w)m(orks)h(for)f(b)s(oth)g(V-)g(and)g(H-represen)m (tations.)0 4632 y Fn(dd)p 102 4632 V 34 w(boolean)46 b(dd)p 614 4632 V 33 w(SRedundant\(matrix,)d(i,)k(point,)g(err\))d Fo(:)227 4745 y(Chec)m(k)32 b(whether)e Fj(i)p Fo(th)i(data)g(in)e Fn(matrix)g Fo(is)h(strongly)h(redundan)m(t)e(for)h(the)g(represen)m (tation.)44 b(If)31 b Fj(i)h Fo(is)f(a)g(lin-)227 4858 y(earit)m(y)-8 b(,)32 b(it)d(do)s(es)f(nothing)h(and)f(alw)m(a)m(ys)j (returns)c Fn(dd)p 2005 4858 V 34 w(FALSE)p Fo(.)h(Here,)h Fj(i)p Fo(th)g(inequalit)m(y)i(in)d(H-represen)m(tation)227 4971 y(is)h Ff(str)-5 b(ongly)33 b(r)-5 b(e)g(dundant)39 b Fo(if)29 b(it)g(is)g(redundan)m(t)e(and)h(there)h(is)g(no)f(p)s(oin)m (t)h(in)f(the)h(p)s(olyhedron)e(satisfying)i(the)227 5084 y(inequalit)m(y)c(with)e(equalit)m(y)-8 b(.)41 b(In)22 b(V-represen)m(tation,)27 b Fj(i)p Fo(th)d(p)s(oin)m(t)f(is)g Ff(str)-5 b(ongly)28 b(r)-5 b(e)g(dundant)35 b Fo(if)23 b(it)h(is)g(redundan)m(t)227 5197 y(and)31 b(it)g(is)g(in)f(the)i (relativ)m(e)h(in)m(terior)e(of)g(the)g(p)s(olyhedron.)41 b(If)31 b(it)g(is)g(not)g(strongly)g(redundan)m(t,)f(it)i(returns)227 5309 y(a)f(certi\014cate.)1926 5682 y(8)p eop end %%Page: 9 9 TeXDict begin 9 8 bop 0 44 a Fn(dd)p 102 44 29 4 v 34 w(boolean)46 b(dd)p 614 44 V 33 w(ImplicitLinearity\(matrix,)41 b(i,)48 b(err\))c Fo(:)227 157 y(Chec)m(k)33 b(whether)e Fj(i)p Fo(th)h(ro)m(w)g(in)g(the)g(input)f(is)h(forced)g(to)h(b)s(e)e (linearit)m(y)j(\(equalit)m(y)g(for)d(H-represen)m(tation\).)227 270 y(If)f Fj(i)h Fo(is)f(linearit)m(y)i(itself,)g(it)e(do)s(es)g (nothing)h(and)f(alw)m(a)m(ys)h(returns)f Fn(dd)p 2589 270 V 33 w(FALSE)p Fo(.)0 454 y Fn(dd)p 102 454 V 34 w(rowset)46 b(dd)p 566 454 V 34 w(ImplicitLinearityRows\(m)o(atri)o(x,) c(err\))i Fo(:)227 567 y(Returns)39 b(the)g(set)h(of)g(indices)g(of)f (ro)m(ws)h(that)g(are)g(implicitly)g(linearit)m(y)-8 b(.)70 b(It)40 b(simply)f(calls)h(the)g(library)227 680 y(function)e Fn(dd)p 693 680 V 34 w(ImplicitLinearity)33 b Fo(for)38 b(eac)m(h)h(inequalit)m(y)g(and)f(collects)i(the)e(ro)m(w)g (indices)g(for)g(whic)m(h)227 793 y(the)31 b(answ)m(er)f(is)h Fn(dd)p 879 793 V 33 w(TRUE)p Fo(.)0 977 y Fn(dd)p 102 977 V 34 w(boolean)46 b(dd)p 614 977 V 33 w (MatrixCanonicalize\(matrixP)o(,)c(impl)p 2176 977 V 33 w(lin,)47 b(redset,)f(newpos,)f(err\))g Fo(:)227 1090 y(The)30 b(input)f(is)h(a)h(p)s(oin)m(ter)f Fn(matrixP)e Fo(to)j(a)f(matrix)h(and)e(the)i(function)f(mo)s(di\014es)f(the)h (matrix)h(b)m(y)f(putting)227 1203 y(a)40 b(maximally)h(linear)f(indep) s(enden)m(t)e(linearities)j(\(basis\))g(at)f(the)g(top)g(of)f(the)h (matrix,)j(and)c(remo)m(ving)227 1316 y(all)33 b(redundan)m(t)e(data.) 46 b(All)33 b(implicit)g(linearities)g(and)e(all)i(\(remo)m(v)m(ed\))h (redundan)m(t)d(ro)m(ws)h(in)f(the)h(original)227 1429 y(matrix)c(will)f(b)s(e)f(returned)g(in)g(the)i(corresp)s(onding)e(ro)m (w)h(sets.)40 b(The)26 b(new)g(p)s(ositions)h(of)g(the)g(original)i(ro) m(ws)227 1542 y(are)i(returned)e(b)m(y)h(the)h(arra)m(y)g Fn(newpos)p Fo(.)227 1690 y(The)c(cardinalit)m(y)i(of)f(the)g(new)f (linearit)m(y)i(set)f Fn(\(*matrixP\)->linset)22 b Fo(is)28 b(the)g(co)s(dimension)f(of)h(the)g(p)s(oly-)227 1803 y(hedron)i(if)g(it)h(is)f(H-p)s(olyhedron,)g(and)g(is)g(the)h (dimension)e(of)i(linearit)m(y)h(space)f(if)f(it)h(is)f(V-p)s (olyhedron.)227 1952 y(Note)e(that)e(the)h(presen)m(t)f(v)m(ersion)g (should)g(not)g(b)s(e)f(called)j(a)e(canonicalization)k(b)s(ecause)c (it)g(ma)m(y)h(generate)227 2065 y(t)m(w)m(o)j(di\013eren)m(t)e (represen)m(tations)h(of)f(the)h(same)f(p)s(olyhedron.)39 b(In)27 b(the)h(future,)g(this)g(function)g(is)g(exp)s(ected)227 2178 y(to)j(b)s(e)f(correctly)i(implemen)m(ted.)0 2362 y Fn(dd)p 102 2362 V 34 w(boolean)46 b(dd)p 614 2362 V 33 w(MatrixCanonicalizeLinearit)o(y\(ma)o(tri)o(xP,)41 b(impl)p 2605 2362 V 34 w(linset,)k(newpos.)94 b(err\))44 b Fo(:)227 2475 y(It)g(do)s(es)g(only)g(the)g(\014rst)f(half)h(of)g Fn(dd)p 1554 2475 V 34 w(boolean)i(dd)p 2066 2475 V 33 w(MatrixCanonicalize)p Fo(,)d(namely)-8 b(,)48 b(it)d(detects)g(all)227 2588 y(implicit)27 b(linearities)g(and)f(puts)f(a)h(maximally)h(indep)s (enden)m(t)d(linearities)k(at)e(the)g(top)g(of)g(the)g(matrix.)40 b(F)-8 b(or)227 2701 y(example,)32 b(this)e(function)g(can)h(b)s(e)e (used)h(to)h(detect)h(the)e(dimension)g(of)h(an)f(H-p)s(olyhedron.)0 2885 y Fn(dd)p 102 2885 V 34 w(boolean)46 b(dd)p 614 2885 V 33 w(MatrixRedundancyRemove\(mat)o(rixP)o(,)c(redset,)k(newpos,) f(err\))g Fo(:)227 2998 y(It)25 b(do)s(es)e(essen)m(tially)j(the)f (second)f(half)g(of)g Fn(dd)p 1757 2998 V 34 w(boolean)46 b(dd)p 2269 2998 V 34 w(MatrixCanonicalize)p Fo(,)20 b(namely)-8 b(,)27 b(it)d(detects)227 3111 y(all)30 b(redundancies.)39 b(This)27 b(function)h(should)g(b)s(e)f(used)h(after)h Fn(dd)p 2421 3111 V 34 w(MatrixCanonicalizeLinear)o(ity)22 b Fo(has)227 3224 y(b)s(een)30 b(called.)0 3408 y Fn(dd)p 102 3408 V 34 w(boolean)46 b(dd)p 614 3408 V 33 w (FindRelativeInterior\(matri)o(x,)c(impl)p 2224 3408 V 33 w(lin,)k(lin)p 2639 3408 V 34 w(basis,)g(lps,)h(err\))d Fo(:)227 3521 y(Computes)39 b(a)h(p)s(oin)m(t)g(in)f(the)h(relativ)m(e) h(in)m(terior)f(of)g(an)g(H-p)s(olyhedron)e(giv)m(en)j(b)m(y)e(matrix,) j(b)m(y)e(solving)227 3634 y(an)32 b(LP)-8 b(.)31 b(The)g(p)s(oin)m(t)h (will)g(b)s(e)f(returned)f(b)m(y)h Fn(lps)p Fo(.)44 b(See)31 b(the)h(sample)g(program)f(allfaces.c)j(that)e(generates)227 3747 y(all)47 b(nonempt)m(y)e(faces)h(of)g(an)f(H-p)s(olyhedron)g(and)g (a)h(relativ)m(e)h(in)m(terior)g(p)s(oin)m(t)e(for)g(eac)m(h)i(face.)87 b(The)227 3860 y(former)35 b(returns)f(all)i(implicit)g(linearit)m(y)g (ro)m(ws)g(\(implicit)g(equations\))g(and)f(the)g(latter)h(returns)e(a) i(basis)227 3973 y(of)31 b(the)g(union)e(of)i(linearit)m(y)h(ro)m(ws)f (and)f(implicit)h(linearit)m(y)h(ro)m(ws.)41 b(This)30 b(means)h(that)g(the)f(cardinalit)m(y)i(of)227 4086 y Fn(*lin)p 425 4086 V 34 w(basis)c Fo(is)j(the)f(co)s(dimension)h(of)f (the)h(p)s(olyhedron.)0 4270 y Fn(dd)p 102 4270 V 34 w(boolean)46 b(dd)p 614 4270 V 33 w(ExistsRestrictedFace\(matri)o(x,)c (R,)47 b(S,)g(err\))d Fo(:)227 4383 y(Returns)26 b(the)i(answ)m(er)f (to)g(the)h(F)-8 b(ark)j(as')28 b(t)m(yp)s(e)f(decision)h(problem)e(as) i(to)f(whether)g(there)g(is)g(a)h(p)s(oin)m(t)f(in)f(the)227 4496 y(p)s(olyhedron)h(giv)m(en)h(b)m(y)g(matrix)g(satisfying)g(all)h (constrain)m(ts)f(in)g Fn(R)f Fo(with)g(equalit)m(y)j(and)d(all)h (constrain)m(ts)h(in)227 4609 y Fn(S)h Fo(with)g(strict)i(inequalit)m (y)-8 b(.)42 b(More)31 b(precisely)-8 b(,)32 b(it)f(is)f(the)h(linear)f (feasibilit)m(y)j(problem:)1111 4795 y Fi(9)p Fo(?)82 b Fj(x)113 b Fo(satisfying)h Fj(b)1979 4809 y Fg(r)2038 4795 y Fi(\000)19 b Fj(A)2196 4809 y Fg(r)2235 4795 y Fj(x)83 b Fo(=)25 b(0)p Fj(;)41 b Fi(8)p Fj(r)27 b Fi(2)e Fj(R)c Fi([)f Fj(L)1940 4908 y(b)1979 4922 y Fg(s)2036 4908 y Fi(\000)g Fj(A)2195 4922 y Fg(s)2232 4908 y Fj(x)86 b(>)25 b Fo(0)p Fj(;)41 b Fi(8)p Fj(s)24 b Fi(2)h Fj(S)1940 5021 y(b)1979 5035 y Fg(t)2029 5021 y Fi(\000)20 b Fj(A)2188 5035 y Fg(t)2218 5021 y Fj(x)100 b Fi(\025)25 b Fo(0)p Fj(;)41 b Fi(8)p Fj(t)24 b Fi(2)h Fj(T)8 b(;)227 5207 y Fo(where)31 b Fj(L)g Fo(is)g(the)g(set)h(of)f(linearit)m(y)i(ro)m(ws) e(of)g Fn(matrix)p Fo(,)f(and)g Fj(T)44 b Fo(represen)m(ts)31 b(the)g(set)h(of)f(ro)m(ws)g(that)h(are)f(not)227 5320 y(in)e Fj(R)17 b Fi([)f Fj(L)h Fi([)f Fj(S)5 b Fo(.)40 b(Both)29 b Fn(R)g Fo(and)f Fn(S)g Fo(are)h(of)g Fn(dd)p 1683 5320 V 33 w(rowset)e Fo(t)m(yp)s(e.)41 b(The)28 b(set)h Fj(S)k Fo(is)c(supp)s(osed)e(to)i(b)s(e)f(disjoin)m(t)h(from) 227 5433 y(b)s(oth)h Fj(R)h Fo(and)f Fj(L)p Fo(.)40 b(If)30 b(it)h(is)f(not)h(the)g(case,)g(the)g(set)g Fj(S)k Fo(will)c(b)s(e)f (considered)g(as)g Fj(S)c Fi(n)20 b Fo(\()p Fj(R)i Fi([)d Fj(L)p Fo(\).)1926 5682 y(9)p eop end %%Page: 10 10 TeXDict begin 10 9 bop 227 44 a Fo(This)32 b(function)h(ignores)g Fn(matrix->representation)p Fo(,)28 b(and)k(th)m(us)h(ev)m(en)g(if)g (it)g(is)g(set)h(to)f Fn(dd)p 3440 44 29 4 v 34 w(Generator)227 157 y Fo(or)e Fn(dd)p 441 157 V 33 w(Unspecified)p Fo(,)d(it)j(treats)g (the)g(matrix)g(as)f(if)g(it)h(w)m(ere)g(inequalit)m(y)h(represen)m (tation.)0 337 y Fn(dd)p 102 337 V 34 w(boolean)46 b(dd)p 614 337 V 33 w(ExistsRestrictedFace2\(matr)o(ix,)41 b(R,)47 b(S,)h(lps,)e(err\))f Fo(:)227 450 y(It)27 b(is)h(the)f(same)g(as)h (the)f(function)g Fn(dd)p 1505 450 V 34 w(ExistsRestrictedFace)21 b Fo(except)28 b(that)g(it)f(returns)f(also)i(a)g(certi\014-)227 562 y(cate)k(for)e(the)h(answ)m(er.)41 b(The)29 b(certi\014cate)k(is)d (a)h(solution)g(to)g(the)g(b)s(ounded)d(LP:)891 717 y(\(P\))83 b(max)15 b Fj(z)118 b Fo(sub)5 b(ject)30 b(to)114 b Fj(b)1999 731 y Fg(r)2058 717 y Fi(\000)19 b Fj(A)2216 731 y Fg(r)2255 717 y Fj(x)283 b Fo(=)25 b(0)p Fj(;)41 b Fi(8)p Fj(r)27 b Fi(2)e Fj(R)c Fi([)f Fj(L)1960 830 y(b)1999 844 y Fg(s)2056 830 y Fi(\000)g Fj(A)2215 844 y Fg(s)2252 830 y Fj(x)86 b Fi(\000)p Fj(z)h Fi(\025)25 b Fo(0)p Fj(;)41 b Fi(8)p Fj(s)24 b Fi(2)h Fj(S)1960 943 y(b)1999 957 y Fg(t)2049 943 y Fi(\000)20 b Fj(A)2208 957 y Fg(t)2238 943 y Fj(x)300 b Fi(\025)25 b Fo(0)p Fj(;)41 b Fi(8)p Fj(t)24 b Fi(2)h Fj(T)1960 1056 y Fo(1)385 b Fi(\000)p Fj(z)87 b Fi(\025)25 b Fo(0)p Fj(;)227 1228 y Fo(where)31 b Fj(L)g Fo(is)g(the)g(set)h(of)f (linearit)m(y)i(ro)m(ws)e(of)g Fn(matrix)p Fo(,)f(and)g Fj(T)44 b Fo(represen)m(ts)31 b(the)g(set)h(of)f(ro)m(ws)g(that)h(are)f (not)227 1341 y(in)j Fj(R)23 b Fi([)f Fj(L)g Fi([)g Fj(S)5 b Fo(.)51 b(The)33 b(answ)m(er)h(for)f(the)h(decision)g(problem)f(is)h (YES)f(if)h(and)f(only)h(if)g(the)f(LP)h(attains)h(an)227 1454 y(optimal)c(and)d(the)i(optimal)g(v)-5 b(alue)30 b(is)g(p)s(ositiv)m(e.)41 b(The)29 b(dual)g(solution)h(\(either)g(an)f (optimal)i(solution)f(or)f(a)227 1567 y(dual)d(un)m(b)s(ounded)e (direction\))j(can)g(b)s(e)e(considered)h(as)h(a)g(certi\014cate)h(for) e(the)h(NO)f(answ)m(er,)h(if)f(the)h(answ)m(er)227 1679 y(is)k(NO.)227 1826 y(This)h(function)h(ignores)g Fn (matrix->representation)p Fo(,)28 b(and)k(th)m(us)h(ev)m(en)g(if)g(it)g (is)g(set)h(to)f Fn(dd)p 3440 1826 V 34 w(Generator)227 1939 y Fo(or)e Fn(dd)p 441 1939 V 33 w(Unspecified)p Fo(,)d(it)j(treats)g(the)g(matrix)g(as)f(if)g(it)h(w)m(ere)g(inequalit) m(y)h(represen)m(tation.)0 2118 y Fn(dd)p 102 2118 V 34 w(SetFamilyPtr)44 b(dd)p 852 2118 V 34 w(Matrix2Adjacency\(matrix,)d (err\))k Fo(:)227 2231 y(Computes)e(the)g(adjacency)g(list)h(of)f (input)f(ro)m(ws)g(using)h(the)g(LP)f(solv)m(er)i(and)e(without)h (running)e(the)227 2344 y(represen)m(tation)27 b(con)m(v)m(ersion.)41 b(When)26 b(the)g(input)f(is)h(H-represen)m(tation,)j(it)d(giv)m(es)h (the)g(facet)g(graph)e(of)h(the)227 2457 y(p)s(olyhedron.)37 b(F)-8 b(or)24 b(V-represen)m(tation,)j(it)c(giv)m(es)i(the)e(\(v)m (ertex\))i(graph)e(of)g(the)h(p)s(olyhedron.)37 b(It)23 b(is)g(required)227 2570 y(that)28 b(the)f(input)g(matrix)g(is)g(a)h (minimal)f(represen)m(tation.)41 b(Run)26 b(redundancy)g(remo)m(v)-5 b(al)28 b(functions)f(b)s(efore)227 2683 y(calling)32 b(this)e(function,)h(see)g(the)f(sample)h(co)s(de)f(adjacency)-8 b(.c.)0 2862 y Fn(dd)p 102 2862 V 34 w(SetFamilyPtr)44 b(dd)p 852 2862 V 34 w(Matrix2WeakAdjacency\(matr)o(ix,)d(err\))k Fo(:)227 2975 y(Computes)37 b(the)h(w)m(eak)h(adjacency)g(list)f(of)g (input)f(ro)m(ws)h(using)f(the)h(LP)g(solv)m(er)g(and)f(without)h (running)227 3088 y(the)31 b(represen)m(tation)h(con)m(v)m(ersion.)44 b(When)30 b(the)h(input)f(is)h(H-represen)m(tation,)i(it)e(giv)m(es)i (the)e(graph)f(where)227 3201 y(its)g(no)s(des)f(are)h(the)g(facets)h (t)m(w)m(o)f(no)s(des)f(are)h(adjacen)m(t)h(if)f(and)f(only)g(if)h(the) g(asso)s(ciated)h(facets)f(ha)m(v)m(e)h(some)227 3314 y(in)m(tersection.)41 b(F)-8 b(or)26 b(V-represen)m(tation,)j(it)d(giv) m(es)h(the)f(graph)f(where)g(its)h(no)s(des)e(are)i(the)g(v)m(ertices)h (and)e(t)m(w)m(o)227 3427 y(no)s(des)i(are)g(adjacen)m(t)i(if)e(and)g (only)g(if)g(the)h(asso)s(ciated)h(v)m(ertices)g(are)e(on)g(a)h(common) g(facet.)41 b(It)27 b(is)g(required)227 3540 y(that)h(the)f(input)g (matrix)g(is)g(a)h(minimal)f(represen)m(tation.)41 b(Run)26 b(redundancy)g(remo)m(v)-5 b(al)28 b(functions)f(b)s(efore)227 3653 y(calling)32 b(this)e(function,)h(see)g(the)f(sample)h(co)s(de)f (adjacency)-8 b(.c.)0 3832 y Fn(dd)p 102 3832 V 34 w(MatrixPtr)45 b(dd)p 709 3832 V 34 w(FourierElimination\(matri)o(x,)d(err\))i Fo(:)227 3945 y(Eliminate)32 b(the)f(last)h(v)-5 b(ariable)32 b(from)f(a)g(system)g(of)g(linear)h(inequalities)g(giv)m(en)g(b)m(y)f (matrix)g(b)m(y)g(using)f(the)227 4058 y(F)-8 b(ourier's)21 b(Elimination.)38 b(If)20 b(the)h(input)e(matrix)i(is)f(V-represen)m (tation,)k Fn(*err)19 b Fo(returns)g Fn(dd)p 3275 4058 V 34 w(NotAvailForV)p Fo(.)227 4171 y(This)32 b(function)h(do)s(es)f (not)h(remo)m(v)m(e)i(redundancy)c(and)h(one)h(migh)m(t)h(w)m(an)m(t)f (to)h(call)g(redundancy)d(remo)m(v)-5 b(al)227 4284 y(functions)30 b(afterw)m(ards.)41 b(See)31 b(the)f(sample)h(co)s(de)f(fourier.c.)0 4463 y Fn(dd)p 102 4463 V 34 w(MatrixPtr)45 b(dd)p 709 4463 V 34 w(BlockElimination\(matrix,)c(set,)47 b(err\))d Fo(:)227 4576 y(Eliminate)d(a)f(set)g(of)f(v)-5 b(ariables)41 b(from)e(a)h(system)f(of)h(linear)g(inequalities)h(giv)m(en)f(b)m(y)g (matrix)g(b)m(y)f(using)227 4689 y(the)33 b(extreme)g(ra)m(ys)g(of)g (the)g(dual)f(linear)h(system.)48 b(See)33 b(commen)m(ts)g(in)f(the)h (co)s(de)g(cddpro)5 b(j.c)32 b(for)g(details.)227 4802 y(This)27 b(migh)m(t)g(b)s(e)g(a)h(faster)f(w)m(a)m(y)h(to)g(eliminate) h(v)-5 b(ariables)28 b(than)e(the)i(rep)s(eated)f(F)-8 b(ourierElimination)29 b(when)227 4915 y(the)35 b(n)m(um)m(b)s(er)e(of) h(v)-5 b(ariables)35 b(to)g(eliminate)g(is)g(large.)53 b(If)33 b(the)i(input)e(matrix)i(is)f(V-represen)m(tation,)j Fn(*err)227 5028 y Fo(returns)26 b Fn(dd)p 640 5028 V 34 w(NotAvailForV)p Fo(.)d(This)k(function)f(do)s(es)h(not)g(remo)m(v)m (e)h(redundancy)d(and)h(one)i(migh)m(t)f(w)m(an)m(t)h(to)227 5141 y(call)k(redundancy)d(remo)m(v)-5 b(al)31 b(functions)f(afterw)m (ards.)41 b(See)31 b(the)f(sample)h(co)s(de)f(pro)5 b(jection.c.)0 5320 y Fn(dd)p 102 5320 V 34 w(rowrange)45 b(dd)p 661 5320 V 34 w(RayShooting\(matrix,)e(point,)j(vector\))d Fo(:)227 5433 y(Finds)32 b(the)g(index)g(of)g(a)h(halfspace)f(\014rst)g (left)g(b)m(y)g(the)h(ra)m(y)f(starting)h(from)f Fn(point)f Fo(to)m(w)m(ard)i(the)f(direction)1903 5682 y(10)p eop end %%Page: 11 11 TeXDict begin 11 10 bop 227 44 a Fn(vector)p Fo(.)39 b(It)28 b(resolv)m(es)i(tie)f(b)m(y)f(a)h(lexicographic)h(p)s (erturbation.)39 b(Those)28 b(inequalities)i(violated)g(b)m(y)e Fn(point)227 157 y Fo(will)j(b)s(e)f(simply)g(ignored.)0 401 y Fd(4.3)112 b(Data)38 b(Manipulations)0 572 y Fp(4.3.1)105 b(Num)m(b)s(er)35 b(Assignmen)m(ts)0 744 y Fo(F)-8 b(or)31 b(n)m(um)m(b)s(er)d(assignmen)m(ts,)j(one)f(cannot)h(use)e(suc)m(h)h (expressions)f(as)h Fn(x=\(mytype\)a)p Fo(.)38 b(This)29 b(is)g(b)s(ecause)h(cddlib)0 857 y(uses)37 b(an)g(abstract)h(n)m(um)m (b)s(er)e(t)m(yp)s(e)h(\()p Fn(mytype)p Fo(\))f(so)i(that)f(it)h(can)f (compute)h(with)f(v)-5 b(arious)37 b(n)m(um)m(b)s(er)f(t)m(yp)s(es)h (suc)m(h)0 970 y(as)c(C)f(double)g(and)h(GMP)g(rational.)49 b(User)32 b(can)h(easily)h(add)e(a)h(new)g(n)m(um)m(b)s(er)e(t)m(yp)s (e)i(b)m(y)g(rede\014ning)e(arithmetic)0 1082 y(op)s(erations)g(in)f (cddmp.h)e(and)i(cddmp.c.)0 1295 y Fn(void)47 b(dd)p 341 1295 29 4 v 33 w(init\(x\))d Fo(:)227 1408 y(This)36 b(is)g(to)h(initialize)h(a)f Fn(mytype)d Fo(v)-5 b(ariable)37 b Fn(x)f Fo(and)g(to)h(set)f(it)h(to)g(zero.)59 b(This)35 b(initialization)k(has)d(to)h(b)s(e)227 1521 y(called)32 b(b)s(efore)e(an)m(y)h Fn(mytype)d Fo(v)-5 b(ariable)31 b(to)g(b)s(e)f(used.)0 1708 y Fn(void)47 b(dd)p 341 1708 V 33 w(clear\(x\))d Fo(:)227 1821 y(This)30 b(is)g(to)h(free)g(the)f (space)h(allo)s(cated)i(to)e(a)g Fn(mytype)d Fo(v)-5 b(ariable)31 b Fn(x)p Fo(.)0 2009 y Fn(void)47 b(dd)p 341 2009 V 33 w(set)p 518 2009 V 34 w(si\(x,)f(a\))f Fo(:)227 2122 y(This)30 b(is)g(to)h(set)g(a)g Fn(mytype)e Fo(v)-5 b(ariable)31 b Fn(x)f Fo(to)h(the)g(v)-5 b(alue)30 b(of)h(signed)f(long)h(in)m(teger)h Fn(a)p Fo(.)0 2310 y Fn(void)47 b(dd)p 341 2310 V 33 w(set)p 518 2310 V 34 w(si2\(x,)f(a,)h(b\))e Fo(:)227 2422 y(This)24 b(is)g(to)i(set)f(a)f Fn(mytype)f Fo(v)-5 b(ariable)25 b Fn(x)f Fo(to)i(the)e(v)-5 b(alue)25 b(of)g(the)f(rational)i(expression)e Fn(a/b)p Fo(,)h(where)f Fn(a)g Fo(is)h(signed)227 2535 y(long)31 b(and)f Fn(b)g Fo(is)g(unsigned)g(long)h(in)m(tegers.)0 2723 y Fn(void)47 b(dd)p 341 2723 V 33 w(set)p 518 2723 V 34 w(d\(x,)g(b\))e Fo(:)227 2836 y(This)33 b(is)g(to)h(set)f(a)h Fn(mytype)d Fo(v)-5 b(ariable)34 b Fn(x)f Fo(to)h(the)f(v)-5 b(alue)34 b(of)f(double)g Fn(b)p Fo(.)49 b(This)32 b(is)h(a)m(v)-5 b(ailable)36 b(only)d(when)f(the)227 2949 y(library)e(is)h(compiled)f (without)h Fn(-DGMPRATIONAL)c Fo(compiler)k(option.)0 3189 y Fp(4.3.2)105 b(Arithmetic)35 b(Op)s(erations)g(for)g Fn(mytype)e Fp(Num)m(b)s(ers)0 3361 y Fo(Belo)m(w)f Fn(x)p Fo(,)e Fn(y)p Fo(,)h Fn(z)f Fo(are)g(of)h(t)m(yp)s(e)f Fn(mytype)p Fo(.)0 3573 y Fn(void)47 b(dd)p 341 3573 V 33 w(add\(x,)g(y,)g(z\))e Fo(:)227 3686 y(Set)31 b Fn(x)f Fo(to)h(b)s(e)f(the)g(sum)g(of)g Fn(y)g Fo(and)g Fn(z)p Fo(.)0 3874 y Fn(void)47 b(dd)p 341 3874 V 33 w(sub\(x,)g(y,)g(z\))e Fo(:)227 3987 y(Set)31 b Fn(x)f Fo(to)h(b)s(e)f(the)g(substraction)h(of)f Fn(z)g Fo(from)g Fn(y)p Fo(.)0 4174 y Fn(void)47 b(dd)p 341 4174 V 33 w(mul\(x,)g(y,)g(z\))e Fo(:)227 4287 y(Set)31 b Fn(x)f Fo(to)h(b)s(e)f(the)g(m)m(ultiplication)j(of)d Fn(y)g Fo(and)g Fn(z)p Fo(.)0 4475 y Fn(void)47 b(dd)p 341 4475 V 33 w(div\(x,)g(y,)g(z\))e Fo(:)227 4588 y(Set)31 b Fn(x)f Fo(to)h(b)s(e)f(the)g(division)h(of)f Fn(y)g Fo(o)m(v)m(er)i Fn(z)p Fo(.)0 4775 y Fn(void)47 b(dd)p 341 4775 V 33 w(inv\(x,)g(y\))d Fo(:)227 4888 y(Set)31 b Fn(x)f Fo(to)h(b)s(e)f(the)g (reciplo)s(cal)i(of)f Fn(y)p Fo(.)1903 5682 y(11)p eop end %%Page: 12 12 TeXDict begin 12 11 bop 0 44 a Fp(4.3.3)105 b(Prede\014ned)36 b(Constan)m(ts)0 216 y Fo(There)24 b(are)h(sev)m(eral)g Fn(mytype)e Fo(constan)m(ts)i(de\014ned)f(when)f Fn(dd)p 2043 216 29 4 v 34 w(set)p 2221 216 V 33 w(global)p 2542 216 V 33 w(constants\(void\))d Fo(is)25 b(called.)40 b(Some)0 329 y(constan)m(ts)35 b(dep)s(end)d(on)i(the)g(double)g (constan)m(t)h Fn(dd)p 1784 329 V 34 w(almostzero)c Fo(whic)m(h)i(is)h (normally)g(set)h(to)g(10)3417 296 y Fc(\000)p Fh(7)3546 329 y Fo(in)e(cdd.h.)0 442 y(This)28 b(v)-5 b(alue)29 b(can)f(b)s(e)g(mo)s(di\014ed)f(dep)s(ending)g(on)i(ho)m(w)f(n)m (umerically)h(delicate)i(y)m(our)d(problems)g(are)h(but)f(an)g(extra)0 555 y(caution)j(should)f(b)s(e)f(tak)m(en.)0 767 y Fn(mytype)46 b(dd)p 436 767 V 34 w(purezero)d Fo(:)227 880 y(This)30 b(represen)m(ts)g(the)h(mathematical)h(zero)g(0.)0 1068 y Fn(mytype)46 b(dd)p 436 1068 V 34 w(zero)e Fo(:)227 1181 y(This)36 b(represen)m(ts)g(the)h(largest)h(p)s(ositiv)m(e)f(n)m (um)m(b)s(er)e(whic)m(h)h(should)g(b)s(e)g(considered)g(to)h(b)s(e)f (zero.)60 b(In)35 b(the)227 1293 y(GMPRA)-8 b(TIONAL)34 b(mo)s(de,)h(it)f(is)g(equal)g(to)g Fn(dd)p 1890 1293 V 34 w(purezero)p Fo(.)49 b(In)33 b(the)h(C)f(double)g(mo)s(de,)i(it)f (is)g(set)g(to)g(the)227 1406 y(v)-5 b(alue)31 b(of)g Fn(dd)p 668 1406 V 33 w(almostzero)p Fo(.)0 1594 y Fn(mytype)46 b(dd)p 436 1594 V 34 w(minuszero)d Fo(:)227 1707 y(The)30 b(negativ)m(e)j(of)d Fn(dd)p 978 1707 V 34 w(zero)p Fo(.)0 1895 y Fn(mytype)46 b(dd)p 436 1895 V 34 w(one)f Fo(:)227 2007 y(This)30 b(represen)m(ts)g(the)h(mathematical)h(one)f(1.)0 2248 y Fp(4.3.4)105 b(Sign)36 b(Ev)-6 b(aluation)34 b(and)h(Comparison) h(for)f Fn(mytype)e Fp(Num)m(b)s(ers)0 2419 y Fo(Belo)m(w)f Fn(x)p Fo(,)e Fn(y)p Fo(,)h Fn(z)f Fo(are)g(of)h(t)m(yp)s(e)f Fn(mytype)p Fo(.)0 2632 y Fn(dd)p 102 2632 V 34 w(boolean)46 b(dd)p 614 2632 V 33 w(Positive\(x\))d Fo(:)227 2745 y(Returns)23 b Fn(dd)p 668 2745 V 34 w(TRUE)f Fo(if)h Fn(x)g Fo(is)g(considered)h(p)s(ositiv)m(e,)i(and)c Fn(dd)p 2207 2745 V 34 w(FALSE)g Fo(otherwise.)39 b(In)23 b(the)g(GMPRA)-8 b(TIONAL)227 2858 y(mo)s(de,)23 b(the)d(p)s(ositivit)m(y)i(recognition) g(is)f(exact.)39 b(In)20 b(the)h(C)f(double)g(mo)s(de,)i(this)f(means)f (the)h(v)-5 b(alue)21 b(is)g(strictly)227 2970 y(larger)31 b(than)f Fn(dd)p 799 2970 V 34 w(zero)p Fo(.)227 3121 y Fn(dd)p 329 3121 V 34 w(boolean)46 b(dd)p 841 3121 V 34 w(Negative\(x\))27 b Fo(w)m(orks)j(similarly)-8 b(.)0 3308 y Fn(dd)p 102 3308 V 34 w(boolean)46 b(dd)p 614 3308 V 33 w(Nonpositive\(x\))c Fo(:)227 3421 y(Returns)30 b(the)g(negation)i(of)f Fn(dd)p 1304 3421 V 33 w(Positive\(x\))p Fo(.)38 b Fn(dd)p 2024 3421 V 34 w(Nonnegative\(x\))26 b Fo(w)m(orks)31 b(similarly)-8 b(.)0 3609 y Fn(dd)p 102 3609 V 34 w(boolean)46 b(dd)p 614 3609 V 33 w(EqualToZero\(x\))c Fo(:)227 3722 y(Returns)34 b Fn(dd)p 679 3722 V 34 w(TRUE)g Fo(if)h Fn(x)g Fo(is)g(considered)g(zero,)i(and)d Fn(dd)p 2156 3722 V 34 w(FALSE)g Fo(otherwise.)55 b(In)34 b(the)h(GMPRA)-8 b(TIONAL)227 3835 y(mo)s(de,)28 b(the)f(zero)h(recognition)h(is)f (exact.)41 b(In)26 b(the)i(C)e(double)h(mo)s(de,)h(this)f(means)g(the)h (v)-5 b(alue)27 b(is)h(in)m(b)s(et)m(w)m(een)227 3948 y Fn(dd)p 329 3948 V 34 w(minuszero)g Fo(and)i Fn(dd)p 1096 3948 V 34 w(zero)f Fo(inclusiv)m(e.)0 4135 y Fn(dd)p 102 4135 V 34 w(boolean)46 b(dd)p 614 4135 V 33 w(Larger\(x,)g(y\))f Fo(:)227 4248 y(Returns)31 b Fn(dd)p 676 4248 V 33 w(TRUE)f Fo(if)i Fn(x)f Fo(is)g(strictly)h(larger)g(than)f Fn(y)p Fo(,)g(and)g Fn(dd)p 2349 4248 V 34 w(FALSE)f Fo(otherwise.)43 b(This)31 b(is)g(implemen)m(ted)227 4361 y(as)f(dd)p 445 4361 28 4 v 32 w(P)m(ositiv)m(e\(z\))j(where)d Fn(z)f Fo(is)h(the)g(subtraction)g(of)g Fn(y)g Fo(from)f Fn(x)p Fo(.)40 b Fn(dd)p 2602 4361 29 4 v 34 w(Smaller\(x,)45 b(y\))29 b Fo(w)m(orks)h(similarly)-8 b(.)0 4549 y Fn(dd)p 102 4549 V 34 w(boolean)46 b(dd)p 614 4549 V 33 w(Equal\(x,)g(y\))f Fo(:)227 4662 y(Returns)30 b Fn(dd)p 675 4662 V 33 w(TRUE)g Fo(if)g Fn(x)g Fo(is)g(considered)g(equal)h(to)g Fn(y)p Fo(,)g(and)e Fn(dd)p 2354 4662 V 34 w(FALSE)g Fo(otherwise.)41 b(This)30 b(is)g(implemen)m(ted)227 4774 y(as)h(dd)p 446 4774 28 4 v 32 w(EqualT)-8 b(oZero\(z\))32 b(where)e Fn(z)g Fo(is)g(the)h(subtraction)f(of)h Fn(y)f Fo(from)g Fn(x)p Fo(.)0 5015 y Fp(4.3.5)105 b(P)m(olyhedra)36 b(Data)f (Manipulation)0 5186 y Fn(dd)p 102 5186 29 4 v 34 w(MatrixPtr)45 b(dd)p 709 5186 V 34 w(PolyFile2Matrix)f(\(f,)i(err\))f Fo(:)227 5299 y(Read)28 b(a)f(P)m(olyhedra)h(data)g(from)e(stream)i Fn(f)f Fo(and)f(store)i(it)g(in)f Fn(matrixdata)d Fo(and)j(return)f(a)h (p)s(oin)m(ter)g(to)h(the)227 5412 y(data.)1903 5682 y(12)p eop end %%Page: 13 13 TeXDict begin 13 12 bop 0 44 a Fn(dd)p 102 44 29 4 v 34 w(MatrixPtr)45 b(dd)p 709 44 V 34 w(CopyInequalities\(poly\))39 b Fo(:)227 157 y(Cop)m(y)26 b(the)f(inequalit)m(y)i(represen)m(tation)g (p)s(oin)m(ted)e(b)m(y)g(p)s(oly)g(to)h Fn(matrixdata)d Fo(and)i(return)f Fn(dd)p 3415 157 V 34 w(MatrixPtr)p Fo(.)0 345 y Fn(dd)p 102 345 V 34 w(MatrixPtr)45 b(dd)p 709 345 V 34 w(CopyGenerators\(poly\))40 b Fo(:)227 458 y(Cop)m(y)27 b(the)g(generator)i(represen)m(tation)f(p)s(oin)m(ted)e(b) m(y)h(p)s(oly)g(to)h Fn(matrixdata)c Fo(and)i(return)g Fn(dd)p 3415 458 V 34 w(MatrixPtr)p Fo(.)0 645 y Fn(dd)p 102 645 V 34 w(SetFamilyPtr)44 b(dd)p 852 645 V 34 w (CopyIncidence\(poly\))c Fo(:)227 758 y(Cop)m(y)21 b(the)f(incidence)h (represen)m(tation)g(of)g(the)f(computed)g(represen)m(tation)i(p)s(oin) m(ted)e(b)m(y)g(p)s(oly)g(to)h Fn(setfamily)227 871 y Fo(and)38 b(return)f Fn(dd)p 800 871 V 34 w(SetFamilyPtr)p Fo(.)62 b(The)37 b(computed)i(represen)m(tation)g(is)g Fn(Inequality)c Fo(if)k(the)f(input)g(is)227 984 y Fn(Generator)p Fo(,)28 b(and)i(the)h(vice)g(visa.)0 1172 y Fn(dd)p 102 1172 V 34 w(SetFamilyPtr)44 b(dd)p 852 1172 V 34 w (CopyAdjacency\(poly\))c Fo(:)227 1285 y(Cop)m(y)21 b(the)f(adjacency)h (represen)m(tation)g(of)g(the)f(computed)g(represen)m(tation)i(p)s(oin) m(ted)e(b)m(y)g(p)s(oly)g(to)h Fn(setfamily)227 1397 y Fo(and)38 b(return)f Fn(dd)p 800 1397 V 34 w(SetFamilyPtr)p Fo(.)62 b(The)37 b(computed)i(represen)m(tation)g(is)g Fn(Inequality)c Fo(if)k(the)f(input)g(is)227 1510 y Fn(Generator)p Fo(,)28 b(and)i(the)h(vice)g(visa.)0 1698 y Fn(dd)p 102 1698 V 34 w(SetFamilyPtr)44 b(dd)p 852 1698 V 34 w (CopyInputIncidence\(poly\))39 b Fo(:)227 1811 y(Cop)m(y)30 b(the)g(incidence)h(represen)m(tation)g(of)f(the)g(input)f(represen)m (tation)h(p)s(oin)m(ted)g(b)m(y)g(p)s(oly)f(to)i Fn(setfamily)227 1924 y Fo(and)f(return)f Fn(d)p 736 1924 V 34 w(SetFamilyPtr)p Fo(.)0 2111 y Fn(dd)p 102 2111 V 34 w(SetFamilyPtr)44 b(dd)p 852 2111 V 34 w(CopyInputAdjacency\(poly\))39 b Fo(:)227 2224 y(Cop)m(y)28 b(the)g(adjacency)h(represen)m(tation)f (of)g(the)g(input)f(represen)m(tation)i(p)s(oin)m(ted)f(b)m(y)f(p)s (oly)h(to)g Fn(setfamily)227 2337 y Fo(and)i(return)f Fn(d)p 736 2337 V 34 w(SetFamilyPtr)p Fo(.)0 2525 y Fn(void)47 b(dd)p 341 2525 V 33 w(FreePolyhedra\(poly\))41 b Fo(:)227 2638 y(F)-8 b(ree)32 b(memory)e(allo)s(cated)i(to)f Fn(poly)p Fo(.)0 2878 y Fp(4.3.6)105 b(LP)36 b(Data)e(Manipulation)0 3050 y Fn(dd)p 102 3050 V 34 w(LPPtr)46 b(dd)p 518 3050 V 34 w(MakeLPforInteriorFinding)o(\(lp\))39 b Fo(:)227 3162 y(Set)29 b(up)f(an)g(LP)g(to)i(\014nd)d(an)h(in)m(terior)i(p)s (oin)m(t)e(of)h(the)g(feasible)g(region)g(of)g Fn(lp)f Fo(and)g(return)f(a)i(p)s(oin)m(ter)g(to)g(the)227 3275 y(LP)-8 b(.)36 b(The)f(new)g(LP)g(has)h(one)g(new)f(v)-5 b(ariable)36 b Fj(x)1867 3290 y Fg(d)p Fh(+1)2033 3275 y Fo(and)f(one)h(more)g(constrain)m(t:)52 b(max)15 b Fj(x)3329 3290 y Fg(d)p Fh(+1)3495 3275 y Fo(sub)5 b(ject)36 b(to)227 3388 y Fj(b)20 b Fi(\000)g Fj(Ax)h Fi(\000)f Fj(x)661 3403 y Fg(d)p Fh(+1)816 3388 y Fi(\025)25 b Fo(0)31 b(and)f Fj(x)1217 3403 y Fg(d)p Fh(+1)1373 3388 y Fi(\024)25 b Fj(K)7 b Fo(,)30 b(where)g Fj(K)37 b Fo(is)30 b(a)h(p)s(ositiv)m(e)g(constan)m(t.)0 3576 y Fn(dd)p 102 3576 V 34 w(LPPtr)46 b(dd)p 518 3576 V 34 w(Matrix2LP\(matrix,)d (err\))h Fo(:)227 3689 y(Load)31 b Fn(matrix)d Fo(to)k Fn(lpdata)c Fo(and)i(return)f(a)i(p)s(oin)m(ter)f(to)i(the)e(data.)0 3876 y Fn(dd)p 102 3876 V 34 w(LPSolutionPtr)44 b(dd)p 900 3876 V 34 w(CopyLPSolution\(lp\))c Fo(:)227 3989 y(Load)32 b(the)g(solutions)g(of)g Fn(lp)f Fo(to)i Fn(lpsolution)c Fo(and)i(return)g(a)h(p)s(oin)m(ter)g(to)g(the)g(data.)46 b(This)31 b(replaces)h(the)227 4102 y(old)f(name)f Fn(dd)p 723 4102 V 34 w(LPSolutionLoad\(lp\))p Fo(.)0 4290 y Fn(void)47 b(dd)p 341 4290 V 33 w(FreeLPData\(lp\))42 b Fo(:)227 4403 y(F)-8 b(ree)32 b(memory)e(allo)s(cated)i(as)f(an)f(LP) g(data)h(p)s(oin)m(ted)g(b)m(y)f Fn(lp)p Fo(.)0 4590 y Fn(void)47 b(dd)p 341 4590 V 33 w(FreeLPSolution\(lps\))41 b Fo(:)227 4703 y(F)-8 b(ree)32 b(memory)e(allo)s(cated)i(as)f(an)f(LP) g(solution)h(data)g(p)s(oin)m(ted)g(b)m(y)f Fn(lps)p Fo(.)0 4943 y Fp(4.3.7)105 b(Matrix)35 b(Manipulation)0 5115 y Fn(dd)p 102 5115 V 34 w(MatrixPtr)45 b(dd)p 709 5115 V 34 w(CopyMatrix\(matrix\))40 b Fo(:)227 5228 y(Mak)m(e)32 b(a)f(cop)m(y)g(of)g(matrixdata)g(p)s(oin)m(ted)f(b)m(y)h Fn(matrix)d Fo(and)i(return)f(a)i(p)s(oin)m(ter)g(to)g(the)f(cop)m(y)-8 b(.)1903 5682 y(13)p eop end %%Page: 14 14 TeXDict begin 14 13 bop 0 44 a Fn(dd)p 102 44 29 4 v 34 w(MatrixPtr)45 b(dd)p 709 44 V 34 w(AppendMatrix\(matrix1,)d (matrix2\))h Fo(:)227 157 y(Mak)m(e)32 b(a)e(matrixdata)h(b)m(y)e(cop)m (ying)i Fn(*matrix1)c Fo(and)i(app)s(ending)g(the)h(matrix)g(in)f Fn(*matrix2)f Fo(and)h(return)227 270 y(a)39 b(p)s(oin)m(ter)g(to)h (the)f(data.)67 b(The)38 b(colsize)j(m)m(ust)d(b)s(e)h(equal)g(in)g (the)g(t)m(w)m(o)h(input)e(matrices.)67 b(It)39 b(returns)e(a)227 383 y Fn(NULL)j Fo(p)s(oin)m(ter)g(if)h(the)g(input)e(matrices)j(are)f (not)g(appropriate.)71 b(Its)41 b Fn(rowsize)e Fo(is)h(set)i(to)f(the)g (sum)e(of)227 496 y(the)k(ro)m(wsizes)h(of)e Fn(matrix1)f Fo(and)h Fn(matrix2)p Fo(.)75 b(The)42 b(new)g(matrixdata)i(inherits)e (ev)m(erything)i(else)f(\(i.e.)227 609 y(n)m(um)m(b)s(ert)m(yp)s(e,)30 b(represen)m(tation,)i(etc\))f(from)f(the)h(\014rst)e(matrix.)0 794 y Fn(int)47 b(dd)p 293 794 V 34 w(MatrixAppendTo\(&)c(matrix1,)j (matrix2\))d Fo(:)227 907 y(Same)31 b(as)f Fn(dd)p 683 907 V 34 w(AppendMatrix)d Fo(except)32 b(that)e(the)h(\014rst)f(matrix) g(is)h(mo)s(di\014ed)e(to)i(tak)m(e)h(the)f(result.)0 1092 y Fn(int)47 b(dd)p 293 1092 V 34 w(MatrixRowRemove\(&)c(matrix,)j (i\))f Fo(:)227 1205 y(Remo)m(v)m(e)32 b(the)f Fj(i)p Fo(th)f(ro)m(w)h(of)g Fn(matrix)p Fo(.)0 1391 y Fn(dd)p 102 1391 V 34 w(MatrixPtr)45 b(dd)p 709 1391 V 34 w (MatrixSubmatrix\(matrix,)c(set\))k Fo(:)227 1504 y(Generate)36 b(the)f(submatrix)f(of)h Fn(matrix)e Fo(b)m(y)i(remo)m(ving)h(the)f(ro) m(ws)f(indexed)h(b)m(y)f Fn(set)g Fo(and)g(return)g(a)h(ma-)227 1617 y(trixdata)d(p)s(oin)m(ter.)0 1802 y Fn(dd)p 102 1802 V 34 w(SetFamilyPtr)44 b(dd)p 852 1802 V 34 w (Matrix2Adjacency\(matrix,)d(err\))k Fo(:)227 1915 y(Return)25 b(the)i(adjacency)f(list)h(of)f(the)g(represen)m(tation)h(giv)m(en)g(b) m(y)f Fn(matrix)p Fo(.)38 b(The)25 b(computation)i(is)f(done)g(b)m(y) 227 2028 y(the)h(built-in)g(LP)f(solv)m(er.)41 b(The)26 b(represen)m(tation)i(should)e(b)s(e)g(free)h(of)g(redundancy)e(when)g (this)i(function)g(is)227 2141 y(called.)40 b(See)22 b(the)h(function)f Fn(dd)p 1270 2141 V 33 w(rowset)47 b(dd)p 1734 2141 V 33 w(RedundantRows)19 b Fo(and)j(the)g(example)h (program)f(adjacency)-8 b(.c.)0 2383 y Fd(4.4)112 b(Input/Output)38 b(F)-9 b(unctions)0 2555 y Fn(dd)p 102 2555 V 34 w(MatrixPtr)45 b(dd)p 709 2555 V 34 w(PolyFile2Matrix)f(\(f,)i(err\))f Fo(:)227 2668 y(Read)28 b(a)f(P)m(olyhedra)h(data)g(from)e(stream)i Fn(f)f Fo(and)f(store)i(it)g(in)f Fn(matrixdata)d Fo(and)j(return)f(a)h (p)s(oin)m(ter)g(to)h(the)227 2780 y(data.)0 2966 y Fn(boolean)46 b(dd)p 484 2966 V 34 w(DDFile2File\(ifile,)c(ofile,)47 b(err\))d Fo(:)227 3079 y(Compute)33 b(the)g(represen)m(tation)h(con)m (v)m(ersion)g(for)e(a)i(p)s(olyhedron)d(giv)m(en)j(b)m(y)f(a)g(P)m (olyhedra)g(\014le)g(i\014le,)h(and)227 3192 y(write)d(the)g(other)f (represen)m(tation)i(in)e(a)h(P)m(olyhedra)g(\014le)f(o\014le.)42 b Fn(*err)29 b Fo(returns)g Fn(dd)p 3073 3192 V 34 w(NoError)g Fo(if)h(the)h(com-)227 3305 y(putation)g(terminates)g(normally)-8 b(.)42 b(Otherwise,)30 b(it)h(returns)e(a)i(v)-5 b(alue)31 b(according)g(to)g(the)g(error)f(o)s(ccurred.)0 3490 y Fn(void)47 b(dd)p 341 3490 V 33 w(WriteMatrix\(f,)d(matrix\))g Fo(:)227 3603 y(W)-8 b(rite)32 b Fn(matrix)d Fo(to)i(stream)g Fn(f)p Fo(.)0 3788 y Fn(void)47 b(dd)p 341 3788 V 33 w(WriteNumber\(f,)d(x\))h Fo(:)227 3901 y(W)-8 b(rite)27 b Fn(x)e Fo(to)h(stream)f Fn(f)p Fo(.)39 b(If)25 b Fn(x)f Fo(is)i(of)f(GMP)h(mp)s(q)p 1827 3901 28 4 v 31 w(t)g(rational)g Fj(p=q)s Fo(,)h(the)e(output)g(is)g Fj(p=q)s Fo(.)39 b(If)25 b(it)g(is)h(of)f(C)g(double,)227 4014 y(it)31 b(is)g(formatted)g(as)f(a)h(double)f(\015oat)h(with)f(a)h(decimal)g(p)s (oin)m(t.)0 4200 y Fn(void)47 b(dd)p 341 4200 29 4 v 33 w(WritePolyFile\(f,)d(poly\))g Fo(:)227 4312 y(W)-8 b(rite)32 b(tt)f(p)s(oly)f(to)h(stream)g Fn(f)f Fo(in)g(P)m(olyhedra)h (format.)0 4498 y Fn(void)47 b(dd)p 341 4498 V 33 w (WriteErrorMessages\(f,)42 b(err\))j Fo(:)227 4611 y(W)-8 b(rite)32 b(error)e(messages)h(giv)m(en)h(b)m(y)e Fn(err)g Fo(to)h(stream)f Fn(f)p Fo(.)0 4796 y Fn(void)47 b(dd)p 341 4796 V 33 w(WriteSetFamily\(f,)d(setfam\))f Fo(:)227 4909 y(W)-8 b(rite)37 b(the)e(set)h(family)g(p)s(oin)m(ted)f(b)m(y)g Fn(setfam)e Fo(to)j(stream)g Fn(f)p Fo(.)55 b(F)-8 b(or)35 b(eac)m(h)i(set,)g(it)f(outputs)e(its)i(index,)g(its)227 5022 y(cardinalit)m(y)-8 b(,)33 b(a)e(colon)g(\\:")41 b(and)30 b(a)h(ordered)f(list)h(of)f(its)h(elemen)m(ts.)0 5207 y Fn(void)47 b(dd)p 341 5207 V 33 w(WriteSetFamilyCompressed\(f)o (,)42 b(setfam\))h Fo(:)227 5320 y(W)-8 b(rite)37 b(the)e(set)h(family) g(p)s(oin)m(ted)f(b)m(y)g Fn(setfam)e Fo(to)j(stream)g Fn(f)p Fo(.)55 b(F)-8 b(or)35 b(eac)m(h)i(set,)g(it)f(outputs)e(its)i (index,)g(its)227 5433 y(cardinalit)m(y)g(or)e(the)g(negativ)m(e)j(of)d (the)g(cardinalit)m(y)-8 b(,)38 b(a)c(colon)h(\\:")50 b(and)33 b(the)i(elemen)m(ts)g(in)f(the)g(set)h(or)f(its)1903 5682 y(14)p eop end %%Page: 15 15 TeXDict begin 15 14 bop 227 44 a Fo(complemen)m(ts)40 b(whic)m(hev)m(er)g(is)f(smaller.)67 b(Whenev)m(er)40 b(it)g(outputs)e(the)h(complemen)m(ts,)k(the)c(cardinalit)m(y)227 157 y(is)i(negated)h(so)g(that)g(there)f(is)g(no)g(am)m(biguit)m(y)-8 b(.)75 b(This)40 b(will)h(b)s(e)g(considered)g(standard)f(for)h (outputing)227 270 y(incidence)32 b(\(*.icd,)i(*ecd\))e(and)f (adjacency)h(\(*.iad,)i(*.ead\))e(data)h(in)e(cddlib.)43 b(But)32 b(there)g(is)f(some)h(minor)227 383 y(incompatibilit)m(y)h (with)d(cdd/cdd+)f(standalone)i(co)s(des.)0 571 y Fn(void)47 b(dd)p 341 571 29 4 v 33 w(WriteProgramDescription\(f\))39 b Fo(:)227 683 y(W)-8 b(rite)32 b(the)f(cddlib)e(v)m(ersion)i (information)g(to)g(stream)g Fn(f)p Fo(.)0 871 y Fn(void)47 b(dd)p 341 871 V 33 w(WriteDDTimes\(f,)d(poly\))g Fo(:)227 984 y(W)-8 b(rite)32 b(the)f(represen)m(tation)g(con)m(v)m(ersion)h (time)f(information)f(on)h Fn(poly)e Fo(to)i(stream)g Fn(f)p Fo(.)0 1227 y Fd(4.5)112 b(Obsolete)38 b(F)-9 b(unctions)0 1399 y Fn(boolean)46 b(dd)p 484 1399 V 34 w(DoubleDescription\(poly,)41 b(err\))j Fo(:)d(\(remo)m(v)m(ed)32 b(in)e(V)-8 b(ersion)31 b(0.90c\))227 1512 y(The)e(new)f(function)g Fn(dd)p 1054 1512 V 34 w(DDMatrix2Poly\(matrix,)42 b(err\))28 b Fo(\(see)h(Section)h(4.2\))g(replaces)f(\(and)g(actually)227 1625 y(com)m(bines\))j(b)s(oth)d(this)h(and)g Fn(dd)p 1325 1625 V 34 w(Matrix2Poly\(matrix,)43 b(err\))p Fo(.)0 1812 y Fn(dd)p 102 1812 V 34 w(PolyhedraPtr)h(dd)p 852 1812 V 34 w(Matrix2Poly\(matrix,)f(err\))h Fo(:)d(\(remo)m(v)m(ed)31 b(in)f(V)-8 b(ersion)31 b(0.90c\))227 1925 y(See)g(ab)s(o)m(v)m(e)g (for)g(the)f(reason)h(for)f(remo)m(v)-5 b(al.)0 2113 y Fn(dd)p 102 2113 V 34 w(LPSolutionPtr)44 b(dd)p 900 2113 V 34 w(LPSolutionLoad\(lp\))c Fo(:)h(\(renamed)30 b(in)g(V)-8 b(ersion)31 b(0.90c\))227 2226 y(This)f(function)g(is)g(no) m(w)h(called)g Fn(dd)p 1431 2226 V 34 w(CopyLPSolution\(lp\))p Fo(.)0 2469 y Fd(4.6)112 b(Set)38 b(F)-9 b(unctions)38 b(in)f Fb(setoper)j Fd(library)0 2641 y Fo(The)30 b(cddlib)g(comes)i (with)e(a)h(simple)g(set)g(op)s(eration)g(library)g Fn(setoper)p Fo(.)39 b(The)30 b(k)m(ey)i(t)m(yp)s(e)f(de\014ned)e(is)i Fn(set)p 3654 2641 V 33 w(type)p Fo(.)0 2754 y(A)g(set)h(is)f(represen) m(ted)g(b)m(y)g(a)g(\014xed)g(length)g(binary)f(strings.)43 b(Th)m(us,)30 b(the)i(maxim)m(um)f(length)g(of)g(a)h(set)f(m)m(ust)g(b) s(e)0 2867 y(declared)g(when)e(it)i(is)g(initialized.)141 2980 y(Belo)m(w)e(the)f(sym)m(b)s(ols)g Fn(a)p Fo(,)g Fn(b)p Fo(,)g Fn(c)g Fo(are)g(of)g(t)m(yp)s(e)g Fn(set)p 1786 2980 V 33 w(type)p Fo(.)39 b(The)27 b(sym)m(b)s(ols)h Fn(aP)f Fo(is)h(a)g(p)s(oin)m(ter)f(to)i(t)m(yp)s(e)f Fn(set)p 3654 2980 V 33 w(type)p Fo(,)0 3093 y(and)j Fn(s)p Fo(,)i Fn(t)f Fo(are)g(of)g(t)m(yp)s(e)h Fn(long)p Fo(.)44 b(Here)33 b(are)g(some)f(of)g(the)h(functions)e(de\014ned.)45 b(See)32 b Fn(setoper.h)e Fo(for)i(a)g(complete)0 3206 y(listing.)0 3418 y Fn(void)47 b(set)p 389 3418 V 33 w(initialize\(aP,)d(s\))h Fo(:)227 3531 y(Allo)s(cate)35 b(a)e Fn(set)p 816 3531 V 33 w(type)f Fo(space)h(of)f(maxim)m(um)h (cardinalit)m(y)g Fn(s)g Fo(and)e(mak)m(e)j(it)f(p)s(oin)m(ted)f(b)m(y) g Fn(aP)p Fo(.)h(The)f(set)h(is)227 3644 y(initialized)f(as)f(empt)m(y) g(set.)0 3832 y Fn(void)47 b(set)p 389 3832 V 33 w(free\(a\))d Fo(:)227 3944 y(F)-8 b(ree)32 b(the)e Fn(set)p 732 3944 V 34 w(type)f Fo(space)i(allo)s(cated)h(for)f Fn(a)p Fo(.)0 4132 y Fn(void)47 b(set)p 389 4132 V 33 w(copy\(a,)f(b\)\))f Fo(:)227 4245 y(Set)31 b Fn(a)g Fo(to)g(b)s(e)f Fn(b)p Fo(.)42 b(The)30 b(set)h Fn(a)g Fo(m)m(ust)f(b)s(e)g(pre-initialized)j (with)d(the)h(same)g(maxim)m(um)g(cardinalit)m(y)h(as)f(that)227 4358 y(of)g Fn(b)p Fo(.)0 4546 y Fn(void)47 b(set)p 389 4546 V 33 w(addelem\(a,)e(t\)\))g Fo(:)227 4658 y(Add)30 b(an)g(elemen)m(t)i Fn(t)e Fo(to)h(a)g(set)g Fn(a)p Fo(.)40 b(The)30 b(set)h Fn(a)f Fo(sta)m(ys)h(unc)m(hanged)f(if)h(it)f(con)m (tains)i(the)f(elemen)m(t)g Fn(t)p Fo(.)0 4846 y Fn(long)47 b(set)p 389 4846 V 33 w(card\(a\)\))c Fo(:)227 4959 y(Return)30 b(the)g(cardinalit)m(y)i(of)f(set)g Fn(a)p Fo(.)0 5147 y Fn(int)47 b(set)p 341 5147 V 33 w(member\(t,)f(a\)\))e Fo(:)227 5260 y(Return)30 b(1)h(if)f Fn(t)g Fo(is)g(a)h(mem)m(b)s(er)f (of)g(set)h Fn(a)p Fo(,)g(and)e(0)i(otherwise.)1903 5682 y(15)p eop end %%Page: 16 16 TeXDict begin 16 15 bop 0 44 a Fn(void)47 b(set)p 389 44 29 4 v 33 w(write\(a\)\))c Fo(:)227 157 y(Prin)m(t)28 b(out)g(the)g(elemen)m(ts)h(of)f(set)h Fn(a)e Fo(to)i Fn(stdout)p Fo(.)38 b(The)27 b(function)h Fn(void)47 b(set)p 2846 157 V 33 w(fwrite\(f,)e(a\)\))27 b Fo(output)h(to)227 270 y(stream)j Fn(f)p Fo(.)0 556 y Fq(5)135 b(An)44 b(Extension)i(of)f (the)g(CDD)g(Library)g(in)g(GMP)f(mo)t(de)0 759 y Fo(Starting)35 b(from)e(the)i(v)m(ersion)g(093,)h(the)f(GMP)f(v)m(ersion)h(of)g (cddlib,)f Fn(libcddgmp.a)p Fo(,)f(con)m(tains)i(all)g(cdd)f(library)0 872 y(functions)j(in)g(t)m(w)m(o)i(arithmetics.)63 b(All)38 b(functions)f(with)g(the)h(standard)f(pre\014x)f Fn(dd)p 2907 872 V 71 w Fo(are)i(computed)f(with)g(the)0 985 y(GMP)g(rational)h(arithmetic)g(as)e(b)s(efore.)59 b(The)36 b(same)h(fuctions)f(with)h(the)f(new)g(pre\014x)g Fn(ddf)p 3243 985 V 70 w Fo(are)h(no)m(w)f(added)0 1098 y(to)d(the)g(library)f Fn(libcddgmp.a)d Fo(that)k(are)g(based)f(on)g(the)g(C)g(double)g (\015oating-p)s(oin)m(t)i(arithmetic.)48 b(Th)m(us)31 b(these)0 1211 y(functions)38 b(are)g(equiv)-5 b(alen)m(t)39 b(to)g Fn(libcdd.a)d Fo(functions,)k(except)f(that)f(all)h(functions)f (and)f(v)-5 b(ariable)39 b(t)m(yp)s(es)f(are)0 1324 y(with)30 b(pre\014x)f Fn(ddf)p 612 1324 V 64 w Fo(and)h(the)h(v)-5 b(ariable)31 b(t)m(yp)s(e)f Fn(mytype)f Fo(is)h(replaced)h(b)m(y)f Fn(myfloat)p Fo(.)141 1437 y(In)21 b(this)h(sense,)i Fn(libcdd.a)19 b Fo(is)j(a)h(prop)s(er)d(subset)h(of)h Fn(libcddgmp.a)d Fo(and)j(in)f(principle)h(one)g(can)g(do)g(ev)m (erything)0 1550 y(with)30 b Fn(libcddgmp.a)p Fo(.)38 b(See)30 b(ho)m(w)h(the)f(new)g Fn(dd)p 1594 1550 V 34 w(LPSolve)e Fo(is)j(written)f(in)g(cddlp.c.)0 1836 y Fq(6)135 b(Examples)0 2039 y Fo(See)27 b(example)g(co)s(des)g(suc)m(h)g (as)g(testcdd*.c)h(,)g(testlp*.c,)h(redc)m(hec)m(k.c,)h(adjacency)-8 b(.c,)29 b(allfaces,c)g(and)e(simplecdd.c)0 2152 y(in)j(the)h Fn(src)e Fo(and)h Fn(src-gmp)e Fo(sub)s(directories)i(of)h(the)f (source)h(distribution.)0 2438 y Fq(7)135 b(Numerical)46 b(Accuracy)0 2641 y Fo(A)37 b(little)i(caution)g(is)e(in)g(order.)61 b(Man)m(y)38 b(p)s(eople)f(ha)m(v)m(e)h(observ)m(ed)g(n)m(umerical)g (problems)e(of)h(cddlib)g(when)f(the)0 2754 y(\015oating)k(v)m(ersion)f (of)f(cddlib)h(is)f(used.)65 b(As)39 b(w)m(e)g(all)g(kno)m(w,)i (\015oating-p)s(oin)m(t)f(computation)g(migh)m(t)f(not)g(giv)m(e)h(a)0 2867 y(correct)27 b(answ)m(er,)g(esp)s(ecially)f(when)f(an)h(input)e (data)j(is)e(v)m(ery)h(sensitiv)m(e)h(to)f(a)h(small)f(p)s (erturbation.)38 b(When)25 b(some)0 2980 y(strange)j(b)s(eha)m(vior)g (is)g(observ)m(ed,)g(it)g(is)g(alw)m(a)m(ys)h(wise)f(to)g(create)h(a)f (rationalization)j(of)c(the)h(input)f(\(for)h(example,)0 3092 y(one)i(can)g(replace)g(0.3333333)k(with)29 b(1/3\))i(and)e(to)i (compute)f(it)g(with)f(cddlib)g(compiled)h(with)g(gmp)f(rational)i(to)0 3205 y(see)f(what)g(a)g(correct)h(b)s(eha)m(vior)f(should)f(b)s(e.)39 b(Whenev)m(er)31 b(the)f(time)g(is)g(not)g(imp)s(ortan)m(t,)g(it)g(is)g (safer)g(to)g(use)g(gmp)0 3318 y(rational)i(arithmetic.)141 3431 y(If)d(y)m(ou)h(need)e(sp)s(eedy)h(computation)h(with)f (\015oating-p)s(oin)m(t)h(arithmetic,)h(y)m(ou)f(migh)m(t)g(w)m(an)m(t) g(to)g(\\pla)m(y)g(with")0 3544 y(the)h(constan)m(t)g Fn(dd)p 625 3544 V 34 w(almostzero)d Fo(de\014ned)h(in)h(cdd.h:)143 3756 y Fn(#define)46 b(dd_almostzero)92 b(1.0E-7)0 3967 y Fo(This)38 b(n)m(um)m(b)s(er)g(is)i(used)e(to)i(recognize)h(whether)d (a)i(n)m(um)m(b)s(er)e(is)h(zero:)59 b(a)40 b(n)m(um)m(b)s(er)e(whose)h (absolute)h(v)-5 b(alue)40 b(is)0 4080 y(smaller)e(than)g Fn(dd)p 643 4080 V 34 w(almostzero)d Fo(is)i(considered)h(zero,)j(and)c (nonzero)h(otherwise.)63 b(Y)-8 b(ou)38 b(can)g(c)m(hange)h(this)f(to)0 4193 y(mo)s(dify)d(the)h(b)s(eha)m(vior)h(of)f(cddlib.)57 b(One)36 b(migh)m(t)g(consider)g(the)h(default)f(setting)h(is)f(rather) g(large)h(for)f(double)0 4306 y(precision)h(arithmetic.)63 b(This)36 b(is)i(b)s(ecause)f(cddlib)f(is)i(made)f(to)h(deal)g(with)f (highly)g(degenerate)h(data)g(and)f(it)0 4419 y(w)m(orks)30 b(b)s(etter)h(to)g(treat)g(a)g(relativ)m(ely)i(large)e(\\epsilon")h(as) e(zero.)141 4531 y(Another)41 b(thing)h(one)f(can)h(do)f(is)g(scaling.) 75 b(If)41 b(the)g(v)-5 b(alues)42 b(in)f(one)g(column)g(of)h(an)f (input)f(is)i(of)f(smaller)0 4644 y(magnitude)30 b(than)h(those)f(in)h (another)f(column,)h(scale)g(one)g(so)g(that)g(they)f(b)s(ecome)h (comparable.)0 4931 y Fq(8)135 b(Other)45 b(Useful)h(Co)t(des)0 5134 y Fo(There)28 b(are)h(sev)m(eral)h(other)e(useful)g(co)s(des)g(a)m (v)-5 b(ailable)31 b(for)e(v)m(ertex)g(en)m(umeration)g(and/or)f(con)m (v)m(ex)j(h)m(ull)d(computa-)0 5246 y(tion)j(suc)m(h)f(as)h(lrs,)f(qh)m (ull,)g(p)s(orta)h(and)e(irisa-p)s(olylib.)41 b(The)30 b(p)s(oin)m(ters)h(to)g(these)f(co)s(des)h(are)g(a)m(v)-5 b(ailable)32 b(at)111 5433 y(1.)46 b(lrs)30 b(b)m(y)h(D.)g(Avis)f([2)q (])g(\(C)h(implemen)m(tation)h(of)e(the)h(rev)m(erse)g(searc)m(h)g (algorithm)g([4)q(]\).)1903 5682 y(16)p eop end %%Page: 17 17 TeXDict begin 17 16 bop 111 44 a Fo(2.)46 b(qh)m(ull)23 b(b)m(y)g(C.B.)g(Barb)s(er)f([6)q(])h(\(C)f(implemen)m(tation)j(of)e (the)g(b)s(eneath-b)s(ey)m(ond)f(metho)s(d,)i(see)f([10)q(,)g(20)q(],)i (whic)m(h)227 157 y(is)31 b(the)f(dual)g(of)h(the)f(dd)g(metho)s(d\).) 111 332 y(3.)46 b(p)s(orta)25 b(b)m(y)g(T.)g(Christof)f(and)g(A.)h (L\177)-45 b(ob)s(el)25 b([8)q(])g(\(C)g(implemen)m(tation)h(of)f(the)h (F)-8 b(ourier-Motzkin)27 b(elimination\).)111 507 y(4.)46 b(IRISA)41 b(p)s(olyhedral)g(library)g(b)m(y)h(D.K.)g(Wilde)g([23)q(])g (\(C)f(implemen)m(tation)j(of)d(a)h(v)-5 b(ariation)43 b(of)f(the)g(dd)227 620 y(algorithm\).)111 795 y(5.)k(PPL:)33 b(the)h(P)m(arma)g(P)m(olyhedra)f(Library)g([5])h(b)m(y)f(R.)g(Bagnara) i(\(C++)d(implemen)m(tation)j(of)f(a)f(v)-5 b(ariation)227 908 y(of)31 b(the)f(dd)g(algorithm\).)111 1083 y(6.)46 b Fn(pd)30 b Fo(b)m(y)g(A.)h(Marzetta)i([18)q(])d(\(C)h(implemen)m (tation)h(of)e(the)h(primal-dual)f(algorithm)h([7)q(]\).)111 1259 y(7.)46 b(Geometry)32 b(Cen)m(ter)f(Soft)m(w)m(are)g(List)g(b)m(y) f(N.)h(Amen)m(ta)g([1)q(].)111 1434 y(8.)46 b(Computational)32 b(Geometry)f(P)m(ages)h(b)m(y)e(J.)g(Eric)m(kson)h([11)q(].)111 1609 y(9.)46 b(Linear)31 b(Programming)f(F)-10 b(A)m(Q)31 b(b)m(y)f(R.)h(F)-8 b(ourer)30 b(and)g(J.)g(Gregory)i([12)q(].)66 1784 y(10.)46 b(ZIB)30 b(Berlin)h(p)s(olyhedral)f(soft)m(w)m(are)i (list:)227 1897 y(ftp://elib.zib-b)s(erlin.de/pub/mathprog/p)s (olyth/index.h)m(tml.)66 2072 y(11.)46 b(P)m(olyhedral)31 b(Computation)g(F)-10 b(A)m(Q)31 b([13)q(].)0 2353 y Fq(9)135 b(Co)t(des)45 b(Using)g(Cddlib)0 2556 y Fo(There)30 b(are)h(quite)f(a)h(few)f(nice)h(programs)f(using)g(some)h(functions)f (of)g(cddlib.)40 b(Here)31 b(are)g(some)g(of)f(them.)111 2731 y(1.)46 b Fn(LattE)29 b Fo([9)q(])h(computes)h(the)g(n)m(um)m(b)s (er)e(of)h(lattice)j(p)s(oin)m(ts)d(in)g(a)h(con)m(v)m(ex)h(p)s(olytop) s(e.)111 2906 y(2.)46 b Fn(Minksum)34 b Fo([22)q(])h(is)h(a)g(program)f (to)h(compute)g(the)f(V-represen)m(tation)i(\(i.e.)57 b(the)36 b(set)g(of)f(v)m(ertices\))j(of)d(the)227 3019 y(Mink)m(o)m(wski)25 b(addition)f(of)f(sev)m(eral)i(con)m(v)m(ex)h(p)s (olytop)s(es)d(giv)m(en)h(b)m(y)g(their)g(V-represen)m(tation)h(in)e Fa(R)3522 2986 y Fg(d)3562 3019 y Fo(.)38 b(It)24 b(is)g(an)227 3132 y(implemen)m(tation)29 b(in)f(C++)e(language)j(of)f(the)f(rev)m (erse)i(searc)m(h)f(algorithm)g([14)r(])f(whose)h(time)g(complexit)m(y) 227 3244 y(is)j(p)s(olynomially)g(b)s(ounded)d(b)m(y)i(the)h(sizes)g (of)f(input)g(and)f(output.)111 3420 y(3.)46 b Fn(Gfan)32 b Fo([17)q(])g(is)h(a)g(program)f(to)h(list)g(all)h(reduced)d(Gr\177) -45 b(obner)32 b(bases)h(of)f(a)h(general)h(p)s(olynomial)e(ideal)i (giv)m(en)227 3533 y(b)m(y)d(a)h(set)g(of)f(generating)h(p)s (olynomials)g(in)e Fj(n)p Fo(-v)-5 b(ariables.)44 b(It)31 b(is)g(an)g(implemen)m(tation)i(in)e(C++)f(language)227 3645 y(of)h(the)f(rev)m(erse)h(searc)m(h)g(algorithm)h([15)q(].)111 3821 y(4.)46 b Fn(TOPCOM)c Fo([21)q(])h(computes)g(the)g(com)m (binatorial)j(structure)c(\(the)i(orien)m(ted)g(matroid\))f(of)h(a)f(p) s(oin)m(t)g(con-)227 3933 y(\014guration)e(and)g(en)m(umerates)h(all)g (triangulations)g(of)f(a)h(p)s(oin)m(t)f(set.)74 b(It)41 b(detects)h(the)f(regularit)m(y)i(of)e(a)227 4046 y(triangulation)32 b(using)e(cddlib.)0 4327 y Fq(Ac)l(kno)l(wledgemen)l(ts.)0 4530 y Fo(I)44 b(am)g(grateful)h(to)g(T)-8 b(om)44 b(Liebling)h(who)f (pro)m(vided)f(me)i(with)f(an)g(ideal)h(opp)s(ortunit)m(y)e(to)i(visit) g(EPFL)f(for)0 4643 y(the)37 b(academic)i(y)m(ear)f(1993-1994.)65 b(Later,)39 b(Hans-Jak)m(ob)f(L)s(\177)-48 b(uthi)37 b(\(ETHZ\))g(and)f(Emo)i(W)-8 b(elzl)39 b(\(ETHZ\))e(joined)0 4756 y(to)j(supp)s(ort)d(the)i(the)g(dev)m(elopmen)m(t)h(of)f(cdd)f(co) s(des)h(\(cdd,)i(cdd+,)g(cddlib\).)66 b(Without)39 b(their)g(generous)g (and)0 4869 y(con)m(tin)m(uing)31 b(supp)s(ort,)e(the)i(presen)m(t)f (form)g(of)h(this)f(program)g(w)m(ould)g(not)h(ha)m(v)m(e)h(existed.) 141 4982 y(There)i(are)h(man)m(y)g(other)f(p)s(eople)h(who)f(help)s(ed) f(me)i(to)g(impro)m(v)m(e)h(cdd,)f(in)f(particular,)i(I)e(am)h (indebted)f(to)0 5094 y(Da)m(vid)d(Avis,)f(Alexander)h(Bo)s(c)m(kma)m (yr,)g(Da)m(vid)g(Bremner,)f(Henry)g(Crap)s(o,)f(Istv)-5 b(an)30 b(Csabai,)h(F)-8 b(rancois)31 b(Margot,)0 5207 y(Marc)k(Pfetsc)m(h,)i(Alain)e(Pro)s(don,)f(J\177)-45 b(org)35 b(Ram)m(bau,)h(Dima)f(P)m(asec)m(hnik,)i(Sha)m(wn)d(Rusa)m(w,) h(Matthew)h(Saltzman,)0 5320 y(Masanori)26 b(Sato,)h(Anders)d(Jensen,)h (Rurik)m(o)g(Y)-8 b(oshida,)27 b(Charles)e(Gey)m(er,)i(Mic)m(hal)g(Kv) -5 b(asnica,)26 b(Sv)m(en)f(V)-8 b(erdo)s(olaege)0 5433 y(\(listed)31 b(in)f(arbitrary)g(order\))h(and)e(those)i(listed)g(in)f (the)h(HISTOR)-8 b(Y)30 b(\014le.)1903 5682 y(17)p eop end %%Page: 18 18 TeXDict begin 18 17 bop 0 44 a Fq(References)45 247 y Fo([1])47 b(N.)21 b(Amen)m(ta.)k(Directory)c(of)g(computational)h (geometry)-8 b(.)26 b(h)m(ttp://www.geom.uiuc.edu/soft)m(w)m (are/cglist/.)45 433 y([2])47 b(D.)31 b(Avis.)41 b Ff(lrs)33 b(Homep)-5 b(age)p Fo(.)42 b(h)m(ttp://cgm.cs.mcgill.ca/~a)n(vis/C/l)q (rs.h)m(tml.)45 618 y([3])47 b(D.)37 b(Avis,)h(D.)f(Bremner,)h(and)e (R.)g(Seidel.)59 b(Ho)m(w)38 b(go)s(o)s(d)e(are)h(con)m(v)m(ex)h(h)m (ull)e(algorithms.)60 b Ff(Computational)187 731 y(Ge)-5 b(ometry:)43 b(The)-5 b(ory)35 b(and)e(Applic)-5 b(ations)p Fo(,)33 b(7:265{302,)h(1997.)45 917 y([4])47 b(D.)40 b(Avis)g(and)f(K.)g(F)-8 b(ukuda.)67 b(A)40 b(piv)m(oting)h(algorithm)f (for)f(con)m(v)m(ex)j(h)m(ulls)d(and)g(v)m(ertex)h(en)m(umeration)g(of) 187 1029 y(arrangemen)m(ts)31 b(and)f(p)s(olyhedra.)40 b Ff(Discr)-5 b(ete)32 b(Comput.)i(Ge)-5 b(om.)p Fo(,)32 b(8:295{313,)i(1992.)45 1215 y([5])47 b(R.)30 b(Bagnara.)42 b(P)m(arma)31 b(p)s(olyhedra)f(library)g(homepage,)h(2004.)42 b(h)m(ttp://www.cs.unipr.it/ppl/.)45 1400 y([6])47 b(C.B.)39 b(Barb)s(er,)h(D.P)-8 b(.)40 b(Dobkin,)h(and)d(H.)h(Huhdanpaa.)65 b Ff(qhul)5 b(l,)42 b(V)-7 b(ersion)40 b(2003.1)p Fo(,)k(2003.)67 b(program)38 b(and)187 1513 y(rep)s(ort)30 b(a)m(v)-5 b(ailable)32 b(from)e(h)m(ttp://www.qh)m(ull.org/.)45 1699 y([7])47 b(D.)29 b(Bremner,)h(K.)e(F)-8 b(ukuda,)30 b(and)e(A.)h(Marzetta.)41 b(Primal-dual)29 b(metho)s(ds)f(for)h(v)m (ertex)h(and)e(facet)j(en)m(umer-)187 1812 y(ation.)41 b(In)30 b Ff(Pr)-5 b(o)g(c.)33 b(13th)i(A)n(nnu.)c(A)n(CM)h(Symp)-5 b(os.)34 b(Comput.)g(Ge)-5 b(om.)p Fo(,)32 b(pages)e(49{56,)j(1997.)45 1997 y([8])47 b(T.)29 b(Christof)f(and)g(A.)i(L\177)-45 b(ob)s(el.)38 b(POR)-8 b(T)g(A:)29 b(P)m(olyhedron)g(represen)m(tation) h(transformation)g(algorithm)g(\(v)m(er.)187 2110 y(1.3.1\),)j(1997.)42 b(h)m(ttp://www.zib.de/Optimization/Soft)m(w)m(are/P)m(orta/.)45 2296 y([9])47 b(J.)d(de)g(Lo)s(era,)k(D.)d(Ha)m(ws,)k(R.)44 b(Hemmec)m(k)m(e,)50 b(P)m(eter)45 b(Huggins,)j(J.)d(T)-8 b(auzer,)48 b(and)c(R.)g(Y)-8 b(oshida.)82 b Ff(L)-5 b(attE)p Fo(.)187 2409 y(Univ)m(ersit)m(y)31 b(of)g(California,)g(Da)m (vis,)h(2005.)43 b(a)m(v)-5 b(ailable)32 b(from)e(h)m (ttp://www.math.ucda)m(vis.edu/)i(latte/.)0 2594 y([10])47 b(H.)31 b(Edelsbrunner.)38 b Ff(A)n(lgorithms)33 b(in)g(Combinatorial)i (Ge)-5 b(ometry)p Fo(.)42 b(Springer-V)-8 b(erlag,)32 b(1987.)0 2780 y([11])47 b(J.)73 b(Eric)m(kson.)170 b(Computational)74 b(geometry)h(pages,)85 b(list)74 b(of)g(soft)m(w)m(are)h(libraries)e (and)g(co)s(des.)187 2893 y(h)m (ttp://compgeom.cs.uiuc.edu/~je\013e/compgeom/.)0 3078 y([12])47 b(R.)e(F)-8 b(ourer)44 b(and)g(J.W.)i(Gregory)-8 b(.)84 b(Linear)44 b(programming)g(frequen)m(tly)h(ask)m(ed)g (questions)g(\(LP-F)-10 b(A)m(Q\).)187 3191 y(h)m (ttp://www-unix.mcs.anl.go)m(v/otc/Guide/faq/linear-programming-faq.)q (h)m(tml.)0 3377 y([13])47 b(K.)37 b(F)-8 b(ukuda.)61 b(P)m(olyhedral)38 b(computation)g(F)-10 b(A)m(Q,)38 b(1998.)63 b(Both)38 b(h)m(tml)g(and)e(ps)h(v)m(ersions)g(a)m(v)-5 b(ailable)40 b(from)187 3489 y(h)m(ttp://www.ifor.math.ethz.c)m (h/~fukuda/fukuda.h)m(tml.)0 3675 y([14])47 b(K.)g(F)-8 b(ukuda.)91 b(F)-8 b(rom)48 b(the)f(zonotop)s(e)i(construction)f(to)g (the)f(Mink)m(o)m(wski)i(addition)e(of)h(con)m(v)m(ex)h(p)s(oly-)187 3788 y(top)s(es.)90 b Ff(Journal)49 b(of)f(Symb)-5 b(olic)49 b(Computation)p Fo(,)k(38\(4\):1261{1272)q(,)k(2004.)92 b(p)s(df)45 b(\014le)i(a)m(v)-5 b(ailable)49 b(from)187 3901 y(h)m(ttp://www.cs.mcgill.ca/~fukuda/do)m(wnload/pap)s (er/minksum031007jsc.p)s(df.)0 4086 y([15])e(K.)d(F)-8 b(ukuda,)47 b(A.)d(Jensen,)i(and)e(R.)f(Thomas.)81 b(Computing)43 b(Gr\177)-45 b(obner)43 b(fans.)80 b(T)-8 b(ec)m(hnical)45 b(rep)s(ort.)80 b(In)187 4199 y(preparation.)0 4385 y([16])47 b(K.)c(F)-8 b(ukuda)43 b(and)g(A.)h(Pro)s(don.)78 b(Double)44 b(description)f(metho)s(d)g(revisited.)80 b(In)43 b(M.)h(Deza,)k(R.)c (Euler,)187 4498 y(and)k(I.)h(Manoussakis,)55 b(editors,)f Ff(Combinatorics)e(and)f(Computer)g(Scienc)-5 b(e)p Fo(,)54 b(v)m(olume)c(1120)g(of)g Ff(L)-5 b(e)g(c-)187 4611 y(tur)g(e)37 b(Notes)g(in)g(Computer)h(Scienc)-5 b(e)p Fo(,)37 b(pages)e(91{111.)j (Springer-V)-8 b(erlag,)38 b(1996.)56 b(ps)34 b(\014le)i(a)m(v)-5 b(ailable)37 b(from)187 4723 y(ftp://ftp.ifor.math.ethz.c)m (h/pub/fukuda/rep)s(orts/ddrev960315.ps.gz.)0 4909 y([17])47 b(A.N.)40 b(Jensen.)68 b Ff(Gfan)42 b(version)g(0.1:)59 b(A)41 b(User's)g(Manual)p Fo(.)69 b(Departmen)m(t)41 b(of)f(Mathematical)j(Sciences,)187 5022 y(Univ)m(ersit)m(y)27 b(of)g(Aarh)m(us)e(and)h(Institute)h(for)f(Op)s(erations)f(Researc)m (h,)k(ETH)c(Zuric)m(h,)i(2005.)35 b(a)m(v)-5 b(ailable)29 b(from)187 5135 y(h)m(ttp://home.imf.au.dk/a)5 b(jensen/soft)m(w)m (are/gfan/gfan.h)m(tml.)0 5320 y([18])47 b(A.)30 b(Marzetta.)43 b Ff(p)-5 b(d)34 b({)f(C-implementation)h(of)f(the)g(primal-dual)h (algoirithm)p Fo(,)f(1997.)42 b(co)s(de)30 b(a)m(v)-5 b(ailable)33 b(from)187 5433 y(h)m(ttp://www.cs.un)m (b.ca/profs/bremner/p)s(d/.)1903 5682 y(18)p eop end %%Page: 19 19 TeXDict begin 19 18 bop 0 44 a Fo([19])47 b(T.S.)34 b(Motzkin,)j(H.)e (Rai\013a,)i(GL.)f(Thompson,)e(and)g(R.M.)i(Thrall.)53 b(The)34 b(double)g(description)h(metho)s(d.)187 157 y(In)c(H.W.)i(Kuhn)d(and)h(A.W.T)-8 b(uc)m(k)m(er,)35 b(editors,)d Ff(Contributions)k(to)e(the)-5 b(ory)36 b(of)e(games,)h(V)-7 b(ol.)34 b(2)p Fo(.)e(Princeton)187 270 y(Univ)m(ersit)m(y)f(Press,)g(Princeton,)g(RI,)f(1953.)0 458 y([20])47 b(K.)37 b(Mulm)m(uley)-8 b(.)63 b Ff(Computational)43 b(Ge)-5 b(ometry,)42 b(An)d(Intr)-5 b(o)g(duction)42 b(Thr)-5 b(ough)41 b(Randamize)-5 b(d)42 b(Algorithms)p Fo(.)187 571 y(Pren)m(tice-Hall,)33 b(1994.)0 758 y([21])47 b(J.)f(Ram)m(bau.)87 b Ff(TOPCOM,)46 b(a)h(p)-5 b(ackage)48 b(for)f(c)-5 b(omputing)49 b(T)-7 b(riangulations)49 b(Of)d(Point)h(Con\014gur)-5 b(ations)187 871 y(and)53 b(Oriente)-5 b(d)53 b(Matr)-5 b(oids)p Fo(.)106 b(Univ)m(ersit)m(y)53 b(of)f(Ba)m(yreuth,)58 b(2005.)106 b(a)m(v)-5 b(ailable)54 b(from)d(h)m(ttp://www.uni-)187 984 y(ba)m(yreuth.de/departmen)m (ts/wirtsc)m(haftsmathematik/ram)m(bau/TOPCOM/.)0 1172 y([22])c(C.)27 b(W)-8 b(eib)s(el.)37 b Ff(Minksum)30 b(version)g(1.1)p Fo(.)37 b(Mathematics)30 b(Institute,)e(EPF)g (Lausanne,)f(2005.)38 b(a)m(v)-5 b(ailable)30 b(from)187 1285 y(h)m(ttp://roso.ep\015.c)m(h/cw/p)s(oly/public.php.)0 1472 y([23])47 b(D.K.)30 b(Wilde.)39 b(A)29 b(library)g(for)f(doing)i (p)s(olyhedral)e(op)s(erations.)39 b(Master's)30 b(thesis,)g(Oregon)f (State)h(Univ)m(er-)187 1585 y(sit)m(y)-8 b(,)37 b(Corv)-5 b(allis,)36 b(Oregon,)f(Dec)g(1993.)54 b(Also)35 b(published)d(in)i (IRISA)g(tec)m(hnical)i(rep)s(ort)d(PI)h(785,)j(Rennes,)187 1698 y(F)-8 b(rance;)32 b(Dec,)f(1993.)1903 5682 y(19)p eop end %%Trailer userdict /end-hook known{end-hook}if %%EOF cddlib-0.94j/doc/cddlibman.tex0000644000175000017500000013704713277651306013214 00000000000000% The name of this file: cddlibman.tex % written by by Komei Fukuda % created March 15, 1999 % modified February 7, 2008 % \documentclass[11pt]{article} \usepackage{html,amsmath,amssymb} \renewcommand{\baselinestretch}{1} \renewcommand{\arraystretch}{1} \setlength{\oddsidemargin}{0mm} \setlength{\textwidth}{165mm} \setlength{\topmargin}{-15mm} \setlength{\textheight}{232mm} %\setlength{\headsep}{0in} %\setlength{\headheight}{0pt} \pagestyle{plain} \newcommand {\0} {{\bf 0}} \newcommand{\R}{{\Bbb R}} \begin{document} \title{cddlib Reference Manual} \author{Komei Fukuda\\ Institute for Operations Research\\ and Institute of Theoretical Computer Science\\ ETH Zentrum, CH-8092 Zurich, Switzerland\\ } \date{ (cddlib ver. 0.94, manual ver. February 7, 2008)} \maketitle \tableofcontents \begin{abstract} This is a reference manual for cddlib-094. The manual describes the library functions and data types implemented in the cddlib C-library which is to perform fundamental polyhedral computations such as representation conversions and linear programming in both floating-point and GMP rational exact arithmetic. Please read the accompanying README file and test programs to complement the manual. The new functions added in this version include {\tt dd\_MatrixCanonicalize} to find a non-redundant proper H- or V-representation, {\tt dd\_FindRelativeInterior} to find a relative interior point of an H-polyhedron, and {\tt dd\_ExistsRestrictedFace} (Farkas-type alternative theorem verifier) to check the existence of a point satisfying a specified system of linear inequalities possibly including multiple strict inequalities. The new functions are particularly important for the development of related software packages MinkSum (by Ch. Weibel) and Gfan (by Anders Jensen), \end{abstract} \section{Introduction} \label{INTRODUCTION} The program cddlib is an efficient implementation \cite{fp-ddmr-96} of the double description Method~\cite{mrtt-ddm-53} for generating all vertices (i.e. extreme points) and extreme rays of a general convex polyhedron given by a system of linear inequalities: \[ P = \{ x=(x_1, x_2, \ldots, x_d)^T \in R^{d}: b - A x \ge 0 \} \] where $A$ is a given $m \times d$ real matrix and $b$ is a given real $m$-vector. In the mathematical language, the computation is the transformation of an {\em H-representation\/} of a convex polytope to an {\em V-representation}. cddlib is a C-library version of the previously released C-code cdd/cdd+. In order to make this library version, a large part of the cdd source (Version 0.61) has been rewritten. This library version is more flexible since it can be called from other programs in C/C++. Unlike cdd/cdd+, cddlib can handle any general input and is more general. Furthermore, additional functions have been written to extend its functionality. One useful feature of cddlib/cdd/cdd+ is its capability of handling the dual (reverse) problem without any transformation of data. The dual transformation problem of a V-representation to a minimal H-representation and is often called the {\em (convex) hull problem\/}. More explicitly, is to obtain a linear inequality representation of a convex polyhedron given as the Minkowski sum of the convex hull of a finite set of points and the nonnegative hull of a finite set of points in $R^{d}$: \[ P = conv(v_1,\ldots,v_n) + nonneg(r_{n+1},\ldots,r_{n+s}), \] where the {\em Minkowski sum of two subsets $S$ and $T$} of $R^{d}$ is defined as \[ S + T = \{ s + t \; | s \in S \mbox{ and } t \in T \}. \] As we see in this manual, the computation can be done in straightforward manner. Unlike the earlier versions of cdd/cdd+ that assume certain regularity conditions for input, cddlib is designed to do a correct transformation for any general input. The user must be aware of the fact that in certain cases the transformation is not unique and there are polyhedra with infinitely many representations. For example, a line segment (1-dimensional polytope) in $R^3$ has infinitely many minimal H-representations, and a halfspace in the same space has infinitely many minimal V-representations. cddlib generates merely one minimal representation. cddlib comes with an LP code to solve the general linear programming (LP) problem to maximize (or minimize) a linear function over polyhedron $P$. It is useful mainly for solving dense LP's with large $m$ (say, up to few hundred thousands) and small $d$ (say, up to 100). It implements a revised dual simplex method that updates $(d+1)\times (d+1)$ matrix for a pivot operation. The program cddlib has an I/O routines that read and write files in {\em Polyhedra format\/} which was defined by David Avis and the author in 1993, and has been updated in 1997 and 1999. The program called lrs and lrslib \cite{a-lrshome-01} developed by David Avis is a C-implementation of the reverse search algorithm~\cite{af-pachv-92} for the same enumeration purpose, and it conforms to Polyhedra format as well. Hopefully, this compatibility of the two programs enables users to use both programs for the same input files and to choose whichever is useful for their purposes. From our experiences with relatively large problems, the two methods are both useful and perhaps complementary to each other. In general, the program cddlib tends to be efficient for highly degenerate inputs and the program rs tends to be efficient for nondegenerate or slightly degenerate problems. Although the program can be used for nondegenerate inputs, it might not be very efficient. For nondegenerate inputs, other available programs, such as the reverse search code lrs or qhull (developed by the Geometry Center), might be more efficient. See Section~\ref{CODES} for pointers to these codes. The paper \cite{abs-hgach-97} contains many interesting results on polyhedral computation and experimental results on cdd+, lrs, qhull and porta. This program can be distributed freely under the GNU GENERAL PUBLIC LICENSE. Please read the file COPYING carefully before using. I will not take any responsibility of any problems you might have with this program. But I will be glad to receive bug reports or suggestions at the e-mail addresses above. If cddlib turns out to be useful, please kindly inform me of what purposes cdd has been used for. I will be happy to include a list of applications in future distribution if I receive enough replies. The most powerful support for free software development is user's appreciation and collaboration. \section{Polyhedra H- and V-Formats (Version 1999)} \label{FORMAT} \bigskip Every convex polyhedron has two representations, one as the intersection of finite halfspaces and the other as Minkowski sum of the convex hull of finite points and the nonnegative hull of finite directions. These are called H-representation and V-representation, respectively. Naturally there are two basic Polyhedra formats, H-format for H-representation and V-format for V-representation. These two formats are designed to be almost indistinguishable, and in fact, one can almost pretend one for the other. There is some asymmetry arising from the asymmetry of two representations. First we start with the H-representation. Let $A$ be an $m \times d$ matrix, and let $b$ be a column $m$-vector. The Polyhedra format ({\em H-format} ) of the system $\; b - A x \ge \0\;$ of $m$ inequalities in $d$ variables $x =(x_1, x_2, \ldots, x_d)^T$ is \begin{tabular}{ccl} \\ \hline \multicolumn{3}{l} {various comments}\\ \multicolumn{3}{l} {{\bf H-representation}}\\ \multicolumn{3}{l} {{\bf (linearity $t\;$ $i_1\;$ $i_2\;$ $\ldots$ $\;i_t$)}}\\ \multicolumn{3}{l} {{\bf begin}}\\ $m$ & $d+1$ & numbertype\\ $b$ & $-A$ \\ \multicolumn{3}{l} {{\bf end}}\\ \multicolumn{3}{l} {various options} \\ \hline \end{tabular} \bigskip \noindent where numbertype can be one of integer, rational or real. When rational type is selected, each component of $b$ and $A$ can be specified by the usual integer expression or by the rational expression ``$p / q$'' or ``$-p / q$'' where $p$ and $q$ are arbitrary long positive integers (see the example input file rational.ine). In the 1997 format, we introduced ``H-representation'' which must appear before ``begin''. There was one restriction in the old polyhedra format (before 1997): the last $d$ rows must determine a vertex of $P$. This is obsolete now. In the new 1999 format, we added the possibility of specifying {\bf linearity\/}. This means that for H-representation, some of the input rows can be specified as {\bf equalities}: $b_{i_j} - A_{i_j} x = 0 \;$ for all $j=1,2, \ldots, t$. The linearity line may be omitted if there are no equalities. Option lines can be used to control computation of a specific program. In particular both cdd and lrs use the option lines to represent a linear objective function. See the attached LP files, samplelp*.ine. \bigskip Next we define Polyhedra {\em V-format}. Let $P$ be represented by $n$ generating points and $s$ generating directions (rays) as $P = conv(v_1,\ldots,v_n) + nonneg(r_{n+1},\ldots,r_{n+s})$. Then the Polyhedra V-format for $P$ is \begin{tabular}{cll} \\ \hline \multicolumn{3}{l} {various comments}\\ \multicolumn{3}{l} {{\bf V-representation}}\\ \multicolumn{3}{l} {({\bf linearity $t\;$ $i_1\;$ $i_2\;$ $\ldots$ $\;i_t$ })}\\ \multicolumn{3}{l} {{\bf begin}}\\ $n+s$ & $d+1$ & numbertype\\ $1$ & $v_1$ & \\ $\vdots$ & $\vdots$ & \\ $1$ & $v_n$ & \\ $0$ & $r_{n+1}$ & \\ $\vdots$ & $\vdots$ & \\ $0$ & $r_{n+s}$ & \\ \multicolumn{3}{l} {{\bf end}}\\ \multicolumn{3}{l} {various options} \\ \hline \end{tabular} \bigskip \noindent Here we do not require that vertices and rays are listed separately; they can appear mixed in arbitrary order. Linearity for V-representation specifies a subset of generators whose coefficients are relaxed to be {\bf free}: for all $j=1,2, \ldots, t$, the $k=i_j$th generator ($v_{k}$ or $r_k$ whichever is the $i_j$th generator) is a free generator. This means for each such a ray $r_k$, the line generated by $r_k$ is in the polyhedron, and for each such a vertex $v_k$, its coefficient is no longer nonnegative but still the coefficients for all $v_i$'s must sum up to one. It is highly unlikely that one needs to use linearity for vertex generators, and it is defined mostly for formality. When the representation statement, either ``H-representation'' or ``V-representation'', is omitted, the former ``H-representation'' is assumed. It is strongly suggested to use the following rule for naming H-format files and V-format files: \begin{description} \item[(a)] use the filename extension ``.ine'' for H-files (where ine stands for inequalities), and \item[(b)] use the filename extension ``.ext'' for V-files (where ext stands for extreme points/rays). \end{description} \section{Basic Object Types (Structures) in cddlib} \label{DATASTR} Here are the types (defined in cddtypes.h) that are important for the cddlib user. The most important one, {\tt dd\_MatrixType}, is to store a Polyhedra data in a straightforward manner. Once the user sets up a (pointer to) {\tt dd\_MatrixType} data, he/she can load the data to an internal data type ({\tt dd\_PolyhedraType}) by using functions described in the next section, and apply the double descrition method to get another representation. As an option {\tt dd\_MatrixType} can save a linear objective function to be used by a linear programming solver. The two dimensional array data in the structure {\tt dd\_MatrixType} is {\tt dd\_Amatrix} whose components are of type {\tt mytype\/}. The type mytype is set to be either the rational type {\tt mpq\_t} of the GNU MP Library or the C double array of size $1$. This abstract type allows us to write a single program that can be compiled with the two or more different arithmetics, see example programs such as simplecdd.c, testlp*.c and testcdd*.c in the {\tt src} and {\tt src-gmp} subdirectories of the source distribution. There is another data type that is used very often, {\tt dd\_SetFamilyType}. This is to store a family of subsets of a finite set. Such a family can represent the incidence relations between the set of extreme points and the set of facets of a polyhedron. Also, it can represent a graph structure by listing the set of vertices adjacent to each vertex (i.e. the adjacency list). To implement {\tt dd\_SetFamilyType}, we use a separate set library called {\tt setoper}, that handles the basic set operations, This library is briefly introduced in Section~\ref{SetFunctions}. \begin{verbatim} #define dd_FALSE 0 #define dd_TRUE 1 typedef long dd_rowrange; typedef long dd_colrange; typedef long dd_bigrange; typedef set_type dd_rowset; /* set_type defined in setoper.h */ typedef set_type dd_colset; typedef long *dd_rowindex; typedef int *dd_rowflag; typedef long *dd_colindex; typedef mytype **dd_Amatrix; /* mytype is either GMP mpq_t or 1-dim double array. */ typedef mytype *dd_Arow; typedef set_type *dd_SetVector; typedef enum { dd_Real, dd_Rational, dd_Integer, dd_Unknown } dd_NumberType; typedef enum { dd_Inequality, dd_Generator, dd_Unspecified } dd_RepresentationType; typedef enum { dd_MaxIndex, dd_MinIndex, dd_MinCutoff, dd_MaxCutoff, dd_MixCutoff, dd_LexMin, dd_LexMax, dd_RandomRow } dd_RowOrderType; typedef enum { dd_InProgress, dd_AllFound, dd_RegionEmpty } dd_CompStatusType; typedef enum { dd_DimensionTooLarge, dd_ImproperInputFormat, dd_NegativeMatrixSize, dd_EmptyVrepresentation, dd_IFileNotFound, dd_OFileNotOpen, dd_NoLPObjective, dd_NoRealNumberSupport, dd_NoError } dd_ErrorType; typedef enum { dd_LPnone=0, dd_LPmax, dd_LPmin } dd_LPObjectiveType; typedef enum { dd_LPSundecided, dd_Optimal, dd_Inconsistent, dd_DualInconsistent, dd_StrucInconsistent, dd_StrucDualInconsistent, dd_Unbounded, dd_DualUnbounded } dd_LPStatusType; typedef struct matrixdata *dd_MatrixPtr; typedef struct matrixdata { dd_rowrange rowsize; dd_rowset linset; /* a subset of rows of linearity (ie, generators of linearity space for V-representation, and equations for H-representation. */ dd_colrange colsize; dd_RepresentationType representation; dd_NumberType numbtype; dd_Amatrix matrix; dd_LPObjectiveType objective; dd_Arow rowvec; } dd_MatrixType; typedef struct setfamily *dd_SetFamilyPtr; typedef struct setfamily { dd_bigrange famsize; dd_bigrange setsize; dd_SetVector set; } dd_SetFamilyType; typedef struct lpsolution *dd_LPSolutionPtr; typedef struct lpsolution { dd_DataFileType filename; dd_LPObjectiveType objective; dd_LPSolverType solver; dd_rowrange m; dd_colrange d; dd_NumberType numbtype; dd_LPStatusType LPS; /* the current solution status */ mytype optvalue; /* optimal value */ dd_Arow sol; /* primal solution */ dd_Arow dsol; /* dual solution */ dd_colindex nbindex; /* current basis represented by nonbasic indices */ dd_rowrange re; /* row index as a certificate in the case of inconsistency */ dd_colrange se; /* col index as a certificate in the case of dual inconsistency */ long pivots[5]; /* pivots[0]=setup (to find a basis), pivots[1]=PhaseI or Criss-Cross, pivots[2]=Phase II, pivots[3]=Anticycling, pivots[4]=GMP postopt */ long total_pivots; } dd_LPSolutionType; \end{verbatim} \section{Library Functions} \label{LIBRARY} Here we list some of the most important library functions/procedures. We use the following convention: {\tt poly} is of type {\tt dd\_PolyhedraPtr}, {\tt matrix}, {\tt matrix1} and {\tt matrix2} are of type {\tt dd\_MatrixPtr}, {\tt matrixP}, of type {\tt dd\_MatrixPtr*}, {\tt err} is of type {\tt dd\_ErrorType*}, {\tt ifile} and {\tt ofile} are of type {\tt char*}, {\tt A} is of type {\tt dd\_Amatrix}, {\tt point} and {\tt vector} are of type {\tt dd\_Arow}, {\tt d} is of type {\tt dd\_colrange}, {\tt m} and {\tt i} are of type {\tt dd\_rowrange}, {\tt x} is of type {\tt mytype}, {\tt a} is of type {\tt signed long integer}, {\tt b} is of type {\tt double}, {\tt set} is of type {\tt set\_type}. Also, {\tt setfam} is of type {\tt dd\_SetFamilyPtr}, {\tt lp} is of type {\tt dd\_LPPtr}, {\tt lps} is of type {\tt dd\_LPSolutionPtr}, {\tt solver} is of type {\tt dd\_LPSolverType}, {\tt roworder} is of type {\tt dd\_RowOrderType}. \subsection{Library Initialization} \label{Initialization} \begin{description} \item[{\tt void dd\_set\_global\_constants(void)}]:\\ This is to set the global constants such as {\tt dd\_zero}, {\tt dd\_purezero} and {\tt dd\_one} for sign recognition and basic arithmetic operations. {Every program to use cddlib must call this function} before doing any computation. Just call this once. See Section \ref{constants} for the definitions of constants. \item[{\tt void dd\_free\_global\_constants(void)}]:\\ This is to free the global constants. This should be called when one does not use cddlib functions anymore. \end{description} \subsection{Core Functions} \label{CoreLibrary} There are two types of core functions in cddlib. The first type runs the double description (DD) algorithm and does a representation conversion of a specified polyhedron. The standard header for this type is {\tt dd\_DD*}. The second type solves one or more linear programs with no special headers. Both types of computations are nontrivial and the users (especially for the DD algorithm) must know that there is a serous limit in the sizes of problems that can be practically solved. Please check *.ext and *.ine files that come with cddlib to get ideas of tractable problems. In addition to previously defined objects, the symbol {\tt roworder} is of {\tt dd\_RowOrderType}. The symbol {\tt matrixP} is a pointer to {\bf dd\_MatrixType}. the arguments {\tt impl\_lin} and {\tt redset} are both a pointer to {\tt dd\_rowset} type, and {\tt newpos} is a pointer to {\tt dd\_rowindex} type. \begin{description} \item[{\tt dd\_PolyhedraPtr dd\_DDMatrix2Poly(matrix, err)}]:\\ Store the representation given by {\tt matrix} in a polyhedra data, and generate the second representation of {\tt *poly}. It returns a pointer to the data. {\tt *err} returns {\tt dd\_NoError} if the computation terminates normally. Otherwise, it returns a value according to the error occurred. \item[{\tt dd\_PolyhedraPtr dd\_DDMatrix2Poly2(matrix, roworder, err)}]:\\ This is the same function as {\tt dd\_DDMatrix2Poly} except that the insertion order is specified by the user. The argument {\tt roworder} is of {\tt dd\_RowOrderType} and takes one of the values: {\tt dd\_MaxIndex}, {\tt dd\_MinIndex}, {\tt dd\_MinCutoff}, {\tt dd\_MaxCutoff}, {\tt dd\_MixCutoff}, {\tt dd\_LexMin}, {\tt dd\_LexMax}, {\tt dd\_RandomRow}. In general, {\tt dd\_LexMin} is the best choice which is in fact chosen in {\tt dd\_DDMatrix2Poly}. If you know that the input is already sorted in the order you like, use {\tt dd\_MinIndex} or {\tt dd\_MaxIndex}. If the input contains many redundant rows (say more than $80\%$ redundant), you might want to try {\tt dd\_MaxCutoff} which might result in much faster termination, see \cite{abs-hgach-97,fp-ddmr-96} \item[{\tt boolean dd\_DDInputAppend(poly, matrix, err)}]:\\ Modify the input representation in {\tt *poly} by appending the matrix of {\tt *matrix}, and compute the second representation. The number of columns in {\tt *matrix} must be equal to the input representation. \item[{\tt boolean dd\_LPSolve(lp, solver, err)}]:\\ Solve {\tt lp} by the algorithm {\tt solver} and save the solututions in {\tt *lp}. Unlike the earlier versions (dplex, cdd+), it can deal with equations and totally zero right hand sides. It is recommended that {\tt solver} is {\tt dd\_DualSimplex}, the revised dual simplex method that updates a $d\times d$ dual basis matrix in each pivot (where $d$ is the column size of lp). The revised dual simplex method is ideal for dense LPs in small number of variables (i.e. small column size, typically less than $100$) and many inequality constraints (i.e. large row size, can be a few ten thousands). If your LP has many variables but only few constraints, solve the dual LP by this function. When it is compiled for GMP rational arithmetic, it first tries to solve an LP with C double floating-point arithmetic and verifies whether the output basis is correct with GMP. If so, the correct solution is computed with GMP. Otherwise, it (re)solves the LP from scratch with GMP. This is newly implemented in the version 093. The original (non-crossover) version of the same function is still available as {\tt boolean dd\_LPSolve0}. \item[{\tt dd\_boolean dd\_Redundant(matrix, i, point, err)}]:\\ Check whether $i$th data in {\tt matrix} is redundant for the representation. If it is nonredundant, it returns a certificate. For H-representation, it is a {\tt point} in $R^d$ which satisfies all inequalities except for the $i$th inequality. If $i$ is a linearity, it does nothing and always returns {\tt dd\_FALSE}. \item[{\tt dd\_rowset dd\_RedundantRows(matrix, err)}]:\\ Returns a maximal set of row indices such that the associated rows can be eliminated without changing the polyhedron. The function works for both V- and H-representations. \item[{\tt dd\_boolean dd\_SRedundant(matrix, i, point, err)}]:\\ Check whether $i$th data in {\tt matrix} is strongly redundant for the representation. If $i$ is a linearity, it does nothing and always returns {\tt dd\_FALSE}. Here, $i$th inequality in H-representation is {\em strongly redundant\/} if it is redundant and there is no point in the polyhedron satisfying the inequality with equality. In V-representation, $i$th point is {\em strongly redundant\/} if it is redundant and it is in the relative interior of the polyhedron. If it is not strongly redundant, it returns a certificate. \item[{\tt dd\_boolean dd\_ImplicitLinearity(matrix, i, err)}]:\\ Check whether $i$th row in the input is forced to be linearity (equality for H-representation). If $i$ is linearity itself, it does nothing and always returns {\tt dd\_FALSE}. \item[{\tt dd\_rowset dd\_ImplicitLinearityRows(matrix, err)}]:\\ Returns the set of indices of rows that are implicitly linearity. It simply calls the library function {\tt dd\_ImplicitLinearity} for each inequality and collects the row indices for which the answer is {\tt dd\_TRUE}. \item[{\tt dd\_boolean dd\_MatrixCanonicalize(matrixP, impl\_lin, redset, newpos, err)}]:\\ The input is a pointer {\tt matrixP} to a matrix and the function modifies the matrix by putting a maximally linear independent linearities (basis) at the top of the matrix, and removing all redundant data. All implicit linearities and all (removed) redundant rows in the original matrix will be returned in the corresponding row sets. The new positions of the original rows are returned by the array {\tt newpos}. The cardinality of the new linearity set {\tt (*matrixP)->linset} is the codimension of the polyhedron if it is H-polyhedron, and is the dimension of linearity space if it is V-polyhedron. Note that the present version should not be called a canonicalization because it may generate two different representations of the same polyhedron. In the future, this function is expected to be correctly implemented. \item[{\tt dd\_boolean dd\_MatrixCanonicalizeLinearity(matrixP, impl\_linset, newpos. err)}]:\\ It does only the first half of {\tt dd\_boolean dd\_MatrixCanonicalize}, namely, it detects all implicit linearities and puts a maximally independent linearities at the top of the matrix. For example, this function can be used to detect the dimension of an H-polyhedron. \item[{\tt dd\_boolean dd\_MatrixRedundancyRemove(matrixP, redset, newpos, err)}]:\\ It does essentially the second half of {\tt dd\_boolean dd\_MatrixCanonicalize}, namely, it detects all redundancies. This function should be used after {\tt dd\_MatrixCanonicalizeLinearity} has been called. \item[{\tt dd\_boolean dd\_FindRelativeInterior(matrix, impl\_lin, lin\_basis, lps, err)}]:\\ Computes a point in the relative interior of an H-polyhedron given by matrix, by solving an LP. The point will be returned by {\tt lps}. See the sample program allfaces.c that generates all nonempty faces of an H-polyhedron and a relative interior point for each face. The former returns all implicit linearity rows (implicit equations) and the latter returns a basis of the union of linearity rows and implicit linearity rows. This means that the cardinality of {\tt *lin\_basis} is the codimension of the polyhedron. \item[{\tt dd\_boolean dd\_ExistsRestrictedFace(matrix, R, S, err)}]:\\ Returns the answer to the Farkas' type decision problem as to whether there is a point in the polyhedron given by matrix satisfying all constraints in {\tt R} with equality and all constraints in {\tt S} with strict inequality. More precisely, it is the linear feasibility problem: \[ \begin{array}{llllll} \exists\mbox{?} &x &\mbox{ satisfying } & b_r - A_r x &= 0, \; \forall r \in R\cup L \\ & & & b_s - A_s x &> 0, \; \forall s \in S \\ & & & b_t - A_t x &\ge 0, \; \forall t \in T, \end{array} \] where $L$ is the set of linearity rows of {\tt matrix}, and $T$ represents the set of rows that are not in $R\cup L \cup S$. Both {\tt R} and {\tt S} are of {\tt dd\_rowset} type. The set $S$ is supposed to be disjoint from both $R$ and $L$. If it is not the case, the set $S$ will be considered as $S \setminus (R \cup L)$. This function ignores {\tt matrix->representation}, and thus even if it is set to {\tt dd\_Generator} or {\tt dd\_Unspecified}, it treats the matrix as if it were inequality representation. \item[{\tt dd\_boolean dd\_ExistsRestrictedFace2(matrix, R, S, lps, err)}]:\\ It is the same as the function {\tt dd\_ExistsRestrictedFace} except that it returns also a certificate for the answer. The certificate is a solution to the bounded LP: \[ \begin{array}{lllllll} \mbox{(P)} &\max z &\mbox{ subject to } & b_r - A_r x & & = 0, \; \forall r \in R\cup L \\ & & & b_s - A_s x &-z &\ge 0, \; \forall s \in S \\ & & & b_t - A_t x & &\ge 0, \; \forall t \in T \\ & & & 1 & -z&\ge 0, \end{array} \] where $L$ is the set of linearity rows of {\tt matrix}, and $T$ represents the set of rows that are not in $R\cup L \cup S$. The answer for the decision problem is YES if and only if the LP attains an optimal and the optimal value is positive. The dual solution (either an optimal solution or a dual unbounded direction) can be considered as a certificate for the NO answer, if the answer is NO. This function ignores {\tt matrix->representation}, and thus even if it is set to {\tt dd\_Generator} or {\tt dd\_Unspecified}, it treats the matrix as if it were inequality representation. \item[{\tt dd\_SetFamilyPtr dd\_Matrix2Adjacency(matrix, err)}]:\\ Computes the adjacency list of input rows using the LP solver and without running the representation conversion. When the input is H-representation, it gives the facet graph of the polyhedron. For V-representation, it gives the (vertex) graph of the polyhedron. It is required that the input matrix is a minimal representation. Run redundancy removal functions before calling this function, see the sample code adjacency.c. \item[{\tt dd\_SetFamilyPtr dd\_Matrix2WeakAdjacency(matrix, err)}]:\\ Computes the weak adjacency list of input rows using the LP solver and without running the representation conversion. When the input is H-representation, it gives the graph where its nodes are the facets two nodes are adjacent if and only if the associated facets have some intersection. For V-representation, it gives the graph where its nodes are the vertices and two nodes are adjacent if and only if the associated vertices are on a common facet. It is required that the input matrix is a minimal representation. Run redundancy removal functions before calling this function, see the sample code adjacency.c. \item[{\tt dd\_MatrixPtr dd\_FourierElimination(matrix, err)}]:\\ Eliminate the last variable from a system of linear inequalities given by matrix by using the Fourier's Elimination. If the input matrix is V-representation, {\tt *err} returns {\tt dd\_NotAvailForV}. This function does not remove redundancy and one might want to call redundancy removal functions afterwards. See the sample code fourier.c. \item[{\tt dd\_MatrixPtr dd\_BlockElimination(matrix, set, err)}]:\\ Eliminate a set of variables from a system of linear inequalities given by matrix by using the extreme rays of the dual linear system. See comments in the code cddproj.c for details. This might be a faster way to eliminate variables than the repeated FourierElimination when the number of variables to eliminate is large. If the input matrix is V-representation, {\tt *err} returns {\tt dd\_NotAvailForV}. This function does not remove redundancy and one might want to call redundancy removal functions afterwards. See the sample code projection.c. \item[{\tt dd\_rowrange dd\_RayShooting(matrix, point, vector)}]:\\ Finds the index of a halfspace first left by the ray starting from {\tt point} toward the direction {\tt vector}. It resolves tie by a lexicographic perturbation. Those inequalities violated by {\tt point} will be simply ignored. \end{description} \subsection{Data Manipulations} \label{DataLibrary} \subsubsection{Number Assignments} For number assignments, one cannot use such expressions as {\tt x=(mytype)a}. This is because cddlib uses an abstract number type ({\tt mytype}) so that it can compute with various number types such as C double and GMP rational. User can easily add a new number type by redefining arithmetic operations in cddmp.h and cddmp.c. \begin{description} \item[{\tt void dd\_init(x)}]:\\ This is to initialize a {\tt mytype} variable {\tt x} and to set it to zero. This initialization has to be called before any {\tt mytype} variable to be used. \item[{\tt void dd\_clear(x)}]:\\ This is to free the space allocated to a {\tt mytype} variable {\tt x}. \item[{\tt void dd\_set\_si(x, a)}]:\\ This is to set a {\tt mytype} variable {\tt x} to the value of signed long integer {\tt a}. \item[{\tt void dd\_set\_si2(x, a, b)}]:\\ This is to set a {\tt mytype} variable {\tt x} to the value of the rational expression {\tt a/b}, where {\tt a} is signed long and {\tt b} is unsigned long integers. \item[{\tt void dd\_set\_d(x, b)}]:\\ This is to set a {\tt mytype} variable {\tt x} to the value of double {\tt b}. This is available only when the library is compiled without {\tt -DGMPRATIONAL} compiler option. \end{description} \subsubsection{Arithmetic Operations for {\tt mytype} Numbers} Below {\tt x}, {\tt y}, {\tt z} are of type {\tt mytype}. \begin{description} \item[{\tt void dd\_add(x, y, z)}]:\\ Set {\tt x} to be the sum of {\tt y} and {\tt z}. \item[{\tt void dd\_sub(x, y, z)}]:\\ Set {\tt x} to be the substraction of {\tt z} from {\tt y}. \item[{\tt void dd\_mul(x, y, z)}]:\\ Set {\tt x} to be the multiplication of {\tt y} and {\tt z}. \item[{\tt void dd\_div(x, y, z)}]:\\ Set {\tt x} to be the division of {\tt y} over {\tt z}. \item[{\tt void dd\_inv(x, y)}]:\\ Set {\tt x} to be the reciplocal of {\tt y}. \end{description} \subsubsection{Predefined Constants} \label{constants} There are several {\tt mytype} constants defined when {\tt dd\_set\_global\_constants(void)} is called. Some constants depend on the double constant {\tt dd\_almostzero} which is normally set to $10^{-7}$ in cdd.h. This value can be modified depending on how numerically delicate your problems are but an extra caution should be taken. \begin{description} \item[{\tt mytype dd\_purezero}]:\\ This represents the mathematical zero $0$. \item[{\tt mytype dd\_zero}]:\\ This represents the largest positive number which should be considered to be zero. In the GMPRATIONAL mode, it is equal to {\tt dd\_purezero}. In the C double mode, it is set to the value of {\tt dd\_almostzero}. \item[{\tt mytype dd\_minuszero}]:\\ The negative of {\tt dd\_zero}. \item[{\tt mytype dd\_one}]:\\ This represents the mathematical one $1$. \end{description} \subsubsection{Sign Evaluation and Comparison for {\tt mytype} Numbers} Below {\tt x}, {\tt y}, {\tt z} are of type {\tt mytype}. \begin{description} \item[{\tt dd\_boolean dd\_Positive(x)}]:\\ Returns {\tt dd\_TRUE} if {\tt x} is considered positive, and {\tt dd\_FALSE} otherwise. In the GMPRATIONAL mode, the positivity recognition is exact. In the C double mode, this means the value is strictly larger than {\tt dd\_zero}. {\tt dd\_boolean dd\_Negative(x)} works similarly. \item[{\tt dd\_boolean dd\_Nonpositive(x)}]:\\ Returns the negation of {\tt dd\_Positive(x)}. {\tt dd\_Nonnegative(x)} works similarly. \item[{\tt dd\_boolean dd\_EqualToZero(x)}]:\\ Returns {\tt dd\_TRUE} if {\tt x} is considered zero, and {\tt dd\_FALSE} otherwise. In the GMPRATIONAL mode, the zero recognition is exact. In the C double mode, this means the value is inbetween {\tt dd\_minuszero} and {\tt dd\_zero} inclusive. \item[{\tt dd\_boolean dd\_Larger(x, y)}]:\\ Returns {\tt dd\_TRUE} if {\tt x} is strictly larger than {\tt y}, and {\tt dd\_FALSE} otherwise. This is implemented as {dd\_Positive(z)} where {\tt z} is the subtraction of {\tt y} from {\tt x}. {\tt dd\_Smaller(x, y)} works similarly. \item[{\tt dd\_boolean dd\_Equal(x, y)}]:\\ Returns {\tt dd\_TRUE} if {\tt x} is considered equal to {\tt y}, and {\tt dd\_FALSE} otherwise. This is implemented as {dd\_EqualToZero(z)} where {\tt z} is the subtraction of {\tt y} from {\tt x}. \end{description} \subsubsection{Polyhedra Data Manipulation} \begin{description} \item[{\tt dd\_MatrixPtr dd\_PolyFile2Matrix (f, err)}]:\\ Read a Polyhedra data from stream {\tt f} and store it in {\tt matrixdata} and return a pointer to the data. \item[{\tt dd\_MatrixPtr dd\_CopyInequalities(poly)}]:\\ Copy the inequality representation pointed by poly to {\tt matrixdata} and return {\tt dd\_MatrixPtr}. \item[{\tt dd\_MatrixPtr dd\_CopyGenerators(poly)}]:\\ Copy the generator representation pointed by poly to {\tt matrixdata} and return {\tt dd\_MatrixPtr}. \item[{\tt dd\_SetFamilyPtr dd\_CopyIncidence(poly)}]:\\ Copy the incidence representation of the computed representation pointed by poly to {\tt setfamily} and return {\tt dd\_SetFamilyPtr}. The computed representation is {\tt Inequality} if the input is {\tt Generator}, and the vice visa. \item[{\tt dd\_SetFamilyPtr dd\_CopyAdjacency(poly)}]:\\ Copy the adjacency representation of the computed representation pointed by poly to {\tt setfamily} and return {\tt dd\_SetFamilyPtr}. The computed representation is {\tt Inequality} if the input is {\tt Generator}, and the vice visa. \item[{\tt dd\_SetFamilyPtr dd\_CopyInputIncidence(poly)}]:\\ Copy the incidence representation of the input representation pointed by poly to {\tt setfamily} and return {\tt d\_SetFamilyPtr}. \item[{\tt dd\_SetFamilyPtr dd\_CopyInputAdjacency(poly)}]:\\ Copy the adjacency representation of the input representation pointed by poly to {\tt setfamily} and return {\tt d\_SetFamilyPtr}. \item[{\tt void dd\_FreePolyhedra(poly)}]:\\ Free memory allocated to {\tt poly}. \end{description} \subsubsection{LP Data Manipulation} \begin{description} \item[{\tt dd\_LPPtr dd\_MakeLPforInteriorFinding(lp)}]:\\ Set up an LP to find an interior point of the feasible region of {\tt lp} and return a pointer to the LP. The new LP has one new variable $x_{d+1}$ and one more constraint: $\max x_{d+1}$ subject to $b - A x - x_{d+1} \ge 0$ and $x_{d+1} \le K$, where $K$ is a positive constant. \item[{\tt dd\_LPPtr dd\_Matrix2LP(matrix, err)}]:\\ Load {\tt matrix} to {\tt lpdata} and return a pointer to the data. \item[{\tt dd\_LPSolutionPtr dd\_CopyLPSolution(lp)}]:\\ Load the solutions of {\tt lp} to {\tt lpsolution} and return a pointer to the data. This replaces the old name {\tt dd\_LPSolutionLoad(lp)}. \item[{\tt void dd\_FreeLPData(lp)}]:\\ Free memory allocated as an LP data pointed by {\tt lp}. \item[{\tt void dd\_FreeLPSolution(lps)}]:\\ Free memory allocated as an LP solution data pointed by {\tt lps}. \end{description} \subsubsection{Matrix Manipulation} \begin{description} \item[{\tt dd\_MatrixPtr dd\_CopyMatrix(matrix)}]:\\ Make a copy of matrixdata pointed by {\tt matrix} and return a pointer to the copy. \item[{\tt dd\_MatrixPtr dd\_AppendMatrix(matrix1, matrix2)}]:\\ Make a matrixdata by copying {\tt *matrix1} and appending the matrix in {\tt *matrix2} and return a pointer to the data. The colsize must be equal in the two input matrices. It returns a {\tt NULL} pointer if the input matrices are not appropriate. Its {\tt rowsize} is set to the sum of the rowsizes of {\tt matrix1} and {\tt matrix2}. The new matrixdata inherits everything else (i.e. numbertype, representation, etc) from the first matrix. \item[{\tt int dd\_MatrixAppendTo(\& matrix1, matrix2)}]:\\ Same as {\tt dd\_AppendMatrix} except that the first matrix is modified to take the result. \item[{\tt int dd\_MatrixRowRemove(\& matrix, i)}]:\\ Remove the $i$th row of {\tt matrix}. \item[{\tt dd\_MatrixPtr dd\_MatrixSubmatrix(matrix, set)}]:\\ Generate the submatrix of {\tt matrix} by removing the rows indexed by {\tt set} and return a matrixdata pointer. \item[{\tt dd\_SetFamilyPtr dd\_Matrix2Adjacency(matrix, err)}]:\\ Return the adjacency list of the representation given by {\tt matrix}. The computation is done by the built-in LP solver. The representation should be free of redundancy when this function is called. See the function {\tt dd\_rowset dd\_RedundantRows} and the example program adjacency.c. \end{description} \subsection{Input/Output Functions} \label{IOLibrary} \begin{description} \item[{\tt dd\_MatrixPtr dd\_PolyFile2Matrix (f, err)}]:\\ Read a Polyhedra data from stream {\tt f} and store it in {\tt matrixdata} and return a pointer to the data. \item[{\tt boolean dd\_DDFile2File(ifile, ofile, err)}]:\\ Compute the representation conversion for a polyhedron given by a Polyhedra file ifile, and write the other representation in a Polyhedra file ofile. {\tt *err} returns {\tt dd\_NoError} if the computation terminates normally. Otherwise, it returns a value according to the error occurred. \item[{\tt void dd\_WriteMatrix(f, matrix)}]:\\ Write {\tt matrix} to stream {\tt f}. \item[{\tt void dd\_WriteNumber(f, x)}]:\\ Write {\tt x} to stream {\tt f}. If {\tt x} is of GMP mpq\_t rational $p/q$, the output is $p/q$. If it is of C double, it is formatted as a double float with a decimal point. \item[{\tt void dd\_WritePolyFile(f, poly)}]:\\ Write {tt poly} to stream {\tt f} in Polyhedra format. \item[{\tt void dd\_WriteErrorMessages(f, err)}]:\\ Write error messages given by {\tt err} to stream {\tt f}. \item[{\tt void dd\_WriteSetFamily(f, setfam)}]:\\ Write the set family pointed by {\tt setfam} to stream {\tt f}. For each set, it outputs its index, its cardinality, a colon ``:'' and a ordered list of its elements. \item[{\tt void dd\_WriteSetFamilyCompressed(f, setfam)}]:\\ Write the set family pointed by {\tt setfam} to stream {\tt f}. For each set, it outputs its index, its cardinality or the negative of the cardinality, a colon ``:'' and the elements in the set or its complements whichever is smaller. Whenever it outputs the complements, the cardinality is negated so that there is no ambiguity. This will be considered standard for outputing incidence (*.icd, *ecd) and adjacency (*.iad, *.ead) data in cddlib. But there is some minor incompatibility with cdd/cdd+ standalone codes. \item[{\tt void dd\_WriteProgramDescription(f)}]:\\ Write the cddlib version information to stream {\tt f}. \item[{\tt void dd\_WriteDDTimes(f, poly)}]:\\ Write the representation conversion time information on {\tt poly} to stream {\tt f}. \end{description} \subsection{Obsolete Functions} \label{ObsoleteFunctions} \begin{description} \item[{\tt boolean dd\_DoubleDescription(poly, err)}]: (removed in Version 0.90c)\\ The new function {\tt dd\_DDMatrix2Poly(matrix, err)} (see Section~\ref{CoreLibrary}) replaces (and actually combines) both this and {\tt dd\_Matrix2Poly(matrix, err)}. \item[{\tt dd\_PolyhedraPtr dd\_Matrix2Poly(matrix, err)}]: (removed in Version 0.90c)\\ See above for the reason for removal. \item[{\tt dd\_LPSolutionPtr dd\_LPSolutionLoad(lp)}]: (renamed in Version 0.90c)\\ This function is now called {\tt dd\_CopyLPSolution(lp)}. \end{description} \subsection{Set Functions in {\tt setoper} library} \label{SetFunctions} The cddlib comes with a simple set operation library {\tt setoper}. The key type defined is {\tt set\_type}. A set is represented by a fixed length binary strings. Thus, the maximum length of a set must be declared when it is initialized. Below the symbols {\tt a}, {\tt b}, {\tt c} are of type {\tt set\_type}. The symbols {\tt aP} is a pointer to type {\tt set\_type}, and {\tt s}, {\tt t} are of type {\tt long}. Here are some of the functions defined. See {\tt setoper.h} for a complete listing. \begin{description} \item[{\tt void set\_initialize(aP, s)}]:\\ Allocate a {\tt set\_type} space of maximum cardinality {\tt s} and make it pointed by {\tt aP}. The set is initialized as empty set. \item[{\tt void set\_free(a)}]:\\ Free the {\tt set\_type} space allocated for {\tt a}. \item[{\tt void set\_copy(a, b))}]:\\ Set {\tt a} to be {\tt b}. The set {\tt a} must be pre-initialized with the same maximum cardinality as that of {\tt b}. \item[{\tt void set\_addelem(a, t))}]:\\ Add an element {\tt t} to a set {\tt a}. The set {\tt a} stays unchanged if it contains the element {\tt t}. \item[{\tt long set\_card(a))}]:\\ Return the cardinality of set {\tt a}. \item[{\tt int set\_member(t, a))}]:\\ Return $1$ if {\tt t} is a member of set {\tt a}, and $0$ otherwise. \item[{\tt void set\_write(a))}]:\\ Print out the elements of set {\tt a} to {\tt stdout}. The function {\tt void set\_fwrite(f, a))} output to stream {\tt f}. \end{description} \section{An Extension of the CDD Library in GMP mode} \label{GMPLIB} Starting from the version 093, the GMP version of cddlib, {\tt libcddgmp.a}, contains all cdd library functions in two arithmetics. All functions with the standard prefix {\tt dd\_} are computed with the GMP rational arithmetic as before. The same fuctions with the new prefix {\tt ddf\_} are now added to the library {\tt libcddgmp.a} that are based on the C double floating-point arithmetic. Thus these functions are equivalent to {\tt libcdd.a} functions, except that all functions and variable types are with prefix {\tt ddf\_} and the variable type {\tt mytype} is replaced by {\tt myfloat}. In this sense, {\tt libcdd.a} is a proper subset of {\tt libcddgmp.a} and in principle one can do everything with {\tt libcddgmp.a}. See how the new {\tt dd\_LPSolve} is written in cddlp.c. \section{Examples} \label{EXAMPLES} See example codes such as testcdd*.c , testlp*.c, redcheck.c, adjacency.c, allfaces,c and simplecdd.c in the {\tt src} and {\tt src-gmp} subdirectories of the source distribution. \section{Numerical Accuracy} \label{accuracy} A little caution is in order. Many people have observed numerical problems of cddlib when the floating version of cddlib is used. As we all know, floating-point computation might not give a correct answer, especially when an input data is very sensitive to a small perturbation. When some strange behavior is observed, it is always wise to create a rationalization of the input (for example, one can replace 0.3333333 with 1/3) and to compute it with cddlib compiled with gmp rational to see what a correct behavior should be. Whenever the time is not important, it is safer to use gmp rational arithmetic. If you need speedy computation with floating-point arithmetic, you might want to ``play with'' the constant {\tt dd\_almostzero} defined in cdd.h: \begin{verbatim} #define dd_almostzero 1.0E-7 \end{verbatim} \noindent This number is used to recognize whether a number is zero: a number whose absolute value is smaller than {\tt dd\_almostzero} is considered zero, and nonzero otherwise. You can change this to modify the behavior of cddlib. One might consider the default setting is rather large for double precision arithmetic. This is because cddlib is made to deal with highly degenerate data and it works better to treat a relatively large ``epsilon'' as zero. Another thing one can do is scaling. If the values in one column of an input is of smaller magnitude than those in another column, scale one so that they become comparable. \section{Other Useful Codes} \label{CODES} There are several other useful codes available for vertex enumeration and/or convex hull computation such as lrs, qhull, porta and irisa-polylib. The pointers to these codes are available at \begin{enumerate} \item lrs by D. Avis \cite{a-lrshome-01} (C implementation of the reverse search algorithm \cite{af-pachv-92}). \item qhull by C.B. Barber \cite{bdh-qach-03} (C implementation of the beneath-beyond method, see \cite{e-acg-87,m-cg-94}, which is the dual of the dd method). \item porta by T. Christof and A. L{\"o}bel \cite{cl-porta-97} (C implementation of the Fourier-Motzkin elimination). \item IRISA polyhedral library by D.K. Wilde \cite{w-ldpo-93b} (C implementation of a variation of the dd algorithm). \item PPL: the Parma Polyhedra Library \cite{b-pplhome} by R. Bagnara (C++ implementation of a variation of the dd algorithm). \item {\tt pd} by A. Marzetta \cite{m-pdcip-97} (C implementation of the primal-dual algorithm \cite{bfm-pdmvf-97}). \item Geometry Center Software List by N. Amenta \cite{a-dcg}. \item Computational Geometry Pages by J. Erickson \cite{e-cgp}. \item Linear Programming FAQ by R. Fourer and J. Gregory \cite{fg-lpfaq}. \item ZIB Berlin polyhedral software list:\\ \htmladdnormallink{ftp://elib.zib-berlin.de/pub/mathprog/polyth/index.html} {ftp://elib.zib-berlin.de/pub/mathprog/polyth/index.html}. \item Polyhedral Computation FAQ \cite{f-pcfaq-98}. \end{enumerate} \section{Codes Using Cddlib} \label{USERCODES} There are quite a few nice programs using some functions of cddlib. Here are some of them. \begin{enumerate} \item {\tt LattE} \cite{dhhhty-latte-05} computes the number of lattice points in a convex polytope. \item {\tt Minksum} \cite{w-msv-05} is a program to compute the V-representation (i.e. the set of vertices) of the Minkowski addition of several convex polytopes given by their V-representation in $\R^d$. It is an implementation in C++ language of the reverse search algorithm \cite{f-fzctmacp-04} whose time complexity is polynomially bounded by the sizes of input and output. \item {\tt Gfan} \cite{j-gvum-05} is a program to list all reduced Gr\"obner bases of a general polynomial ideal given by a set of generating polynomials in $n$-variables. It is an implementation in C++ language of the reverse search algorithm \cite{fjt-cgf-05}. \item {\tt TOPCOM} \cite{r-topcom-05} computes the combinatorial structure (the oriented matroid) of a point configuration and enumerates all triangulations of a point set. It detects the regularity of a triangulation using cddlib. \end{enumerate} \section*{Acknowledgements.} I am grateful to Tom Liebling who provided me with an ideal opportunity to visit EPFL for the academic year 1993-1994. Later, Hans-Jakob L\"uthi (ETHZ) and Emo Welzl (ETHZ) joined to support the the development of cdd codes (cdd, cdd+, cddlib). Without their generous and continuing support, the present form of this program would not have existed. There are many other people who helped me to improve cdd, in particular, I am indebted to David Avis, Alexander Bockmayr, David Bremner, Henry Crapo, Istvan Csabai, Francois Margot, Marc Pfetsch, Alain Prodon, J\"org Rambau, Dima Pasechnik, Shawn Rusaw, Matthew Saltzman, Masanori Sato, Anders Jensen, Ruriko Yoshida, Charles Geyer, Michal Kvasnica, Sven Verdoolaege (listed in arbitrary order) and those listed in the HISTORY file. \bibliographystyle{plain} \bibliography{fukuda1,fukuda2} \end{document} cddlib-0.94j/doc/cddlibman.bbl0000644000175000017500000001345713270061061013133 00000000000000\begin{thebibliography}{10} \bibitem{a-dcg} N.~Amenta. \newblock Directory of computational geometry. \newblock \htmladdnormallink{http://www.geom.uiuc.edu/software/cglist/}{http://www.geo% m.uiuc.edu/software/cglist/}. \bibitem{a-lrshome-01} D.~Avis. \newblock {\em lrs Homepage}. \newblock \htmladdnormallink{http://cgm.cs.mcgill.ca/\~{}avis/C/lrs.html}{http://cgm.c% s.mcgill.ca/\~{}avis/C/lrs.html}. \bibitem{abs-hgach-97} D.~Avis, D.~Bremner, and R.~Seidel. \newblock How good are convex hull algorithms. \newblock {\em Computational Geometry: Theory and Applications}, 7:265--302, 1997. \bibitem{af-pachv-92} D.~Avis and K.~Fukuda. \newblock A pivoting algorithm for convex hulls and vertex enumeration of arrangements and polyhedra. \newblock {\em Discrete Comput. Geom.}, 8:295--313, 1992. \bibitem{b-pplhome} R.~Bagnara. \newblock Parma polyhedra library homepage, 2004. \newblock \htmladdnormallink{http://www.cs.unipr.it/ppl/} {http://www.cs.unipr.it/ppl/}. \bibitem{bdh-qach-03} C.B. Barber, D.P. Dobkin, and H.~Huhdanpaa. \newblock {\em qhull, Version 2003.1}, 2003. \newblock program and report available from \htmladdnormallink{http://www.qhull.org/} {http://www.qhull.org/}. \bibitem{bfm-pdmvf-97} D.~Bremner, K.~Fukuda, and A.~Marzetta. \newblock Primal-dual methods for vertex and facet enumeration. \newblock In {\em Proc. 13th Annu. ACM Sympos. Comput. Geom.}, pages 49--56, 1997. \bibitem{cl-porta-97} T.~Christof and A.~L{\"o}bel. \newblock {PORTA}: Polyhedron representation transformation algorithm (ver. 1.3.1), 1997. \newblock \htmladdnormallink{http://www.zib.de/Optimization/Software/Porta/} {http://www.zib.de/Optimization/Software/Porta/}. \bibitem{dhhhty-latte-05} J.~de~Loera, D.~Haws, R.~Hemmecke, Peter Huggins, J.~Tauzer, and R.~Yoshida. \newblock {\em Latt{E}}. \newblock University of California, Davis, 2005. \newblock available from \htmladdnormallink{http://www.math.ucdavis.edu/~latte/}{http://www.math.ucda% vis.edu/~latte/}. \bibitem{e-acg-87} H.~Edelsbrunner. \newblock {\em Algorithms in {C}ombinatorial {G}eometry}. \newblock Springer-Verlag, 1987. \bibitem{e-cgp} J.~Erickson. \newblock Computational geometry pages, list of software libraries and codes. \newblock \htmladdnormallink{http://compgeom.cs.uiuc.edu/\~{}jeffe/compgeom/}{http://c% ompgeom.cs.uiuc.edu/\~{}jeffe/compgeom/}. \bibitem{fg-lpfaq} R.~Fourer and J.W. Gregory. \newblock Linear programming frequently asked questions ({LP-FAQ}). \newblock \htmladdnormallink{http://www-unix.mcs.anl.gov/otc/Guide/faq/linear-programm% ing-faq.html} {http://www-unix.mcs.anl.gov/otc/Guide/faq/linear-programming-faq.html}. \bibitem{f-pcfaq-98} K.~Fukuda. \newblock Polyhedral computation {FAQ}, 1998. \newblock Both html and ps versions available from \htmladdnormallink{http://www.ifor.math.ethz.ch/\~{}fukuda/fukuda.html} {http://www.ifor.math.ethz.ch/\~{}fukuda/fukuda.html}. \bibitem{f-fzctmacp-04} K.~Fukuda. \newblock From the zonotope construction to the {M}inkowski addition of convex polytopes. \newblock {\em Journal of Symbolic Computation}, 38(4):1261--1272, 2004. \newblock pdf file available from \htmladdnormallink{http://www.cs.mcgill.ca/\~{}fukuda/download/paper/minksum% 031007jsc.pdf}{http://www.cs.mcgill.ca/\~{}fukuda/download/paper/minksum031007% jsc.pdf}. \bibitem{fjt-cgf-05} K.~Fukuda, A.~Jensen, and R.~Thomas. \newblock Computing {G}r{\"o}bner fans. \newblock Technical report. \newblock In preparation. \bibitem{fp-ddmr-96} K.~Fukuda and A.~Prodon. \newblock Double description method revisited. \newblock In M.~Deza, R.~Euler, and I.~Manoussakis, editors, {\em Combinatorics and Computer Science}, volume 1120 of {\em Lecture Notes in Computer Science}, pages 91--111. Springer-Verlag, 1996. \newblock ps file available from \htmladdnormallink{ftp://ftp.ifor.math.ethz.ch/pub/fukuda/reports/ddrev96031% 5.ps.gz}{ftp://ftp.ifor.math.ethz.ch/pub/fukuda/reports/ddrev960315.ps.gz}. \bibitem{j-gvum-05} A.N. Jensen. \newblock {\em Gfan version 0.1: A User's Manual}. \newblock Department of Mathematical Sciences, University of Aarhus and Institute for Operations Research, ETH Zurich, 2005. \newblock available from \htmladdnormallink{http://home.imf.au.dk/ajensen/software/gfan/gfan.html}{ht% tp://home.imf.au.dk/ajensen/software/gfan/gfan.html}. \bibitem{m-pdcip-97} A.~Marzetta. \newblock {\em pd -- {C}-implementation of the primal-dual algoirithm}, 1997. \newblock code available from \htmladdnormallink{http://www.cs.unb.ca/profs/bremner/pd/} {http://www.cs.unb.ca/profs/bremner/pd/}. \bibitem{mrtt-ddm-53} T.S. Motzkin, H.~Raiffa, GL. Thompson, and R.M. Thrall. \newblock The double description method. \newblock In H.W. Kuhn and A.W.Tucker, editors, {\em Contributions to theory of games, Vol. 2}. Princeton University Press, Princeton, RI, 1953. \bibitem{m-cg-94} K.~Mulmuley. \newblock {\em Computational {G}eometry, {A}n {I}ntroduction {T}hrough {R}andamized {A}lgorithms}. \newblock Prentice-Hall, 1994. \bibitem{r-topcom-05} J.~Rambau. \newblock {\em TOPCOM, a package for computing Triangulations Of Point Configurations and Oriented Matroids}. \newblock University of Bayreuth, 2005. \newblock available from \htmladdnormallink{http://www.uni-bayreuth.de/departments/wirtschaftsmathema% tik/rambau/TOPCOM/}{http://www.uni-bayreuth.de/departments/wirtschaftsmathemat% ik/rambau/TOPCOMl}. \bibitem{w-msv-05} C.~Weibel. \newblock {\em Minksum version 1.1}. \newblock Mathematics Institute, EPF Lausanne, 2005. \newblock available from \htmladdnormallink{http://roso.epfl.ch/cw/poly/public.php}{http://roso.epfl.% ch/cw/poly/public.php}. \bibitem{w-ldpo-93b} D.K. Wilde. \newblock A library for doing polyhedral operations. \newblock Master's thesis, Oregon State University, Corvallis, Oregon, Dec 1993. \newblock Also published in IRISA technical report PI 785, Rennes, France; Dec, 1993. \end{thebibliography} cddlib-0.94j/doc/html.sty0000644000175000017500000003031413270061057012236 00000000000000% LaTeX2HTML Version 95.1 : html.sty % % WARNING: This file requires LaTeX2e. A LaTeX 2.09 version % is also provided, but with restricted functionality. % % This file contains definitions of LaTeX commands which are % processed in a special way by the translator. % For example, there are commands for embedding external hypertext links, % for cross-references between documents or for including % raw HTML. % This file includes the comments.sty file v2.0 by Victor Eijkhout % In most cases these commands do nothing when processed by LaTeX. % Modifications: % % nd = Nikos Drakos % jz = Jelle van Zeijl % hs = Herb Swan % hs 31-JAN-96 - Added support for document segmentation % hs 10-OCT-95 - Added \htmlrule command % jz 22-APR-94 - Added support for htmlref % nd - Created %%%%MG added \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{html} [1996/02/01 v1.0 hypertext commands for latex2html (nd, hs)] %%%%MG % Exit if the style file is already loaded % (suggested by Lee Shombert \ifx \htmlstyloaded\relax \endinput\else\let\htmlstyloaded\relax\fi %%% LINKS TO EXTERNAL DOCUMENTS % % This can be used to provide links to arbitrary documents. % The first argumment should be the text that is going to be % highlighted and the second argument a URL. % The hyperlink will appear as a hyperlink in the HTML % document and as a footnote in the dvi or ps files. % \newcommand{\htmladdnormallinkfoot}[2]{#1\footnote{#2}} % This is an alternative definition of the command above which % will ignore the URL in the dvi or ps files. \newcommand{\htmladdnormallink}[2]{#1} % This command takes as argument a URL pointing to an image. % The image will be embedded in the HTML document but will % be ignored in the dvi and ps files. % \newcommand{\htmladdimg}[1]{} %%% CROSS-REFERENCES BETWEEN (LOCAL OR REMOTE) DOCUMENTS % % This can be used to refer to symbolic labels in other Latex % documents that have already been processed by the translator. % The arguments should be: % #1 : the URL to the directory containing the external document % #2 : the path to the labels.pl file of the external document. % If the external document lives on a remote machine then labels.pl % must be copied on the local machine. % %e.g. \externallabels{http://cbl.leeds.ac.uk/nikos/WWW/doc/tex2html/latex2html} % {/usr/cblelca/nikos/tmp/labels.pl} % The arguments are ignored in the dvi and ps files. % \newcommand{\externallabels}[2]{} % % This complements the \externallabels command above. The argument % should be a label defined in another latex document and will be % ignored in the dvi and ps files. % \newcommand{\externalref}[1]{} % This command adds a horizontal rule and is valid even within % a figure caption. % \newcommand{\htmlrule}{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % The following commands pertain to document segmentation, and % were added by Herbert Swan (with help from % Michel Goossens ): % % % This command inputs internal latex2html tables so that large % documents can to partitioned into smaller (more manageable) % segments. % \newcommand{\internal}[2][internals]{} % % Define a dummy stub \htmlhead{}. This command causes latex2html % to define the title of the start of a new segment. It is not % normally placed in the user's document. Rather, it is passed to % latex2html via a .ptr file written by \segment. % \newcommand{\htmlhead}[2]{} % % The dummy command \endpreamble is needed by latex2html to % mark the end of the preamble in document segments that do % not contain a \begin{document} % \newcommand{\startdocument}{} % % Allocate a new set of section counters, which will get incremented % for "*" forms of sectioning commands, and for a few miscellaneous % commands. % \newcounter{lpart} \newcounter{lchapter}[part] \ifx\chapter\undefined\newcounter{lsection}[part]\else\newcounter{lsection}[chapter]\fi \newcounter{lsubsection}[section] \newcounter{lsubsubsection}[subsection] \newcounter{lparagraph}[subsubsection] \newcounter{lsubparagraph}[paragraph] \newcounter{lsubsubparagraph}[subparagraph] \newcounter{lequation} % % Redefine "*" forms of sectioning commands to increment their % respective counters. % \let\Hpart=\part \let\Hchapter=\chapter \let\Hsection=\section \let\Hsubsection=\subsection \let\Hsubsubsection=\subsubsection \let\Hparagraph=\paragraph \let\Hsubparagraph=\subparagraph \let\Hsubsubparagraph=\subsubparagraph % % The following definitions are specific to LaTeX2e: % (They must be commented out for LaTeX 2.09) % \def\part{\@ifstar{\stepcounter{lpart}\Hpart*}{\Hpart}} \def\chapter{\@ifstar{\stepcounter{lchapter}\Hchapter*}{\Hchapter}} \def\section{\@ifstar{\stepcounter{lsection}\Hsection*}{\Hsection}} \def\subsection{\@ifstar{\stepcounter{lsubsection}\Hsubsection*}{\Hsubsection}} \def\subsubsection{\@ifstar{\stepcounter{lsubsubsection}\Hsubsubsection*}{\Hsubsubsection}} \def\paragraph{\@ifstar{\stepcounter{lparagraph}\Hparagraph*}{\Hparagraph}} \def\subparagraph{\@ifstar{\stepcounter{lsubparagraph}\Hsubparagraph*}{\Hsubparagraph}} \def\subsubparagraph{\@ifstar{\stepcounter{lsubsubparagraph}\Hsubsubparagraph*}{\Hsubsubparagraph}} % % Define a helper macro to dump a single \secounter command to a file. % \newcommand{\DumpPtr}[2]{% \count255=\arabic{#1} \advance\count255 by \arabic{#2} \immediate\write\ptrfile{% \noexpand\setcounter{#1}{\number\count255}}} % % Define a helper macro to dump all counters to the file. % The value for each counter will be the sum of the l-counter % actual LaTeX section counter. % Also dump an \htmlhead{section-command}{section title} command % to the file. % \def\DumpCounters#1#2#3{\newwrite\ptrfile \immediate\openout\ptrfile = #1.ptr \DumpPtr{part}{lpart} \ifx\Hchapter\undefined\relax\else\DumpPtr{chapter}{lchapter}\fi \DumpPtr{section}{lsection} \DumpPtr{subsection}{lsubsection} \DumpPtr{subsubsection}{lsubsubsection} \DumpPtr{paragraph}{lparagraph} \DumpPtr{subparagraph}{lsubparagraph} \DumpPtr{equation}{lequation} \immediate\write\ptrfile{\noexpand\htmlhead{#2}{#3}} \immediate\closeout\ptrfile} % % Define the \segment{file}{section-command}{section-title} command, % and its helper macros. This command does four things: % 1) Begins a new LaTeX section; % 2) Writes a list of section counters to file.ptr, each % of which represents the sum of the LaTeX section % counters, and the l-counters, defined above; % 3) Write an \htmlhead{section-title} command to file.ptr; % 4) Inputs file.tex. % %%%%MG changed \def\segment{\@ifstar{\@@htmls}{\@@html}} \def\@@htmls#1#2#3{\csname #2\endcsname* {#3}% \DumpCounters{#1}{#2*}{#3}\input{#1}} \def\@@html#1#2#3{\csname #2\endcsname {#3}% \DumpCounters{#1}{#2}{#3}\input{#1}} %%%%MG %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Comment.sty version 2.0, 19 June 1992 % selectively in/exclude pieces of text: the user can define new % comment versions, and each is controlled separately. % This style can be used with plain TeX or LaTeX, and probably % most other packages too. % % Examples of use in LaTeX and TeX follow \endinput % % Author % Victor Eijkhout % Department of Computer Science % University Tennessee at Knoxville % 104 Ayres Hall % Knoxville, TN 37996 % USA % % eijkhout@cs.utk.edu % % Usage: all text included in between % \comment ... \endcomment % or \begin{comment} ... \end{comment} % is discarded. The closing command should appear on a line % of its own. No starting spaces, nothing after it. % This environment should work with arbitrary amounts % of comment. % % Other 'comment' environments are defined by % and are selected/deselected with % \includecomment{versiona} % \excludecoment{versionb} % % These environments are used as % \versiona ... \endversiona % or \begin{versiona} ... \end{versiona} % with the closing command again on a line of its own. % % Basic approach: % to comment something out, scoop up every line in verbatim mode % as macro argument, then throw it away. % For inclusions, both the opening and closing comands % are defined as noop % % Changed \next to \html@next to prevent clashes with other sty files % (mike@emn.fr) % Changed \html@next to \htmlnext so the \makeatletter and % \makeatother commands could be removed (they were causing other % style files - changebar.sty - to crash) (nikos@cbl.leeds.ac.uk) % Changed \htmlnext back to \html@next... \makeatletter \def\makeinnocent#1{\catcode`#1=12 } \def\csarg#1#2{\expandafter#1\csname#2\endcsname} \def\ThrowAwayComment#1{\begingroup \def\CurrentComment{#1}% \let\do\makeinnocent \dospecials \makeinnocent\^^L% and whatever other special cases \endlinechar`\^^M \catcode`\^^M=12 \xComment} {\catcode`\^^M=12 \endlinechar=-1 % \gdef\xComment#1^^M{\def\test{#1} \csarg\ifx{PlainEnd\CurrentComment Test}\test \let\html@next\endgroup \else \csarg\ifx{LaLaEnd\CurrentComment Test}\test \edef\html@next{\endgroup\noexpand\end{\CurrentComment}} \else \let\html@next\xComment \fi \fi \html@next} } \makeatother \def\includecomment #1{\expandafter\def\csname#1\endcsname{}% \expandafter\def\csname end#1\endcsname{}} \def\excludecomment #1{\expandafter\def\csname#1\endcsname{\ThrowAwayComment{#1}}% {\escapechar=-1\relax \csarg\xdef{PlainEnd#1Test}{\string\\end#1}% \csarg\xdef{LaLaEnd#1Test}{\string\\end\string\{#1\string\}}% }} \excludecomment{comment} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%% RAW HTML % % Enclose raw HTML between a \begin{rawhtml} and \end{rawhtml}. % The html environment ignores its body % \excludecomment{rawhtml} %%% HTML ONLY % % Enclose LaTeX constructs which will only appear in the % HTML output and will be ignored by LaTeX with % \begin{htmlonly} and \end{htmlonly} % \excludecomment{htmlonly} % Shorter version \newcommand{\html}[1]{} %%% LaTeX ONLY % Enclose LaTeX constructs which will only appear in the % DVI output and will be ignored by latex2html with %\begin{latexonly} and \end{latexonly} % \newenvironment{latexonly}{}{} % Shorter version \newcommand{\latex}[1]{#1} %%% HYPERREF % Suggested by Eric M. Carol % Similar to \ref but accepts conditional text. % The first argument is HTML text which will become ``hyperized'' % (underlined). % The second and third arguments are text which will appear only in the paper % version (DVI file), enclosing the fourth argument which is a reference to a label. % %e.g. \hyperref{using the tracer}{using the tracer (see Section}{)}{trace} % where there is a corresponding \label{trace} % \newcommand{\hyperref}[4]{#2\ref{#4}#3} %%% HTMLREF % Reference in HTML version only. % Mix between \htmladdnormallink and \hyperref. % First arg is text for in both versions, second is label for use in HTML % version. \newcommand{\htmlref}[2]{#1} %%% HTMLIMAGE % This command can be used inside any environment that is converted % into an inlined image (eg a "figure" environment) in order to change % the way the image will be translated. The argument of \htmlimage % is really a string of options separated by commas ie % [scale=],[external],[thumbnail= % The scale option allows control over the size of the final image. % The ``external'' option will cause the image not to be inlined % (images are inlined by default). External images will be accessible % via a hypertext link. % The ``thumbnail'' option will cause a small inlined image to be % placed in the caption. The size of the thumbnail depends on the % reduction factor. The use of the ``thumbnail'' option implies % the ``external'' option. % % Example: % \htmlimage{scale=1.5,external,thumbnail=0.2} % will cause a small thumbnail image 1/5th of the original size to be % placed in the final document, pointing to an external image 1.5 % times bigger than the original. % \newcommand{\htmlimage}[1]{} %%% HTMLADDTONAVIGATION % This command appends its argument to the buttons in the navigation % panel. It is ignored by LaTeX. % % Example: % \htmladdtonavigation{\htmladdnormallink % {\htmladdimg{http://server/path/to/gif}} % {http://server/path}} \newcommand{\htmladdtonavigation}[1]{} \endinputcddlib-0.94j/lib-src/0000755000175000017500000000000013312731233011373 500000000000000cddlib-0.94j/lib-src/Makefile.am0000644000175000017500000000051313301273112013341 00000000000000lib_LTLIBRARIES = libcdd.la libcdd_la_SOURCES = \ cddcore.c \ cddlp.c \ cddmp.c \ cddio.c \ cddlib.c \ cddproj.c \ setoper.c libcdd_la_CPPFLAGS = -UGMPRATIONAL AM_LDFLAGS = -version-info $(libcdd_version_info) $(CDD_LDFLAGS) include_HEADERS = \ cdd.h \ cddmp.h \ cddtypes.h \ setoper.h \ splitmix64.h include ./Makefile.gmp.am cddlib-0.94j/lib-src/cdd.h0000644000175000017500000003272113270066522012230 00000000000000/* cdd.h: Header file for cddlib.c written by Komei Fukuda, fukuda@math.ethz.ch Version 0.94i, March 9, 2018 */ /* cddlib.c : C-Implementation of the double description method for computing all vertices and extreme rays of the polyhedron P= {x : b - A x >= 0}. Please read COPYING (GNU General Public Licence) and the manual cddlibman.tex for detail. */ #ifndef __CDD_H #define __CDD_H #endif /* __CDD_H */ #ifndef __CDDMP_H #include "cddmp.h" #endif /* __CDDMP_H */ #ifndef __CDDTYPES_H #include "cddtypes.h" #endif /* __CDDTYPES_H */ #ifdef GMPRATIONAL #ifndef __CDD_HF #include "cdd_f.h" #endif #endif /* GLOBAL CONSTANTS and STATISTICS VARIABLES (to be set by dd_set_global_constants() */ extern mytype dd_zero; extern mytype dd_one; extern mytype dd_purezero; extern mytype dd_minuszero; extern mytype dd_minusone; extern time_t dd_statStartTime; /* cddlib starting time */ extern long dd_statBApivots; /* basis finding pivots */ extern long dd_statCCpivots; /* criss-cross pivots */ extern long dd_statDS1pivots; /* phase 1 pivots */ extern long dd_statDS2pivots; /* phase 2 pivots */ extern long dd_statACpivots; /* anticycling (cc) pivots */ #ifdef GMPRATIONAL extern long dd_statBSpivots; /* basis status checking pivots */ #endif extern dd_LPSolverType dd_choiceLPSolverDefault; /* Default LP solver Algorithm */ extern dd_LPSolverType dd_choiceRedcheckAlgorithm; /* Redundancy Checking Algorithm */ extern dd_boolean dd_choiceLexicoPivotQ; /* whether to use the lexicographic pivot */ /* to be used to avoid creating temporary spaces for mytype */ #define dd_almostzero 1.0E-7 /* ---------- FUNCTIONS MEANT TO BE PUBLIC ---------- */ #if defined(__cplusplus) extern "C" { #endif /* basic matrix manipulations */ void dd_InitializeArow(dd_colrange,dd_Arow *); void dd_InitializeAmatrix(dd_rowrange,dd_colrange,dd_Amatrix *); void dd_InitializeBmatrix(dd_colrange, dd_Bmatrix *); dd_SetFamilyPtr dd_CreateSetFamily(dd_bigrange,dd_bigrange); void dd_FreeSetFamily(dd_SetFamilyPtr); dd_MatrixPtr dd_CreateMatrix(dd_rowrange,dd_colrange); void dd_FreeAmatrix(dd_rowrange,dd_colrange,dd_Amatrix); void dd_FreeArow(dd_colrange, dd_Arow); void dd_FreeBmatrix(dd_colrange,dd_Bmatrix); void dd_FreeDDMemory(dd_PolyhedraPtr); void dd_FreePolyhedra(dd_PolyhedraPtr); void dd_FreeMatrix(dd_MatrixPtr); void dd_SetToIdentity(dd_colrange, dd_Bmatrix); /* sign recognitions */ dd_boolean dd_Nonnegative(mytype); dd_boolean dd_Nonpositive(mytype); dd_boolean dd_Positive(mytype); dd_boolean dd_Negative(mytype); dd_boolean dd_EqualToZero(mytype); dd_boolean dd_Nonzero(mytype); dd_boolean dd_Equal(mytype,mytype); dd_boolean dd_Larger(mytype,mytype); dd_boolean dd_Smaller(mytype,mytype); void dd_abs(mytype, mytype); void dd_LinearComb(mytype, mytype, mytype, mytype, mytype); void dd_InnerProduct(mytype, dd_colrange, dd_Arow, dd_Arow); /* major cddlib operations */ dd_MatrixPtr dd_CopyInput(dd_PolyhedraPtr); dd_MatrixPtr dd_CopyOutput(dd_PolyhedraPtr); dd_MatrixPtr dd_CopyInequalities(dd_PolyhedraPtr); dd_MatrixPtr dd_CopyGenerators(dd_PolyhedraPtr); dd_SetFamilyPtr dd_CopyIncidence(dd_PolyhedraPtr); dd_SetFamilyPtr dd_CopyAdjacency(dd_PolyhedraPtr); dd_SetFamilyPtr dd_CopyInputIncidence(dd_PolyhedraPtr); dd_SetFamilyPtr dd_CopyInputAdjacency(dd_PolyhedraPtr); dd_boolean dd_DDFile2File(char *ifile, char *ofile, dd_ErrorType *err); dd_boolean dd_DDInputAppend(dd_PolyhedraPtr*, dd_MatrixPtr, dd_ErrorType*); dd_MatrixPtr dd_PolyFile2Matrix(FILE *f, dd_ErrorType *); dd_PolyhedraPtr dd_DDMatrix2Poly(dd_MatrixPtr, dd_ErrorType *); dd_PolyhedraPtr dd_DDMatrix2Poly2(dd_MatrixPtr, dd_RowOrderType, dd_ErrorType *); dd_boolean dd_Redundant(dd_MatrixPtr, dd_rowrange, dd_Arow, dd_ErrorType *); /* 092 */ dd_rowset dd_RedundantRows(dd_MatrixPtr, dd_ErrorType *); /* 092 */ dd_boolean dd_SRedundant(dd_MatrixPtr, dd_rowrange, dd_Arow, dd_ErrorType *); /* 093a */ dd_rowset dd_SRedundantRows(dd_MatrixPtr, dd_ErrorType *); /* 093a */ dd_rowset dd_RedundantRowsViaShooting(dd_MatrixPtr, dd_ErrorType *); /* 092 */ dd_rowrange dd_RayShooting(dd_MatrixPtr, dd_Arow intpt, dd_Arow direction); /* 092 */ /* 092, find the first inequality "hit" by a ray from an intpt. */ dd_boolean dd_ImplicitLinearity(dd_MatrixPtr, dd_rowrange, dd_Arow, dd_ErrorType *); /* 092 */ dd_rowset dd_ImplicitLinearityRows(dd_MatrixPtr, dd_ErrorType *); /* 092 */ int dd_FreeOfImplicitLinearity(dd_MatrixPtr, dd_Arow, dd_rowset *, dd_ErrorType *) ; /* 094 */ dd_boolean dd_MatrixCanonicalizeLinearity(dd_MatrixPtr *, dd_rowset *,dd_rowindex *, dd_ErrorType *); /* 094 */ dd_boolean dd_MatrixCanonicalize(dd_MatrixPtr *, dd_rowset *, dd_rowset *, dd_rowindex *, dd_ErrorType *); /* 094 */ dd_boolean dd_MatrixRedundancyRemove(dd_MatrixPtr *M, dd_rowset *redset,dd_rowindex *newpos, dd_ErrorType *); /* 094 */ dd_boolean dd_FindRelativeInterior(dd_MatrixPtr, dd_rowset *, dd_rowset *, dd_LPSolutionPtr *, dd_ErrorType *); /* 094 */ dd_boolean dd_ExistsRestrictedFace(dd_MatrixPtr, dd_rowset, dd_rowset, dd_ErrorType *); /* 0.94 */ dd_boolean dd_ExistsRestrictedFace2(dd_MatrixPtr, dd_rowset, dd_rowset, dd_LPSolutionPtr *, dd_ErrorType *); /* 0.94 */ dd_SetFamilyPtr dd_Matrix2Adjacency(dd_MatrixPtr, dd_ErrorType *); /* 093 */ dd_SetFamilyPtr dd_Matrix2WeakAdjacency(dd_MatrixPtr, dd_ErrorType *); /* 093a */ long dd_MatrixRank(dd_MatrixPtr, dd_rowset, dd_colset, dd_rowset *, dd_colset *); /* Matrix Basic Operations */ dd_MatrixPtr dd_MatrixCopy(dd_MatrixPtr); /* a new name for dd_CopyMatrix */ dd_MatrixPtr dd_CopyMatrix(dd_MatrixPtr); /* 090c, kept for compatibility */ dd_MatrixPtr dd_MatrixNormalizedCopy(dd_MatrixPtr); /* 094 */ dd_MatrixPtr dd_MatrixNormalizedSortedCopy(dd_MatrixPtr,dd_rowindex*); /* 094 */ dd_MatrixPtr dd_MatrixUniqueCopy(dd_MatrixPtr,dd_rowindex*); /* 094 */ dd_MatrixPtr dd_MatrixNormalizedSortedUniqueCopy(dd_MatrixPtr,dd_rowindex*); /* 094 */ dd_MatrixPtr dd_MatrixSortedUniqueCopy(dd_MatrixPtr,dd_rowindex*); /* 094 */ dd_MatrixPtr dd_MatrixAppend(dd_MatrixPtr, dd_MatrixPtr); /* a name for dd_AppendMatrix */ dd_MatrixPtr dd_AppendMatrix(dd_MatrixPtr, dd_MatrixPtr); /* 090c, kept for compatibility */ int dd_MatrixAppendTo(dd_MatrixPtr*, dd_MatrixPtr); /* 092 */ int dd_Remove(dd_MatrixPtr*, dd_rowrange); /* 092 */ dd_MatrixPtr dd_MatrixSubmatrix(dd_MatrixPtr, dd_rowset delset); /* 092 */ dd_MatrixPtr dd_MatrixSubmatrix2(dd_MatrixPtr, dd_rowset delset,dd_rowindex*); /* 094. It returns new row positions. */ dd_MatrixPtr dd_MatrixSubmatrix2L(dd_MatrixPtr, dd_rowset delset,dd_rowindex*); /* 094. Linearity shifted up. */ int dd_MatrixShiftupLinearity(dd_MatrixPtr *,dd_rowindex *); /* 094 */ int dd_MatrixRowRemove(dd_MatrixPtr *M, dd_rowrange r); /* 092 */ int dd_MatrixRowRemove2(dd_MatrixPtr *M, dd_rowrange r,dd_rowindex*); /* 094*/ int dd_MatrixRowsRemove(dd_MatrixPtr *M, dd_rowset delset); /* 094 */ int dd_MatrixRowsRemove2(dd_MatrixPtr *M, dd_rowset delset,dd_rowindex*); /* 094 */ /* input/output */ void dd_SetInputFile(FILE **f,dd_DataFileType inputfile, dd_ErrorType *); void dd_SetWriteFileName(dd_DataFileType, dd_DataFileType, char, dd_RepresentationType); void dd_WriteAmatrix(FILE *, dd_Amatrix, dd_rowrange, dd_colrange); void dd_WriteArow(FILE *f, dd_Arow a, dd_colrange); void dd_WriteBmatrix(FILE *, dd_colrange, dd_Bmatrix T); void dd_WriteMatrix(FILE *, dd_MatrixPtr); void dd_MatrixIntegerFilter(dd_MatrixPtr); void dd_WriteReal(FILE *, mytype); void dd_WriteNumber(FILE *f, mytype x); /* write a number depending on the arithmetic used. */ void dd_WritePolyFile(FILE *, dd_PolyhedraPtr); void dd_WriteRunningMode(FILE *, dd_PolyhedraPtr); void dd_WriteErrorMessages(FILE *, dd_ErrorType); void dd_WriteSetFamily(FILE *, dd_SetFamilyPtr); void dd_WriteSetFamilyCompressed(FILE *, dd_SetFamilyPtr); void dd_WriteProgramDescription(FILE *); void dd_WriteDDTimes(FILE *, dd_PolyhedraPtr); void dd_WriteTimes(FILE *, time_t, time_t); void dd_WriteIncidence(FILE *, dd_PolyhedraPtr); void dd_WriteAdjacency(FILE *, dd_PolyhedraPtr); void dd_WriteInputAdjacency(FILE *, dd_PolyhedraPtr); void dd_WriteInputIncidence(FILE *, dd_PolyhedraPtr); /* functions and types for LP solving */ dd_LPPtr dd_Matrix2LP(dd_MatrixPtr, dd_ErrorType *); /* Load a matrix to create an LP object. */ dd_LPPtr dd_Matrix2Feasibility(dd_MatrixPtr, dd_ErrorType *); /* Load a matrix to create an LP object for feasibility (obj == 0) .*/ /* 094 */ dd_LPPtr dd_Matrix2Feasibility2(dd_MatrixPtr, dd_rowset, dd_rowset, dd_ErrorType *); /* Load a matrix to create an LP object for feasibility with additional equality and strict inequality constraints. */ /* 094 */ dd_boolean dd_LPSolve(dd_LPPtr,dd_LPSolverType,dd_ErrorType *); dd_boolean dd_LPSolve0(dd_LPPtr,dd_LPSolverType,dd_ErrorType *); void dd_CrissCrossSolve(dd_LPPtr lp,dd_ErrorType *); void dd_DualSimplexSolve(dd_LPPtr lp,dd_ErrorType *); dd_LPPtr dd_MakeLPforInteriorFinding(dd_LPPtr); dd_LPSolutionPtr dd_CopyLPSolution(dd_LPPtr); /* 0.90c */ void dd_WriteLP(FILE *, dd_LPPtr); /* 092 */ dd_LPPtr dd_CreateLPData(dd_LPObjectiveType,dd_NumberType,dd_rowrange,dd_colrange); int dd_LPReverseRow(dd_LPPtr, dd_rowrange); /* reverse the i-th row (1 <= i <= no. of rows) */ int dd_LPReplaceRow(dd_LPPtr, dd_rowrange, dd_Arow); /* replace the i-th row (1 <= i <= no. of rows) */ dd_Arow dd_LPCopyRow(dd_LPPtr, dd_rowrange); /* copy the i-th row (1 <= i <= no. of rows) */ void dd_FreeLPData(dd_LPPtr); void dd_FreeLPSolution(dd_LPSolutionPtr); void dd_WriteLPResult(FILE *, dd_LPPtr, dd_ErrorType); void dd_WriteLPErrorMessages(FILE *, dd_ErrorType); void dd_WriteLPTimes(FILE *, dd_LPPtr); void dd_WriteLPStats(FILE *f); void dd_WriteLPMode(FILE *f); dd_MatrixPtr dd_FourierElimination(dd_MatrixPtr,dd_ErrorType *); dd_MatrixPtr dd_BlockElimination(dd_MatrixPtr, dd_colset, dd_ErrorType *); #if defined(__cplusplus) } #endif /* ---------- FUNCTIONS MEANT TO BE NON-PUBLIC ---------- */ void dd_QuickSort(dd_rowindex, long, long, dd_Amatrix, long); void dd_RandomPermutation(dd_rowindex, long, unsigned int seed); void dd_UniqueRows(dd_rowindex, long, long, dd_Amatrix, long, dd_rowset, long *); dd_boolean dd_DoubleDescription(dd_PolyhedraPtr, dd_ErrorType*); dd_boolean dd_DoubleDescription2(dd_PolyhedraPtr, dd_RowOrderType, dd_ErrorType *); void dd_FreeDDMemory0(dd_ConePtr); void dd_fread_rational_value (FILE *f, mytype value); void dd_sread_rational_value (const char *s, mytype value); void dd_AddNewHalfspace1(dd_ConePtr, dd_rowrange); void dd_AddNewHalfspace2(dd_ConePtr, dd_rowrange); void dd_AddRay(dd_ConePtr, mytype *); void dd_AddArtificialRay(dd_ConePtr); void dd_AValue(mytype*,dd_colrange, dd_Amatrix, mytype *, dd_rowrange); void dd_CheckAdjacency(dd_ConePtr, dd_RayPtr*, dd_RayPtr*, dd_boolean *); void dd_CheckEquality(dd_colrange, dd_RayPtr *, dd_RayPtr *, dd_boolean *); void dd_ComputeRowOrderVector(dd_ConePtr); void dd_ConditionalAddEdge(dd_ConePtr,dd_RayPtr, dd_RayPtr, dd_RayPtr); void dd_CopyArow(mytype *, mytype *, dd_colrange); void dd_CopyNormalizedAmatrix(mytype **, mytype **, dd_rowrange, dd_colrange); void dd_CopyNormalizedArow(mytype *, mytype *, dd_colrange); void dd_CopyAmatrix(mytype **, mytype **, dd_rowrange, dd_colrange); void dd_PermuteCopyAmatrix(mytype **, mytype **, dd_rowrange, dd_colrange, dd_rowindex); void dd_PermutePartialCopyAmatrix(mytype **, mytype **, dd_rowrange, dd_colrange, dd_rowindex,dd_rowrange, dd_rowrange); void dd_CopyBmatrix(dd_colrange, dd_Bmatrix T, dd_Bmatrix TCOPY); void dd_CopyRay(mytype *, dd_colrange, dd_RayPtr, dd_RepresentationType, dd_colindex); void dd_CreateInitialEdges(dd_ConePtr); void dd_CreateNewRay(dd_ConePtr, dd_RayPtr, dd_RayPtr, dd_rowrange); void dd_Eliminate(dd_ConePtr, dd_RayPtr*); void dd_EvaluateARay1(dd_rowrange, dd_ConePtr); void dd_EvaluateARay2(dd_rowrange, dd_ConePtr); void dd_FeasibilityIndices(long *, long *, dd_rowrange, dd_ConePtr); void dd_FindBasis(dd_ConePtr, long *rank); void dd_FindInitialRays(dd_ConePtr, dd_boolean *); void dd_ColumnReduce(dd_ConePtr); void dd_GaussianColumnPivot(dd_rowrange, dd_colrange, dd_Amatrix, dd_Bmatrix, dd_rowrange, dd_colrange); dd_boolean dd_LexSmaller(mytype *, mytype *, long); dd_boolean dd_LexLarger(mytype *, mytype *, long); dd_boolean dd_LexEqual(mytype *, mytype *, long); void dd_Normalize(dd_colrange, mytype *); void dd_MatrixIntegerFilter(dd_MatrixPtr); void dd_ProcessCommandLine(FILE*,dd_MatrixPtr, const char *); void dd_SelectNextHalfspace(dd_ConePtr, dd_rowset, dd_rowrange *); void dd_SelectPivot2(dd_rowrange,dd_colrange,dd_Amatrix, dd_Bmatrix,dd_RowOrderType,dd_rowindex, dd_rowset,dd_rowrange,dd_rowset, dd_colset,dd_rowrange *,dd_colrange *,dd_boolean *); void dd_SelectPreorderedNext(dd_ConePtr, dd_rowset, dd_rowrange *); void dd_SetInequalitySets(dd_ConePtr); void dd_SnapToInteger(mytype, mytype); void dd_StoreRay1(dd_ConePtr, mytype *, dd_boolean *); void dd_StoreRay2(dd_ConePtr, mytype *, dd_boolean *, dd_boolean *); void dd_TableauEntry(mytype *, dd_rowrange, dd_colrange, dd_Amatrix, dd_Bmatrix T, dd_rowrange, dd_colrange); void dd_UpdateEdges(dd_ConePtr, dd_RayPtr, dd_RayPtr); void dd_UpdateRowOrderVector(dd_ConePtr, dd_rowset PriorityRows); void dd_WriteRay(FILE *, dd_colrange, dd_RayPtr, dd_RepresentationType, dd_colindex); void dd_ZeroIndexSet(dd_rowrange, dd_colrange, dd_Amatrix, mytype *, dd_rowset); /* New functions to handle data loading, NON-PUBLIC */ dd_NumberType dd_GetNumberType(const char *); dd_ConePtr dd_ConeDataLoad(dd_PolyhedraPtr); dd_PolyhedraPtr dd_CreatePolyhedraData(dd_rowrange, dd_colrange); dd_boolean dd_InitializeConeData(dd_rowrange, dd_colrange, dd_ConePtr*); dd_boolean dd_AppendMatrix2Poly(dd_PolyhedraPtr*, dd_MatrixPtr); /* end of cddlib.h */ cddlib-0.94j/lib-src/cddmp.h0000644000175000017500000001122613270066522012562 00000000000000/* cddmp.h (cddlib arithmetic operations using gmp) written by Komei Fukuda, fukuda@math.ethz.ch Version 0.94i, March 9, 2018 */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef __CDDMP_H #define __CDDMP_H #endif /* __CDDMP_H */ /**********************************/ /* MACROS */ /* dependent on mp implementation */ /**********************************/ #if defined GMPRATIONAL #include "gmp.h" #define dd_ARITHMETIC "GMP rational" #define dd_init(a) mpq_init(a) #define dd_clear(a) mpq_clear(a) #define dd_set(a, b) mpq_set(a,b) #define dd_set_si(a, b) ddd_mpq_set_si(a,b) /* defined in cddgmp.c */ #define dd_set_si2(a, b, c) mpq_set_si(a,b,c) /* gmp 3.1 or higher */ #define dd_set_d(a, b) mpq_set_d(a,b) /* gmp 3.1 or higher */ #define dd_add(a, b, c) mpq_add(a,b,c) #define dd_sub(a, b, c) mpq_sub(a,b,c) #define dd_mul(a, b, c) mpq_mul(a,b,c) #define dd_div(a, b, c) mpq_div(a,b,c) #define dd_neg(a, b) mpq_neg(a,b) #define dd_inv(a, b) mpq_inv(a,b) #define dd_cmp(a, b) mpq_cmp(a,b) /* returns pos if a>b, 0 if a=b, negative if ab, 0 if a=b, negative if ab, 0 if a=b, negative if a= 0}. Please read COPYING (GNU General Public Licence) and the manual cddlibman.tex for detail. */ #ifndef __CDDTYPES_H #define __CDDTYPES_H #endif /* __CDDTYPES_H */ #define dd_COPYRIGHT "Copyright (C) 1996, Komei Fukuda, fukuda@ifor.math.ethz.ch" #define dd_DDVERSION "Version 0.94g (March 23, 2012)" #include #define dd_wordlenmax 1024 #define dd_linelenmax 4096 #define dd_datawidth 10 #define dd_filenamelen 255 #define dd_FALSE 0 #define dd_TRUE 1 typedef int dd_boolean; typedef long dd_rowrange; typedef long dd_colrange; typedef long dd_bigrange; typedef set_type dd_rowset; typedef set_type dd_colset; typedef long *dd_rowindex; typedef int *dd_rowflag; typedef long *dd_colindex; typedef mytype **dd_Amatrix; typedef mytype *dd_Arow; typedef set_type *dd_SetVector; typedef mytype **dd_Bmatrix; typedef set_type *dd_Aincidence; /* typedef char dd_FilenameType[dd_filenamelen]; deleted 000505*/ typedef char dd_DataFileType[dd_filenamelen]; typedef char dd_LineType[dd_linelenmax]; typedef char dd_WordType[dd_wordlenmax]; typedef struct dd_raydata *dd_RayPtr; typedef struct dd_raydata { mytype *Ray; dd_rowset ZeroSet; dd_rowrange FirstInfeasIndex; /* the first inequality the ray violates */ dd_boolean feasible; /* flag to store the feasibility */ mytype ARay; /* temporary area to store some row of A*Ray */ dd_RayPtr Next; } dd_RayType; typedef struct dd_adjacencydata *dd_AdjacencyPtr; typedef struct dd_adjacencydata { dd_RayPtr Ray1, Ray2; dd_AdjacencyPtr Next; } dd_AdjacencyType; typedef enum { dd_Combinatorial, dd_Algebraic } dd_AdjacencyTestType; typedef enum { dd_MaxIndex, dd_MinIndex, dd_MinCutoff, dd_MaxCutoff, dd_MixCutoff, dd_LexMin, dd_LexMax, dd_RandomRow } dd_RowOrderType; typedef enum { dd_Unknown=0, dd_Real, dd_Rational, dd_Integer } dd_NumberType; typedef enum { dd_Unspecified=0, dd_Inequality, dd_Generator } dd_RepresentationType; typedef enum { dd_IneToGen, dd_GenToIne, dd_LPMax, dd_LPMin, dd_InteriorFind } dd_ConversionType; typedef enum { dd_IncOff=0, dd_IncCardinality, dd_IncSet } dd_IncidenceOutputType; typedef enum { dd_AdjOff=0, dd_AdjacencyList, dd_AdjacencyDegree } dd_AdjacencyOutputType; typedef enum { dd_Auto, dd_SemiAuto, dd_Manual } dd_FileInputModeType; /* Auto if a input filename is specified by command arguments */ typedef enum { dd_DimensionTooLarge, dd_ImproperInputFormat, dd_NegativeMatrixSize, dd_EmptyVrepresentation, dd_EmptyHrepresentation, dd_EmptyRepresentation, dd_IFileNotFound, dd_OFileNotOpen, dd_NoLPObjective, dd_NoRealNumberSupport, dd_NotAvailForH, dd_NotAvailForV, dd_CannotHandleLinearity, dd_RowIndexOutOfRange, dd_ColIndexOutOfRange, dd_LPCycling, dd_NumericallyInconsistent, dd_NoError } dd_ErrorType; typedef enum { dd_InProgress, dd_AllFound, dd_RegionEmpty } dd_CompStatusType; /* --- LP types ---- */ typedef enum { dd_LPnone=0, dd_LPmax, dd_LPmin } dd_LPObjectiveType; typedef enum { dd_CrissCross, dd_DualSimplex } dd_LPSolverType; typedef enum { dd_LPSundecided, dd_Optimal, dd_Inconsistent, dd_DualInconsistent, dd_StrucInconsistent, dd_StrucDualInconsistent, dd_Unbounded, dd_DualUnbounded } dd_LPStatusType; typedef struct dd_lpsolution *dd_LPSolutionPtr; typedef struct dd_lpsolution { dd_DataFileType filename; dd_LPObjectiveType objective; dd_LPSolverType solver; dd_rowrange m; dd_colrange d; dd_NumberType numbtype; dd_LPStatusType LPS; /* the current solution status */ mytype optvalue; /* optimal value */ dd_Arow sol; /* primal solution */ dd_Arow dsol; /* dual solution */ dd_colindex nbindex; /* current basis represented by nonbasic indices */ dd_rowrange re; /* row index as a certificate in the case of inconsistency */ dd_colrange se; /* col index as a certificate in the case of dual inconsistency */ long pivots[5]; /* pivots[0]=setup (to find a basis), pivots[1]=PhaseI or Criss-Cross, pivots[2]=Phase II, pivots[3]=Anticycling, pivots[4]=GMP postopt. */ long total_pivots; } dd_LPSolutionType; typedef struct dd_lpdata *dd_LPPtr; typedef struct dd_lpdata { dd_DataFileType filename; dd_LPObjectiveType objective; dd_LPSolverType solver; dd_boolean Homogeneous; /* The first column except for the obj row is all zeros. */ dd_rowrange m; dd_colrange d; dd_Amatrix A; dd_Bmatrix B; dd_rowrange objrow; dd_colrange rhscol; dd_NumberType numbtype; dd_rowrange eqnumber; /* the number of equalities */ dd_rowset equalityset; dd_boolean redcheck_extensive; /* Apply the extensive redundancy check. */ dd_rowrange ired; /* the row index for the redundancy checking */ dd_rowset redset_extra; /* a set of rows that are newly recognized redundan by the extensive search. */ dd_rowset redset_accum; /* the accumulated set of rows that are recognized redundant */ dd_rowset posset_extra; /* a set of rows that are recognized non-linearity */ dd_boolean lexicopivot; /* flag to use the lexicogrphic pivot rule (symbolic perturbation). */ dd_LPStatusType LPS; /* the current solution status */ dd_rowrange m_alloc; /* the allocated row size of matrix A */ dd_colrange d_alloc; /* the allocated col size of matrix A */ mytype optvalue; /* optimal value */ dd_Arow sol; /* primal solution */ dd_Arow dsol; /* dual solution */ dd_colindex nbindex; /* current basis represented by nonbasic indices */ dd_rowrange re; /* row index as a certificate in the case of inconsistency */ dd_colrange se; /* col index as a certificate in the case of dual inconsistency */ long pivots[5]; /* pivots[0]=setup (to find a basis), pivots[1]=PhaseI or Criss-Cross, pivots[2]=Phase II, pivots[3]=Anticycling, pivots[4]=GMP postopt. */ long total_pivots; int use_given_basis; /* switch to indicate the use of the given basis */ dd_colindex given_nbindex; /* given basis represented by nonbasic indices */ time_t starttime; time_t endtime; } dd_LPType; /*---- end of LP Types ----- */ typedef struct dd_matrixdata *dd_MatrixPtr; typedef struct dd_matrixdata { dd_rowrange rowsize; dd_rowset linset; /* a subset of rows of linearity (ie, generators of linearity space for V-representation, and equations for H-representation. */ dd_colrange colsize; dd_RepresentationType representation; dd_NumberType numbtype; dd_Amatrix matrix; dd_LPObjectiveType objective; dd_Arow rowvec; } dd_MatrixType; typedef struct dd_setfamily *dd_SetFamilyPtr; typedef struct dd_setfamily { dd_bigrange famsize; dd_bigrange setsize; dd_SetVector set; } dd_SetFamilyType; typedef struct dd_nodedata *dd_NodePtr; typedef struct dd_nodedata {dd_bigrange key; dd_NodePtr next;} dd_NodeType; typedef struct dd_graphdata *dd_GraphPtr; typedef struct dd_graphdata { dd_bigrange vsize; dd_NodePtr *adjlist; /* should be initialized to have vsize components */ } dd_GraphType; typedef struct dd_polyhedradata *dd_PolyhedraPtr; typedef struct dd_conedata *dd_ConePtr; typedef struct dd_polyhedradata { dd_RepresentationType representation; /* given representation */ dd_boolean homogeneous; dd_colrange d; dd_rowrange m; dd_Amatrix A; /* Inequality System: m times d matrix */ dd_NumberType numbtype; dd_ConePtr child; /* pointing to the homogenized cone data */ dd_rowrange m_alloc; /* allocated row size of matrix A */ dd_colrange d_alloc; /* allocated col size of matrix A */ dd_Arow c; /* cost vector */ dd_rowflag EqualityIndex; /* ith component is 1 if it is equality, -1 if it is strict inequality, 0 otherwise. */ dd_boolean IsEmpty; /* This is to tell whether the set is empty or not */ dd_boolean NondegAssumed; dd_boolean InitBasisAtBottom; dd_boolean RestrictedEnumeration; dd_boolean RelaxedEnumeration; dd_rowrange m1; /* = m or m+1 (when representation=Inequality && !homogeneous) This data is written after dd_ConeDataLoad is called. This determines the size of Ainc. */ dd_boolean AincGenerated; /* Indicates whether Ainc, Ared, Adom are all computed. All the variables below are valid only when this is TRUE */ dd_colrange ldim; /* linearity dimension */ dd_bigrange n; /* the size of output = total number of rays in the computed cone + linearity dimension */ dd_Aincidence Ainc; /* incidence of input and output */ dd_rowset Ared; /* redundant set of rows whose removal results in a minimal system */ dd_rowset Adom; /* dominant set of rows (those containing all rays). */ } dd_PolyhedraType; typedef struct dd_conedata { dd_RepresentationType representation; dd_rowrange m; dd_colrange d; dd_Amatrix A; dd_NumberType numbtype; dd_PolyhedraPtr parent; /* pointing to the original polyhedra data */ dd_rowrange m_alloc; /* allocated row size of matrix A */ dd_colrange d_alloc; /* allocated col size of matrix A */ /* CONTROL: variables to control computation */ dd_rowrange Iteration; dd_RowOrderType HalfspaceOrder; dd_RayPtr FirstRay, LastRay, ArtificialRay; /* The second description: Generator */ dd_RayPtr PosHead, ZeroHead, NegHead, PosLast, ZeroLast, NegLast; dd_AdjacencyType **Edges; /* adjacency relation storage for iteration k */ unsigned int rseed; /* random seed for random row permutation */ dd_boolean ColReduced; /* flag to indicate that a column basis is computed and reduced */ dd_bigrange LinearityDim; /* the dimension of the linearity space (when input is H), and the size of a minimal system of equations to determine the space (when V). */ dd_colrange d_orig; /* the size d of the original matrix A */ dd_colindex newcol; /* the size d of the original matrix A */ dd_colindex InitialRayIndex; /* InitialRayIndex[s] (s>=1) stores the corr. row index */ dd_rowindex OrderVector; dd_boolean RecomputeRowOrder; dd_boolean PreOrderedRun; dd_rowset GroundSet, EqualitySet, NonequalitySet, AddedHalfspaces, WeaklyAddedHalfspaces, InitialHalfspaces; long RayCount, FeasibleRayCount, WeaklyFeasibleRayCount, TotalRayCount, ZeroRayCount; long EdgeCount, TotalEdgeCount; long count_int,count_int_good,count_int_bad; /* no. of intersection operations */ dd_Bmatrix B; dd_Bmatrix Bsave; /* a copy of the dual basis inverse used to reduce the matrix A */ /* STATES: variables to represent current state. */ dd_ErrorType Error; dd_CompStatusType CompStatus; /* Computation Status */ time_t starttime, endtime; } dd_ConeType; /* Global Variables */ extern dd_boolean dd_debug; extern dd_boolean dd_log; /* end of cddtypes.h */ cddlib-0.94j/lib-src/setoper.h0000644000175000017500000000253513270061062013151 00000000000000/* Header file for setoper.c */ /* setoper.c: * A set operation library * created by Komei Fukuda, Nov.14, 1993 * last modified on June 1, 2000 */ #ifndef __SETOPER_H #define __SETOPER_H #endif /* __SETOPER_H */ #include #include typedef unsigned long *set_type; /* set type definition */ typedef unsigned char set_card_lut_t; #if defined(__cplusplus) extern "C" { #endif unsigned long set_blocks(long len); void set_initialize(set_type *setp,long len); void set_free(set_type set); void set_emptyset(set_type set); void set_copy(set_type setcopy,set_type set); void set_addelem(set_type set, long elem); void set_delelem(set_type set, long elem); void set_int(set_type set,set_type set1,set_type set2); void set_uni(set_type set,set_type set1,set_type set2); void set_diff(set_type set,set_type set1,set_type set2); void set_compl(set_type set,set_type set1); int set_subset(set_type set1,set_type set2); int set_member(long elem, set_type set); long set_card(set_type set); long set_groundsize(set_type set); /* output the size of the ground set */ void set_write(set_type set); void set_fwrite(FILE *f,set_type set); void set_fwrite_compl(FILE *f,set_type set); /* write the complement */ void set_binwrite(set_type set); void set_fbinwrite(FILE *f,set_type set); #if defined(__cplusplus) } #endif /* End of File: setoper.h */ cddlib-0.94j/lib-src/splitmix64.h0000644000175000017500000000114113301273112013477 00000000000000/* * A fast portable random number generator. * * Adapted version of splitmix64.c originally published by Sebastiano * Vigna to the public domain. * http://xoroshiro.di.unimi.it/splitmix64.c */ #ifndef __SPLITMIX64_H #define __SPLITMIX64_H #include static uint64_t x; /* The state can be seeded with any value. */ static void srand_splitmix64(uint64_t seed) { x = seed; } static uint64_t rand_splitmix64() { uint64_t z = (x += 0x9e3779b97f4a7c15); z = (z ^ (z >> 30)) * 0xbf58476d1ce4e5b9; z = (z ^ (z >> 27)) * 0x94d049bb133111eb; return z ^ (z >> 31); } #endif // __SPLITMIX64_H cddlib-0.94j/lib-src/cdd_f.h0000644000175000017500000003425713275330545012547 00000000000000/* generated automatically from cdd.h */ /* cdd.h: Header file for cddlib.c written by Komei Fukuda, fukuda@math.ethz.ch Version 0.94i, March 9, 2018 */ /* cddlib.c : C-Implementation of the double description method for computing all vertices and extreme rays of the polyhedron P= {x : b - A x >= 0}. Please read COPYING (GNU General Public Licence) and the manual cddlibman.tex for detail. */ #ifndef __CDD_HF #define __CDD_HF #endif /* __CDD_HF */ #ifndef _CDDMP_HF #include "cddmp_f.h" #endif /* _CDDMP_HF */ #ifndef _CDDTYPES_HF #include "cddtypes_f.h" #endif /* _CDDTYPES_HF */ #ifdef ddf_GMPRATIONAL #ifndef __CDD_HF #include "cdd_f.h" #endif #endif /* GLOBAL CONSTANTS and STATISTICS VARIABLES (to be set by ddf_set_global_constants() */ extern myfloat ddf_zero; extern myfloat ddf_one; extern myfloat ddf_purezero; extern myfloat ddf_minuszero; extern myfloat ddf_minusone; extern time_t ddf_statStartTime; /* cddlib starting time */ extern long ddf_statBApivots; /* basis finding pivots */ extern long ddf_statCCpivots; /* criss-cross pivots */ extern long ddf_statDS1pivots; /* phase 1 pivots */ extern long ddf_statDS2pivots; /* phase 2 pivots */ extern long ddf_statACpivots; /* anticycling (cc) pivots */ #ifdef ddf_GMPRATIONAL extern long ddf_statBSpivots; /* basis status checking pivots */ #endif extern ddf_LPSolverType ddf_choiceLPSolverDefault; /* Default LP solver Algorithm */ extern ddf_LPSolverType ddf_choiceRedcheckAlgorithm; /* Redundancy Checking Algorithm */ extern ddf_boolean ddf_choiceLexicoPivotQ; /* whether to use the lexicographic pivot */ /* to be used to avoid creating temporary spaces for myfloat */ #define ddf_almostzero 1.0E-7 /* ---------- FUNCTIONS MEANT TO BE PUBLIC ---------- */ #if defined(__cplusplus) extern "C" { #endif /* basic matrix manipulations */ void ddf_InitializeArow(ddf_colrange,ddf_Arow *); void ddf_InitializeAmatrix(ddf_rowrange,ddf_colrange,ddf_Amatrix *); void ddf_InitializeBmatrix(ddf_colrange, ddf_Bmatrix *); ddf_SetFamilyPtr ddf_CreateSetFamily(ddf_bigrange,ddf_bigrange); void ddf_FreeSetFamily(ddf_SetFamilyPtr); ddf_MatrixPtr ddf_CreateMatrix(ddf_rowrange,ddf_colrange); void ddf_FreeAmatrix(ddf_rowrange,ddf_colrange,ddf_Amatrix); void ddf_FreeArow(ddf_colrange, ddf_Arow); void ddf_FreeBmatrix(ddf_colrange,ddf_Bmatrix); void ddf_FreeDDMemory(ddf_PolyhedraPtr); void ddf_FreePolyhedra(ddf_PolyhedraPtr); void ddf_FreeMatrix(ddf_MatrixPtr); void ddf_SetToIdentity(ddf_colrange, ddf_Bmatrix); /* sign recognitions */ ddf_boolean ddf_Nonnegative(myfloat); ddf_boolean ddf_Nonpositive(myfloat); ddf_boolean ddf_Positive(myfloat); ddf_boolean ddf_Negative(myfloat); ddf_boolean ddf_EqualToZero(myfloat); ddf_boolean ddf_Nonzero(myfloat); ddf_boolean ddf_Equal(myfloat,myfloat); ddf_boolean ddf_Larger(myfloat,myfloat); ddf_boolean ddf_Smaller(myfloat,myfloat); void ddf_abs(myfloat, myfloat); void ddf_LinearComb(myfloat, myfloat, myfloat, myfloat, myfloat); void ddf_InnerProduct(myfloat, ddf_colrange, ddf_Arow, ddf_Arow); /* major cddlib operations */ ddf_MatrixPtr ddf_CopyInput(ddf_PolyhedraPtr); ddf_MatrixPtr ddf_CopyOutput(ddf_PolyhedraPtr); ddf_MatrixPtr ddf_CopyInequalities(ddf_PolyhedraPtr); ddf_MatrixPtr ddf_CopyGenerators(ddf_PolyhedraPtr); ddf_SetFamilyPtr ddf_CopyIncidence(ddf_PolyhedraPtr); ddf_SetFamilyPtr ddf_CopyAdjacency(ddf_PolyhedraPtr); ddf_SetFamilyPtr ddf_CopyInputIncidence(ddf_PolyhedraPtr); ddf_SetFamilyPtr ddf_CopyInputAdjacency(ddf_PolyhedraPtr); ddf_boolean ddf_DDFile2File(char *ifile, char *ofile, ddf_ErrorType *err); ddf_boolean ddf_DDInputAppend(ddf_PolyhedraPtr*, ddf_MatrixPtr, ddf_ErrorType*); ddf_MatrixPtr ddf_PolyFile2Matrix(FILE *f, ddf_ErrorType *); ddf_PolyhedraPtr ddf_DDMatrix2Poly(ddf_MatrixPtr, ddf_ErrorType *); ddf_PolyhedraPtr ddf_DDMatrix2Poly2(ddf_MatrixPtr, ddf_RowOrderType, ddf_ErrorType *); ddf_boolean ddf_Redundant(ddf_MatrixPtr, ddf_rowrange, ddf_Arow, ddf_ErrorType *); /* 092 */ ddf_rowset ddf_RedundantRows(ddf_MatrixPtr, ddf_ErrorType *); /* 092 */ ddf_boolean ddf_SRedundant(ddf_MatrixPtr, ddf_rowrange, ddf_Arow, ddf_ErrorType *); /* 093a */ ddf_rowset ddf_SRedundantRows(ddf_MatrixPtr, ddf_ErrorType *); /* 093a */ ddf_rowset ddf_RedundantRowsViaShooting(ddf_MatrixPtr, ddf_ErrorType *); /* 092 */ ddf_rowrange ddf_RayShooting(ddf_MatrixPtr, ddf_Arow intpt, ddf_Arow direction); /* 092 */ /* 092, find the first inequality "hit" by a ray from an intpt. */ ddf_boolean ddf_ImplicitLinearity(ddf_MatrixPtr, ddf_rowrange, ddf_Arow, ddf_ErrorType *); /* 092 */ ddf_rowset ddf_ImplicitLinearityRows(ddf_MatrixPtr, ddf_ErrorType *); /* 092 */ int ddf_FreeOfImplicitLinearity(ddf_MatrixPtr, ddf_Arow, ddf_rowset *, ddf_ErrorType *) ; /* 094 */ ddf_boolean ddf_MatrixCanonicalizeLinearity(ddf_MatrixPtr *, ddf_rowset *,ddf_rowindex *, ddf_ErrorType *); /* 094 */ ddf_boolean ddf_MatrixCanonicalize(ddf_MatrixPtr *, ddf_rowset *, ddf_rowset *, ddf_rowindex *, ddf_ErrorType *); /* 094 */ ddf_boolean ddf_MatrixRedundancyRemove(ddf_MatrixPtr *M, ddf_rowset *redset,ddf_rowindex *newpos, ddf_ErrorType *); /* 094 */ ddf_boolean ddf_FindRelativeInterior(ddf_MatrixPtr, ddf_rowset *, ddf_rowset *, ddf_LPSolutionPtr *, ddf_ErrorType *); /* 094 */ ddf_boolean ddf_ExistsRestrictedFace(ddf_MatrixPtr, ddf_rowset, ddf_rowset, ddf_ErrorType *); /* 0.94 */ ddf_boolean ddf_ExistsRestrictedFace2(ddf_MatrixPtr, ddf_rowset, ddf_rowset, ddf_LPSolutionPtr *, ddf_ErrorType *); /* 0.94 */ ddf_SetFamilyPtr ddf_Matrix2Adjacency(ddf_MatrixPtr, ddf_ErrorType *); /* 093 */ ddf_SetFamilyPtr ddf_Matrix2WeakAdjacency(ddf_MatrixPtr, ddf_ErrorType *); /* 093a */ long ddf_MatrixRank(ddf_MatrixPtr, ddf_rowset, ddf_colset, ddf_rowset *, ddf_colset *); /* Matrix Basic Operations */ ddf_MatrixPtr ddf_MatrixCopy(ddf_MatrixPtr); /* a new name for ddf_CopyMatrix */ ddf_MatrixPtr ddf_CopyMatrix(ddf_MatrixPtr); /* 090c, kept for compatibility */ ddf_MatrixPtr ddf_MatrixNormalizedCopy(ddf_MatrixPtr); /* 094 */ ddf_MatrixPtr ddf_MatrixNormalizedSortedCopy(ddf_MatrixPtr,ddf_rowindex*); /* 094 */ ddf_MatrixPtr ddf_MatrixUniqueCopy(ddf_MatrixPtr,ddf_rowindex*); /* 094 */ ddf_MatrixPtr ddf_MatrixNormalizedSortedUniqueCopy(ddf_MatrixPtr,ddf_rowindex*); /* 094 */ ddf_MatrixPtr ddf_MatrixSortedUniqueCopy(ddf_MatrixPtr,ddf_rowindex*); /* 094 */ ddf_MatrixPtr ddf_MatrixAppend(ddf_MatrixPtr, ddf_MatrixPtr); /* a name for ddf_AppendMatrix */ ddf_MatrixPtr ddf_AppendMatrix(ddf_MatrixPtr, ddf_MatrixPtr); /* 090c, kept for compatibility */ int ddf_MatrixAppendTo(ddf_MatrixPtr*, ddf_MatrixPtr); /* 092 */ int ddf_Remove(ddf_MatrixPtr*, ddf_rowrange); /* 092 */ ddf_MatrixPtr ddf_MatrixSubmatrix(ddf_MatrixPtr, ddf_rowset delset); /* 092 */ ddf_MatrixPtr ddf_MatrixSubmatrix2(ddf_MatrixPtr, ddf_rowset delset,ddf_rowindex*); /* 094. It returns new row positions. */ ddf_MatrixPtr ddf_MatrixSubmatrix2L(ddf_MatrixPtr, ddf_rowset delset,ddf_rowindex*); /* 094. Linearity shifted up. */ int ddf_MatrixShiftupLinearity(ddf_MatrixPtr *,ddf_rowindex *); /* 094 */ int ddf_MatrixRowRemove(ddf_MatrixPtr *M, ddf_rowrange r); /* 092 */ int ddf_MatrixRowRemove2(ddf_MatrixPtr *M, ddf_rowrange r,ddf_rowindex*); /* 094*/ int ddf_MatrixRowsRemove(ddf_MatrixPtr *M, ddf_rowset delset); /* 094 */ int ddf_MatrixRowsRemove2(ddf_MatrixPtr *M, ddf_rowset delset,ddf_rowindex*); /* 094 */ /* input/output */ void ddf_SetInputFile(FILE **f,ddf_DataFileType inputfile, ddf_ErrorType *); void ddf_SetWriteFileName(ddf_DataFileType, ddf_DataFileType, char, ddf_RepresentationType); void ddf_WriteAmatrix(FILE *, ddf_Amatrix, ddf_rowrange, ddf_colrange); void ddf_WriteArow(FILE *f, ddf_Arow a, ddf_colrange); void ddf_WriteBmatrix(FILE *, ddf_colrange, ddf_Bmatrix T); void ddf_WriteMatrix(FILE *, ddf_MatrixPtr); void ddf_MatrixIntegerFilter(ddf_MatrixPtr); void ddf_WriteReal(FILE *, myfloat); void ddf_WriteNumber(FILE *f, myfloat x); /* write a number depending on the arithmetic used. */ void ddf_WritePolyFile(FILE *, ddf_PolyhedraPtr); void ddf_WriteRunningMode(FILE *, ddf_PolyhedraPtr); void ddf_WriteErrorMessages(FILE *, ddf_ErrorType); void ddf_WriteSetFamily(FILE *, ddf_SetFamilyPtr); void ddf_WriteSetFamilyCompressed(FILE *, ddf_SetFamilyPtr); void ddf_WriteProgramDescription(FILE *); void ddf_WriteDDTimes(FILE *, ddf_PolyhedraPtr); void ddf_WriteTimes(FILE *, time_t, time_t); void ddf_WriteIncidence(FILE *, ddf_PolyhedraPtr); void ddf_WriteAdjacency(FILE *, ddf_PolyhedraPtr); void ddf_WriteInputAdjacency(FILE *, ddf_PolyhedraPtr); void ddf_WriteInputIncidence(FILE *, ddf_PolyhedraPtr); /* functions and types for LP solving */ ddf_LPPtr ddf_Matrix2LP(ddf_MatrixPtr, ddf_ErrorType *); /* Load a matrix to create an LP object. */ ddf_LPPtr ddf_Matrix2Feasibility(ddf_MatrixPtr, ddf_ErrorType *); /* Load a matrix to create an LP object for feasibility (obj == 0) .*/ /* 094 */ ddf_LPPtr ddf_Matrix2Feasibility2(ddf_MatrixPtr, ddf_rowset, ddf_rowset, ddf_ErrorType *); /* Load a matrix to create an LP object for feasibility with additional equality and strict inequality constraints. */ /* 094 */ ddf_boolean ddf_LPSolve(ddf_LPPtr,ddf_LPSolverType,ddf_ErrorType *); ddf_boolean ddf_LPSolve0(ddf_LPPtr,ddf_LPSolverType,ddf_ErrorType *); void ddf_CrissCrossSolve(ddf_LPPtr lp,ddf_ErrorType *); void ddf_DualSimplexSolve(ddf_LPPtr lp,ddf_ErrorType *); ddf_LPPtr ddf_MakeLPforInteriorFinding(ddf_LPPtr); ddf_LPSolutionPtr ddf_CopyLPSolution(ddf_LPPtr); /* 0.90c */ void ddf_WriteLP(FILE *, ddf_LPPtr); /* 092 */ ddf_LPPtr ddf_CreateLPData(ddf_LPObjectiveType,ddf_NumberType,ddf_rowrange,ddf_colrange); int ddf_LPReverseRow(ddf_LPPtr, ddf_rowrange); /* reverse the i-th row (1 <= i <= no. of rows) */ int ddf_LPReplaceRow(ddf_LPPtr, ddf_rowrange, ddf_Arow); /* replace the i-th row (1 <= i <= no. of rows) */ ddf_Arow ddf_LPCopyRow(ddf_LPPtr, ddf_rowrange); /* copy the i-th row (1 <= i <= no. of rows) */ void ddf_FreeLPData(ddf_LPPtr); void ddf_FreeLPSolution(ddf_LPSolutionPtr); void ddf_WriteLPResult(FILE *, ddf_LPPtr, ddf_ErrorType); void ddf_WriteLPErrorMessages(FILE *, ddf_ErrorType); void ddf_WriteLPTimes(FILE *, ddf_LPPtr); void ddf_WriteLPStats(FILE *f); void ddf_WriteLPMode(FILE *f); ddf_MatrixPtr ddf_FourierElimination(ddf_MatrixPtr,ddf_ErrorType *); ddf_MatrixPtr ddf_BlockElimination(ddf_MatrixPtr, ddf_colset, ddf_ErrorType *); #if defined(__cplusplus) } #endif /* ---------- FUNCTIONS MEANT TO BE NON-PUBLIC ---------- */ void ddf_QuickSort(ddf_rowindex, long, long, ddf_Amatrix, long); void ddf_RandomPermutation(ddf_rowindex, long, unsigned int seed); void ddf_UniqueRows(ddf_rowindex, long, long, ddf_Amatrix, long, ddf_rowset, long *); ddf_boolean ddf_DoubleDescription(ddf_PolyhedraPtr, ddf_ErrorType*); ddf_boolean ddf_DoubleDescription2(ddf_PolyhedraPtr, ddf_RowOrderType, ddf_ErrorType *); void ddf_FreeDDMemory0(ddf_ConePtr); void ddf_fread_rational_value (FILE *f, myfloat value); void ddf_sread_rational_value (const char *s, myfloat value); void ddf_AddNewHalfspace1(ddf_ConePtr, ddf_rowrange); void ddf_AddNewHalfspace2(ddf_ConePtr, ddf_rowrange); void ddf_AddRay(ddf_ConePtr, myfloat *); void ddf_AddArtificialRay(ddf_ConePtr); void ddf_AValue(myfloat*,ddf_colrange, ddf_Amatrix, myfloat *, ddf_rowrange); void ddf_CheckAdjacency(ddf_ConePtr, ddf_RayPtr*, ddf_RayPtr*, ddf_boolean *); void ddf_CheckEquality(ddf_colrange, ddf_RayPtr *, ddf_RayPtr *, ddf_boolean *); void ddf_ComputeRowOrderVector(ddf_ConePtr); void ddf_ConditionalAddEdge(ddf_ConePtr,ddf_RayPtr, ddf_RayPtr, ddf_RayPtr); void ddf_CopyArow(myfloat *, myfloat *, ddf_colrange); void ddf_CopyNormalizedAmatrix(myfloat **, myfloat **, ddf_rowrange, ddf_colrange); void ddf_CopyNormalizedArow(myfloat *, myfloat *, ddf_colrange); void ddf_CopyAmatrix(myfloat **, myfloat **, ddf_rowrange, ddf_colrange); void ddf_PermuteCopyAmatrix(myfloat **, myfloat **, ddf_rowrange, ddf_colrange, ddf_rowindex); void ddf_PermutePartialCopyAmatrix(myfloat **, myfloat **, ddf_rowrange, ddf_colrange, ddf_rowindex,ddf_rowrange, ddf_rowrange); void ddf_CopyBmatrix(ddf_colrange, ddf_Bmatrix T, ddf_Bmatrix TCOPY); void ddf_CopyRay(myfloat *, ddf_colrange, ddf_RayPtr, ddf_RepresentationType, ddf_colindex); void ddf_CreateInitialEdges(ddf_ConePtr); void ddf_CreateNewRay(ddf_ConePtr, ddf_RayPtr, ddf_RayPtr, ddf_rowrange); void ddf_Eliminate(ddf_ConePtr, ddf_RayPtr*); void ddf_EvaluateARay1(ddf_rowrange, ddf_ConePtr); void ddf_EvaluateARay2(ddf_rowrange, ddf_ConePtr); void ddf_FeasibilityIndices(long *, long *, ddf_rowrange, ddf_ConePtr); void ddf_FindBasis(ddf_ConePtr, long *rank); void ddf_FindInitialRays(ddf_ConePtr, ddf_boolean *); void ddf_ColumnReduce(ddf_ConePtr); void ddf_GaussianColumnPivot(ddf_rowrange, ddf_colrange, ddf_Amatrix, ddf_Bmatrix, ddf_rowrange, ddf_colrange); ddf_boolean ddf_LexSmaller(myfloat *, myfloat *, long); ddf_boolean ddf_LexLarger(myfloat *, myfloat *, long); ddf_boolean ddf_LexEqual(myfloat *, myfloat *, long); void ddf_Normalize(ddf_colrange, myfloat *); void ddf_MatrixIntegerFilter(ddf_MatrixPtr); void ddf_ProcessCommandLine(FILE*,ddf_MatrixPtr, const char *); void ddf_SelectNextHalfspace(ddf_ConePtr, ddf_rowset, ddf_rowrange *); void ddf_SelectPivot2(ddf_rowrange,ddf_colrange,ddf_Amatrix, ddf_Bmatrix,ddf_RowOrderType,ddf_rowindex, ddf_rowset,ddf_rowrange,ddf_rowset, ddf_colset,ddf_rowrange *,ddf_colrange *,ddf_boolean *); void ddf_SelectPreorderedNext(ddf_ConePtr, ddf_rowset, ddf_rowrange *); void ddf_SetInequalitySets(ddf_ConePtr); void ddf_SnapToInteger(myfloat, myfloat); void ddf_StoreRay1(ddf_ConePtr, myfloat *, ddf_boolean *); void ddf_StoreRay2(ddf_ConePtr, myfloat *, ddf_boolean *, ddf_boolean *); void ddf_TableauEntry(myfloat *, ddf_rowrange, ddf_colrange, ddf_Amatrix, ddf_Bmatrix T, ddf_rowrange, ddf_colrange); void ddf_UpdateEdges(ddf_ConePtr, ddf_RayPtr, ddf_RayPtr); void ddf_UpdateRowOrderVector(ddf_ConePtr, ddf_rowset PriorityRows); void ddf_WriteRay(FILE *, ddf_colrange, ddf_RayPtr, ddf_RepresentationType, ddf_colindex); void ddf_ZeroIndexSet(ddf_rowrange, ddf_colrange, ddf_Amatrix, myfloat *, ddf_rowset); /* New functions to handle data loading, NON-PUBLIC */ ddf_NumberType ddf_GetNumberType(const char *); ddf_ConePtr ddf_ConeDataLoad(ddf_PolyhedraPtr); ddf_PolyhedraPtr ddf_CreatePolyhedraData(ddf_rowrange, ddf_colrange); ddf_boolean ddf_InitializeConeData(ddf_rowrange, ddf_colrange, ddf_ConePtr*); ddf_boolean ddf_AppendMatrix2Poly(ddf_PolyhedraPtr*, ddf_MatrixPtr); /* end of cddlib.h */ cddlib-0.94j/lib-src/cddmp_f.h0000644000175000017500000001151513275330545013074 00000000000000/* generated automatically from cddmp.h */ /* cddmp.h (cddlib arithmetic operations using gmp) written by Komei Fukuda, fukuda@math.ethz.ch Version 0.94i, March 9, 2018 */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef _CDDMP_HF #define _CDDMP_HF #endif /* _CDDMP_HF */ /**********************************/ /* MACROS */ /* dependent on mp implementation */ /**********************************/ #if defined ddf_GMPRATIONAL #include "gmp.h" #define ddf_ddf_ARITHMETIC "GMP rational" #define ddf_init(a) mpq_init(a) #define ddf_clear(a) mpq_clear(a) #define ddf_set(a, b) mpq_set(a,b) #define ddf_set_si(a, b) dddf_mpq_set_si(a,b) /* defined in cddgmp.c */ #define ddf_set_si2(a, b, c) mpq_set_si(a,b,c) /* gmp 3.1 or higher */ #define ddf_set_d(a, b) mpq_set_d(a,b) /* gmp 3.1 or higher */ #define ddf_add(a, b, c) mpq_add(a,b,c) #define ddf_sub(a, b, c) mpq_sub(a,b,c) #define ddf_mul(a, b, c) mpq_mul(a,b,c) #define ddf_div(a, b, c) mpq_div(a,b,c) #define ddf_neg(a, b) mpq_neg(a,b) #define ddf_inv(a, b) mpq_inv(a,b) #define ddf_cmp(a, b) mpq_cmp(a,b) /* returns pos if a>b, 0 if a=b, negative if ab, 0 if a=b, negative if ab, 0 if a=b, negative if a= 0}. Please read COPYING (GNU General Public Licence) and the manual cddlibman.tex for detail. */ #ifndef _CDDTYPES_HF #define _CDDTYPES_HF #endif /* _CDDTYPES_HF */ #define ddf_COPYRIGHT "Copyright (C) 1996, Komei Fukuda, fukuda@ifor.math.ethz.ch" #define ddf_DDVERSION "Version 0.94g (March 23, 2012)" #include #define ddf_wordlenmax 1024 #define ddf_linelenmax 4096 #define ddf_datawidth 10 #define ddf_filenamelen 255 #define ddf_FALSE 0 #define ddf_TRUE 1 typedef int ddf_boolean; typedef long ddf_rowrange; typedef long ddf_colrange; typedef long ddf_bigrange; typedef set_type ddf_rowset; typedef set_type ddf_colset; typedef long *ddf_rowindex; typedef int *ddf_rowflag; typedef long *ddf_colindex; typedef myfloat **ddf_Amatrix; typedef myfloat *ddf_Arow; typedef set_type *ddf_SetVector; typedef myfloat **ddf_Bmatrix; typedef set_type *ddf_Aincidence; /* typedef char ddf_FilenameType[ddf_filenamelen]; deleted 000505*/ typedef char ddf_DataFileType[ddf_filenamelen]; typedef char ddf_LineType[ddf_linelenmax]; typedef char ddf_WordType[ddf_wordlenmax]; typedef struct ddf_raydata *ddf_RayPtr; typedef struct ddf_raydata { myfloat *Ray; ddf_rowset ZeroSet; ddf_rowrange FirstInfeasIndex; /* the first inequality the ray violates */ ddf_boolean feasible; /* flag to store the feasibility */ myfloat ARay; /* temporary area to store some row of A*Ray */ ddf_RayPtr Next; } ddf_RayType; typedef struct ddf_adjacencydata *ddf_AdjacencyPtr; typedef struct ddf_adjacencydata { ddf_RayPtr Ray1, Ray2; ddf_AdjacencyPtr Next; } ddf_AdjacencyType; typedef enum { ddf_Combinatorial, ddf_Algebraic } ddf_AdjacencyTestType; typedef enum { ddf_MaxIndex, ddf_MinIndex, ddf_MinCutoff, ddf_MaxCutoff, ddf_MixCutoff, ddf_LexMin, ddf_LexMax, ddf_RandomRow } ddf_RowOrderType; typedef enum { ddf_Unknown=0, ddf_Real, ddf_Rational, ddf_Integer } ddf_NumberType; typedef enum { ddf_Unspecified=0, ddf_Inequality, ddf_Generator } ddf_RepresentationType; typedef enum { ddf_IneToGen, ddf_GenToIne, ddf_LPMax, ddf_LPMin, ddf_InteriorFind } ddf_ConversionType; typedef enum { ddf_IncOff=0, ddf_IncCardinality, ddf_IncSet } ddf_IncidenceOutputType; typedef enum { ddf_AdjOff=0, ddf_AdjacencyList, ddf_AdjacencyDegree } ddf_AdjacencyOutputType; typedef enum { ddf_Auto, ddf_SemiAuto, ddf_Manual } ddf_FileInputModeType; /* Auto if a input filename is specified by command arguments */ typedef enum { ddf_DimensionTooLarge, ddf_ImproperInputFormat, ddf_NegativeMatrixSize, ddf_EmptyVrepresentation, ddf_EmptyHrepresentation, ddf_EmptyRepresentation, ddf_IFileNotFound, ddf_OFileNotOpen, ddf_NoLPObjective, ddf_NoRealNumberSupport, ddf_NotAvailForH, ddf_NotAvailForV, ddf_CannotHandleLinearity, ddf_RowIndexOutOfRange, ddf_ColIndexOutOfRange, ddf_LPCycling, ddf_NumericallyInconsistent, ddf_NoError } ddf_ErrorType; typedef enum { ddf_InProgress, ddf_AllFound, ddf_RegionEmpty } ddf_CompStatusType; /* --- LP types ---- */ typedef enum { ddf_LPnone=0, ddf_LPmax, ddf_LPmin } ddf_LPObjectiveType; typedef enum { ddf_CrissCross, ddf_DualSimplex } ddf_LPSolverType; typedef enum { ddf_LPSundecided, ddf_Optimal, ddf_Inconsistent, ddf_DualInconsistent, ddf_StrucInconsistent, ddf_StrucDualInconsistent, ddf_Unbounded, ddf_DualUnbounded } ddf_LPStatusType; typedef struct ddf_lpsolution *ddf_LPSolutionPtr; typedef struct ddf_lpsolution { ddf_DataFileType filename; ddf_LPObjectiveType objective; ddf_LPSolverType solver; ddf_rowrange m; ddf_colrange d; ddf_NumberType numbtype; ddf_LPStatusType LPS; /* the current solution status */ myfloat optvalue; /* optimal value */ ddf_Arow sol; /* primal solution */ ddf_Arow dsol; /* dual solution */ ddf_colindex nbindex; /* current basis represented by nonbasic indices */ ddf_rowrange re; /* row index as a certificate in the case of inconsistency */ ddf_colrange se; /* col index as a certificate in the case of dual inconsistency */ long pivots[5]; /* pivots[0]=setup (to find a basis), pivots[1]=PhaseI or Criss-Cross, pivots[2]=Phase II, pivots[3]=Anticycling, pivots[4]=GMP postopt. */ long total_pivots; } ddf_LPSolutionType; typedef struct ddf_lpdata *ddf_LPPtr; typedef struct ddf_lpdata { ddf_DataFileType filename; ddf_LPObjectiveType objective; ddf_LPSolverType solver; ddf_boolean Homogeneous; /* The first column except for the obj row is all zeros. */ ddf_rowrange m; ddf_colrange d; ddf_Amatrix A; ddf_Bmatrix B; ddf_rowrange objrow; ddf_colrange rhscol; ddf_NumberType numbtype; ddf_rowrange eqnumber; /* the number of equalities */ ddf_rowset equalityset; ddf_boolean redcheck_extensive; /* Apply the extensive redundancy check. */ ddf_rowrange ired; /* the row index for the redundancy checking */ ddf_rowset redset_extra; /* a set of rows that are newly recognized redundan by the extensive search. */ ddf_rowset redset_accum; /* the accumulated set of rows that are recognized redundant */ ddf_rowset posset_extra; /* a set of rows that are recognized non-linearity */ ddf_boolean lexicopivot; /* flag to use the lexicogrphic pivot rule (symbolic perturbation). */ ddf_LPStatusType LPS; /* the current solution status */ ddf_rowrange m_alloc; /* the allocated row size of matrix A */ ddf_colrange d_alloc; /* the allocated col size of matrix A */ myfloat optvalue; /* optimal value */ ddf_Arow sol; /* primal solution */ ddf_Arow dsol; /* dual solution */ ddf_colindex nbindex; /* current basis represented by nonbasic indices */ ddf_rowrange re; /* row index as a certificate in the case of inconsistency */ ddf_colrange se; /* col index as a certificate in the case of dual inconsistency */ long pivots[5]; /* pivots[0]=setup (to find a basis), pivots[1]=PhaseI or Criss-Cross, pivots[2]=Phase II, pivots[3]=Anticycling, pivots[4]=GMP postopt. */ long total_pivots; int use_given_basis; /* switch to indicate the use of the given basis */ ddf_colindex given_nbindex; /* given basis represented by nonbasic indices */ time_t starttime; time_t endtime; } ddf_LPType; /*---- end of LP Types ----- */ typedef struct ddf_matrixdata *ddf_MatrixPtr; typedef struct ddf_matrixdata { ddf_rowrange rowsize; ddf_rowset linset; /* a subset of rows of linearity (ie, generators of linearity space for V-representation, and equations for H-representation. */ ddf_colrange colsize; ddf_RepresentationType representation; ddf_NumberType numbtype; ddf_Amatrix matrix; ddf_LPObjectiveType objective; ddf_Arow rowvec; } ddf_MatrixType; typedef struct ddf_setfamily *ddf_SetFamilyPtr; typedef struct ddf_setfamily { ddf_bigrange famsize; ddf_bigrange setsize; ddf_SetVector set; } ddf_SetFamilyType; typedef struct ddf_nodedata *ddf_NodePtr; typedef struct ddf_nodedata {ddf_bigrange key; ddf_NodePtr next;} ddf_NodeType; typedef struct ddf_graphdata *ddf_GraphPtr; typedef struct ddf_graphdata { ddf_bigrange vsize; ddf_NodePtr *adjlist; /* should be initialized to have vsize components */ } ddf_GraphType; typedef struct ddf_polyhedradata *ddf_PolyhedraPtr; typedef struct ddf_conedata *ddf_ConePtr; typedef struct ddf_polyhedradata { ddf_RepresentationType representation; /* given representation */ ddf_boolean homogeneous; ddf_colrange d; ddf_rowrange m; ddf_Amatrix A; /* Inequality System: m times d matrix */ ddf_NumberType numbtype; ddf_ConePtr child; /* pointing to the homogenized cone data */ ddf_rowrange m_alloc; /* allocated row size of matrix A */ ddf_colrange d_alloc; /* allocated col size of matrix A */ ddf_Arow c; /* cost vector */ ddf_rowflag EqualityIndex; /* ith component is 1 if it is equality, -1 if it is strict inequality, 0 otherwise. */ ddf_boolean IsEmpty; /* This is to tell whether the set is empty or not */ ddf_boolean NondegAssumed; ddf_boolean InitBasisAtBottom; ddf_boolean RestrictedEnumeration; ddf_boolean RelaxedEnumeration; ddf_rowrange m1; /* = m or m+1 (when representation=Inequality && !homogeneous) This data is written after ddf_ConeDataLoad is called. This determines the size of Ainc. */ ddf_boolean AincGenerated; /* Indicates whether Ainc, Ared, Adom are all computed. All the variables below are valid only when this is TRUE */ ddf_colrange ldim; /* linearity dimension */ ddf_bigrange n; /* the size of output = total number of rays in the computed cone + linearity dimension */ ddf_Aincidence Ainc; /* incidence of input and output */ ddf_rowset Ared; /* redundant set of rows whose removal results in a minimal system */ ddf_rowset Adom; /* dominant set of rows (those containing all rays). */ } ddf_PolyhedraType; typedef struct ddf_conedata { ddf_RepresentationType representation; ddf_rowrange m; ddf_colrange d; ddf_Amatrix A; ddf_NumberType numbtype; ddf_PolyhedraPtr parent; /* pointing to the original polyhedra data */ ddf_rowrange m_alloc; /* allocated row size of matrix A */ ddf_colrange d_alloc; /* allocated col size of matrix A */ /* CONTROL: variables to control computation */ ddf_rowrange Iteration; ddf_RowOrderType HalfspaceOrder; ddf_RayPtr FirstRay, LastRay, ArtificialRay; /* The second description: Generator */ ddf_RayPtr PosHead, ZeroHead, NegHead, PosLast, ZeroLast, NegLast; ddf_AdjacencyType **Edges; /* adjacency relation storage for iteration k */ unsigned int rseed; /* random seed for random row permutation */ ddf_boolean ColReduced; /* flag to indicate that a column basis is computed and reduced */ ddf_bigrange LinearityDim; /* the dimension of the linearity space (when input is H), and the size of a minimal system of equations to determine the space (when V). */ ddf_colrange d_orig; /* the size d of the original matrix A */ ddf_colindex newcol; /* the size d of the original matrix A */ ddf_colindex InitialRayIndex; /* InitialRayIndex[s] (s>=1) stores the corr. row index */ ddf_rowindex OrderVector; ddf_boolean RecomputeRowOrder; ddf_boolean PreOrderedRun; ddf_rowset GroundSet, EqualitySet, NonequalitySet, AddedHalfspaces, WeaklyAddedHalfspaces, InitialHalfspaces; long RayCount, FeasibleRayCount, WeaklyFeasibleRayCount, TotalRayCount, ZeroRayCount; long EdgeCount, TotalEdgeCount; long count_int,count_int_good,count_int_bad; /* no. of intersection operations */ ddf_Bmatrix B; ddf_Bmatrix Bsave; /* a copy of the dual basis inverse used to reduce the matrix A */ /* STATES: variables to represent current state. */ ddf_ErrorType Error; ddf_CompStatusType CompStatus; /* Computation Status */ time_t starttime, endtime; } ddf_ConeType; /* Global Variables */ extern ddf_boolean ddf_debug; extern ddf_boolean ddf_log; /* end of cddtypes.h */ cddlib-0.94j/lib-src/Makefile.gmp.am0000644000175000017500000000256713301273112014136 00000000000000if GMP lib_LTLIBRARIES += libcddgmp.la include_HEADERS += \ cdd_f.h \ cddmp_f.h \ cddtypes_f.h libcddgmp_la_SOURCES = $(libcdd_la_SOURCES) libcddgmp_la_CPPFLAGS = -DGMPRATIONAL libcddgmp_la_LDFLAGS = -lgmp # do not ship generated source files nodist_libcddgmp_la_SOURCES = \ cddcore_f.c \ cddlp_f.c \ cddmp_f.c \ cddio_f.c \ cddlib_f.c \ cddproj_f.c # Since the _f.h and _f.c are autogenerated, we need them to be generated # before any other compilation takes place. BUILT_SOURCES = cdd_f.h cddmp_f.h cddtypes_f.h $(nodist_libcddgmp_la_SOURCES) CLEANFILES = $(BUILT_SOURCES) # The _f.h and _f.c files are generated from the .h and .c files by the # following sed/awk script. define SED_GMP sed -e 's/dd_/ddf_/g' \ -e 's/cddf_/cdd_/g' \ -e 's/mytype/myfloat/g' \ -e 's/#include "cdd.h"/#include "cdd_f.h"/' \ -e 's/#include "cddtypes.h"/#include "cddtypes_f.h"/' \ -e 's/#include "cddmp.h"/#include "cddmp_f.h"/' \ -e 's/__CDD_H/__CDD_HF/' \ -e 's/__CDD_HFF/__CDD_HF/' \ -e 's/__CDDMP_H/_CDDMP_HF/' \ -e 's/__CDDTYPES_H/_CDDTYPES_HF/' \ -e 's/GMPRATIONAL/ddf_GMPRATIONAL/g' \ -e 's/ARITHMETIC/ddf_ARITHMETIC/g' \ -e 's/CDOUBLE/ddf_CDOUBLE/g' \ $< | awk 'BEGIN{print "/* generated automatically from $< */"}1' \ > $@ endef SUFFIXES = _f.h _f.c # A rule to create a _f.h from a .h .h_f.h: $(SED_GMP) # A rule to create a _f.c from a .c .c_f.c: $(SED_GMP) endif cddlib-0.94j/lib-src/Makefile.in0000644000175000017500000013365613307421344013401 00000000000000# Makefile.in generated by automake 1.15.1 from Makefile.am. # @configure_input@ # Copyright (C) 1994-2017 Free Software Foundation, Inc. # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY, to the extent permitted by law; without # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. @SET_MAKE@ VPATH = @srcdir@ am__is_gnu_make = { \ if test -z '$(MAKELEVEL)'; then \ false; \ elif test -n '$(MAKE_HOST)'; then \ true; \ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ true; \ else \ false; \ fi; \ } am__make_running_with_option = \ case $${target_option-} in \ ?) ;; \ *) echo "am__make_running_with_option: internal error: invalid" \ "target option '$${target_option-}' specified" >&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ @GMP_TRUE@am__append_1 = libcddgmp.la @GMP_TRUE@am__append_2 = \ @GMP_TRUE@cdd_f.h \ @GMP_TRUE@cddmp_f.h \ @GMP_TRUE@cddtypes_f.h subdir = lib-src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__include_HEADERS_DIST) \ $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ *) f=$$p;; \ esac; am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; am__install_max = 40 am__nobase_strip_setup = \ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` am__nobase_strip = \ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" am__nobase_list = $(am__nobase_strip_setup); \ for p in $$list; do echo "$$p $$p"; done | \ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ if (++n[$$2] == $(am__install_max)) \ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ END { for (dir in files) print dir, files[dir] }' am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' am__uninstall_files_from_dir = { \ test -z "$$files" \ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ $(am__cd) "$$dir" && rm -f $$files; }; \ } am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" LTLIBRARIES = $(lib_LTLIBRARIES) libcdd_la_LIBADD = am_libcdd_la_OBJECTS = libcdd_la-cddcore.lo libcdd_la-cddlp.lo \ libcdd_la-cddmp.lo libcdd_la-cddio.lo libcdd_la-cddlib.lo \ libcdd_la-cddproj.lo libcdd_la-setoper.lo libcdd_la_OBJECTS = $(am_libcdd_la_OBJECTS) AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = libcddgmp_la_LIBADD = am__libcddgmp_la_SOURCES_DIST = cddcore.c cddlp.c cddmp.c cddio.c \ cddlib.c cddproj.c setoper.c am__objects_1 = libcddgmp_la-cddcore.lo libcddgmp_la-cddlp.lo \ libcddgmp_la-cddmp.lo libcddgmp_la-cddio.lo \ libcddgmp_la-cddlib.lo libcddgmp_la-cddproj.lo \ libcddgmp_la-setoper.lo @GMP_TRUE@am_libcddgmp_la_OBJECTS = $(am__objects_1) @GMP_TRUE@nodist_libcddgmp_la_OBJECTS = libcddgmp_la-cddcore_f.lo \ @GMP_TRUE@ libcddgmp_la-cddlp_f.lo libcddgmp_la-cddmp_f.lo \ @GMP_TRUE@ libcddgmp_la-cddio_f.lo libcddgmp_la-cddlib_f.lo \ @GMP_TRUE@ libcddgmp_la-cddproj_f.lo libcddgmp_la_OBJECTS = $(am_libcddgmp_la_OBJECTS) \ $(nodist_libcddgmp_la_OBJECTS) libcddgmp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(libcddgmp_la_LDFLAGS) $(LDFLAGS) -o $@ @GMP_TRUE@am_libcddgmp_la_rpath = -rpath $(libdir) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = $(libcdd_la_SOURCES) $(libcddgmp_la_SOURCES) \ $(nodist_libcddgmp_la_SOURCES) DIST_SOURCES = $(libcdd_la_SOURCES) $(am__libcddgmp_la_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__include_HEADERS_DIST = cdd.h cddmp.h cddtypes.h setoper.h \ splitmix64.h cdd_f.h cddmp_f.h cddtypes_f.h HEADERS = $(include_HEADERS) am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/./Makefile.gmp.am $(srcdir)/Makefile.in \ $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CDD_LDFLAGS = @CDD_LDFLAGS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ dvips = @dvips@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ latex = @latex@ latex2html = @latex2html@ libcdd_version_info = @libcdd_version_info@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pdflatex = @pdflatex@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ lib_LTLIBRARIES = libcdd.la $(am__append_1) libcdd_la_SOURCES = \ cddcore.c \ cddlp.c \ cddmp.c \ cddio.c \ cddlib.c \ cddproj.c \ setoper.c libcdd_la_CPPFLAGS = -UGMPRATIONAL AM_LDFLAGS = -version-info $(libcdd_version_info) $(CDD_LDFLAGS) include_HEADERS = cdd.h cddmp.h cddtypes.h setoper.h splitmix64.h \ $(am__append_2) @GMP_TRUE@libcddgmp_la_SOURCES = $(libcdd_la_SOURCES) @GMP_TRUE@libcddgmp_la_CPPFLAGS = -DGMPRATIONAL @GMP_TRUE@libcddgmp_la_LDFLAGS = -lgmp # do not ship generated source files @GMP_TRUE@nodist_libcddgmp_la_SOURCES = \ @GMP_TRUE@cddcore_f.c \ @GMP_TRUE@cddlp_f.c \ @GMP_TRUE@cddmp_f.c \ @GMP_TRUE@cddio_f.c \ @GMP_TRUE@cddlib_f.c \ @GMP_TRUE@cddproj_f.c # Since the _f.h and _f.c are autogenerated, we need them to be generated # before any other compilation takes place. @GMP_TRUE@BUILT_SOURCES = cdd_f.h cddmp_f.h cddtypes_f.h $(nodist_libcddgmp_la_SOURCES) @GMP_TRUE@CLEANFILES = $(BUILT_SOURCES) @GMP_TRUE@SUFFIXES = _f.h _f.c all: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) all-am .SUFFIXES: .SUFFIXES: _f.h _f.c .c .h .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/./Makefile.gmp.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib-src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu lib-src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(srcdir)/./Makefile.gmp.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ list2=; for p in $$list; do \ if test -f $$p; then \ list2="$$list2 $$p"; \ else :; fi; \ done; \ test -z "$$list2" || { \ echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ } uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ for p in $$list; do \ $(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; \ locs=`for p in $$list; do echo $$p; done | \ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ sort -u`; \ test -z "$$locs" || { \ echo rm -f $${locs}; \ rm -f $${locs}; \ } libcdd.la: $(libcdd_la_OBJECTS) $(libcdd_la_DEPENDENCIES) $(EXTRA_libcdd_la_DEPENDENCIES) $(AM_V_CCLD)$(LINK) -rpath $(libdir) $(libcdd_la_OBJECTS) $(libcdd_la_LIBADD) $(LIBS) libcddgmp.la: $(libcddgmp_la_OBJECTS) $(libcddgmp_la_DEPENDENCIES) $(EXTRA_libcddgmp_la_DEPENDENCIES) $(AM_V_CCLD)$(libcddgmp_la_LINK) $(am_libcddgmp_la_rpath) $(libcddgmp_la_OBJECTS) $(libcddgmp_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcdd_la-cddcore.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcdd_la-cddio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcdd_la-cddlib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcdd_la-cddlp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcdd_la-cddmp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcdd_la-cddproj.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcdd_la-setoper.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcddgmp_la-cddcore.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcddgmp_la-cddcore_f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcddgmp_la-cddio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcddgmp_la-cddio_f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcddgmp_la-cddlib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcddgmp_la-cddlib_f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcddgmp_la-cddlp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcddgmp_la-cddlp_f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcddgmp_la-cddmp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcddgmp_la-cddmp_f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcddgmp_la-cddproj.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcddgmp_la-cddproj_f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libcddgmp_la-setoper.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< libcdd_la-cddcore.lo: cddcore.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdd_la-cddcore.lo -MD -MP -MF $(DEPDIR)/libcdd_la-cddcore.Tpo -c -o libcdd_la-cddcore.lo `test -f 'cddcore.c' || echo '$(srcdir)/'`cddcore.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcdd_la-cddcore.Tpo $(DEPDIR)/libcdd_la-cddcore.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddcore.c' object='libcdd_la-cddcore.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdd_la-cddcore.lo `test -f 'cddcore.c' || echo '$(srcdir)/'`cddcore.c libcdd_la-cddlp.lo: cddlp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdd_la-cddlp.lo -MD -MP -MF $(DEPDIR)/libcdd_la-cddlp.Tpo -c -o libcdd_la-cddlp.lo `test -f 'cddlp.c' || echo '$(srcdir)/'`cddlp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcdd_la-cddlp.Tpo $(DEPDIR)/libcdd_la-cddlp.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddlp.c' object='libcdd_la-cddlp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdd_la-cddlp.lo `test -f 'cddlp.c' || echo '$(srcdir)/'`cddlp.c libcdd_la-cddmp.lo: cddmp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdd_la-cddmp.lo -MD -MP -MF $(DEPDIR)/libcdd_la-cddmp.Tpo -c -o libcdd_la-cddmp.lo `test -f 'cddmp.c' || echo '$(srcdir)/'`cddmp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcdd_la-cddmp.Tpo $(DEPDIR)/libcdd_la-cddmp.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddmp.c' object='libcdd_la-cddmp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdd_la-cddmp.lo `test -f 'cddmp.c' || echo '$(srcdir)/'`cddmp.c libcdd_la-cddio.lo: cddio.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdd_la-cddio.lo -MD -MP -MF $(DEPDIR)/libcdd_la-cddio.Tpo -c -o libcdd_la-cddio.lo `test -f 'cddio.c' || echo '$(srcdir)/'`cddio.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcdd_la-cddio.Tpo $(DEPDIR)/libcdd_la-cddio.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddio.c' object='libcdd_la-cddio.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdd_la-cddio.lo `test -f 'cddio.c' || echo '$(srcdir)/'`cddio.c libcdd_la-cddlib.lo: cddlib.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdd_la-cddlib.lo -MD -MP -MF $(DEPDIR)/libcdd_la-cddlib.Tpo -c -o libcdd_la-cddlib.lo `test -f 'cddlib.c' || echo '$(srcdir)/'`cddlib.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcdd_la-cddlib.Tpo $(DEPDIR)/libcdd_la-cddlib.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddlib.c' object='libcdd_la-cddlib.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdd_la-cddlib.lo `test -f 'cddlib.c' || echo '$(srcdir)/'`cddlib.c libcdd_la-cddproj.lo: cddproj.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdd_la-cddproj.lo -MD -MP -MF $(DEPDIR)/libcdd_la-cddproj.Tpo -c -o libcdd_la-cddproj.lo `test -f 'cddproj.c' || echo '$(srcdir)/'`cddproj.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcdd_la-cddproj.Tpo $(DEPDIR)/libcdd_la-cddproj.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddproj.c' object='libcdd_la-cddproj.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdd_la-cddproj.lo `test -f 'cddproj.c' || echo '$(srcdir)/'`cddproj.c libcdd_la-setoper.lo: setoper.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcdd_la-setoper.lo -MD -MP -MF $(DEPDIR)/libcdd_la-setoper.Tpo -c -o libcdd_la-setoper.lo `test -f 'setoper.c' || echo '$(srcdir)/'`setoper.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcdd_la-setoper.Tpo $(DEPDIR)/libcdd_la-setoper.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='setoper.c' object='libcdd_la-setoper.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcdd_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcdd_la-setoper.lo `test -f 'setoper.c' || echo '$(srcdir)/'`setoper.c libcddgmp_la-cddcore.lo: cddcore.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcddgmp_la-cddcore.lo -MD -MP -MF $(DEPDIR)/libcddgmp_la-cddcore.Tpo -c -o libcddgmp_la-cddcore.lo `test -f 'cddcore.c' || echo '$(srcdir)/'`cddcore.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcddgmp_la-cddcore.Tpo $(DEPDIR)/libcddgmp_la-cddcore.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddcore.c' object='libcddgmp_la-cddcore.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcddgmp_la-cddcore.lo `test -f 'cddcore.c' || echo '$(srcdir)/'`cddcore.c libcddgmp_la-cddlp.lo: cddlp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcddgmp_la-cddlp.lo -MD -MP -MF $(DEPDIR)/libcddgmp_la-cddlp.Tpo -c -o libcddgmp_la-cddlp.lo `test -f 'cddlp.c' || echo '$(srcdir)/'`cddlp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcddgmp_la-cddlp.Tpo $(DEPDIR)/libcddgmp_la-cddlp.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddlp.c' object='libcddgmp_la-cddlp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcddgmp_la-cddlp.lo `test -f 'cddlp.c' || echo '$(srcdir)/'`cddlp.c libcddgmp_la-cddmp.lo: cddmp.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcddgmp_la-cddmp.lo -MD -MP -MF $(DEPDIR)/libcddgmp_la-cddmp.Tpo -c -o libcddgmp_la-cddmp.lo `test -f 'cddmp.c' || echo '$(srcdir)/'`cddmp.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcddgmp_la-cddmp.Tpo $(DEPDIR)/libcddgmp_la-cddmp.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddmp.c' object='libcddgmp_la-cddmp.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcddgmp_la-cddmp.lo `test -f 'cddmp.c' || echo '$(srcdir)/'`cddmp.c libcddgmp_la-cddio.lo: cddio.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcddgmp_la-cddio.lo -MD -MP -MF $(DEPDIR)/libcddgmp_la-cddio.Tpo -c -o libcddgmp_la-cddio.lo `test -f 'cddio.c' || echo '$(srcdir)/'`cddio.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcddgmp_la-cddio.Tpo $(DEPDIR)/libcddgmp_la-cddio.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddio.c' object='libcddgmp_la-cddio.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcddgmp_la-cddio.lo `test -f 'cddio.c' || echo '$(srcdir)/'`cddio.c libcddgmp_la-cddlib.lo: cddlib.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcddgmp_la-cddlib.lo -MD -MP -MF $(DEPDIR)/libcddgmp_la-cddlib.Tpo -c -o libcddgmp_la-cddlib.lo `test -f 'cddlib.c' || echo '$(srcdir)/'`cddlib.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcddgmp_la-cddlib.Tpo $(DEPDIR)/libcddgmp_la-cddlib.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddlib.c' object='libcddgmp_la-cddlib.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcddgmp_la-cddlib.lo `test -f 'cddlib.c' || echo '$(srcdir)/'`cddlib.c libcddgmp_la-cddproj.lo: cddproj.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcddgmp_la-cddproj.lo -MD -MP -MF $(DEPDIR)/libcddgmp_la-cddproj.Tpo -c -o libcddgmp_la-cddproj.lo `test -f 'cddproj.c' || echo '$(srcdir)/'`cddproj.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcddgmp_la-cddproj.Tpo $(DEPDIR)/libcddgmp_la-cddproj.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddproj.c' object='libcddgmp_la-cddproj.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcddgmp_la-cddproj.lo `test -f 'cddproj.c' || echo '$(srcdir)/'`cddproj.c libcddgmp_la-setoper.lo: setoper.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcddgmp_la-setoper.lo -MD -MP -MF $(DEPDIR)/libcddgmp_la-setoper.Tpo -c -o libcddgmp_la-setoper.lo `test -f 'setoper.c' || echo '$(srcdir)/'`setoper.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcddgmp_la-setoper.Tpo $(DEPDIR)/libcddgmp_la-setoper.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='setoper.c' object='libcddgmp_la-setoper.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcddgmp_la-setoper.lo `test -f 'setoper.c' || echo '$(srcdir)/'`setoper.c libcddgmp_la-cddcore_f.lo: cddcore_f.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcddgmp_la-cddcore_f.lo -MD -MP -MF $(DEPDIR)/libcddgmp_la-cddcore_f.Tpo -c -o libcddgmp_la-cddcore_f.lo `test -f 'cddcore_f.c' || echo '$(srcdir)/'`cddcore_f.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcddgmp_la-cddcore_f.Tpo $(DEPDIR)/libcddgmp_la-cddcore_f.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddcore_f.c' object='libcddgmp_la-cddcore_f.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcddgmp_la-cddcore_f.lo `test -f 'cddcore_f.c' || echo '$(srcdir)/'`cddcore_f.c libcddgmp_la-cddlp_f.lo: cddlp_f.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcddgmp_la-cddlp_f.lo -MD -MP -MF $(DEPDIR)/libcddgmp_la-cddlp_f.Tpo -c -o libcddgmp_la-cddlp_f.lo `test -f 'cddlp_f.c' || echo '$(srcdir)/'`cddlp_f.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcddgmp_la-cddlp_f.Tpo $(DEPDIR)/libcddgmp_la-cddlp_f.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddlp_f.c' object='libcddgmp_la-cddlp_f.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcddgmp_la-cddlp_f.lo `test -f 'cddlp_f.c' || echo '$(srcdir)/'`cddlp_f.c libcddgmp_la-cddmp_f.lo: cddmp_f.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcddgmp_la-cddmp_f.lo -MD -MP -MF $(DEPDIR)/libcddgmp_la-cddmp_f.Tpo -c -o libcddgmp_la-cddmp_f.lo `test -f 'cddmp_f.c' || echo '$(srcdir)/'`cddmp_f.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcddgmp_la-cddmp_f.Tpo $(DEPDIR)/libcddgmp_la-cddmp_f.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddmp_f.c' object='libcddgmp_la-cddmp_f.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcddgmp_la-cddmp_f.lo `test -f 'cddmp_f.c' || echo '$(srcdir)/'`cddmp_f.c libcddgmp_la-cddio_f.lo: cddio_f.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcddgmp_la-cddio_f.lo -MD -MP -MF $(DEPDIR)/libcddgmp_la-cddio_f.Tpo -c -o libcddgmp_la-cddio_f.lo `test -f 'cddio_f.c' || echo '$(srcdir)/'`cddio_f.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcddgmp_la-cddio_f.Tpo $(DEPDIR)/libcddgmp_la-cddio_f.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddio_f.c' object='libcddgmp_la-cddio_f.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcddgmp_la-cddio_f.lo `test -f 'cddio_f.c' || echo '$(srcdir)/'`cddio_f.c libcddgmp_la-cddlib_f.lo: cddlib_f.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcddgmp_la-cddlib_f.lo -MD -MP -MF $(DEPDIR)/libcddgmp_la-cddlib_f.Tpo -c -o libcddgmp_la-cddlib_f.lo `test -f 'cddlib_f.c' || echo '$(srcdir)/'`cddlib_f.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcddgmp_la-cddlib_f.Tpo $(DEPDIR)/libcddgmp_la-cddlib_f.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddlib_f.c' object='libcddgmp_la-cddlib_f.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcddgmp_la-cddlib_f.lo `test -f 'cddlib_f.c' || echo '$(srcdir)/'`cddlib_f.c libcddgmp_la-cddproj_f.lo: cddproj_f.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT libcddgmp_la-cddproj_f.lo -MD -MP -MF $(DEPDIR)/libcddgmp_la-cddproj_f.Tpo -c -o libcddgmp_la-cddproj_f.lo `test -f 'cddproj_f.c' || echo '$(srcdir)/'`cddproj_f.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libcddgmp_la-cddproj_f.Tpo $(DEPDIR)/libcddgmp_la-cddproj_f.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddproj_f.c' object='libcddgmp_la-cddproj_f.lo' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libcddgmp_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o libcddgmp_la-cddproj_f.lo `test -f 'cddproj_f.c' || echo '$(srcdir)/'`cddproj_f.c mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ done | $(am__base_list) | \ while read files; do \ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) check-am all-am: Makefile $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: $(BUILT_SOURCES) $(MAKE) $(AM_MAKEFLAGS) install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) clean: clean-am clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-includeHEADERS install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES .MAKE: all check install install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool cscopelist-am ctags \ ctags-am distclean distclean-compile distclean-generic \ distclean-libtool distclean-tags distdir dvi dvi-am html \ html-am info info-am install install-am install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am \ install-includeHEADERS install-info install-info-am \ install-libLTLIBRARIES install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-includeHEADERS \ uninstall-libLTLIBRARIES .PRECIOUS: Makefile # The _f.h and _f.c files are generated from the .h and .c files by the # following sed/awk script. @GMP_TRUE@define SED_GMP @GMP_TRUE@ sed -e 's/dd_/ddf_/g' \ @GMP_TRUE@ -e 's/cddf_/cdd_/g' \ @GMP_TRUE@ -e 's/mytype/myfloat/g' \ @GMP_TRUE@ -e 's/#include "cdd.h"/#include "cdd_f.h"/' \ @GMP_TRUE@ -e 's/#include "cddtypes.h"/#include "cddtypes_f.h"/' \ @GMP_TRUE@ -e 's/#include "cddmp.h"/#include "cddmp_f.h"/' \ @GMP_TRUE@ -e 's/__CDD_H/__CDD_HF/' \ @GMP_TRUE@ -e 's/__CDD_HFF/__CDD_HF/' \ @GMP_TRUE@ -e 's/__CDDMP_H/_CDDMP_HF/' \ @GMP_TRUE@ -e 's/__CDDTYPES_H/_CDDTYPES_HF/' \ @GMP_TRUE@ -e 's/GMPRATIONAL/ddf_GMPRATIONAL/g' \ @GMP_TRUE@ -e 's/ARITHMETIC/ddf_ARITHMETIC/g' \ @GMP_TRUE@ -e 's/CDOUBLE/ddf_CDOUBLE/g' \ @GMP_TRUE@ $< | awk 'BEGIN{print "/* generated automatically from $< */"}1' \ @GMP_TRUE@ > $@ @GMP_TRUE@endef # A rule to create a _f.h from a .h @GMP_TRUE@.h_f.h: @GMP_TRUE@ $(SED_GMP) # A rule to create a _f.c from a .c @GMP_TRUE@.c_f.c: @GMP_TRUE@ $(SED_GMP) # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: cddlib-0.94j/lib-src/cddcore.c0000644000175000017500000016176113301273112013071 00000000000000/* cddcore.c: Core Procedures for cddlib written by Komei Fukuda, fukuda@math.ethz.ch Version 0.94i, March 9, 2018 */ /* cddlib : C-library of the double description method for computing all vertices and extreme rays of the polyhedron P= {x : b - A x >= 0}. Please read COPYING (GNU General Public Licence) and the manual cddlibman.tex for detail. */ #include "setoper.h" /* set operation library header (Ver. June 1, 2000 or later) */ #include "cdd.h" #include "splitmix64.h" #include #include #include #include #include void dd_CheckAdjacency(dd_ConePtr cone, dd_RayPtr *RP1, dd_RayPtr *RP2, dd_boolean *adjacent) { dd_RayPtr TempRay; dd_boolean localdebug=dd_FALSE; static dd_rowset Face, Face1; static dd_rowrange last_m=0; if (last_m!=cone->m) { if (last_m>0){ set_free(Face); set_free(Face1); } set_initialize(&Face, cone->m); set_initialize(&Face1, cone->m); last_m=cone->m; } localdebug=dd_debug; *adjacent = dd_TRUE; set_int(Face1, (*RP1)->ZeroSet, (*RP2)->ZeroSet); set_int(Face, Face1, cone->AddedHalfspaces); if (set_card(Face)< cone->d - 2) { *adjacent = dd_FALSE; if (localdebug) { fprintf(stderr,"non adjacent: set_card(face) %ld < %ld = cone->d.\n", set_card(Face),cone->d); } return; } else if (cone->parent->NondegAssumed) { *adjacent = dd_TRUE; return; } TempRay = cone->FirstRay; while (TempRay != NULL && *adjacent) { if (TempRay != *RP1 && TempRay != *RP2) { set_int(Face1, TempRay->ZeroSet, cone->AddedHalfspaces); if (set_subset(Face, Face1)) *adjacent = dd_FALSE; } TempRay = TempRay->Next; } } void dd_Eliminate(dd_ConePtr cone, dd_RayPtr*Ptr) { /*eliminate the record pointed by Ptr^.Next*/ dd_RayPtr TempPtr; dd_colrange j; TempPtr = (*Ptr)->Next; (*Ptr)->Next = (*Ptr)->Next->Next; if (TempPtr == cone->FirstRay) /*Update the first pointer*/ cone->FirstRay = (*Ptr)->Next; if (TempPtr == cone->LastRay) /*Update the last pointer*/ cone->LastRay = *Ptr; /* Added, Marc Pfetsch 010219 */ for (j=0;j < cone->d;j++) dd_clear(TempPtr->Ray[j]); dd_clear(TempPtr->ARay); free(TempPtr->Ray); /* free the ray vector memory */ set_free(TempPtr->ZeroSet); /* free the ZeroSet memory */ free(TempPtr); /* free the dd_Ray structure memory */ cone->RayCount--; } void dd_SetInequalitySets(dd_ConePtr cone) { dd_rowrange i; set_emptyset(cone->GroundSet); set_emptyset(cone->EqualitySet); set_emptyset(cone->NonequalitySet); for (i = 1; i <= (cone->parent->m); i++){ set_addelem(cone->GroundSet, i); if (cone->parent->EqualityIndex[i]==1) set_addelem(cone->EqualitySet,i); if (cone->parent->EqualityIndex[i]==-1) set_addelem(cone->NonequalitySet,i); } } void dd_AValue(mytype *val, dd_colrange d_size, dd_Amatrix A, mytype *p, dd_rowrange i) { /*return the ith component of the vector A x p */ dd_colrange j; mytype x; dd_init(x); dd_set(*val,dd_purezero); /* Changed by Marc Pfetsch 010219 */ for (j = 0; j < d_size; j++){ dd_mul(x,A[i - 1][j], p[j]); dd_add(*val, *val, x); } dd_clear(x); } void dd_StoreRay1(dd_ConePtr cone, mytype *p, dd_boolean *feasible) { /* Original ray storing routine when RelaxedEnumeration is dd_FALSE */ dd_rowrange i,k,fii=cone->m+1; dd_colrange j; mytype temp; dd_RayPtr RR; dd_boolean localdebug=dd_debug; dd_init(temp); RR=cone->LastRay; *feasible = dd_TRUE; set_initialize(&(RR->ZeroSet),cone->m); for (j = 0; j < cone->d; j++){ dd_set(RR->Ray[j],p[j]); } for (i = 1; i <= cone->m; i++) { k=cone->OrderVector[i]; dd_AValue(&temp, cone->d, cone->A, p, k); if (localdebug) { fprintf(stderr,"dd_StoreRay1: dd_AValue at row %ld =",k); dd_WriteNumber(stderr, temp); fprintf(stderr,"\n"); } if (dd_EqualToZero(temp)) { set_addelem(RR->ZeroSet, k); if (localdebug) { fprintf(stderr,"recognized zero!\n"); } } if (dd_Negative(temp)){ if (localdebug) { fprintf(stderr,"recognized negative!\n"); } *feasible = dd_FALSE; if (fii>cone->m) fii=i; /* the first violating inequality index */ if (localdebug) { fprintf(stderr,"this ray is not feasible, neg comp = %ld\n", fii); dd_WriteNumber(stderr, temp); fprintf(stderr,"\n"); } } } RR->FirstInfeasIndex=fii; RR->feasible = *feasible; dd_clear(temp); } void dd_StoreRay2(dd_ConePtr cone, mytype *p, dd_boolean *feasible, dd_boolean *weaklyfeasible) /* Ray storing routine when RelaxedEnumeration is dd_TRUE. weaklyfeasible is true iff it is feasible with the strict_inequality conditions deleted. */ { dd_RayPtr RR; dd_rowrange i,k,fii=cone->m+1; dd_colrange j; mytype temp; dd_boolean localdebug=dd_debug; dd_init(temp); RR=cone->LastRay; localdebug=dd_debug; *feasible = dd_TRUE; *weaklyfeasible = dd_TRUE; set_initialize(&(RR->ZeroSet),cone->m); for (j = 0; j < cone->d; j++){ dd_set(RR->Ray[j],p[j]); } for (i = 1; i <= cone->m; i++) { k=cone->OrderVector[i]; dd_AValue(&temp, cone->d, cone->A, p, k); if (dd_EqualToZero(temp)){ set_addelem(RR->ZeroSet, k); if (cone->parent->EqualityIndex[k]==-1) *feasible=dd_FALSE; /* strict inequality required */ } /* if (temp < -zero){ */ if (dd_Negative(temp)){ *feasible = dd_FALSE; if (fii>cone->m && cone->parent->EqualityIndex[k]>=0) { fii=i; /* the first violating inequality index */ *weaklyfeasible=dd_FALSE; } } } RR->FirstInfeasIndex=fii; RR->feasible = *feasible; dd_clear(temp); } void dd_AddRay(dd_ConePtr cone, mytype *p) { dd_boolean feasible, weaklyfeasible; dd_colrange j; if (cone->FirstRay == NULL) { cone->FirstRay = (dd_RayPtr) malloc(sizeof(dd_RayType)); cone->FirstRay->Ray = (mytype *) calloc(cone->d, sizeof(mytype)); for (j=0; jd; j++) dd_init(cone->FirstRay->Ray[j]); dd_init(cone->FirstRay->ARay); if (dd_debug) fprintf(stderr,"Create the first ray pointer\n"); cone->LastRay = cone->FirstRay; cone->ArtificialRay->Next = cone->FirstRay; } else { cone->LastRay->Next = (dd_RayPtr) malloc(sizeof(dd_RayType)); cone->LastRay->Next->Ray = (mytype *) calloc(cone->d, sizeof(mytype)); for (j=0; jd; j++) dd_init(cone->LastRay->Next->Ray[j]); dd_init(cone->LastRay->Next->ARay); if (dd_debug) fprintf(stderr,"Create a new ray pointer\n"); cone->LastRay = cone->LastRay->Next; } cone->LastRay->Next = NULL; cone->RayCount++; cone->TotalRayCount++; if (dd_debug) { if (cone->TotalRayCount % 100 == 0) { fprintf(stderr,"*Rays (Total, Currently Active, Feasible) =%8ld%8ld%8ld\n", cone->TotalRayCount, cone->RayCount, cone->FeasibleRayCount); } } if (cone->parent->RelaxedEnumeration){ dd_StoreRay2(cone, p, &feasible, &weaklyfeasible); if (weaklyfeasible) (cone->WeaklyFeasibleRayCount)++; } else { dd_StoreRay1(cone, p, &feasible); if (feasible) (cone->WeaklyFeasibleRayCount)++; /* weaklyfeasible is equiv. to feasible in this case. */ } if (!feasible) return; else { (cone->FeasibleRayCount)++; } } void dd_AddArtificialRay(dd_ConePtr cone) { dd_Arow zerovector; dd_colrange j,d1; dd_boolean feasible; if (cone->d<=0) d1=1; else d1=cone->d; dd_InitializeArow(d1, &zerovector); if (cone->ArtificialRay != NULL) { fprintf(stderr,"Warning !!! FirstRay in not nil. Illegal Call\n"); free(zerovector); /* 086 */ return; } cone->ArtificialRay = (dd_RayPtr) malloc(sizeof(dd_RayType)); cone->ArtificialRay->Ray = (mytype *) calloc(d1, sizeof(mytype)); for (j=0; jArtificialRay->Ray[j]); dd_init(cone->ArtificialRay->ARay); if (dd_debug) fprintf(stderr,"Create the artificial ray pointer\n"); cone->LastRay=cone->ArtificialRay; dd_StoreRay1(cone, zerovector, &feasible); /* This stores a vector to the record pointed by cone->LastRay */ cone->ArtificialRay->Next = NULL; for (j = 0; j < d1; j++){ dd_clear(zerovector[j]); } free(zerovector); /* 086 */ } void dd_ConditionalAddEdge(dd_ConePtr cone, dd_RayPtr Ray1, dd_RayPtr Ray2, dd_RayPtr ValidFirstRay) { long it,it_row,fii1,fii2,fmin,fmax; dd_boolean adjacent,lastchance; dd_RayPtr TempRay,Rmin,Rmax; dd_AdjacencyType *NewEdge; dd_boolean localdebug=dd_FALSE; dd_rowset ZSmin, ZSmax; static dd_rowset Face, Face1; static dd_rowrange last_m=0; if (last_m!=cone->m) { if (last_m>0){ set_free(Face); set_free(Face1); } set_initialize(&Face, cone->m); set_initialize(&Face1, cone->m); last_m=cone->m; } fii1=Ray1->FirstInfeasIndex; fii2=Ray2->FirstInfeasIndex; if (fii1ZeroSet; ZSmax = Rmax->ZeroSet; if (localdebug) { fprintf(stderr,"dd_ConditionalAddEdge: FMIN = %ld (row%ld) FMAX=%ld\n", fmin, cone->OrderVector[fmin], fmax); } if (fmin==fmax){ if (localdebug) fprintf(stderr,"dd_ConditionalAddEdge: equal FII value-> No edge added\n"); } else if (set_member(cone->OrderVector[fmin],ZSmax)){ if (localdebug) fprintf(stderr,"dd_ConditionalAddEdge: No strong separation -> No edge added\n"); } else { /* the pair will be separated at the iteration fmin */ lastchance=dd_TRUE; /* flag to check it will be the last chance to store the edge candidate */ set_int(Face1, ZSmax, ZSmin); (cone->count_int)++; if (localdebug){ fprintf(stderr,"Face: "); for (it=1; it<=cone->m; it++) { it_row=cone->OrderVector[it]; if (set_member(it_row, Face1)) fprintf(stderr,"%ld ",it_row); } fprintf(stderr,"\n"); } for (it=cone->Iteration+1; it < fmin && lastchance; it++){ it_row=cone->OrderVector[it]; if (cone->parent->EqualityIndex[it_row]>=0 && set_member(it_row, Face1)){ lastchance=dd_FALSE; (cone->count_int_bad)++; if (localdebug){ fprintf(stderr,"There will be another chance iteration %ld (row %ld) to store the pair\n", it, it_row); } } } if (lastchance){ adjacent = dd_TRUE; (cone->count_int_good)++; /* adjacent checking */ set_int(Face, Face1, cone->AddedHalfspaces); if (localdebug){ fprintf(stderr,"Check adjacency\n"); fprintf(stderr,"AddedHalfspaces: "); set_fwrite(stderr,cone->AddedHalfspaces); fprintf(stderr,"Face: "); for (it=1; it<=cone->m; it++) { it_row=cone->OrderVector[it]; if (set_member(it_row, Face)) fprintf(stderr,"%ld ",it_row); } fprintf(stderr,"\n"); } if (set_card(Face)< cone->d - 2) { adjacent = dd_FALSE; } else if (cone->parent->NondegAssumed) { adjacent = dd_TRUE; } else{ TempRay = ValidFirstRay; /* the first ray for adjacency checking */ while (TempRay != NULL && adjacent) { if (TempRay != Ray1 && TempRay != Ray2) { set_int(Face1, TempRay->ZeroSet, cone->AddedHalfspaces); if (set_subset(Face, Face1)) { if (localdebug) set_fwrite(stderr,Face1); adjacent = dd_FALSE; } } TempRay = TempRay->Next; } } if (adjacent){ if (localdebug) fprintf(stderr,"The pair is adjacent and the pair must be stored for iteration %ld (row%ld)\n", fmin, cone->OrderVector[fmin]); NewEdge=(dd_AdjacencyPtr) malloc(sizeof *NewEdge); NewEdge->Ray1=Rmax; /* save the one remains in iteration fmin in the first */ NewEdge->Ray2=Rmin; /* save the one deleted in iteration fmin in the second */ NewEdge->Next=NULL; (cone->EdgeCount)++; (cone->TotalEdgeCount)++; if (cone->Edges[fmin]==NULL){ cone->Edges[fmin]=NewEdge; if (localdebug) fprintf(stderr,"Create a new edge list of %ld\n", fmin); }else{ NewEdge->Next=cone->Edges[fmin]; cone->Edges[fmin]=NewEdge; } } } } } void dd_CreateInitialEdges(dd_ConePtr cone) { dd_RayPtr Ptr1, Ptr2; dd_rowrange fii1,fii2; long count=0; dd_boolean adj,localdebug=dd_FALSE; cone->Iteration=cone->d; /* CHECK */ if (cone->FirstRay ==NULL || cone->LastRay==NULL){ /* fprintf(stderr,"Warning: dd_ CreateInitialEdges called with NULL pointer(s)\n"); */ goto _L99; } Ptr1=cone->FirstRay; while(Ptr1!=cone->LastRay && Ptr1!=NULL){ fii1=Ptr1->FirstInfeasIndex; Ptr2=Ptr1->Next; while(Ptr2!=NULL){ fii2=Ptr2->FirstInfeasIndex; count++; if (localdebug) fprintf(stderr,"dd_ CreateInitialEdges: edge %ld \n",count); dd_CheckAdjacency(cone, &Ptr1, &Ptr2, &adj); if (fii1!=fii2 && adj) dd_ConditionalAddEdge(cone, Ptr1, Ptr2, cone->FirstRay); Ptr2=Ptr2->Next; } Ptr1=Ptr1->Next; } _L99:; } void dd_UpdateEdges(dd_ConePtr cone, dd_RayPtr RRbegin, dd_RayPtr RRend) /* This procedure must be called after the ray list is sorted by dd_EvaluateARay2 so that FirstInfeasIndex's are monotonically increasing. */ { dd_RayPtr Ptr1, Ptr2begin, Ptr2; dd_rowrange fii1; dd_boolean ptr2found,quit,localdebug=dd_FALSE; long count=0,pos1, pos2; float workleft,prevworkleft=110.0,totalpairs; totalpairs=(cone->ZeroRayCount-1.0)*(cone->ZeroRayCount-2.0)+1.0; Ptr2begin = NULL; if (RRbegin ==NULL || RRend==NULL){ if (1) fprintf(stderr,"Warning: dd_UpdateEdges called with NULL pointer(s)\n"); goto _L99; } Ptr1=RRbegin; pos1=1; do{ ptr2found=dd_FALSE; quit=dd_FALSE; fii1=Ptr1->FirstInfeasIndex; pos2=2; for (Ptr2=Ptr1->Next; !ptr2found && !quit; Ptr2=Ptr2->Next,pos2++){ if (Ptr2->FirstInfeasIndex > fii1){ Ptr2begin=Ptr2; ptr2found=dd_TRUE; } else if (Ptr2==RRend) quit=dd_TRUE; } if (ptr2found){ quit=dd_FALSE; for (Ptr2=Ptr2begin; !quit ; Ptr2=Ptr2->Next){ count++; if (localdebug) fprintf(stderr,"dd_UpdateEdges: edge %ld \n",count); dd_ConditionalAddEdge(cone, Ptr1,Ptr2,RRbegin); if (Ptr2==RRend || Ptr2->Next==NULL) quit=dd_TRUE; } } Ptr1=Ptr1->Next; pos1++; workleft = 100.0 * (cone->ZeroRayCount-pos1) * (cone->ZeroRayCount - pos1-1.0) / totalpairs; if (cone->ZeroRayCount>=500 && dd_debug && pos1%10 ==0 && prevworkleft-workleft>=10 ) { fprintf(stderr,"*Work of iteration %5ld(/%ld): %4ld/%4ld => %4.1f%% left\n", cone->Iteration, cone->m, pos1, cone->ZeroRayCount, workleft); prevworkleft=workleft; } }while(Ptr1!=RRend && Ptr1!=NULL); _L99:; } void dd_FreeDDMemory0(dd_ConePtr cone) { dd_RayPtr Ptr, PrevPtr; long count; dd_colrange j; dd_boolean localdebug=dd_FALSE; /* THIS SHOULD BE REWRITTEN carefully */ PrevPtr=cone->ArtificialRay; if (PrevPtr!=NULL){ count=0; for (Ptr=cone->ArtificialRay->Next; Ptr!=NULL; Ptr=Ptr->Next){ /* Added Marc Pfetsch 2/19/01 */ for (j=0;j < cone->d;j++) dd_clear(PrevPtr->Ray[j]); dd_clear(PrevPtr->ARay); free(PrevPtr->Ray); free(PrevPtr->ZeroSet); free(PrevPtr); count++; PrevPtr=Ptr; }; cone->FirstRay=NULL; /* Added Marc Pfetsch 010219 */ for (j=0;j < cone->d;j++) dd_clear(cone->LastRay->Ray[j]); dd_clear(cone->LastRay->ARay); free(cone->LastRay->Ray); cone->LastRay->Ray = NULL; set_free(cone->LastRay->ZeroSet); cone->LastRay->ZeroSet = NULL; free(cone->LastRay); cone->LastRay = NULL; cone->ArtificialRay=NULL; if (localdebug) fprintf(stderr,"%ld ray storage spaces freed\n",count); } /* must add (by Sato) */ free(cone->Edges); set_free(cone->GroundSet); set_free(cone->EqualitySet); set_free(cone->NonequalitySet); set_free(cone->AddedHalfspaces); set_free(cone->WeaklyAddedHalfspaces); set_free(cone->InitialHalfspaces); free(cone->InitialRayIndex); free(cone->OrderVector); free(cone->newcol); /* Fixed by Shawn Rusaw. Originally it was cone->d instead of cone->d_alloc */ dd_FreeBmatrix(cone->d_alloc,cone->B); dd_FreeBmatrix(cone->d_alloc,cone->Bsave); /* Fixed by Marc Pfetsch 010219*/ dd_FreeAmatrix(cone->m_alloc,cone->d_alloc,cone->A); cone->A = NULL; free(cone); } void dd_FreeDDMemory(dd_PolyhedraPtr poly) { dd_FreeDDMemory0(poly->child); poly->child=NULL; } void dd_FreePolyhedra(dd_PolyhedraPtr poly) { dd_bigrange i; if ((poly)->child != NULL) dd_FreeDDMemory(poly); dd_FreeAmatrix((poly)->m_alloc,poly->d_alloc, poly->A); dd_FreeArow((poly)->d_alloc,(poly)->c); free((poly)->EqualityIndex); if (poly->AincGenerated){ for (i=1; i<=poly->m1; i++){ set_free(poly->Ainc[i-1]); } free(poly->Ainc); set_free(poly->Ared); set_free(poly->Adom); poly->Ainc=NULL; } free(poly); } void dd_Normalize(dd_colrange d_size, mytype *V) { long j,jmin=0; mytype temp,min; dd_boolean nonzerofound=dd_FALSE; if (d_size>0){ dd_init(min); dd_init(temp); dd_abs(min,V[0]); jmin=0; /* set the minmizer to 0 */ if (dd_Positive(min)) nonzerofound=dd_TRUE; for (j = 1; j < d_size; j++) { dd_abs(temp,V[j]); if (dd_Positive(temp)){ if (!nonzerofound || dd_Smaller(temp,min)){ nonzerofound=dd_TRUE; dd_set(min, temp); jmin=j; } } } if (dd_Positive(min)){ for (j = 0; j < d_size; j++) dd_div(V[j], V[j], min); } dd_clear(min); dd_clear(temp); } } void dd_ZeroIndexSet(dd_rowrange m_size, dd_colrange d_size, dd_Amatrix A, mytype *x, dd_rowset ZS) { dd_rowrange i; mytype temp; /* Changed by Marc Pfetsch 010219 */ dd_init(temp); set_emptyset(ZS); for (i = 1; i <= m_size; i++) { dd_AValue(&temp, d_size, A, x, i); if (dd_EqualToZero(temp)) set_addelem(ZS, i); } /* Changed by Marc Pfetsch 010219 */ dd_clear(temp); } void dd_CopyBmatrix(dd_colrange d_size, dd_Bmatrix T, dd_Bmatrix TCOPY) { dd_rowrange i; dd_colrange j; for (i=0; i < d_size; i++) { for (j=0; j < d_size; j++) { dd_set(TCOPY[i][j],T[i][j]); } } } void dd_CopyArow(mytype *acopy, mytype *a, dd_colrange d) { dd_colrange j; for (j = 0; j < d; j++) { dd_set(acopy[j],a[j]); } } void dd_CopyNormalizedArow(mytype *acopy, mytype *a, dd_colrange d) { dd_CopyArow(acopy, a, d); dd_Normalize(d,acopy); } void dd_CopyAmatrix(mytype **Acopy, mytype **A, dd_rowrange m, dd_colrange d) { dd_rowrange i; for (i = 0; i< m; i++) { dd_CopyArow(Acopy[i],A[i],d); } } void dd_CopyNormalizedAmatrix(mytype **Acopy, mytype **A, dd_rowrange m, dd_colrange d) { dd_rowrange i; for (i = 0; i< m; i++) { dd_CopyNormalizedArow(Acopy[i],A[i],d); } } void dd_PermuteCopyAmatrix(mytype **Acopy, mytype **A, dd_rowrange m, dd_colrange d, dd_rowindex roworder) { dd_rowrange i; for (i = 1; i<= m; i++) { dd_CopyArow(Acopy[i-1],A[roworder[i]-1],d); } } void dd_PermutePartialCopyAmatrix(mytype **Acopy, mytype **A, dd_rowrange m, dd_colrange d, dd_rowindex roworder,dd_rowrange p, dd_rowrange q) { /* copy the rows of A whose roworder is positive. roworder[i] is the row index of the copied row. */ dd_rowrange i,k; k=0; for (i = 1; i<= m; i++) { if (roworder[i]>0) dd_CopyArow(Acopy[roworder[i]-1],A[i-1],d); } } void dd_InitializeArow(dd_colrange d,dd_Arow *a) { dd_colrange j; if (d>0) *a=(mytype*) calloc(d,sizeof(mytype)); for (j = 0; j < d; j++) { dd_init((*a)[j]); } } void dd_InitializeAmatrix(dd_rowrange m,dd_colrange d,dd_Amatrix *A) { dd_rowrange i; if (m>0) (*A)=(mytype**) calloc(m,sizeof(mytype*)); for (i = 0; i < m; i++) { dd_InitializeArow(d,&((*A)[i])); } } void dd_FreeAmatrix(dd_rowrange m,dd_colrange d,dd_Amatrix A) { dd_rowrange i; dd_colrange j; for (i = 0; i < m; i++) { for (j = 0; j < d; j++) { dd_clear(A[i][j]); } } if (A!=NULL) { for (i = 0; i < m; i++) { free(A[i]); } free(A); } } void dd_FreeArow(dd_colrange d, dd_Arow a) { dd_colrange j; for (j = 0; j < d; j++) { dd_clear(a[j]); } free(a); } void dd_InitializeBmatrix(dd_colrange d,dd_Bmatrix *B) { dd_colrange i,j; (*B)=(mytype**) calloc(d,sizeof(mytype*)); for (j = 0; j < d; j++) { (*B)[j]=(mytype*) calloc(d,sizeof(mytype)); } for (i = 0; i < d; i++) { for (j = 0; j < d; j++) { dd_init((*B)[i][j]); } } } void dd_FreeBmatrix(dd_colrange d,dd_Bmatrix B) { dd_colrange i,j; for (i = 0; i < d; i++) { for (j = 0; j < d; j++) { dd_clear(B[i][j]); } } if (B!=NULL) { for (j = 0; j < d; j++) { free(B[j]); } free(B); } } dd_SetFamilyPtr dd_CreateSetFamily(dd_bigrange fsize, dd_bigrange ssize) { dd_SetFamilyPtr F; dd_bigrange i,f0,f1,s0,s1; if (fsize<=0) { f0=0; f1=1; /* if fsize<=0, the fsize is set to zero and the created size is one */ } else { f0=fsize; f1=fsize; } if (ssize<=0) { s0=0; s1=1; /* if ssize<=0, the ssize is set to zero and the created size is one */ } else { s0=ssize; s1=ssize; } F=(dd_SetFamilyPtr) malloc (sizeof(dd_SetFamilyType)); F->set=(set_type*) calloc(f1,sizeof(set_type)); for (i=0; iset[i]), s1); } F->famsize=f0; F->setsize=s0; return F; } void dd_FreeSetFamily(dd_SetFamilyPtr F) { dd_bigrange i,f1; if (F!=NULL){ if (F->famsize<=0) f1=1; else f1=F->famsize; /* the smallest created size is one */ for (i=0; iset[i]); } free(F->set); free(F); } } dd_MatrixPtr dd_CreateMatrix(dd_rowrange m_size,dd_colrange d_size) { dd_MatrixPtr M; dd_rowrange m0,m1; dd_colrange d0,d1; if (m_size<=0){ m0=0; m1=1; /* if m_size <=0, the number of rows is set to zero, the actual size is 1 */ } else { m0=m_size; m1=m_size; } if (d_size<=0){ d0=0; d1=1; /* if d_size <=0, the number of cols is set to zero, the actual size is 1 */ } else { d0=d_size; d1=d_size; } M=(dd_MatrixPtr) malloc (sizeof(dd_MatrixType)); dd_InitializeAmatrix(m1,d1,&(M->matrix)); dd_InitializeArow(d1,&(M->rowvec)); M->rowsize=m0; set_initialize(&(M->linset), m1); M->colsize=d0; M->objective=dd_LPnone; M->numbtype=dd_Unknown; M->representation=dd_Unspecified; return M; } void dd_FreeMatrix(dd_MatrixPtr M) { dd_rowrange m1; dd_colrange d1; if (M!=NULL) { if (M->rowsize<=0) m1=1; else m1=M->rowsize; if (M->colsize<=0) d1=1; else d1=M->colsize; if (M!=NULL) { dd_FreeAmatrix(m1,d1,M->matrix); dd_FreeArow(d1,M->rowvec); set_free(M->linset); free(M); } } } void dd_SetToIdentity(dd_colrange d_size, dd_Bmatrix T) { dd_colrange j1, j2; for (j1 = 1; j1 <= d_size; j1++) { for (j2 = 1; j2 <= d_size; j2++) { if (j1 == j2) dd_set(T[j1 - 1][j2 - 1],dd_one); else dd_set(T[j1 - 1][j2 - 1],dd_purezero); } } } void dd_ColumnReduce(dd_ConePtr cone) { dd_colrange j,j1=0; dd_rowrange i; dd_boolean localdebug=dd_FALSE; for (j=1;j<=cone->d;j++) { if (cone->InitialRayIndex[j]>0){ j1=j1+1; if (j1m; i++) dd_set(cone->A[i-1][j1-1],cone->A[i-1][j-1]); cone->newcol[j]=j1; if (localdebug){ fprintf(stderr,"shifting the column %ld to column %ld\n", j, j1); } /* shifting forward */ } } else { cone->newcol[j]=0; if (localdebug) { fprintf(stderr,"a generator (or an equation) of the linearity space: "); for (i=1; i<=cone->d; i++) dd_WriteNumber(stderr, cone->B[i-1][j-1]); fprintf(stderr,"\n"); } } } cone->d=j1; /* update the dimension. cone->d_orig remembers the old. */ dd_CopyBmatrix(cone->d_orig, cone->B, cone->Bsave); /* save the dual basis inverse as Bsave. This matrix contains the linearity space generators. */ cone->ColReduced=dd_TRUE; } long dd_MatrixRank(dd_MatrixPtr M, dd_rowset ignoredrows, dd_colset ignoredcols, dd_rowset *rowbasis, dd_colset *colbasis) { dd_boolean stop, chosen, localdebug=dd_debug; dd_rowset NopivotRow,PriorityRow; dd_colset ColSelected; dd_Bmatrix B; dd_rowindex roworder; dd_rowrange r; dd_colrange s; long rank; rank = 0; stop = dd_FALSE; set_initialize(&ColSelected, M->colsize); set_initialize(&NopivotRow, M->rowsize); set_initialize(rowbasis, M->rowsize); set_initialize(colbasis, M->colsize); set_initialize(&PriorityRow, M->rowsize); set_copy(NopivotRow,ignoredrows); set_copy(ColSelected,ignoredcols); dd_InitializeBmatrix(M->colsize, &B); dd_SetToIdentity(M->colsize, B); roworder=(long *)calloc(M->rowsize+1,sizeof(long)); for (r=0; rrowsize; r++){roworder[r+1]=r+1; } do { /* Find a set of rows for a basis */ dd_SelectPivot2(M->rowsize, M->colsize,M->matrix,B,dd_MinIndex,roworder, PriorityRow,M->rowsize, NopivotRow, ColSelected, &r, &s, &chosen); if (dd_debug && chosen) fprintf(stderr,"Procedure dd_MatrixRank: pivot on (r,s) =(%ld, %ld).\n", r, s); if (chosen) { set_addelem(NopivotRow, r); set_addelem(*rowbasis, r); set_addelem(ColSelected, s); set_addelem(*colbasis, s); rank++; dd_GaussianColumnPivot(M->rowsize, M->colsize, M->matrix, B, r, s); if (localdebug) dd_WriteBmatrix(stderr,M->colsize,B); } else { stop=dd_TRUE; } if (rank==M->colsize) stop = dd_TRUE; } while (!stop); dd_FreeBmatrix(M->colsize,B); free(roworder); set_free(ColSelected); set_free(NopivotRow); set_free(PriorityRow); return rank; } void dd_FindBasis(dd_ConePtr cone, long *rank) { dd_boolean stop, chosen, localdebug=dd_debug; dd_rowset NopivotRow; dd_colset ColSelected; dd_rowrange r; dd_colrange j,s; *rank = 0; stop = dd_FALSE; for (j=0;j<=cone->d;j++) cone->InitialRayIndex[j]=0; set_emptyset(cone->InitialHalfspaces); set_initialize(&ColSelected, cone->d); set_initialize(&NopivotRow, cone->m); set_copy(NopivotRow,cone->NonequalitySet); dd_SetToIdentity(cone->d, cone->B); do { /* Find a set of rows for a basis */ dd_SelectPivot2(cone->m, cone->d,cone->A,cone->B,cone->HalfspaceOrder,cone->OrderVector, cone->EqualitySet,cone->m, NopivotRow, ColSelected, &r, &s, &chosen); if (dd_debug && chosen) fprintf(stderr,"Procedure dd_FindBasis: pivot on (r,s) =(%ld, %ld).\n", r, s); if (chosen) { set_addelem(cone->InitialHalfspaces, r); set_addelem(NopivotRow, r); set_addelem(ColSelected, s); cone->InitialRayIndex[s]=r; /* cone->InitialRayIndex[s] stores the corr. row index */ (*rank)++; dd_GaussianColumnPivot(cone->m, cone->d, cone->A, cone->B, r, s); if (localdebug) dd_WriteBmatrix(stderr,cone->d,cone->B); } else { stop=dd_TRUE; } if (*rank==cone->d) stop = dd_TRUE; } while (!stop); set_free(ColSelected); set_free(NopivotRow); } void dd_FindInitialRays(dd_ConePtr cone, dd_boolean *found) { dd_rowset CandidateRows; dd_rowrange i; long rank; dd_RowOrderType roworder_save=dd_LexMin; *found = dd_FALSE; set_initialize(&CandidateRows, cone->m); if (cone->parent->InitBasisAtBottom==dd_TRUE) { roworder_save=cone->HalfspaceOrder; cone->HalfspaceOrder=dd_MaxIndex; cone->PreOrderedRun=dd_FALSE; } else cone->PreOrderedRun=dd_TRUE; if (dd_debug) dd_WriteBmatrix(stderr, cone->d, cone->B); for (i = 1; i <= cone->m; i++) if (!set_member(i,cone->NonequalitySet)) set_addelem(CandidateRows, i); /*all rows not in NonequalitySet are candidates for initial cone*/ dd_FindBasis(cone, &rank); if (dd_debug) dd_WriteBmatrix(stderr, cone->d, cone->B); if (dd_debug) fprintf(stderr,"dd_FindInitialRays: rank of Amatrix = %ld\n", rank); cone->LinearityDim=cone->d - rank; if (dd_debug) fprintf(stderr,"Linearity Dimension = %ld\n", cone->LinearityDim); if (cone->LinearityDim > 0) { dd_ColumnReduce(cone); dd_FindBasis(cone, &rank); } if (!set_subset(cone->EqualitySet,cone->InitialHalfspaces)) { if (dd_debug) { fprintf(stderr,"Equality set is dependent. Equality Set and an initial basis:\n"); set_fwrite(stderr,cone->EqualitySet); set_fwrite(stderr,cone->InitialHalfspaces); }; } *found = dd_TRUE; set_free(CandidateRows); if (cone->parent->InitBasisAtBottom==dd_TRUE) { cone->HalfspaceOrder=roworder_save; } if (cone->HalfspaceOrder==dd_MaxCutoff|| cone->HalfspaceOrder==dd_MinCutoff|| cone->HalfspaceOrder==dd_MixCutoff){ cone->PreOrderedRun=dd_FALSE; } else cone->PreOrderedRun=dd_TRUE; } void dd_CheckEquality(dd_colrange d_size, dd_RayPtr*RP1, dd_RayPtr*RP2, dd_boolean *equal) { long j; if (dd_debug) fprintf(stderr,"Check equality of two rays\n"); *equal = dd_TRUE; j = 1; while (j <= d_size && *equal) { if (!dd_Equal((*RP1)->Ray[j - 1],(*RP2)->Ray[j - 1])) *equal = dd_FALSE; j++; } if (*equal) fprintf(stderr,"Equal records found !!!!\n"); } void dd_CreateNewRay(dd_ConePtr cone, dd_RayPtr Ptr1, dd_RayPtr Ptr2, dd_rowrange ii) { /*Create a new ray by taking a linear combination of two rays*/ dd_colrange j; mytype a1, a2, v1, v2; static dd_Arow NewRay; static dd_colrange last_d=0; dd_boolean localdebug=dd_debug; dd_init(a1); dd_init(a2); dd_init(v1); dd_init(v2); if (last_d!=cone->d){ if (last_d>0) { for (j=0; jd,sizeof(mytype)); for (j=0; jd; j++) dd_init(NewRay[j]); last_d=cone->d; } dd_AValue(&a1, cone->d, cone->A, Ptr1->Ray, ii); dd_AValue(&a2, cone->d, cone->A, Ptr2->Ray, ii); if (localdebug) { fprintf(stderr,"CreatNewRay: Ray1 ="); dd_WriteArow(stderr, Ptr1->Ray, cone->d); fprintf(stderr,"CreatNewRay: Ray2 ="); dd_WriteArow(stderr, Ptr2->Ray, cone->d); } dd_abs(v1,a1); dd_abs(v2,a2); if (localdebug){ fprintf(stderr,"dd_AValue1 and ABS"); dd_WriteNumber(stderr,a1); dd_WriteNumber(stderr,v1); fprintf(stderr,"\n"); fprintf(stderr,"dd_AValue2 and ABS"); dd_WriteNumber(stderr,a2); dd_WriteNumber(stderr,v2); fprintf(stderr,"\n"); } for (j = 0; j < cone->d; j++){ dd_LinearComb(NewRay[j], Ptr1->Ray[j],v2,Ptr2->Ray[j],v1); } if (localdebug) { fprintf(stderr,"CreatNewRay: New ray ="); dd_WriteArow(stderr, NewRay, cone->d); } dd_Normalize(cone->d, NewRay); if (localdebug) { fprintf(stderr,"CreatNewRay: dd_Normalized ray ="); dd_WriteArow(stderr, NewRay, cone->d); } dd_AddRay(cone, NewRay); dd_clear(a1); dd_clear(a2); dd_clear(v1); dd_clear(v2); } void dd_EvaluateARay1(dd_rowrange i, dd_ConePtr cone) /* Evaluate the ith component of the vector A x RD.Ray and rearrange the linked list so that the infeasible rays with respect to i will be placed consecutively from First */ { dd_colrange j; mytype temp,tnext; dd_RayPtr Ptr, PrevPtr, TempPtr; dd_init(temp); dd_init(tnext); Ptr = cone->FirstRay; PrevPtr = cone->ArtificialRay; if (PrevPtr->Next != Ptr) { fprintf(stderr,"Error. Artificial Ray does not point to FirstRay!!!\n"); } while (Ptr != NULL) { dd_set(temp,dd_purezero); for (j = 0; j < cone->d; j++){ dd_mul(tnext,cone->A[i - 1][j],Ptr->Ray[j]); dd_add(temp,temp,tnext); } dd_set(Ptr->ARay,temp); /* if ( temp <= -zero && Ptr != cone->FirstRay) {*/ if ( dd_Negative(temp) && Ptr != cone->FirstRay) { /* fprintf(stderr,"Moving an infeasible record w.r.t. %ld to FirstRay\n",i); */ if (Ptr==cone->LastRay) cone->LastRay=PrevPtr; TempPtr=Ptr; Ptr = Ptr->Next; PrevPtr->Next = Ptr; cone->ArtificialRay->Next = TempPtr; TempPtr->Next = cone->FirstRay; cone->FirstRay = TempPtr; } else { PrevPtr = Ptr; Ptr = Ptr->Next; } } dd_clear(temp); dd_clear(tnext); } void dd_EvaluateARay2(dd_rowrange i, dd_ConePtr cone) /* Evaluate the ith component of the vector A x RD.Ray and rearrange the linked list so that the infeasible rays with respect to i will be placed consecutively from First. Also for all feasible rays, "positive" rays and "zero" rays will be placed consecutively. */ { dd_colrange j; mytype temp,tnext; dd_RayPtr Ptr, NextPtr; dd_boolean zerofound=dd_FALSE,negfound=dd_FALSE,posfound=dd_FALSE; if (cone==NULL || cone->TotalRayCount<=0) goto _L99; dd_init(temp); dd_init(tnext); cone->PosHead=NULL;cone->ZeroHead=NULL;cone->NegHead=NULL; cone->PosLast=NULL;cone->ZeroLast=NULL;cone->NegLast=NULL; Ptr = cone->FirstRay; while (Ptr != NULL) { NextPtr=Ptr->Next; /* remember the Next record */ Ptr->Next=NULL; /* then clear the Next pointer */ dd_set(temp,dd_purezero); for (j = 0; j < cone->d; j++){ dd_mul(tnext,cone->A[i - 1][j],Ptr->Ray[j]); dd_add(temp,temp,tnext); } dd_set(Ptr->ARay,temp); /* if ( temp < -zero) {*/ if ( dd_Negative(temp)) { if (!negfound){ negfound=dd_TRUE; cone->NegHead=Ptr; cone->NegLast=Ptr; } else{ Ptr->Next=cone->NegHead; cone->NegHead=Ptr; } } /* else if (temp > zero){*/ else if (dd_Positive(temp)){ if (!posfound){ posfound=dd_TRUE; cone->PosHead=Ptr; cone->PosLast=Ptr; } else{ Ptr->Next=cone->PosHead; cone->PosHead=Ptr; } } else { if (!zerofound){ zerofound=dd_TRUE; cone->ZeroHead=Ptr; cone->ZeroLast=Ptr; } else{ Ptr->Next=cone->ZeroHead; cone->ZeroHead=Ptr; } } Ptr=NextPtr; } /* joining three neg, pos and zero lists */ if (negfound){ /* -list nonempty */ cone->FirstRay=cone->NegHead; if (posfound){ /* -list & +list nonempty */ cone->NegLast->Next=cone->PosHead; if (zerofound){ /* -list, +list, 0list all nonempty */ cone->PosLast->Next=cone->ZeroHead; cone->LastRay=cone->ZeroLast; } else{ /* -list, +list nonempty but 0list empty */ cone->LastRay=cone->PosLast; } } else{ /* -list nonempty & +list empty */ if (zerofound){ /* -list,0list nonempty & +list empty */ cone->NegLast->Next=cone->ZeroHead; cone->LastRay=cone->ZeroLast; } else { /* -list nonempty & +list,0list empty */ cone->LastRay=cone->NegLast; } } } else if (posfound){ /* -list empty & +list nonempty */ cone->FirstRay=cone->PosHead; if (zerofound){ /* -list empty & +list,0list nonempty */ cone->PosLast->Next=cone->ZeroHead; cone->LastRay=cone->ZeroLast; } else{ /* -list,0list empty & +list nonempty */ cone->LastRay=cone->PosLast; } } else{ /* -list,+list empty & 0list nonempty */ cone->FirstRay=cone->ZeroHead; cone->LastRay=cone->ZeroLast; } cone->ArtificialRay->Next=cone->FirstRay; cone->LastRay->Next=NULL; dd_clear(temp); dd_clear(tnext); _L99:; } void dd_DeleteNegativeRays(dd_ConePtr cone) /* Eliminate the infeasible rays with respect to i which are supposed to be consecutive from the head of the dd_Ray list, and sort the zero list assumed to be consecutive at the end of the list. */ { dd_rowrange fii,fiitest; mytype temp; dd_RayPtr Ptr, PrevPtr,NextPtr,ZeroPtr1,ZeroPtr0; dd_boolean found, completed, zerofound=dd_FALSE,negfound=dd_FALSE,posfound=dd_FALSE; dd_boolean localdebug=dd_FALSE; dd_init(temp); cone->PosHead=NULL;cone->ZeroHead=NULL;cone->NegHead=NULL; cone->PosLast=NULL;cone->ZeroLast=NULL;cone->NegLast=NULL; /* Delete the infeasible rays */ PrevPtr= cone->ArtificialRay; Ptr = cone->FirstRay; if (PrevPtr->Next != Ptr) fprintf(stderr,"Error at dd_DeleteNegativeRays: ArtificialRay does not point the FirstRay.\n"); completed=dd_FALSE; while (Ptr != NULL && !completed){ /* if ( (Ptr->ARay) < -zero ){ */ if ( dd_Negative(Ptr->ARay)){ dd_Eliminate(cone, &PrevPtr); Ptr=PrevPtr->Next; } else{ completed=dd_TRUE; } } /* Sort the zero rays */ Ptr = cone->FirstRay; cone->ZeroRayCount=0; while (Ptr != NULL) { NextPtr=Ptr->Next; /* remember the Next record */ dd_set(temp,Ptr->ARay); if (localdebug) {fprintf(stderr,"Ptr->ARay :"); dd_WriteNumber(stderr, temp);} /* if ( temp < -zero) {*/ if ( dd_Negative(temp)) { if (!negfound){ fprintf(stderr,"Error: An infeasible ray found after their removal\n"); negfound=dd_TRUE; } } /* else if (temp > zero){*/ else if (dd_Positive(temp)){ if (!posfound){ posfound=dd_TRUE; cone->PosHead=Ptr; cone->PosLast=Ptr; } else{ cone->PosLast=Ptr; } } else { (cone->ZeroRayCount)++; if (!zerofound){ zerofound=dd_TRUE; cone->ZeroHead=Ptr; cone->ZeroLast=Ptr; cone->ZeroLast->Next=NULL; } else{/* Find a right position to store the record sorted w.r.t. FirstInfeasIndex */ fii=Ptr->FirstInfeasIndex; found=dd_FALSE; ZeroPtr1=NULL; for (ZeroPtr0=cone->ZeroHead; !found && ZeroPtr0!=NULL ; ZeroPtr0=ZeroPtr0->Next){ fiitest=ZeroPtr0->FirstInfeasIndex; if (fiitest >= fii){ found=dd_TRUE; } else ZeroPtr1=ZeroPtr0; } /* fprintf(stderr,"insert position found \n %d index %ld\n",found, fiitest); */ if (!found){ /* the new record must be stored at the end of list */ cone->ZeroLast->Next=Ptr; cone->ZeroLast=Ptr; cone->ZeroLast->Next=NULL; } else{ if (ZeroPtr1==NULL){ /* store the new one at the head, and update the head ptr */ /* fprintf(stderr,"Insert at the head\n"); */ Ptr->Next=cone->ZeroHead; cone->ZeroHead=Ptr; } else{ /* store the new one inbetween ZeroPtr1 and 0 */ /* fprintf(stderr,"Insert inbetween\n"); */ Ptr->Next=ZeroPtr1->Next; ZeroPtr1->Next=Ptr; } } /* Ptr->Next=cone->ZeroHead; cone->ZeroHead=Ptr; */ } } Ptr=NextPtr; } /* joining the pos and zero lists */ if (posfound){ /* -list empty & +list nonempty */ cone->FirstRay=cone->PosHead; if (zerofound){ /* +list,0list nonempty */ cone->PosLast->Next=cone->ZeroHead; cone->LastRay=cone->ZeroLast; } else{ /* 0list empty & +list nonempty */ cone->LastRay=cone->PosLast; } } else{ /* +list empty & 0list nonempty */ cone->FirstRay=cone->ZeroHead; cone->LastRay=cone->ZeroLast; } cone->ArtificialRay->Next=cone->FirstRay; cone->LastRay->Next=NULL; dd_clear(temp); } void dd_FeasibilityIndices(long *fnum, long *infnum, dd_rowrange i, dd_ConePtr cone) { /*Evaluate the number of feasible rays and infeasible rays*/ /* w.r.t the hyperplane i*/ dd_colrange j; mytype temp, tnext; dd_RayPtr Ptr; dd_init(temp); dd_init(tnext); *fnum = 0; *infnum = 0; Ptr = cone->FirstRay; while (Ptr != NULL) { dd_set(temp,dd_purezero); for (j = 0; j < cone->d; j++){ dd_mul(tnext, cone->A[i - 1][j],Ptr->Ray[j]); dd_add(temp, temp, tnext); } if (dd_Nonnegative(temp)) (*fnum)++; else (*infnum)++; Ptr = Ptr->Next; } dd_clear(temp); dd_clear(tnext); } dd_boolean dd_LexSmaller(mytype *v1, mytype *v2, long dmax) { /* dmax is the size of vectors v1,v2 */ dd_boolean determined, smaller; dd_colrange j; smaller = dd_FALSE; determined = dd_FALSE; j = 1; do { if (!dd_Equal(v1[j - 1],v2[j - 1])) { /* 086 */ if (dd_Smaller(v1[j - 1],v2[j - 1])) { /*086 */ smaller = dd_TRUE; } determined = dd_TRUE; } else j++; } while (!(determined) && (j <= dmax)); return smaller; } dd_boolean dd_LexLarger(mytype *v1, mytype *v2, long dmax) { return dd_LexSmaller(v2, v1, dmax); } dd_boolean dd_LexEqual(mytype *v1, mytype *v2, long dmax) { /* dmax is the size of vectors v1,v2 */ dd_boolean determined, equal; dd_colrange j; equal = dd_TRUE; determined = dd_FALSE; j = 1; do { if (!dd_Equal(v1[j - 1],v2[j - 1])) { /* 093c */ equal = dd_FALSE; determined = dd_TRUE; } else { j++; } } while (!(determined) && (j <= dmax)); return equal; } void dd_AddNewHalfspace1(dd_ConePtr cone, dd_rowrange hnew) /* This procedure 1 must be used with PreorderedRun=dd_FALSE This procedure is the most elementary implementation of DD and can be used with any type of ordering, including dynamic ordering of rows, e.g. MaxCutoff, MinCutoff. The memory requirement is minimum because it does not store any adjacency among the rays. */ { dd_RayPtr RayPtr0,RayPtr1,RayPtr2,RayPtr2s,RayPtr3; long pos1, pos2; double prevprogress, progress; mytype value1, value2; dd_boolean adj, equal, completed; dd_init(value1); dd_init(value2); dd_EvaluateARay1(hnew, cone); /*Check feasibility of rays w.r.t. hnew and put all infeasible ones consecutively */ RayPtr0 = cone->ArtificialRay; /*Pointer pointing RayPrt1*/ RayPtr1 = cone->FirstRay; /*1st hnew-infeasible ray to scan and compare with feasible rays*/ dd_set(value1,cone->FirstRay->ARay); if (dd_Nonnegative(value1)) { if (cone->RayCount==cone->WeaklyFeasibleRayCount) cone->CompStatus=dd_AllFound; goto _L99; /* Sicne there is no hnew-infeasible ray and nothing to do */ } else { RayPtr2s = RayPtr1->Next;/* RayPtr2s must point the first feasible ray */ pos2=1; while (RayPtr2s!=NULL && dd_Negative(RayPtr2s->ARay)) { RayPtr2s = RayPtr2s->Next; pos2++; } } if (RayPtr2s==NULL) { cone->FirstRay=NULL; cone->ArtificialRay->Next=cone->FirstRay; cone->RayCount=0; cone->CompStatus=dd_AllFound; goto _L99; /* All rays are infeasible, and the computation must stop */ } RayPtr2 = RayPtr2s; /*2nd feasible ray to scan and compare with 1st*/ RayPtr3 = cone->LastRay; /*Last feasible for scanning*/ prevprogress=-10.0; pos1 = 1; completed=dd_FALSE; while ((RayPtr1 != RayPtr2s) && !completed) { dd_set(value1,RayPtr1->ARay); dd_set(value2,RayPtr2->ARay); dd_CheckEquality(cone->d, &RayPtr1, &RayPtr2, &equal); if ((dd_Positive(value1) && dd_Negative(value2)) || (dd_Negative(value1) && dd_Positive(value2))){ dd_CheckAdjacency(cone, &RayPtr1, &RayPtr2, &adj); if (adj) dd_CreateNewRay(cone, RayPtr1, RayPtr2, hnew); } if (RayPtr2 != RayPtr3) { RayPtr2 = RayPtr2->Next; continue; } if (dd_Negative(value1) || equal) { dd_Eliminate(cone, &RayPtr0); RayPtr1 = RayPtr0->Next; RayPtr2 = RayPtr2s; } else { completed=dd_TRUE; } pos1++; progress = 100.0 * ((double)pos1 / pos2) * (2.0 * pos2 - pos1) / pos2; if (progress-prevprogress>=10 && pos1%10==0 && dd_debug) { fprintf(stderr,"*Progress of iteration %5ld(/%ld): %4ld/%4ld => %4.1f%% done\n", cone->Iteration, cone->m, pos1, pos2, progress); prevprogress=progress; } } if (cone->RayCount==cone->WeaklyFeasibleRayCount) cone->CompStatus=dd_AllFound; _L99:; dd_clear(value1); dd_clear(value2); } void dd_AddNewHalfspace2(dd_ConePtr cone, dd_rowrange hnew) /* This procedure must be used under PreOrderedRun mode */ { dd_RayPtr RayPtr0,RayPtr1,RayPtr2; dd_AdjacencyType *EdgePtr, *EdgePtr0; long pos1; dd_rowrange fii1, fii2; dd_boolean localdebug=dd_FALSE; dd_EvaluateARay2(hnew, cone); /* Check feasibility of rays w.r.t. hnew and sort them. ( -rays, +rays, 0rays)*/ if (cone->PosHead==NULL && cone->ZeroHead==NULL) { cone->FirstRay=NULL; cone->ArtificialRay->Next=cone->FirstRay; cone->RayCount=0; cone->CompStatus=dd_AllFound; goto _L99; /* All rays are infeasible, and the computation must stop */ } if (localdebug){ pos1=0; fprintf(stderr,"(pos, FirstInfeasIndex, A Ray)=\n"); for (RayPtr0=cone->FirstRay; RayPtr0!=NULL; RayPtr0=RayPtr0->Next){ pos1++; fprintf(stderr,"(%ld,%ld,",pos1,RayPtr0->FirstInfeasIndex); dd_WriteNumber(stderr,RayPtr0->ARay); fprintf(stderr,") "); } fprintf(stderr,"\n"); } if (cone->ZeroHead==NULL) cone->ZeroHead=cone->LastRay; EdgePtr=cone->Edges[cone->Iteration]; while (EdgePtr!=NULL){ RayPtr1=EdgePtr->Ray1; RayPtr2=EdgePtr->Ray2; fii1=RayPtr1->FirstInfeasIndex; dd_CreateNewRay(cone, RayPtr1, RayPtr2, hnew); fii2=cone->LastRay->FirstInfeasIndex; if (fii1 != fii2) dd_ConditionalAddEdge(cone,RayPtr1,cone->LastRay,cone->PosHead); EdgePtr0=EdgePtr; EdgePtr=EdgePtr->Next; free(EdgePtr0); (cone->EdgeCount)--; } cone->Edges[cone->Iteration]=NULL; dd_DeleteNegativeRays(cone); set_addelem(cone->AddedHalfspaces, hnew); if (cone->Iterationm){ if (cone->ZeroHead!=NULL && cone->ZeroHead!=cone->LastRay){ if (cone->ZeroRayCount>200 && dd_debug) fprintf(stderr,"*New edges being scanned...\n"); dd_UpdateEdges(cone, cone->ZeroHead, cone->LastRay); } } if (cone->RayCount==cone->WeaklyFeasibleRayCount) cone->CompStatus=dd_AllFound; _L99:; } void dd_SelectNextHalfspace0(dd_ConePtr cone, dd_rowset excluded, dd_rowrange *hnext) { /*A natural way to choose the next hyperplane. Simply the largest index*/ long i; dd_boolean determined; i = cone->m; determined = dd_FALSE; do { if (set_member(i, excluded)) i--; else determined = dd_TRUE; } while (!determined && i>=1); if (determined) *hnext = i; else *hnext = 0; } void dd_SelectNextHalfspace1(dd_ConePtr cone, dd_rowset excluded, dd_rowrange *hnext) { /*Natural way to choose the next hyperplane. Simply the least index*/ long i; dd_boolean determined; i = 1; determined = dd_FALSE; do { if (set_member(i, excluded)) i++; else determined = dd_TRUE; } while (!determined && i<=cone->m); if (determined) *hnext = i; else *hnext=0; } void dd_SelectNextHalfspace2(dd_ConePtr cone, dd_rowset excluded, dd_rowrange *hnext) { /*Choose the next hyperplane with maximum infeasibility*/ long i, fea, inf, infmin, fi=0; /*feasibility and infeasibility numbers*/ infmin = cone->RayCount + 1; for (i = 1; i <= cone->m; i++) { if (!set_member(i, excluded)) { dd_FeasibilityIndices(&fea, &inf, i, cone); if (inf < infmin) { infmin = inf; fi = fea; *hnext = i; } } } if (dd_debug) { fprintf(stderr,"*infeasible rays (min) =%5ld, #feas rays =%5ld\n", infmin, fi); } } void dd_SelectNextHalfspace3(dd_ConePtr cone, dd_rowset excluded, dd_rowrange *hnext) { /*Choose the next hyperplane with maximum infeasibility*/ long i, fea, inf, infmax, fi=0; /*feasibility and infeasibility numbers*/ dd_boolean localdebug=dd_debug; infmax = -1; for (i = 1; i <= cone->m; i++) { if (!set_member(i, excluded)) { dd_FeasibilityIndices(&fea, &inf, i, cone); if (inf > infmax) { infmax = inf; fi = fea; *hnext = i; } } } if (localdebug) { fprintf(stderr,"*infeasible rays (max) =%5ld, #feas rays =%5ld\n", infmax, fi); } } void dd_SelectNextHalfspace4(dd_ConePtr cone, dd_rowset excluded, dd_rowrange *hnext) { /*Choose the next hyperplane with the most unbalanced cut*/ long i, fea, inf, max, tmax, fi=0, infi=0; /*feasibility and infeasibility numbers*/ max = -1; for (i = 1; i <= cone->m; i++) { if (!set_member(i, excluded)) { dd_FeasibilityIndices(&fea, &inf, i, cone); if (fea <= inf) tmax = inf; else tmax = fea; if (tmax > max) { max = tmax; fi = fea; infi = inf; *hnext = i; } } } if (!dd_debug) return; if (max == fi) { fprintf(stderr,"*infeasible rays (min) =%5ld, #feas rays =%5ld\n", infi, fi); } else { fprintf(stderr,"*infeasible rays (max) =%5ld, #feas rays =%5ld\n", infi, fi); } } void dd_SelectNextHalfspace5(dd_ConePtr cone, dd_rowset excluded, dd_rowrange *hnext) { /*Choose the next hyperplane which is lexico-min*/ long i, minindex; mytype *v1, *v2; minindex = 0; v1 = NULL; for (i = 1; i <= cone->m; i++) { if (!set_member(i, excluded)) { v2 = cone->A[i - 1]; if (minindex == 0) { minindex = i; v1=v2; } else if (dd_LexSmaller(v2,v1,cone->d)) { minindex = i; v1=v2; } } } *hnext = minindex; } void dd_SelectNextHalfspace6(dd_ConePtr cone, dd_rowset excluded, dd_rowrange *hnext) { /*Choose the next hyperplane which is lexico-max*/ long i, maxindex; mytype *v1, *v2; maxindex = 0; v1 = NULL; for (i = 1; i <= cone->m; i++) { if (!set_member(i, excluded)) { v2= cone->A[i - 1]; if (maxindex == 0) { maxindex = i; v1=v2; } else if (dd_LexLarger(v2, v1, cone->d)) { maxindex = i; v1=v2; } } } *hnext = maxindex; } void dd_UniqueRows(dd_rowindex OV, long p, long r, dd_Amatrix A, long dmax, dd_rowset preferred, long *uniqrows) { /* Select a subset of rows of A (with range [p, q] up to dimension dmax) by removing duplicates. When a row subset preferred is nonempty, those row indices in the set have priority. If two priority rows define the same row vector, one is chosen. For a selected unique row i, OV[i] returns a new position of the unique row i. For other nonuniqu row i, OV[i] returns a negative of the original row j dominating i. Thus the original contents of OV[p..r] will be rewritten. Other components remain the same. *uniqrows returns the number of unique rows. */ long i,iuniq,j; mytype *x; dd_boolean localdebug=dd_FALSE; if (p<=0 || p > r) goto _L99; iuniq=p; j=1; /* the first unique row candidate */ x=A[p-1]; OV[p]=j; /* tentative row index of the candidate */ for (i=p+1;i<=r; i++){ if (!dd_LexEqual(x,A[i-1],dmax)) { /* a new row vector found. */ iuniq=i; j=j+1; OV[i]=j; /* Tentatively register the row i. */ x=A[i-1]; } else { /* rows are equal */ if (set_member(i, preferred) && !set_member(iuniq, preferred)){ OV[iuniq]=-i; /* the row iuniq is dominated by the row i */ iuniq=i; /* the row i is preferred. Change the candidate. */ OV[i]=j; /* the row i is tentatively registered. */ x=A[i-1]; } else { OV[i]=-iuniq; /* the row iuniq is dominated by the row i */ } } } *uniqrows=j; if (localdebug){ printf("The number of unique rows are %ld\n with order vector",*uniqrows); for (i=p;i<=r; i++){ printf(" %ld:%ld ",i,OV[i]); } printf("\n"); } _L99:; } long dd_Partition(dd_rowindex OV, long p, long r, dd_Amatrix A, long dmax) { mytype *x; long i,j,ovi; x=A[OV[p]-1]; i=p-1; j=r+1; while (dd_TRUE){ do{ j--; } while (dd_LexLarger(A[OV[j]-1],x,dmax)); do{ i++; } while (dd_LexSmaller(A[OV[i]-1],x,dmax)); if (i1 ; j--) { r=rand_splitmix64(); u=r/rand_max; xk=(double)(j*u +1); k=(long)xk; if (localdebug) fprintf(stderr,"u=%g, k=%ld, r=%g, randmax= %g\n",u,k,r,rand_max); ovj=OV[j]; OV[j]=OV[k]; OV[k]=ovj; if (localdebug) fprintf(stderr,"row %ld is exchanged with %ld\n",j,k); } } void dd_ComputeRowOrderVector(dd_ConePtr cone) { long i,itemp; cone->OrderVector[0]=0; switch (cone->HalfspaceOrder){ case dd_MaxIndex: for(i=1; i<=cone->m; i++) cone->OrderVector[i]=cone->m-i+1; break; case dd_MinIndex: for(i=1; i<=cone->m; i++) cone->OrderVector[i]=i; break; case dd_LexMin: case dd_MinCutoff: case dd_MixCutoff: case dd_MaxCutoff: for(i=1; i<=cone->m; i++) cone->OrderVector[i]=i; dd_RandomPermutation(cone->OrderVector, cone->m, cone->rseed); dd_QuickSort(cone->OrderVector, 1, cone->m, cone->A, cone->d); break; case dd_LexMax: for(i=1; i<=cone->m; i++) cone->OrderVector[i]=i; dd_RandomPermutation(cone->OrderVector, cone->m, cone->rseed); dd_QuickSort(cone->OrderVector, 1, cone->m, cone->A, cone->d); for(i=1; i<=cone->m/2;i++){ /* just reverse the order */ itemp=cone->OrderVector[i]; cone->OrderVector[i]=cone->OrderVector[cone->m-i+1]; cone->OrderVector[cone->m-i+1]=itemp; } break; case dd_RandomRow: for(i=1; i<=cone->m; i++) cone->OrderVector[i]=i; dd_RandomPermutation(cone->OrderVector, cone->m, cone->rseed); break; } } void dd_UpdateRowOrderVector(dd_ConePtr cone, dd_rowset PriorityRows) /* Update the RowOrder vector to shift selected rows in highest order. */ { dd_rowrange i,j,k,j1=0,oj=0; long rr; dd_boolean found, localdebug=dd_FALSE; localdebug=dd_debug; found=dd_TRUE; rr=set_card(PriorityRows); if (localdebug) set_fwrite(stderr,PriorityRows); for (i=1; i<=rr; i++){ found=dd_FALSE; for (j=i; j<=cone->m && !found; j++){ oj=cone->OrderVector[j]; if (set_member(oj, PriorityRows)){ found=dd_TRUE; if (localdebug) fprintf(stderr,"%ldth in sorted list (row %ld) is in PriorityRows\n", j, oj); j1=j; } } if (found){ if (j1>i) { /* shift everything lower: ov[i]->cone->ov[i+1]..ov[j1-1]->cone->ov[j1] */ for (k=j1; k>=i; k--) cone->OrderVector[k]=cone->OrderVector[k-1]; cone->OrderVector[i]=oj; if (localdebug){ fprintf(stderr,"OrderVector updated to:\n"); for (j = 1; j <= cone->m; j++) fprintf(stderr," %2ld", cone->OrderVector[j]); fprintf(stderr,"\n"); } } } else { fprintf(stderr,"UpdateRowOrder: Error.\n"); goto _L99; } } _L99:; } void dd_SelectPreorderedNext(dd_ConePtr cone, dd_rowset excluded, dd_rowrange *hh) { dd_rowrange i,k; *hh=0; for (i=1; i<=cone->m && *hh==0; i++){ k=cone->OrderVector[i]; if (!set_member(k, excluded)) *hh=k ; } } void dd_SelectNextHalfspace(dd_ConePtr cone, dd_rowset excluded, dd_rowrange *hh) { if (cone->PreOrderedRun){ if (dd_debug) { fprintf(stderr,"debug dd_SelectNextHalfspace: Use PreorderNext\n"); } dd_SelectPreorderedNext(cone, excluded, hh); } else { if (dd_debug) { fprintf(stderr,"debug dd_SelectNextHalfspace: Use DynamicOrderedNext\n"); } switch (cone->HalfspaceOrder) { case dd_MaxIndex: dd_SelectNextHalfspace0(cone, excluded, hh); break; case dd_MinIndex: dd_SelectNextHalfspace1(cone, excluded, hh); break; case dd_MinCutoff: dd_SelectNextHalfspace2(cone, excluded, hh); break; case dd_MaxCutoff: dd_SelectNextHalfspace3(cone, excluded, hh); break; case dd_MixCutoff: dd_SelectNextHalfspace4(cone, excluded, hh); break; default: dd_SelectNextHalfspace0(cone, excluded, hh); break; } } } dd_boolean dd_Nonnegative(mytype val) { /* if (val>=-dd_zero) return dd_TRUE; */ if (dd_cmp(val,dd_minuszero)>=0) return dd_TRUE; else return dd_FALSE; } dd_boolean dd_Nonpositive(mytype val) { /* if (val<=dd_zero) return dd_TRUE; */ if (dd_cmp(val,dd_zero)<=0) return dd_TRUE; else return dd_FALSE; } dd_boolean dd_Positive(mytype val) { return !dd_Nonpositive(val); } dd_boolean dd_Negative(mytype val) { return !dd_Nonnegative(val); } dd_boolean dd_EqualToZero(mytype val) { return (dd_Nonnegative(val) && dd_Nonpositive(val)); } dd_boolean dd_Nonzero(mytype val) { return (dd_Positive(val) || dd_Negative(val)); } dd_boolean dd_Equal(mytype val1,mytype val2) { return (!dd_Larger(val1,val2) && !dd_Smaller(val1,val2)); } dd_boolean dd_Larger(mytype val1,mytype val2) { mytype temp; dd_boolean answer; dd_init(temp); dd_sub(temp,val1, val2); answer=dd_Positive(temp); dd_clear(temp); return answer; } dd_boolean dd_Smaller(mytype val1,mytype val2) { return dd_Larger(val2,val1); } void dd_abs(mytype absval, mytype val) { if (dd_Negative(val)) dd_neg(absval,val); else dd_set(absval,val); } void dd_LinearComb(mytype lc, mytype v1, mytype c1, mytype v2, mytype c2) /* lc := v1 * c1 + v2 * c2 */ { mytype temp; dd_init(temp); dd_mul(lc,v1,c1); dd_mul(temp,v2,c2); dd_add(lc,lc,temp); dd_clear(temp); } void dd_InnerProduct(mytype prod, dd_colrange d, dd_Arow v1, dd_Arow v2) { mytype temp; dd_colrange j; dd_boolean localdebug=dd_FALSE; dd_init(temp); dd_set_si(prod, 0); for (j = 0; j < d; j++){ dd_mul(temp,v1[j],v2[j]); dd_add(prod,prod,temp); } if (localdebug) { fprintf(stderr,"InnerProduct:\n"); dd_WriteArow(stderr, v1, d); dd_WriteArow(stderr, v2, d); fprintf(stderr,"prod ="); dd_WriteNumber(stderr, prod); fprintf(stderr,"\n"); } dd_clear(temp); } /* end of cddcore.c */ cddlib-0.94j/lib-src/cddlp.c0000644000175000017500000036214713301273112012555 00000000000000/* cddlp.c: dual simplex method c-code written by Komei Fukuda, fukuda@math.ethz.ch Version 0.94i, March 9, 2018 */ /* cddlp.c : C-Implementation of the dual simplex method for solving an LP: max/min A_(m-1).x subject to x in P, where P= {x : A_i.x >= 0, i=0,...,m-2, and x_0=1}, and A_i is the i-th row of an m x n matrix A. Please read COPYING (GNU General Public Licence) and the manual cddlibman.tex for detail. */ #include "setoper.h" /* set operation library header (Ver. May 18, 2000 or later) */ #include "cdd.h" #include "splitmix64.h" #include #include #include #include #include #if defined GMPRATIONAL #include "cdd_f.h" #endif #define dd_CDDLPVERSION "Version 0.94b (August 25, 2005)" #define dd_FALSE 0 #define dd_TRUE 1 typedef set_type rowset; /* set_type defined in setoper.h */ typedef set_type colset; void dd_CrissCrossSolve(dd_LPPtr lp,dd_ErrorType *); void dd_DualSimplexSolve(dd_LPPtr lp,dd_ErrorType *); void dd_CrissCrossMinimize(dd_LPPtr,dd_ErrorType *); void dd_CrissCrossMaximize(dd_LPPtr,dd_ErrorType *); void dd_DualSimplexMinimize(dd_LPPtr,dd_ErrorType *); void dd_DualSimplexMaximize(dd_LPPtr,dd_ErrorType *); void dd_FindLPBasis(dd_rowrange,dd_colrange,dd_Amatrix,dd_Bmatrix,dd_rowindex,dd_rowset, dd_colindex,dd_rowindex,dd_rowrange,dd_colrange, dd_colrange *,int *,dd_LPStatusType *,long *); void dd_FindDualFeasibleBasis(dd_rowrange,dd_colrange,dd_Amatrix,dd_Bmatrix,dd_rowindex, dd_colindex,long *,dd_rowrange,dd_colrange,dd_boolean, dd_colrange *,dd_ErrorType *,dd_LPStatusType *,long *, long maxpivots); #ifdef GMPRATIONAL void dd_BasisStatus(ddf_LPPtr lpf, dd_LPPtr lp, dd_boolean*); void dd_BasisStatusMinimize(dd_rowrange,dd_colrange, dd_Amatrix,dd_Bmatrix,dd_rowset, dd_rowrange,dd_colrange,ddf_LPStatusType,mytype *,dd_Arow,dd_Arow,dd_rowset,ddf_colindex, ddf_rowrange,ddf_colrange,dd_colrange *,long *, int *, int *); void dd_BasisStatusMaximize(dd_rowrange,dd_colrange,dd_Amatrix,dd_Bmatrix,dd_rowset, dd_rowrange,dd_colrange,ddf_LPStatusType,mytype *,dd_Arow,dd_Arow,dd_rowset,ddf_colindex, ddf_rowrange,ddf_colrange,dd_colrange *,long *, int *, int *); #endif void dd_WriteBmatrix(FILE *f,dd_colrange d_size,dd_Bmatrix T); void dd_SetNumberType(char *line,dd_NumberType *number,dd_ErrorType *Error); void dd_ComputeRowOrderVector2(dd_rowrange m_size,dd_colrange d_size,dd_Amatrix A, dd_rowindex OV,dd_RowOrderType ho,unsigned int rseed); void dd_SelectPreorderedNext2(dd_rowrange m_size,dd_colrange d_size, rowset excluded,dd_rowindex OV,dd_rowrange *hnext); void dd_SetSolutions(dd_rowrange,dd_colrange, dd_Amatrix,dd_Bmatrix,dd_rowrange,dd_colrange,dd_LPStatusType, mytype *,dd_Arow,dd_Arow,dd_rowset,dd_colindex,dd_rowrange,dd_colrange,dd_rowindex); void dd_WriteTableau(FILE *,dd_rowrange,dd_colrange,dd_Amatrix,dd_Bmatrix, dd_colindex,dd_rowindex); void dd_WriteSignTableau(FILE *,dd_rowrange,dd_colrange,dd_Amatrix,dd_Bmatrix, dd_colindex,dd_rowindex); dd_LPSolutionPtr dd_CopyLPSolution(dd_LPPtr lp) { dd_LPSolutionPtr lps; dd_colrange j; long i; lps=(dd_LPSolutionPtr) calloc(1,sizeof(dd_LPSolutionType)); for (i=1; i<=dd_filenamelen; i++) lps->filename[i-1]=lp->filename[i-1]; lps->objective=lp->objective; lps->solver=lp->solver; lps->m=lp->m; lps->d=lp->d; lps->numbtype=lp->numbtype; lps->LPS=lp->LPS; /* the current solution status */ dd_init(lps->optvalue); dd_set(lps->optvalue,lp->optvalue); /* optimal value */ dd_InitializeArow(lp->d+1,&(lps->sol)); dd_InitializeArow(lp->d+1,&(lps->dsol)); lps->nbindex=(long*) calloc((lp->d)+1,sizeof(long)); /* dual solution */ for (j=0; j<=lp->d; j++){ dd_set(lps->sol[j],lp->sol[j]); dd_set(lps->dsol[j],lp->dsol[j]); lps->nbindex[j]=lp->nbindex[j]; } lps->pivots[0]=lp->pivots[0]; lps->pivots[1]=lp->pivots[1]; lps->pivots[2]=lp->pivots[2]; lps->pivots[3]=lp->pivots[3]; lps->pivots[4]=lp->pivots[4]; lps->total_pivots=lp->total_pivots; return lps; } dd_LPPtr dd_CreateLPData(dd_LPObjectiveType obj, dd_NumberType nt,dd_rowrange m,dd_colrange d) { dd_LPType *lp; lp=(dd_LPPtr) calloc(1,sizeof(dd_LPType)); lp->solver=dd_choiceLPSolverDefault; /* set the default lp solver */ lp->d=d; lp->m=m; lp->numbtype=nt; lp->objrow=m; lp->rhscol=1L; lp->objective=dd_LPnone; lp->LPS=dd_LPSundecided; lp->eqnumber=0; /* the number of equalities */ lp->nbindex=(long*) calloc(d+1,sizeof(long)); lp->given_nbindex=(long*) calloc(d+1,sizeof(long)); set_initialize(&(lp->equalityset),m); /* i must be in the set iff i-th row is equality . */ lp->redcheck_extensive=dd_FALSE; /* this is on only for RedundantExtensive */ lp->ired=0; set_initialize(&(lp->redset_extra),m); /* i is in the set if i-th row is newly recognized redundant (during the checking the row ired). */ set_initialize(&(lp->redset_accum),m); /* i is in the set if i-th row is recognized redundant (during the checking the row ired). */ set_initialize(&(lp->posset_extra),m); /* i is in the set if i-th row is recognized non-linearity (during the course of computation). */ lp->lexicopivot=dd_choiceLexicoPivotQ; /* dd_choice... is set in dd_set_global_constants() */ lp->m_alloc=lp->m+2; lp->d_alloc=lp->d+2; lp->objective=obj; dd_InitializeBmatrix(lp->d_alloc,&(lp->B)); dd_InitializeAmatrix(lp->m_alloc,lp->d_alloc,&(lp->A)); dd_InitializeArow(lp->d_alloc,&(lp->sol)); dd_InitializeArow(lp->d_alloc,&(lp->dsol)); dd_init(lp->optvalue); return lp; } dd_LPPtr dd_Matrix2LP(dd_MatrixPtr M, dd_ErrorType *err) { dd_rowrange m, i, irev, linc; dd_colrange d, j; dd_LPType *lp; dd_boolean localdebug=dd_FALSE; *err=dd_NoError; linc=set_card(M->linset); m=M->rowsize+1+linc; /* We represent each equation by two inequalities. This is not the best way but makes the code simple. */ d=M->colsize; if (localdebug) fprintf(stderr,"number of equalities = %ld\n", linc); lp=dd_CreateLPData(M->objective, M->numbtype, m, d); lp->Homogeneous = dd_TRUE; lp->eqnumber=linc; /* this records the number of equations */ irev=M->rowsize; /* the first row of the linc reversed inequalities. */ for (i = 1; i <= M->rowsize; i++) { if (set_member(i, M->linset)) { irev=irev+1; set_addelem(lp->equalityset,i); /* it is equality. */ /* the reversed row irev is not in the equality set. */ for (j = 1; j <= M->colsize; j++) { dd_neg(lp->A[irev-1][j-1],M->matrix[i-1][j-1]); } /*of j*/ if (localdebug) fprintf(stderr,"equality row %ld generates the reverse row %ld.\n",i,irev); } for (j = 1; j <= M->colsize; j++) { dd_set(lp->A[i-1][j-1],M->matrix[i-1][j-1]); if (j==1 && irowsize && dd_Nonzero(M->matrix[i-1][j-1])) lp->Homogeneous = dd_FALSE; } /*of j*/ } /*of i*/ for (j = 1; j <= M->colsize; j++) { dd_set(lp->A[m-1][j-1],M->rowvec[j-1]); /* objective row */ } /*of j*/ return lp; } dd_LPPtr dd_Matrix2Feasibility(dd_MatrixPtr M, dd_ErrorType *err) /* Load a matrix to create an LP object for feasibility. It is essentially the dd_Matrix2LP except that the objject function is set to identically ZERO (maximization). */ /* 094 */ { dd_rowrange m, linc; dd_colrange j; dd_LPType *lp; *err=dd_NoError; linc=set_card(M->linset); m=M->rowsize+1+linc; /* We represent each equation by two inequalities. This is not the best way but makes the code simple. */ lp=dd_Matrix2LP(M, err); lp->objective = dd_LPmax; /* since the objective is zero, this is not important */ for (j = 1; j <= M->colsize; j++) { dd_set(lp->A[m-1][j-1],dd_purezero); /* set the objective to zero. */ } /*of j*/ return lp; } dd_LPPtr dd_Matrix2Feasibility2(dd_MatrixPtr M, dd_rowset R, dd_rowset S, dd_ErrorType *err) /* Load a matrix to create an LP object for feasibility with additional equality and strict inequality constraints given by R and S. There are three types of inequalities: b_r + A_r x = 0 Linearity (Equations) specified by M b_s + A_s x > 0 Strict Inequalities specified by row index set S b_t + A_t x >= 0 The rest inequalities in M Where the linearity is considered here as the union of linearity specified by M and the additional set R. When S contains any linearity rows, those rows are considered linearity (equation). Thus S does not overlide linearity. To find a feasible solution, we set an LP maximize z subject to b_r + A_r x = 0 all r in Linearity b_s + A_s x - z >= 0 for all s in S b_t + A_t x >= 0 for all the rest rows t 1 - z >= 0 to make the LP bounded. Clearly, the feasibility problem has a solution iff the LP has a positive optimal value. The variable z will be the last variable x_{d+1}. */ /* 094 */ { dd_rowrange m, i, irev, linc; dd_colrange d, j; dd_LPType *lp; dd_rowset L; dd_boolean localdebug=dd_FALSE; *err=dd_NoError; set_initialize(&L, M->rowsize); set_uni(L,M->linset,R); linc=set_card(L); m=M->rowsize+1+linc+1; /* We represent each equation by two inequalities. This is not the best way but makes the code simple. */ d=M->colsize+1; if (localdebug) fprintf(stderr,"number of equalities = %ld\n", linc); lp=dd_CreateLPData(dd_LPmax, M->numbtype, m, d); lp->Homogeneous = dd_TRUE; lp->eqnumber=linc; /* this records the number of equations */ irev=M->rowsize; /* the first row of the linc reversed inequalities. */ for (i = 1; i <= M->rowsize; i++) { if (set_member(i, L)) { irev=irev+1; set_addelem(lp->equalityset,i); /* it is equality. */ /* the reversed row irev is not in the equality set. */ for (j = 1; j <= M->colsize; j++) { dd_neg(lp->A[irev-1][j-1],M->matrix[i-1][j-1]); } /*of j*/ if (localdebug) fprintf(stderr,"equality row %ld generates the reverse row %ld.\n",i,irev); } else if (set_member(i, S)) { dd_set(lp->A[i-1][M->colsize],dd_minusone); } for (j = 1; j <= M->colsize; j++) { dd_set(lp->A[i-1][j-1],M->matrix[i-1][j-1]); if (j==1 && irowsize && dd_Nonzero(M->matrix[i-1][j-1])) lp->Homogeneous = dd_FALSE; } /*of j*/ } /*of i*/ for (j = 1; j <= d; j++) { dd_set(lp->A[m-2][j-1],dd_purezero); /* initialize */ } /*of j*/ dd_set(lp->A[m-2][0],dd_one); /* the bounding constraint. */ dd_set(lp->A[m-2][M->colsize],dd_minusone); /* the bounding constraint. */ for (j = 1; j <= d; j++) { dd_set(lp->A[m-1][j-1],dd_purezero); /* initialize */ } /*of j*/ dd_set(lp->A[m-1][M->colsize],dd_one); /* maximize z */ set_free(L); return lp; } void dd_FreeLPData(dd_LPPtr lp) { if ((lp)!=NULL){ dd_clear(lp->optvalue); dd_FreeArow(lp->d_alloc,lp->dsol); dd_FreeArow(lp->d_alloc,lp->sol); dd_FreeBmatrix(lp->d_alloc,lp->B); dd_FreeAmatrix(lp->m_alloc,lp->d_alloc,lp->A); set_free(lp->equalityset); set_free(lp->redset_extra); set_free(lp->redset_accum); set_free(lp->posset_extra); free(lp->nbindex); free(lp->given_nbindex); free(lp); } } void dd_FreeLPSolution(dd_LPSolutionPtr lps) { if (lps!=NULL){ free(lps->nbindex); dd_FreeArow(lps->d+1,lps->dsol); dd_FreeArow(lps->d+1,lps->sol); dd_clear(lps->optvalue); free(lps); } } int dd_LPReverseRow(dd_LPPtr lp, dd_rowrange i) { dd_colrange j; int success=0; if (i>=1 && i<=lp->m){ lp->LPS=dd_LPSundecided; for (j=1; j<=lp->d; j++) { dd_neg(lp->A[i-1][j-1],lp->A[i-1][j-1]); /* negating the i-th constraint of A */ } success=1; } return success; } int dd_LPReplaceRow(dd_LPPtr lp, dd_rowrange i, dd_Arow a) { dd_colrange j; int success=0; if (i>=1 && i<=lp->m){ lp->LPS=dd_LPSundecided; for (j=1; j<=lp->d; j++) { dd_set(lp->A[i-1][j-1],a[j-1]); /* replacing the i-th constraint by a */ } success=1; } return success; } dd_Arow dd_LPCopyRow(dd_LPPtr lp, dd_rowrange i) { dd_colrange j; dd_Arow a; if (i>=1 && i<=lp->m){ dd_InitializeArow(lp->d, &a); for (j=1; j<=lp->d; j++) { dd_set(a[j-1],lp->A[i-1][j-1]); /* copying the i-th row to a */ } } return a; } void dd_SetNumberType(char *line,dd_NumberType *number,dd_ErrorType *Error) { if (strncmp(line,"integer",7)==0) { *number = dd_Integer; return; } else if (strncmp(line,"rational",8)==0) { *number = dd_Rational; return; } else if (strncmp(line,"real",4)==0) { *number = dd_Real; return; } else { *number=dd_Unknown; *Error=dd_ImproperInputFormat; } } void dd_WriteTableau(FILE *f,dd_rowrange m_size,dd_colrange d_size,dd_Amatrix A,dd_Bmatrix T, dd_colindex nbindex,dd_rowindex bflag) /* Write the tableau A.T */ { dd_colrange j; dd_rowrange i; mytype x; dd_init(x); fprintf(f," %ld %ld real\n",m_size,d_size); fprintf(f," |"); for (j=1; j<= d_size; j++) { fprintf(f," %ld",nbindex[j]); } fprintf(f,"\n"); for (j=1; j<= d_size+1; j++) { fprintf(f," ----"); } fprintf(f,"\n"); for (i=1; i<= m_size; i++) { fprintf(f," %3ld(%3ld) |",i,bflag[i]); for (j=1; j<= d_size; j++) { dd_TableauEntry(&x,m_size,d_size,A,T,i,j); dd_WriteNumber(f,x); } fprintf(f,"\n"); } fprintf(f,"end\n"); dd_clear(x); } void dd_WriteSignTableau(FILE *f,dd_rowrange m_size,dd_colrange d_size,dd_Amatrix A,dd_Bmatrix T, dd_colindex nbindex,dd_rowindex bflag) /* Write the sign tableau A.T */ { dd_colrange j; dd_rowrange i; mytype x; dd_init(x); fprintf(f," %ld %ld real\n",m_size,d_size); fprintf(f," |"); for (j=1; j<= d_size; j++) { fprintf(f,"%3ld",nbindex[j]); } fprintf(f,"\n ------- | "); for (j=1; j<= d_size; j++) { fprintf(f,"---"); } fprintf(f,"\n"); for (i=1; i<= m_size; i++) { fprintf(f," %3ld(%3ld) |",i,bflag[i]); for (j=1; j<= d_size; j++) { dd_TableauEntry(&x,m_size,d_size,A,T,i,j); if (dd_Positive(x)) fprintf(f, " +"); else if (dd_Negative(x)) fprintf(f, " -"); else fprintf(f, " 0"); } fprintf(f,"\n"); } fprintf(f,"end\n"); dd_clear(x); } void dd_WriteSignTableau2(FILE *f,dd_rowrange m_size,dd_colrange d_size,dd_Amatrix A,dd_Bmatrix T, dd_colindex nbindex_ref, dd_colindex nbindex,dd_rowindex bflag) /* Write the sign tableau A.T and the reference basis */ { dd_colrange j; dd_rowrange i; mytype x; dd_init(x); fprintf(f," %ld %ld real\n",m_size,d_size); fprintf(f," |"); for (j=1; j<= d_size; j++) fprintf(f,"%3ld",nbindex_ref[j]); fprintf(f,"\n |"); for (j=1; j<= d_size; j++) { fprintf(f,"%3ld",nbindex[j]); } fprintf(f,"\n ------- | "); for (j=1; j<= d_size; j++) { fprintf(f,"---"); } fprintf(f,"\n"); for (i=1; i<= m_size; i++) { fprintf(f," %3ld(%3ld) |",i,bflag[i]); for (j=1; j<= d_size; j++) { dd_TableauEntry(&x,m_size,d_size,A,T,i,j); if (dd_Positive(x)) fprintf(f, " +"); else if (dd_Negative(x)) fprintf(f, " -"); else fprintf(f, " 0"); } fprintf(f,"\n"); } fprintf(f,"end\n"); dd_clear(x); } void dd_GetRedundancyInformation(dd_rowrange m_size,dd_colrange d_size,dd_Amatrix A,dd_Bmatrix T, dd_colindex nbindex,dd_rowindex bflag, dd_rowset redset) /* Some basic variables that are forced to be nonnegative will be output. These are variables whose dictionary row components are all nonnegative. */ { dd_colrange j; dd_rowrange i; mytype x; dd_boolean red=dd_FALSE,localdebug=dd_FALSE; long numbred=0; dd_init(x); for (i=1; i<= m_size; i++) { red=dd_TRUE; for (j=1; j<= d_size; j++) { dd_TableauEntry(&x,m_size,d_size,A,T,i,j); if (red && dd_Negative(x)) red=dd_FALSE; } if (bflag[i]<0 && red) { numbred+=1; set_addelem(redset,i); } } if (localdebug) fprintf(stderr,"\ndd_GetRedundancyInformation: %ld redundant rows over %ld\n",numbred, m_size); dd_clear(x); } void dd_SelectDualSimplexPivot(dd_rowrange m_size,dd_colrange d_size, int Phase1,dd_Amatrix A,dd_Bmatrix T,dd_rowindex OV, dd_colindex nbindex_ref, dd_colindex nbindex,dd_rowindex bflag, dd_rowrange objrow,dd_colrange rhscol, dd_boolean lexicopivot, dd_rowrange *r,dd_colrange *s,int *selected,dd_LPStatusType *lps) { /* selects a dual simplex pivot (*r,*s) if the current basis is dual feasible and not optimal. If not dual feasible, the procedure returns *selected=dd_FALSE and *lps=LPSundecided. If Phase1=dd_TRUE, the RHS column will be considered as the negative of the column of the largest variable (==m_size). For this case, it is assumed that the caller used the auxiliary row (with variable m_size) to make the current dictionary dual feasible before calling this routine so that the nonbasic column for m_size corresponds to the auxiliary variable. */ dd_boolean colselected=dd_FALSE,rowselected=dd_FALSE, dualfeasible=dd_TRUE,localdebug=dd_FALSE; dd_rowrange i,iref; dd_colrange j,k; mytype val,valn, minval,rat,minrat; static dd_Arow rcost; static dd_colrange d_last=0; static dd_colset tieset,stieset; /* store the column indices with tie */ dd_init(val); dd_init(valn); dd_init(minval); dd_init(rat); dd_init(minrat); if (d_last0) { for (j=1; j<=d_last; j++){ dd_clear(rcost[j-1]);} free(rcost); set_free(tieset); set_free(stieset); } rcost=(mytype*) calloc(d_size,sizeof(mytype)); for (j=1; j<=d_size; j++){ dd_init(rcost[j-1]);} set_initialize(&tieset,d_size); set_initialize(&stieset,d_size); d_last=d_size; } *r=0; *s=0; *selected=dd_FALSE; *lps=dd_LPSundecided; for (j=1; j<=d_size; j++){ if (j!=rhscol){ dd_TableauEntry(&(rcost[j-1]),m_size,d_size,A,T,objrow,j); if (dd_Positive(rcost[j-1])) { dualfeasible=dd_FALSE; } } } if (dualfeasible){ while ((*lps==dd_LPSundecided) && (!rowselected) && (!colselected)) { for (i=1; i<=m_size; i++) { if (i!=objrow && bflag[i]==-1) { /* i is a basic variable */ if (Phase1){ dd_TableauEntry(&val, m_size,d_size,A,T,i,bflag[m_size]); dd_neg(val,val); /* for dual Phase I. The RHS (dual objective) is the negative of the auxiliary variable column. */ } else {dd_TableauEntry(&val,m_size,d_size,A,T,i,rhscol);} if (dd_Smaller(val,minval)) { *r=i; dd_set(minval,val); } } } if (dd_Nonnegative(minval)) { *lps=dd_Optimal; } else { rowselected=dd_TRUE; set_emptyset(tieset); for (j=1; j<=d_size; j++){ dd_TableauEntry(&val,m_size,d_size,A,T,*r,j); if (j!=rhscol && dd_Positive(val)) { dd_div(rat,rcost[j-1],val); dd_neg(rat,rat); if (*s==0 || dd_Smaller(rat,minrat)){ dd_set(minrat,rat); *s=j; set_emptyset(tieset); set_addelem(tieset, j); } else if (dd_Equal(rat,minrat)){ set_addelem(tieset,j); } } } if (*s>0) { if (!lexicopivot || set_card(tieset)==1){ colselected=dd_TRUE; *selected=dd_TRUE; } else { /* lexicographic rule with respect to the given reference cobasis. */ if (localdebug) {printf("Tie occurred at:"); set_write(tieset); printf("\n"); dd_WriteTableau(stderr,m_size,d_size,A,T,nbindex,bflag); } *s=0; k=2; /* k runs through the column indices except RHS. */ do { iref=nbindex_ref[k]; /* iref runs though the reference basic indices */ if (iref>0) { j=bflag[iref]; if (j>0) { if (set_member(j,tieset) && set_card(tieset)==1) { *s=j; colselected=dd_TRUE; } else { set_delelem(tieset, j); /* iref is cobasic, and the corresponding col is not the pivot column except it is the last one. */ } } else { *s=0; for (j=1; j<=d_size; j++){ if (set_member(j,tieset)) { dd_TableauEntry(&val,m_size,d_size,A,T,*r,j); dd_TableauEntry(&valn,m_size,d_size,A,T,iref,j); if (j!=rhscol && dd_Positive(val)) { dd_div(rat,valn,val); if (*s==0 || dd_Smaller(rat,minrat)){ dd_set(minrat,rat); *s=j; set_emptyset(stieset); set_addelem(stieset, j); } else if (dd_Equal(rat,minrat)){ set_addelem(stieset,j); } } } } set_copy(tieset,stieset); if (set_card(tieset)==1) colselected=dd_TRUE; } } k+=1; } while (!colselected && k<=d_size); *selected=dd_TRUE; } } else *lps=dd_Inconsistent; } } /* end of while */ } if (localdebug) { if (Phase1) fprintf(stderr,"Phase 1 : select %ld,%ld\n",*r,*s); else fprintf(stderr,"Phase 2 : select %ld,%ld\n",*r,*s); } dd_clear(val); dd_clear(valn); dd_clear(minval); dd_clear(rat); dd_clear(minrat); } void dd_TableauEntry(mytype *x,dd_rowrange m_size, dd_colrange d_size, dd_Amatrix X, dd_Bmatrix T, dd_rowrange r, dd_colrange s) /* Compute the (r,s) entry of X.T */ { dd_colrange j; mytype temp; dd_init(temp); dd_set(*x,dd_purezero); for (j=0; j< d_size; j++) { dd_mul(temp,X[r-1][j], T[j][s-1]); dd_add(*x, *x, temp); } dd_clear(temp); } void dd_SelectPivot2(dd_rowrange m_size,dd_colrange d_size,dd_Amatrix A,dd_Bmatrix T, dd_RowOrderType roworder,dd_rowindex ordervec, rowset equalityset, dd_rowrange rowmax,rowset NopivotRow, colset NopivotCol,dd_rowrange *r,dd_colrange *s, dd_boolean *selected) /* Select a position (*r,*s) in the matrix A.T such that (A.T)[*r][*s] is nonzero The choice is feasible, i.e., not on NopivotRow and NopivotCol, and best with respect to the specified roworder */ { int stop; dd_rowrange i,rtemp; rowset rowexcluded; mytype Xtemp; dd_boolean localdebug=dd_FALSE; stop = dd_FALSE; localdebug=dd_debug; dd_init(Xtemp); set_initialize(&rowexcluded,m_size); set_copy(rowexcluded,NopivotRow); for (i=rowmax+1;i<=m_size;i++) { set_addelem(rowexcluded,i); /* cannot pivot on any row > rmax */ } *selected = dd_FALSE; do { rtemp=0; i=1; while (i<=m_size && rtemp==0) { /* equalityset vars have highest priorities */ if (set_member(i,equalityset) && !set_member(i,rowexcluded)){ if (localdebug) fprintf(stderr,"marked set %ld chosen as a candidate\n",i); rtemp=i; } i++; } if (rtemp==0) dd_SelectPreorderedNext2(m_size,d_size,rowexcluded,ordervec,&rtemp);; if (rtemp>=1) { *r=rtemp; *s=1; while (*s <= d_size && !*selected) { dd_TableauEntry(&Xtemp,m_size,d_size,A,T,*r,*s); if (!set_member(*s,NopivotCol) && dd_Nonzero(Xtemp)) { *selected = dd_TRUE; stop = dd_TRUE; } else { (*s)++; } } if (!*selected) { set_addelem(rowexcluded,rtemp); } } else { *r = 0; *s = 0; stop = dd_TRUE; } } while (!stop); set_free(rowexcluded); dd_clear(Xtemp); } void dd_GaussianColumnPivot(dd_rowrange m_size, dd_colrange d_size, dd_Amatrix X, dd_Bmatrix T, dd_rowrange r, dd_colrange s) /* Update the Transformation matrix T with the pivot operation on (r,s) This procedure performs a implicit pivot operation on the matrix X by updating the dual basis inverse T. */ { dd_colrange j, j1; mytype Xtemp0, Xtemp1, Xtemp; static dd_Arow Rtemp; static dd_colrange last_d=0; dd_init(Xtemp0); dd_init(Xtemp1); dd_init(Xtemp); if (last_d!=d_size){ if (last_d>0) { for (j=1; j<=last_d; j++) dd_clear(Rtemp[j-1]); free(Rtemp); } Rtemp=(mytype*)calloc(d_size,sizeof(mytype)); for (j=1; j<=d_size; j++) dd_init(Rtemp[j-1]); last_d=d_size; } for (j=1; j<=d_size; j++) { dd_TableauEntry(&(Rtemp[j-1]), m_size, d_size, X, T, r,j); } dd_set(Xtemp0,Rtemp[s-1]); for (j = 1; j <= d_size; j++) { if (j != s) { dd_div(Xtemp,Rtemp[j-1],Xtemp0); dd_set(Xtemp1,dd_purezero); for (j1 = 1; j1 <= d_size; j1++){ dd_mul(Xtemp1,Xtemp,T[j1-1][s - 1]); dd_sub(T[j1-1][j-1],T[j1-1][j-1],Xtemp1); /* T[j1-1][j-1] -= T[j1-1][s - 1] * Xtemp / Xtemp0; */ } } } for (j = 1; j <= d_size; j++) dd_div(T[j-1][s - 1],T[j-1][s - 1],Xtemp0); dd_clear(Xtemp0); dd_clear(Xtemp1); dd_clear(Xtemp); } void dd_GaussianColumnPivot2(dd_rowrange m_size,dd_colrange d_size, dd_Amatrix A,dd_Bmatrix T,dd_colindex nbindex,dd_rowindex bflag,dd_rowrange r,dd_colrange s) /* Update the Transformation matrix T with the pivot operation on (r,s) This procedure performs a implicit pivot operation on the matrix A by updating the dual basis inverse T. */ { int localdebug=dd_FALSE; long entering; if (dd_debug) localdebug=dd_debug; dd_GaussianColumnPivot(m_size,d_size,A,T,r,s); entering=nbindex[s]; bflag[r]=s; /* the nonbasic variable r corresponds to column s */ nbindex[s]=r; /* the nonbasic variable on s column is r */ if (entering>0) bflag[entering]=-1; /* original variables have negative index and should not affect the row index */ if (localdebug) { fprintf(stderr,"dd_GaussianColumnPivot2\n"); fprintf(stderr," pivot: (leaving, entering) = (%ld, %ld)\n", r,entering); fprintf(stderr, " bflag[%ld] is set to %ld\n", r, s); } } void dd_ResetTableau(dd_rowrange m_size,dd_colrange d_size,dd_Bmatrix T, dd_colindex nbindex,dd_rowindex bflag,dd_rowrange objrow,dd_colrange rhscol) { dd_rowrange i; dd_colrange j; /* Initialize T and nbindex */ for (j=1; j<=d_size; j++) nbindex[j]=-j; nbindex[rhscol]=0; /* RHS is already in nonbasis and is considered to be associated with the zero-th row of input. */ dd_SetToIdentity(d_size,T); /* Set the bflag according to nbindex */ for (i=1; i<=m_size; i++) bflag[i]=-1; /* all basic variables have index -1 */ bflag[objrow]= 0; /* bflag of the objective variable is 0, different from other basic variables which have -1 */ for (j=1; j<=d_size; j++) if (nbindex[j]>0) bflag[nbindex[j]]=j; /* bflag of a nonbasic variable is its column number */ } void dd_SelectCrissCrossPivot(dd_rowrange m_size,dd_colrange d_size,dd_Amatrix A,dd_Bmatrix T, dd_rowindex bflag,dd_rowrange objrow,dd_colrange rhscol, dd_rowrange *r,dd_colrange *s, int *selected,dd_LPStatusType *lps) { int colselected=dd_FALSE,rowselected=dd_FALSE; dd_rowrange i; mytype val; dd_init(val); *selected=dd_FALSE; *lps=dd_LPSundecided; while ((*lps==dd_LPSundecided) && (!rowselected) && (!colselected)) { for (i=1; i<=m_size; i++) { if (i!=objrow && bflag[i]==-1) { /* i is a basic variable */ dd_TableauEntry(&val,m_size,d_size,A,T,i,rhscol); if (dd_Negative(val)) { rowselected=dd_TRUE; *r=i; break; } } else if (bflag[i] >0) { /* i is nonbasic variable */ dd_TableauEntry(&val,m_size,d_size,A,T,objrow,bflag[i]); if (dd_Positive(val)) { colselected=dd_TRUE; *s=bflag[i]; break; } } } if ((!rowselected) && (!colselected)) { *lps=dd_Optimal; return; } else if (rowselected) { for (i=1; i<=m_size; i++) { if (bflag[i] >0) { /* i is nonbasic variable */ dd_TableauEntry(&val,m_size,d_size,A,T,*r,bflag[i]); if (dd_Positive(val)) { colselected=dd_TRUE; *s=bflag[i]; *selected=dd_TRUE; break; } } } } else if (colselected) { for (i=1; i<=m_size; i++) { if (i!=objrow && bflag[i]==-1) { /* i is a basic variable */ dd_TableauEntry(&val,m_size,d_size,A,T,i,*s); if (dd_Negative(val)) { rowselected=dd_TRUE; *r=i; *selected=dd_TRUE; break; } } } } if (!rowselected) { *lps=dd_DualInconsistent; } else if (!colselected) { *lps=dd_Inconsistent; } } dd_clear(val); } void dd_CrissCrossSolve(dd_LPPtr lp, dd_ErrorType *err) { switch (lp->objective) { case dd_LPmax: dd_CrissCrossMaximize(lp,err); break; case dd_LPmin: dd_CrissCrossMinimize(lp,err); break; case dd_LPnone: *err=dd_NoLPObjective; break; } } void dd_DualSimplexSolve(dd_LPPtr lp, dd_ErrorType *err) { switch (lp->objective) { case dd_LPmax: dd_DualSimplexMaximize(lp,err); break; case dd_LPmin: dd_DualSimplexMinimize(lp,err); break; case dd_LPnone: *err=dd_NoLPObjective; break; } } #ifdef GMPRATIONAL dd_LPStatusType LPSf2LPS(ddf_LPStatusType lpsf) { dd_LPStatusType lps=dd_LPSundecided; switch (lpsf) { case ddf_LPSundecided: lps=dd_LPSundecided; break; case ddf_Optimal: lps=dd_Optimal; break; case ddf_Inconsistent: lps=dd_Inconsistent; break; case ddf_DualInconsistent: lps=dd_DualInconsistent; break; case ddf_StrucInconsistent: lps=dd_StrucInconsistent; break; case ddf_StrucDualInconsistent: lps=dd_StrucDualInconsistent; break; case ddf_Unbounded: lps=dd_Unbounded; break; case ddf_DualUnbounded: lps=dd_DualUnbounded; break; } return lps; } void dd_BasisStatus(ddf_LPPtr lpf, dd_LPPtr lp, dd_boolean *LPScorrect) { int i; dd_colrange se, j; dd_boolean basisfound; switch (lp->objective) { case dd_LPmax: dd_BasisStatusMaximize(lp->m,lp->d,lp->A,lp->B,lp->equalityset,lp->objrow,lp->rhscol, lpf->LPS,&(lp->optvalue),lp->sol,lp->dsol,lp->posset_extra,lpf->nbindex,lpf->re,lpf->se,&se,lp->pivots, &basisfound, LPScorrect); if (*LPScorrect) { /* printf("BasisStatus Check: the current basis is verified with GMP\n"); */ lp->LPS=LPSf2LPS(lpf->LPS); lp->re=lpf->re; lp->se=se; for (j=1; j<=lp->d; j++) lp->nbindex[j]=lpf->nbindex[j]; } for (i=1; i<=5; i++) lp->pivots[i-1]+=lpf->pivots[i-1]; break; case dd_LPmin: dd_BasisStatusMinimize(lp->m,lp->d,lp->A,lp->B,lp->equalityset,lp->objrow,lp->rhscol, lpf->LPS,&(lp->optvalue),lp->sol,lp->dsol,lp->posset_extra,lpf->nbindex,lpf->re,lpf->se,&se,lp->pivots, &basisfound, LPScorrect); if (*LPScorrect) { /* printf("BasisStatus Check: the current basis is verified with GMP\n"); */ lp->LPS=LPSf2LPS(lpf->LPS); lp->re=lpf->re; lp->se=se; for (j=1; j<=lp->d; j++) lp->nbindex[j]=lpf->nbindex[j]; } for (i=1; i<=5; i++) lp->pivots[i-1]+=lpf->pivots[i-1]; break; case dd_LPnone: break; } } #endif void dd_FindLPBasis(dd_rowrange m_size,dd_colrange d_size, dd_Amatrix A, dd_Bmatrix T,dd_rowindex OV,dd_rowset equalityset, dd_colindex nbindex, dd_rowindex bflag,dd_rowrange objrow,dd_colrange rhscol, dd_colrange *cs,int *found,dd_LPStatusType *lps,long *pivot_no) { /* Find a LP basis using Gaussian pivots. If the problem has an LP basis, the procedure returns *found=dd_TRUE,*lps=LPSundecided and an LP basis. If the constraint matrix A (excluding the rhs and objective) is not column independent, there are two cases. If the dependency gives a dual inconsistency, this returns *found=dd_FALSE, *lps=dd_StrucDualInconsistent and the evidence column *s. Otherwise, this returns *found=dd_TRUE, *lps=LPSundecided and an LP basis of size less than d_size. Columns j that do not belong to the basis (i.e. cannot be chosen as pivot because they are all zero) will be indicated in nbindex vector: nbindex[j] will be negative and set to -j. */ int chosen,stop; long pivots_p0=0,rank; colset ColSelected; rowset RowSelected; mytype val; dd_rowrange r; dd_colrange j,s; dd_init(val); *found=dd_FALSE; *cs=0; rank=0; stop=dd_FALSE; *lps=dd_LPSundecided; set_initialize(&RowSelected,m_size); set_initialize(&ColSelected,d_size); set_addelem(RowSelected,objrow); set_addelem(ColSelected,rhscol); stop=dd_FALSE; do { /* Find a LP basis */ dd_SelectPivot2(m_size,d_size,A,T,dd_MinIndex,OV,equalityset, m_size,RowSelected,ColSelected,&r,&s,&chosen); if (chosen) { set_addelem(RowSelected,r); set_addelem(ColSelected,s); dd_GaussianColumnPivot2(m_size,d_size,A,T,nbindex,bflag,r,s); pivots_p0++; rank++; } else { for (j=1;j<=d_size && *lps==dd_LPSundecided; j++) { if (j!=rhscol && nbindex[j]<0){ dd_TableauEntry(&val,m_size,d_size,A,T,objrow,j); if (dd_Nonzero(val)){ /* dual inconsistent */ *lps=dd_StrucDualInconsistent; *cs=j; /* dual inconsistent because the nonzero reduced cost */ } } } if (*lps==dd_LPSundecided) *found=dd_TRUE; /* dependent columns but not dual inconsistent. */ stop=dd_TRUE; } /* printf("d_size=%ld, rank=%ld\n",d_size,rank); */ if (rank==d_size-1) { stop = dd_TRUE; *found=dd_TRUE; } } while (!stop); *pivot_no=pivots_p0; dd_statBApivots+=pivots_p0; set_free(RowSelected); set_free(ColSelected); dd_clear(val); } void dd_FindLPBasis2(dd_rowrange m_size,dd_colrange d_size, dd_Amatrix A, dd_Bmatrix T,dd_rowindex OV,dd_rowset equalityset, dd_colindex nbindex, dd_rowindex bflag,dd_rowrange objrow,dd_colrange rhscol, dd_colrange *cs,int *found,long *pivot_no) { /* Similar to dd_FindLPBasis but it is much simpler. This tries to recompute T for the specified basis given by nbindex. It will return *found=dd_FALSE if the specified basis is not a basis. */ int chosen,stop; long pivots_p0=0,rank; dd_colset ColSelected,DependentCols; dd_rowset RowSelected, NopivotRow; mytype val; dd_boolean localdebug=dd_FALSE; dd_rowrange r,negcount=0; dd_colrange j,s; dd_init(val); *found=dd_FALSE; *cs=0; rank=0; set_initialize(&RowSelected,m_size); set_initialize(&DependentCols,d_size); set_initialize(&ColSelected,d_size); set_initialize(&NopivotRow,m_size); set_addelem(RowSelected,objrow); set_addelem(ColSelected,rhscol); set_compl(NopivotRow, NopivotRow); /* set NopivotRow to be the groundset */ for (j=2; j<=d_size; j++) if (nbindex[j]>0) set_delelem(NopivotRow, nbindex[j]); else if (nbindex[j]<0){ negcount++; set_addelem(DependentCols, -nbindex[j]); set_addelem(ColSelected, -nbindex[j]); } set_uni(RowSelected, RowSelected, NopivotRow); /* RowSelected is the set of rows not allowed to poviot on */ stop=dd_FALSE; do { /* Find a LP basis */ dd_SelectPivot2(m_size,d_size,A,T,dd_MinIndex,OV,equalityset, m_size,RowSelected,ColSelected,&r,&s,&chosen); if (chosen) { set_addelem(RowSelected,r); set_addelem(ColSelected,s); dd_GaussianColumnPivot2(m_size,d_size,A,T,nbindex,bflag,r,s); if (localdebug && m_size <=10){ dd_WriteBmatrix(stderr,d_size,T); dd_WriteTableau(stderr,m_size,d_size,A,T,nbindex,bflag); } pivots_p0++; rank++; } else{ *found=dd_FALSE; /* cannot pivot on any of the spacified positions. */ stop=dd_TRUE; } if (rank==d_size-1-negcount) { if (negcount){ /* Now it tries to pivot on rows that are supposed to be dependent. */ set_diff(ColSelected, ColSelected, DependentCols); dd_SelectPivot2(m_size,d_size,A,T,dd_MinIndex,OV,equalityset, m_size,RowSelected,ColSelected,&r,&s,&chosen); if (chosen) *found=dd_FALSE; /* not supposed to be independent */ else *found=dd_TRUE; if (localdebug){ printf("Try to check the dependent cols:"); set_write(DependentCols); if (chosen) printf("They are not dependent. Can still pivot on (%ld, %ld)\n",r, s); else printf("They are indeed dependent.\n"); } } else { *found=dd_TRUE; } stop = dd_TRUE; } } while (!stop); for (j=1; j<=d_size; j++) if (nbindex[j]>0) bflag[nbindex[j]]=j; *pivot_no=pivots_p0; set_free(RowSelected); set_free(ColSelected); set_free(NopivotRow); set_free(DependentCols); dd_clear(val); } void dd_FindDualFeasibleBasis(dd_rowrange m_size,dd_colrange d_size, dd_Amatrix A,dd_Bmatrix T,dd_rowindex OV, dd_colindex nbindex,dd_rowindex bflag,dd_rowrange objrow,dd_colrange rhscol, dd_boolean lexicopivot, dd_colrange *s,dd_ErrorType *err,dd_LPStatusType *lps,long *pivot_no, long maxpivots) { /* Find a dual feasible basis using Phase I of Dual Simplex method. If the problem is dual feasible, the procedure returns *err=NoError, *lps=LPSundecided and a dual feasible basis. If the problem is dual infeasible, this returns *err=NoError, *lps=DualInconsistent and the evidence column *s. Caution: matrix A must have at least one extra row: the row space A[m_size] must have been allocated. */ dd_boolean phase1,dualfeasible=dd_TRUE; dd_boolean localdebug=dd_FALSE,chosen,stop; dd_LPStatusType LPSphase1; long pivots_p1=0; dd_rowrange i,r_val; dd_colrange j,l,ms=0,s_val,local_m_size; mytype x,val,maxcost,axvalue,maxratio; static dd_colrange d_last=0; static dd_Arow rcost; static dd_colindex nbindex_ref; /* to be used to store the initial feasible basis for lexico rule */ mytype scaling,svalue; /* random scaling mytype value */ mytype minval; if (dd_debug) localdebug=dd_debug; dd_init(x); dd_init(val); dd_init(scaling); dd_init(svalue); dd_init(axvalue); dd_init(maxcost); dd_set(maxcost,dd_minuszero); dd_init(maxratio); dd_set(maxratio,dd_minuszero); if (d_last0) { for (j=1; j<=d_last; j++){ dd_clear(rcost[j-1]);} free(rcost); free(nbindex_ref); } rcost=(mytype*) calloc(d_size,sizeof(mytype)); nbindex_ref=(long*) calloc(d_size+1,sizeof(long)); for (j=1; j<=d_size; j++){ dd_init(rcost[j-1]);} d_last=d_size; } *err=dd_NoError; *lps=dd_LPSundecided; *s=0; local_m_size=m_size+1; /* increase m_size by 1 */ ms=0; /* ms will be the index of column which has the largest reduced cost */ for (j=1; j<=d_size; j++){ if (j!=rhscol){ dd_TableauEntry(&(rcost[j-1]),local_m_size,d_size,A,T,objrow,j); if (dd_Larger(rcost[j-1],maxcost)) {dd_set(maxcost,rcost[j-1]); ms = j;} } } if (dd_Positive(maxcost)) dualfeasible=dd_FALSE; if (!dualfeasible){ for (j=1; j<=d_size; j++){ dd_set(A[local_m_size-1][j-1], dd_purezero); for (l=1; l<=d_size; l++){ if (nbindex[l]>0) { dd_set_si(scaling,l+10); dd_mul(svalue,A[nbindex[l]-1][j-1],scaling); dd_sub(A[local_m_size-1][j-1],A[local_m_size-1][j-1],svalue); /* To make the auxiliary row (0,-11,-12,...,-d-10). It is likely to be better than (0, -1, -1, ..., -1) to avoid a degenerate LP. Version 093c. */ } } } if (localdebug){ fprintf(stderr,"\ndd_FindDualFeasibleBasis: curruent basis is not dual feasible.\n"); fprintf(stderr,"because of the column %ld assoc. with var %ld dual cost =", ms,nbindex[ms]); dd_WriteNumber(stderr, maxcost); if (localdebug) { if (m_size <=100 && d_size <=30){ printf("\ndd_FindDualFeasibleBasis: the starting dictionary.\n"); dd_WriteTableau(stdout,m_size+1,d_size,A,T,nbindex,bflag); } } } ms=0; /* Ratio Test: ms will be now the index of column which has the largest reduced cost over the auxiliary row entry */ for (j=1; j<=d_size; j++){ if ((j!=rhscol) && dd_Positive(rcost[j-1])){ dd_TableauEntry(&axvalue,local_m_size,d_size,A,T,local_m_size,j); if (dd_Nonnegative(axvalue)) { *err=dd_NumericallyInconsistent; /* This should not happen as they are set negative above. Quit the phase I.*/ if (localdebug) fprintf(stderr,"dd_FindDualFeasibleBasis: Numerical Inconsistency detected.\n"); goto _L99; } dd_neg(axvalue,axvalue); dd_div(axvalue,rcost[j-1],axvalue); /* axvalue is the negative of ratio that is to be maximized. */ if (dd_Larger(axvalue,maxratio)) { dd_set(maxratio,axvalue); ms = j; } } } if (ms==0) { *err=dd_NumericallyInconsistent; /* This should not happen. Quit the phase I.*/ if (localdebug) fprintf(stderr,"dd_FindDualFeasibleBasis: Numerical Inconsistency detected.\n"); goto _L99; } /* Pivot on (local_m_size,ms) so that the dual basic solution becomes feasible */ dd_GaussianColumnPivot2(local_m_size,d_size,A,T,nbindex,bflag,local_m_size,ms); pivots_p1=pivots_p1+1; if (localdebug) { printf("\ndd_FindDualFeasibleBasis: Pivot on %ld %ld.\n",local_m_size,ms); } for (j=1; j<=d_size; j++) nbindex_ref[j]=nbindex[j]; /* set the reference basis to be the current feasible basis. */ if (localdebug){ fprintf(stderr, "Store the current feasible basis:"); for (j=1; j<=d_size; j++) fprintf(stderr, " %ld", nbindex_ref[j]); fprintf(stderr, "\n"); if (m_size <=100 && d_size <=30) dd_WriteSignTableau2(stdout,m_size+1,d_size,A,T,nbindex_ref,nbindex,bflag); } phase1=dd_TRUE; stop=dd_FALSE; do { /* Dual Simplex Phase I */ chosen=dd_FALSE; LPSphase1=dd_LPSundecided; if (pivots_p1>maxpivots) { *err=dd_LPCycling; fprintf(stderr,"max number %ld of pivots performed in Phase I. Switch to the anticycling phase.\n", maxpivots); goto _L99; /* failure due to max no. of pivots performed */ } dd_SelectDualSimplexPivot(local_m_size,d_size,phase1,A,T,OV,nbindex_ref,nbindex,bflag, objrow,rhscol,lexicopivot,&r_val,&s_val,&chosen,&LPSphase1); if (!chosen) { /* The current dictionary is terminal. There are two cases: dd_TableauEntry(local_m_size,d_size,A,T,objrow,ms) is negative or zero. The first case implies dual infeasible, and the latter implies dual feasible but local_m_size is still in nonbasis. We must pivot in the auxiliary variable local_m_size. */ dd_TableauEntry(&x,local_m_size,d_size,A,T,objrow,ms); if (dd_Negative(x)){ *err=dd_NoError; *lps=dd_DualInconsistent; *s=ms; } if (localdebug) { fprintf(stderr,"\ndd_FindDualFeasibleBasis: the auxiliary variable was forced to enter the basis (# pivots = %ld).\n",pivots_p1); fprintf(stderr," -- objrow %ld, ms %ld entry: ",objrow,ms); dd_WriteNumber(stderr, x); fprintf(stderr,"\n"); if (dd_Negative(x)){ fprintf(stderr,"->The basis is dual inconsistent. Terminate.\n"); } else { fprintf(stderr,"->The basis is feasible. Go to phase II.\n"); } } dd_init(minval); r_val=0; for (i=1; i<=local_m_size; i++){ if (bflag[i]<0) { /* i is basic and not the objective variable */ dd_TableauEntry(&val,local_m_size,d_size,A,T,i,ms); /* auxiliary column*/ if (dd_Smaller(val, minval)) { r_val=i; dd_set(minval,val); } } } dd_clear(minval); if (r_val==0) { *err=dd_NumericallyInconsistent; /* This should not happen. Quit the phase I.*/ if (localdebug) fprintf(stderr,"dd_FindDualFeasibleBasis: Numerical Inconsistency detected (r_val is 0).\n"); goto _L99; } dd_GaussianColumnPivot2(local_m_size,d_size,A,T,nbindex,bflag,r_val,ms); pivots_p1=pivots_p1+1; if (localdebug) { printf("\ndd_FindDualFeasibleBasis: make the %ld-th pivot on %ld %ld to force the auxiliary variable to enter the basis.\n",pivots_p1,r_val,ms); if (m_size <=100 && d_size <=30) dd_WriteSignTableau2(stdout,m_size+1,d_size,A,T,nbindex_ref,nbindex,bflag); } stop=dd_TRUE; } else { dd_GaussianColumnPivot2(local_m_size,d_size,A,T,nbindex,bflag,r_val,s_val); pivots_p1=pivots_p1+1; if (localdebug) { printf("\ndd_FindDualFeasibleBasis: make a %ld-th pivot on %ld %ld\n",pivots_p1,r_val,s_val); if (m_size <=100 && d_size <=30) dd_WriteSignTableau2(stdout,local_m_size,d_size,A,T,nbindex_ref,nbindex,bflag); } if (bflag[local_m_size]<0) { stop=dd_TRUE; if (localdebug) fprintf(stderr,"\nDualSimplex Phase I: the auxiliary variable entered the basis (# pivots = %ld).\nGo to phase II\n",pivots_p1); } } } while(!stop); } _L99: *pivot_no=pivots_p1; dd_statDS1pivots+=pivots_p1; dd_clear(x); dd_clear(val); dd_clear(maxcost); dd_clear(maxratio); dd_clear(scaling); dd_clear(svalue); dd_clear(axvalue); } void dd_DualSimplexMinimize(dd_LPPtr lp,dd_ErrorType *err) { dd_colrange j; *err=dd_NoError; for (j=1; j<=lp->d; j++) dd_neg(lp->A[lp->objrow-1][j-1],lp->A[lp->objrow-1][j-1]); dd_DualSimplexMaximize(lp,err); dd_neg(lp->optvalue,lp->optvalue); for (j=1; j<=lp->d; j++){ if (lp->LPS!=dd_Inconsistent) { /* Inconsistent certificate stays valid for minimization, 0.94e */ dd_neg(lp->dsol[j-1],lp->dsol[j-1]); } dd_neg(lp->A[lp->objrow-1][j-1],lp->A[lp->objrow-1][j-1]); } } void dd_DualSimplexMaximize(dd_LPPtr lp,dd_ErrorType *err) /* When LP is inconsistent then lp->re returns the evidence row. When LP is dual-inconsistent then lp->se returns the evidence column. */ { int stop,chosen,phase1,found; long pivots_ds=0,pivots_p0=0,pivots_p1=0,pivots_pc=0,maxpivots,maxpivfactor=20; dd_boolean localdebug=dd_FALSE,localdebug1=dd_FALSE; #if !defined GMPRATIONAL long maxccpivots,maxccpivfactor=100; /* criss-cross should not cycle, but with floating-point arithmetics, it happens (very rarely). Jorg Rambau reported such an LP, in August 2003. Thanks Jorg! */ #endif dd_rowrange i,r; dd_colrange j,s; static dd_rowindex bflag; static long mlast=0,nlast=0; static dd_rowindex OrderVector; /* the permutation vector to store a preordered row indeces */ static dd_colindex nbindex_ref; /* to be used to store the initial feasible basis for lexico rule */ double redpercent=0,redpercent_prev=0,redgain=0; unsigned int rseed=1; /* *err=dd_NoError; */ if (dd_debug) localdebug=dd_debug; set_emptyset(lp->redset_extra); for (i=0; i<= 4; i++) lp->pivots[i]=0; maxpivots=maxpivfactor*lp->d; /* maximum pivots to be performed before cc pivot is applied. */ #if !defined GMPRATIONAL maxccpivots=maxccpivfactor*lp->d; /* maximum pivots to be performed with emergency cc pivots. */ #endif if (mlast!=lp->m || nlast!=lp->d){ if (mlast>0) { /* called previously with different lp->m */ free(OrderVector); free(bflag); free(nbindex_ref); } OrderVector=(long *)calloc(lp->m+1,sizeof(*OrderVector)); bflag=(long *) calloc(lp->m+2,sizeof(*bflag)); /* one more element for an auxiliary variable */ nbindex_ref=(long*) calloc(lp->d+1,sizeof(long)); mlast=lp->m;nlast=lp->d; } /* Initializing control variables. */ dd_ComputeRowOrderVector2(lp->m,lp->d,lp->A,OrderVector,dd_MinIndex,rseed); lp->re=0; lp->se=0; dd_ResetTableau(lp->m,lp->d,lp->B,lp->nbindex,bflag,lp->objrow,lp->rhscol); dd_FindLPBasis(lp->m,lp->d,lp->A,lp->B,OrderVector,lp->equalityset,lp->nbindex,bflag, lp->objrow,lp->rhscol,&s,&found,&(lp->LPS),&pivots_p0); lp->pivots[0]=pivots_p0; if (!found){ lp->se=s; goto _L99; /* No LP basis is found, and thus Inconsistent. Output the evidence column. */ } dd_FindDualFeasibleBasis(lp->m,lp->d,lp->A,lp->B,OrderVector,lp->nbindex,bflag, lp->objrow,lp->rhscol,lp->lexicopivot,&s, err,&(lp->LPS),&pivots_p1, maxpivots); lp->pivots[1]=pivots_p1; for (j=1; j<=lp->d; j++) nbindex_ref[j]=lp->nbindex[j]; /* set the reference basis to be the current feasible basis. */ if (localdebug){ fprintf(stderr, "dd_DualSimplexMaximize: Store the current feasible basis:"); for (j=1; j<=lp->d; j++) fprintf(stderr, " %ld", nbindex_ref[j]); fprintf(stderr, "\n"); if (lp->m <=100 && lp->d <=30) dd_WriteSignTableau2(stdout,lp->m+1,lp->d,lp->A,lp->B,nbindex_ref,lp->nbindex,bflag); } if (*err==dd_LPCycling || *err==dd_NumericallyInconsistent){ if (localdebug) fprintf(stderr, "Phase I failed and thus switch to the Criss-Cross method\n"); dd_CrissCrossMaximize(lp,err); return; } if (lp->LPS==dd_DualInconsistent){ lp->se=s; goto _L99; /* No dual feasible basis is found, and thus DualInconsistent. Output the evidence column. */ } /* Dual Simplex Method */ stop=dd_FALSE; do { chosen=dd_FALSE; lp->LPS=dd_LPSundecided; phase1=dd_FALSE; if (pivots_dsm,lp->d,phase1,lp->A,lp->B,OrderVector,nbindex_ref,lp->nbindex,bflag, lp->objrow,lp->rhscol,lp->lexicopivot,&r,&s,&chosen,&(lp->LPS)); } if (chosen) { pivots_ds=pivots_ds+1; if (lp->redcheck_extensive) { dd_GetRedundancyInformation(lp->m,lp->d,lp->A,lp->B,lp->nbindex, bflag, lp->redset_extra); set_uni(lp->redset_accum, lp->redset_accum,lp->redset_extra); redpercent=100*(double)set_card(lp->redset_extra)/(double)lp->m; redgain=redpercent-redpercent_prev; redpercent_prev=redpercent; if (localdebug1){ fprintf(stderr,"\ndd_DualSimplexMaximize: Phase II pivot %ld on (%ld, %ld).\n",pivots_ds,r,s); fprintf(stderr," redundancy %f percent: redset size = %ld\n",redpercent,set_card(lp->redset_extra)); } } } if (!chosen && lp->LPS==dd_LPSundecided) { if (localdebug1){ fprintf(stderr,"Warning: an emergency CC pivot in Phase II is performed\n"); /* In principle this should not be executed because we already have dual feasibility attained and dual simplex pivot should have been chosen. This might occur under floating point computation, or the case of cycling. */ if (localdebug && lp->m <=100 && lp->d <=30){ fprintf(stderr,"\ndd_DualSimplexMaximize: The current dictionary.\n"); dd_WriteSignTableau2(stdout,lp->m,lp->d,lp->A,lp->B,nbindex_ref,lp->nbindex,bflag); } } #if !defined GMPRATIONAL if (pivots_pc>maxccpivots) { *err=dd_LPCycling; stop=dd_TRUE; goto _L99; } #endif dd_SelectCrissCrossPivot(lp->m,lp->d,lp->A,lp->B,bflag, lp->objrow,lp->rhscol,&r,&s,&chosen,&(lp->LPS)); if (chosen) pivots_pc=pivots_pc+1; } if (chosen) { dd_GaussianColumnPivot2(lp->m,lp->d,lp->A,lp->B,lp->nbindex,bflag,r,s); if (localdebug && lp->m <=100 && lp->d <=30){ fprintf(stderr,"\ndd_DualSimplexMaximize: The current dictionary.\n"); dd_WriteSignTableau2(stdout,lp->m,lp->d,lp->A,lp->B,nbindex_ref,lp->nbindex,bflag); } } else { switch (lp->LPS){ case dd_Inconsistent: lp->re=r; case dd_DualInconsistent: lp->se=s; default: break; } stop=dd_TRUE; } } while(!stop); _L99: lp->pivots[2]=pivots_ds; lp->pivots[3]=pivots_pc; dd_statDS2pivots+=pivots_ds; dd_statACpivots+=pivots_pc; dd_SetSolutions(lp->m,lp->d,lp->A,lp->B,lp->objrow,lp->rhscol,lp->LPS,&(lp->optvalue),lp->sol,lp->dsol,lp->posset_extra,lp->nbindex,lp->re,lp->se,bflag); } void dd_CrissCrossMinimize(dd_LPPtr lp,dd_ErrorType *err) { dd_colrange j; *err=dd_NoError; for (j=1; j<=lp->d; j++) dd_neg(lp->A[lp->objrow-1][j-1],lp->A[lp->objrow-1][j-1]); dd_CrissCrossMaximize(lp,err); dd_neg(lp->optvalue,lp->optvalue); for (j=1; j<=lp->d; j++){ if (lp->LPS!=dd_Inconsistent) { /* Inconsistent certificate stays valid for minimization, 0.94e */ dd_neg(lp->dsol[j-1],lp->dsol[j-1]); } dd_neg(lp->A[lp->objrow-1][j-1],lp->A[lp->objrow-1][j-1]); } } void dd_CrissCrossMaximize(dd_LPPtr lp,dd_ErrorType *err) /* When LP is inconsistent then lp->re returns the evidence row. When LP is dual-inconsistent then lp->se returns the evidence column. */ { int stop,chosen,found; long pivots0,pivots1; #if !defined GMPRATIONAL long maxpivots,maxpivfactor=1000; /* criss-cross should not cycle, but with floating-point arithmetics, it happens (very rarely). Jorg Rambau reported such an LP, in August 2003. Thanks Jorg! */ #endif dd_rowrange i,r; dd_colrange s; static dd_rowindex bflag; static long mlast=0; static dd_rowindex OrderVector; /* the permutation vector to store a preordered row indeces */ unsigned int rseed=1; dd_colindex nbtemp; *err=dd_NoError; #if !defined GMPRATIONAL maxpivots=maxpivfactor*lp->d; /* maximum pivots to be performed when floating-point arithmetics is used. */ #endif nbtemp=(long *) calloc(lp->d+1,sizeof(long)); for (i=0; i<= 4; i++) lp->pivots[i]=0; if (bflag==NULL || mlast!=lp->m){ if (mlast!=lp->m && mlast>0) { free(bflag); /* called previously with different lp->m */ free(OrderVector); } bflag=(long *) calloc(lp->m+1,sizeof(long)); OrderVector=(long *)calloc(lp->m+1,sizeof(long)); /* initialize only for the first time or when a larger space is needed */ mlast=lp->m; } /* Initializing control variables. */ dd_ComputeRowOrderVector2(lp->m,lp->d,lp->A,OrderVector,dd_MinIndex,rseed); lp->re=0; lp->se=0; pivots1=0; dd_ResetTableau(lp->m,lp->d,lp->B,lp->nbindex,bflag,lp->objrow,lp->rhscol); dd_FindLPBasis(lp->m,lp->d,lp->A,lp->B,OrderVector,lp->equalityset, lp->nbindex,bflag,lp->objrow,lp->rhscol,&s,&found,&(lp->LPS),&pivots0); lp->pivots[0]+=pivots0; if (!found){ lp->se=s; goto _L99; /* No LP basis is found, and thus Inconsistent. Output the evidence column. */ } stop=dd_FALSE; do { /* Criss-Cross Method */ #if !defined GMPRATIONAL if (pivots1>maxpivots) { *err=dd_LPCycling; fprintf(stderr,"max number %ld of pivots performed by the criss-cross method. Most likely due to the floating-point arithmetics error.\n", maxpivots); goto _L99; /* failure due to max no. of pivots performed */ } #endif dd_SelectCrissCrossPivot(lp->m,lp->d,lp->A,lp->B,bflag, lp->objrow,lp->rhscol,&r,&s,&chosen,&(lp->LPS)); if (chosen) { dd_GaussianColumnPivot2(lp->m,lp->d,lp->A,lp->B,lp->nbindex,bflag,r,s); pivots1++; } else { switch (lp->LPS){ case dd_Inconsistent: lp->re=r; case dd_DualInconsistent: lp->se=s; default: break; } stop=dd_TRUE; } } while(!stop); _L99: lp->pivots[1]+=pivots1; dd_statCCpivots+=pivots1; dd_SetSolutions(lp->m,lp->d,lp->A,lp->B, lp->objrow,lp->rhscol,lp->LPS,&(lp->optvalue),lp->sol,lp->dsol,lp->posset_extra,lp->nbindex,lp->re,lp->se,bflag); free(nbtemp); } void dd_SetSolutions(dd_rowrange m_size,dd_colrange d_size, dd_Amatrix A,dd_Bmatrix T, dd_rowrange objrow,dd_colrange rhscol,dd_LPStatusType LPS, mytype *optvalue,dd_Arow sol,dd_Arow dsol,dd_rowset posset, dd_colindex nbindex, dd_rowrange re,dd_colrange se,dd_rowindex bflag) /* Assign the solution vectors to sol,dsol,*optvalue after solving the LP. */ { dd_rowrange i; dd_colrange j; mytype x,sw; int localdebug=dd_FALSE; dd_init(x); dd_init(sw); if (localdebug) fprintf(stderr,"SetSolutions:\n"); switch (LPS){ case dd_Optimal: for (j=1;j<=d_size; j++) { dd_set(sol[j-1],T[j-1][rhscol-1]); dd_TableauEntry(&x,m_size,d_size,A,T,objrow,j); dd_neg(dsol[j-1],x); dd_TableauEntry(optvalue,m_size,d_size,A,T,objrow,rhscol); if (localdebug) {fprintf(stderr,"dsol[%ld]= ",nbindex[j]); dd_WriteNumber(stderr, dsol[j-1]); } } for (i=1; i<=m_size; i++) { if (bflag[i]==-1) { /* i is a basic variable */ dd_TableauEntry(&x,m_size,d_size,A,T,i,rhscol); if (dd_Positive(x)) set_addelem(posset, i); } } break; case dd_Inconsistent: if (localdebug) fprintf(stderr,"SetSolutions: LP is inconsistent.\n"); for (j=1;j<=d_size; j++) { dd_set(sol[j-1],T[j-1][rhscol-1]); dd_TableauEntry(&x,m_size,d_size,A,T,re,j); dd_neg(dsol[j-1],x); if (localdebug) {fprintf(stderr,"dsol[%ld]=",nbindex[j]); dd_WriteNumber(stderr,dsol[j-1]); fprintf(stderr,"\n"); } } break; case dd_DualInconsistent: if (localdebug) printf( "SetSolutions: LP is dual inconsistent.\n"); for (j=1;j<=d_size; j++) { dd_set(sol[j-1],T[j-1][se-1]); dd_TableauEntry(&x,m_size,d_size,A,T,objrow,j); dd_neg(dsol[j-1],x); if (localdebug) {fprintf(stderr,"dsol[%ld]=",nbindex[j]); dd_WriteNumber(stderr,dsol[j-1]); fprintf(stderr,"\n"); } } break; case dd_StrucDualInconsistent: dd_TableauEntry(&x,m_size,d_size,A,T,objrow,se); if (dd_Positive(x)) dd_set(sw,dd_one); else dd_neg(sw,dd_one); for (j=1;j<=d_size; j++) { dd_mul(sol[j-1],sw,T[j-1][se-1]); dd_TableauEntry(&x,m_size,d_size,A,T,objrow,j); dd_neg(dsol[j-1],x); if (localdebug) {fprintf(stderr,"dsol[%ld]= ",nbindex[j]);dd_WriteNumber(stderr,dsol[j-1]);} } if (localdebug) fprintf(stderr,"SetSolutions: LP is dual inconsistent.\n"); break; default:break; } dd_clear(x); dd_clear(sw); } void dd_RandomPermutation2(dd_rowindex OV,long t,unsigned int seed) { long k,j,ovj; double u,xk,r,rand_max=(double) UINT64_MAX; int localdebug=dd_FALSE; srand_splitmix64(seed); for (j=t; j>1 ; j--) { r=rand_splitmix64(); u=r/rand_max; xk=(double)(j*u +1); k=(long)xk; if (localdebug) fprintf(stderr,"u=%g, k=%ld, r=%g, randmax= %g\n",u,k,r,rand_max); ovj=OV[j]; OV[j]=OV[k]; OV[k]=ovj; if (localdebug) fprintf(stderr,"row %ld is exchanged with %ld\n",j,k); } } void dd_ComputeRowOrderVector2(dd_rowrange m_size,dd_colrange d_size,dd_Amatrix A, dd_rowindex OV,dd_RowOrderType ho,unsigned int rseed) { long i,itemp; OV[0]=0; switch (ho){ case dd_MaxIndex: for(i=1; i<=m_size; i++) OV[i]=m_size-i+1; break; case dd_LexMin: for(i=1; i<=m_size; i++) OV[i]=i; dd_QuickSort(OV,1,m_size,A,d_size); break; case dd_LexMax: for(i=1; i<=m_size; i++) OV[i]=i; dd_QuickSort(OV,1,m_size,A,d_size); for(i=1; i<=m_size/2;i++){ /* just reverse the order */ itemp=OV[i]; OV[i]=OV[m_size-i+1]; OV[m_size-i+1]=itemp; } break; case dd_RandomRow: for(i=1; i<=m_size; i++) OV[i]=i; if (rseed<=0) rseed=1; dd_RandomPermutation2(OV,m_size,rseed); break; case dd_MinIndex: for(i=1; i<=m_size; i++) OV[i]=i; break; default: for(i=1; i<=m_size; i++) OV[i]=i; break; } } void dd_SelectPreorderedNext2(dd_rowrange m_size,dd_colrange d_size, rowset excluded,dd_rowindex OV,dd_rowrange *hnext) { dd_rowrange i,k; *hnext=0; for (i=1; i<=m_size && *hnext==0; i++){ k=OV[i]; if (!set_member(k,excluded)) *hnext=k ; } } #ifdef GMPRATIONAL ddf_LPObjectiveType Obj2Obj(dd_LPObjectiveType obj) { ddf_LPObjectiveType objf=ddf_LPnone; switch (obj) { case dd_LPnone: objf=ddf_LPnone; break; case dd_LPmax: objf=ddf_LPmax; break; case dd_LPmin: objf=ddf_LPmin; break; } return objf; } ddf_LPPtr dd_LPgmp2LPf(dd_LPPtr lp) { dd_rowrange i; dd_colrange j; ddf_LPType *lpf; double val; dd_boolean localdebug=dd_FALSE; if (localdebug) fprintf(stderr,"Converting a GMP-LP to a float-LP.\n"); lpf=ddf_CreateLPData(Obj2Obj(lp->objective), ddf_Real, lp->m, lp->d); lpf->Homogeneous = lp->Homogeneous; lpf->eqnumber=lp->eqnumber; /* this records the number of equations */ for (i = 1; i <= lp->m; i++) { if (set_member(i, lp->equalityset)) set_addelem(lpf->equalityset,i); /* it is equality. Its reversed row will not be in this set */ for (j = 1; j <= lp->d; j++) { val=mpq_get_d(lp->A[i-1][j-1]); ddf_set_d(lpf->A[i-1][j-1],val); } /*of j*/ } /*of i*/ return lpf; } #endif dd_boolean dd_LPSolve(dd_LPPtr lp,dd_LPSolverType solver,dd_ErrorType *err) /* The current version of dd_LPSolve that solves an LP with floating-arithmetics first and then with the specified arithimetics if it is GMP. When LP is inconsistent then *re returns the evidence row. When LP is dual-inconsistent then *se returns the evidence column. */ { int i; dd_boolean found=dd_FALSE; #ifdef GMPRATIONAL ddf_LPPtr lpf; ddf_ErrorType errf; dd_boolean LPScorrect=dd_FALSE; dd_boolean localdebug=dd_FALSE; if (dd_debug) localdebug=dd_debug; #endif *err=dd_NoError; lp->solver=solver; time(&lp->starttime); #ifndef GMPRATIONAL switch (lp->solver) { case dd_CrissCross: dd_CrissCrossSolve(lp,err); break; case dd_DualSimplex: dd_DualSimplexSolve(lp,err); break; } #else lpf=dd_LPgmp2LPf(lp); switch (lp->solver) { case dd_CrissCross: ddf_CrissCrossSolve(lpf,&errf); /* First, run with double float. */ if (errf==ddf_NoError){ /* 094a: fix for a bug reported by Dima Pasechnik */ dd_BasisStatus(lpf,lp, &LPScorrect); /* Check the basis. */ } else {LPScorrect=dd_FALSE;} if (!LPScorrect) { if (localdebug) printf("BasisStatus: the current basis is NOT verified with GMP. Rerun with GMP.\n"); dd_CrissCrossSolve(lp,err); /* Rerun with GMP if fails. */ } else { if (localdebug) printf("BasisStatus: the current basis is verified with GMP. The LP Solved.\n"); } break; case dd_DualSimplex: ddf_DualSimplexSolve(lpf,&errf); /* First, run with double float. */ if (errf==ddf_NoError){ /* 094a: fix for a bug reported by Dima Pasechnik */ dd_BasisStatus(lpf,lp, &LPScorrect); /* Check the basis. */ } else {LPScorrect=dd_FALSE;} if (!LPScorrect){ if (localdebug) printf("BasisStatus: the current basis is NOT verified with GMP. Rerun with GMP.\n"); dd_DualSimplexSolve(lp,err); /* Rerun with GMP if fails. */ if (localdebug){ printf("*total number pivots = %ld (ph0 = %ld, ph1 = %ld, ph2 = %ld, ph3 = %ld, ph4 = %ld)\n", lp->total_pivots,lp->pivots[0],lp->pivots[1],lp->pivots[2],lp->pivots[3],lp->pivots[4]); ddf_WriteLPResult(stdout, lpf, errf); dd_WriteLP(stdout, lp); } } else { if (localdebug) printf("BasisStatus: the current basis is verified with GMP. The LP Solved.\n"); } break; } ddf_FreeLPData(lpf); #endif time(&lp->endtime); lp->total_pivots=0; for (i=0; i<=4; i++) lp->total_pivots+=lp->pivots[i]; if (*err==dd_NoError) found=dd_TRUE; return found; } dd_boolean dd_LPSolve0(dd_LPPtr lp,dd_LPSolverType solver,dd_ErrorType *err) /* The original version of dd_LPSolve that solves an LP with specified arithimetics. When LP is inconsistent then *re returns the evidence row. When LP is dual-inconsistent then *se returns the evidence column. */ { int i; dd_boolean found=dd_FALSE; *err=dd_NoError; lp->solver=solver; time(&lp->starttime); switch (lp->solver) { case dd_CrissCross: dd_CrissCrossSolve(lp,err); break; case dd_DualSimplex: dd_DualSimplexSolve(lp,err); break; } time(&lp->endtime); lp->total_pivots=0; for (i=0; i<=4; i++) lp->total_pivots+=lp->pivots[i]; if (*err==dd_NoError) found=dd_TRUE; return found; } dd_LPPtr dd_MakeLPforInteriorFinding(dd_LPPtr lp) /* Delete the objective row, add an extra column with -1's to the matrix A, add an extra row with (bceil, 0,...,0,-1), add an objective row with (0,...,0,1), and rows & columns, and change m_size and d_size accordingly, to output new_A. This sets up the LP: maximize x_{d+1} s.t. A x + x_{d+1} <= b x_{d+1} <= bm * bmax, where bm is set to 2 by default, and bmax=max{1, b[1],...,b[m_size]}. Note that the equalitions (linearity) in the input lp will be ignored. */ { dd_rowrange m; dd_colrange d; dd_NumberType numbtype; dd_LPObjectiveType obj; dd_LPType *lpnew; dd_rowrange i; dd_colrange j; mytype bm,bmax,bceil; int localdebug=dd_FALSE; dd_init(bm); dd_init(bmax); dd_init(bceil); dd_add(bm,dd_one,dd_one); dd_set(bmax,dd_one); numbtype=lp->numbtype; m=lp->m+1; d=lp->d+1; obj=dd_LPmax; lpnew=dd_CreateLPData(obj, numbtype, m, d); for (i=1; i<=lp->m; i++) { if (dd_Larger(lp->A[i-1][lp->rhscol-1],bmax)) dd_set(bmax,lp->A[i-1][lp->rhscol-1]); } dd_mul(bceil,bm,bmax); if (localdebug) {fprintf(stderr,"bceil is set to "); dd_WriteNumber(stderr, bceil);} for (i=1; i <= lp->m; i++) { for (j=1; j <= lp->d; j++) { dd_set(lpnew->A[i-1][j-1],lp->A[i-1][j-1]); } } for (i=1;i<=lp->m; i++){ dd_neg(lpnew->A[i-1][lp->d],dd_one); /* new column with all minus one's */ } for (j=1;j<=lp->d;j++){ dd_set(lpnew->A[m-2][j-1],dd_purezero); /* new row (bceil, 0,...,0,-1) */ } dd_set(lpnew->A[m-2][0],bceil); /* new row (bceil, 0,...,0,-1) */ for (j=1;j<= d-1;j++) { dd_set(lpnew->A[m-1][j-1],dd_purezero); /* new obj row with (0,...,0,1) */ } dd_set(lpnew->A[m-1][d-1],dd_one); /* new obj row with (0,...,0,1) */ if (localdebug) dd_WriteAmatrix(stderr, lp->A, lp->m, lp->d); if (localdebug) dd_WriteAmatrix(stderr, lpnew->A, lpnew->m, lpnew->d); dd_clear(bm); dd_clear(bmax); dd_clear(bceil); return lpnew; } void dd_WriteLPResult(FILE *f,dd_LPPtr lp,dd_ErrorType err) { long j; fprintf(f,"* cdd LP solver result\n"); if (err!=dd_NoError) { dd_WriteErrorMessages(f,err); goto _L99; } dd_WriteProgramDescription(f); fprintf(f,"* #constraints = %ld\n",lp->m-1); fprintf(f,"* #variables = %ld\n",lp->d-1); switch (lp->solver) { case dd_DualSimplex: fprintf(f,"* Algorithm: dual simplex algorithm\n");break; case dd_CrissCross: fprintf(f,"* Algorithm: criss-cross method\n");break; } switch (lp->objective) { case dd_LPmax: fprintf(f,"* maximization is chosen\n");break; case dd_LPmin: fprintf(f,"* minimization is chosen\n");break; case dd_LPnone: fprintf(f,"* no objective type (max or min) is chosen\n");break; } if (lp->objective==dd_LPmax||lp->objective==dd_LPmin){ fprintf(f,"* Objective function is\n"); for (j=0; jd; j++){ if (j>0 && dd_Nonnegative(lp->A[lp->objrow-1][j]) ) fprintf(f," +"); if (j>0 && (j % 5) == 0) fprintf(f,"\n"); dd_WriteNumber(f,lp->A[lp->objrow-1][j]); if (j>0) fprintf(f," X[%3ld]",j); } fprintf(f,"\n"); } switch (lp->LPS){ case dd_Optimal: fprintf(f,"* LP status: a dual pair (x,y) of optimal solutions found.\n"); fprintf(f,"begin\n"); fprintf(f," primal_solution\n"); for (j=1; jd; j++) { fprintf(f," %3ld : ",j); dd_WriteNumber(f,lp->sol[j]); fprintf(f,"\n"); } fprintf(f," dual_solution\n"); for (j=1; jd; j++){ if (lp->nbindex[j+1]>0) { fprintf(f," %3ld : ",lp->nbindex[j+1]); dd_WriteNumber(f,lp->dsol[j]); fprintf(f,"\n"); } } fprintf(f," optimal_value : "); dd_WriteNumber(f,lp->optvalue); fprintf(f,"\nend\n"); break; case dd_Inconsistent: fprintf(f,"* LP status: LP is inconsistent.\n"); fprintf(f,"* The positive combination of original inequalities with\n"); fprintf(f,"* the following coefficients will prove the inconsistency.\n"); fprintf(f,"begin\n"); fprintf(f," dual_direction\n"); fprintf(f," %3ld : ",lp->re); dd_WriteNumber(f,dd_one); fprintf(f,"\n"); for (j=1; jd; j++){ if (lp->nbindex[j+1]>0) { fprintf(f," %3ld : ",lp->nbindex[j+1]); dd_WriteNumber(f,lp->dsol[j]); fprintf(f,"\n"); } } fprintf(f,"end\n"); break; case dd_DualInconsistent: case dd_StrucDualInconsistent: fprintf(f,"* LP status: LP is dual inconsistent.\n"); fprintf(f,"* The linear combination of columns with\n"); fprintf(f,"* the following coefficients will prove the dual inconsistency.\n"); fprintf(f,"* (It is also an unbounded direction for the primal LP.)\n"); fprintf(f,"begin\n"); fprintf(f," primal_direction\n"); for (j=1; jd; j++) { fprintf(f," %3ld : ",j); dd_WriteNumber(f,lp->sol[j]); fprintf(f,"\n"); } fprintf(f,"end\n"); break; default: break; } fprintf(f,"* number of pivot operations = %ld (ph0 = %ld, ph1 = %ld, ph2 = %ld, ph3 = %ld, ph4 = %ld)\n",lp->total_pivots,lp->pivots[0],lp->pivots[1],lp->pivots[2],lp->pivots[3],lp->pivots[4]); dd_WriteLPTimes(f, lp); _L99:; } dd_LPPtr dd_CreateLP_H_ImplicitLinearity(dd_MatrixPtr M) { dd_rowrange m, i, irev, linc; dd_colrange d, j; dd_LPPtr lp; dd_boolean localdebug=dd_FALSE; linc=set_card(M->linset); m=M->rowsize+1+linc+1; /* We represent each equation by two inequalities. This is not the best way but makes the code simple. */ d=M->colsize+1; lp=dd_CreateLPData(M->objective, M->numbtype, m, d); lp->Homogeneous = dd_TRUE; lp->objective = dd_LPmax; lp->eqnumber=linc; /* this records the number of equations */ lp->redcheck_extensive=dd_FALSE; /* this is default */ irev=M->rowsize; /* the first row of the linc reversed inequalities. */ for (i = 1; i <= M->rowsize; i++) { if (set_member(i, M->linset)) { irev=irev+1; set_addelem(lp->equalityset,i); /* it is equality. */ /* the reversed row irev is not in the equality set. */ for (j = 1; j <= M->colsize; j++) { dd_neg(lp->A[irev-1][j-1],M->matrix[i-1][j-1]); } /*of j*/ } else { dd_set(lp->A[i-1][d-1],dd_minusone); /* b_I + A_I x - 1 z >= 0 (z=x_d) */ } for (j = 1; j <= M->colsize; j++) { dd_set(lp->A[i-1][j-1],M->matrix[i-1][j-1]); if (j==1 && irowsize && dd_Nonzero(M->matrix[i-1][j-1])) lp->Homogeneous = dd_FALSE; } /*of j*/ } /*of i*/ dd_set(lp->A[m-2][0],dd_one); dd_set(lp->A[m-2][d-1],dd_minusone); /* make the LP bounded. */ dd_set(lp->A[m-1][d-1],dd_one); /* objective is to maximize z. */ if (localdebug) { fprintf(stderr,"dd_CreateLP_H_ImplicitLinearity: an new lp is\n"); dd_WriteLP(stderr,lp); } return lp; } dd_LPPtr dd_CreateLP_V_ImplicitLinearity(dd_MatrixPtr M) { dd_rowrange m, i, irev, linc; dd_colrange d, j; dd_LPPtr lp; dd_boolean localdebug=dd_FALSE; linc=set_card(M->linset); m=M->rowsize+1+linc+1; /* We represent each equation by two inequalities. This is not the best way but makes the code simple. */ d=(M->colsize)+2; /* Two more columns. This is different from the H-reprentation case */ /* The below must be modified for V-representation!!! */ lp=dd_CreateLPData(M->objective, M->numbtype, m, d); lp->Homogeneous = dd_FALSE; lp->objective = dd_LPmax; lp->eqnumber=linc; /* this records the number of equations */ lp->redcheck_extensive=dd_FALSE; /* this is default */ irev=M->rowsize; /* the first row of the linc reversed inequalities. */ for (i = 1; i <= M->rowsize; i++) { dd_set(lp->A[i-1][0],dd_purezero); /* It is almost completely degerate LP */ if (set_member(i, M->linset)) { irev=irev+1; set_addelem(lp->equalityset,i); /* it is equality. */ /* the reversed row irev is not in the equality set. */ for (j = 2; j <= (M->colsize)+1; j++) { dd_neg(lp->A[irev-1][j-1],M->matrix[i-1][j-2]); } /*of j*/ if (localdebug) fprintf(stderr,"equality row %ld generates the reverse row %ld.\n",i,irev); } else { dd_set(lp->A[i-1][d-1],dd_minusone); /* b_I x_0 + A_I x - 1 z >= 0 (z=x_d) */ } for (j = 2; j <= (M->colsize)+1; j++) { dd_set(lp->A[i-1][j-1],M->matrix[i-1][j-2]); } /*of j*/ } /*of i*/ dd_set(lp->A[m-2][0],dd_one); dd_set(lp->A[m-2][d-1],dd_minusone); /* make the LP bounded. */ dd_set(lp->A[m-1][d-1],dd_one); /* objective is to maximize z. */ if (localdebug) { fprintf(stderr,"dd_CreateLP_V_ImplicitLinearity: an new lp is\n"); dd_WriteLP(stderr,lp); } return lp; } dd_LPPtr dd_CreateLP_H_Redundancy(dd_MatrixPtr M, dd_rowrange itest) { dd_rowrange m, i, irev, linc; dd_colrange d, j; dd_LPPtr lp; dd_boolean localdebug=dd_FALSE; linc=set_card(M->linset); m=M->rowsize+1+linc; /* We represent each equation by two inequalities. This is not the best way but makes the code simple. */ d=M->colsize; lp=dd_CreateLPData(M->objective, M->numbtype, m, d); lp->Homogeneous = dd_TRUE; lp->objective = dd_LPmin; lp->eqnumber=linc; /* this records the number of equations */ lp->redcheck_extensive=dd_FALSE; /* this is default */ irev=M->rowsize; /* the first row of the linc reversed inequalities. */ for (i = 1; i <= M->rowsize; i++) { if (set_member(i, M->linset)) { irev=irev+1; set_addelem(lp->equalityset,i); /* it is equality. */ /* the reversed row irev is not in the equality set. */ for (j = 1; j <= M->colsize; j++) { dd_neg(lp->A[irev-1][j-1],M->matrix[i-1][j-1]); } /*of j*/ if (localdebug) fprintf(stderr,"equality row %ld generates the reverse row %ld.\n",i,irev); } for (j = 1; j <= M->colsize; j++) { dd_set(lp->A[i-1][j-1],M->matrix[i-1][j-1]); if (j==1 && irowsize && dd_Nonzero(M->matrix[i-1][j-1])) lp->Homogeneous = dd_FALSE; } /*of j*/ } /*of i*/ for (j = 1; j <= M->colsize; j++) { dd_set(lp->A[m-1][j-1],M->matrix[itest-1][j-1]); /* objective is to violate the inequality in question. */ } /*of j*/ dd_add(lp->A[itest-1][0],lp->A[itest-1][0],dd_one); /* relax the original inequality by one */ return lp; } dd_LPPtr dd_CreateLP_V_Redundancy(dd_MatrixPtr M, dd_rowrange itest) { dd_rowrange m, i, irev, linc; dd_colrange d, j; dd_LPPtr lp; dd_boolean localdebug=dd_FALSE; linc=set_card(M->linset); m=M->rowsize+1+linc; /* We represent each equation by two inequalities. This is not the best way but makes the code simple. */ d=(M->colsize)+1; /* One more column. This is different from the H-reprentation case */ /* The below must be modified for V-representation!!! */ lp=dd_CreateLPData(M->objective, M->numbtype, m, d); lp->Homogeneous = dd_FALSE; lp->objective = dd_LPmin; lp->eqnumber=linc; /* this records the number of equations */ lp->redcheck_extensive=dd_FALSE; /* this is default */ irev=M->rowsize; /* the first row of the linc reversed inequalities. */ for (i = 1; i <= M->rowsize; i++) { if (i==itest){ dd_set(lp->A[i-1][0],dd_one); /* this is to make the LP bounded, ie. the min >= -1 */ } else { dd_set(lp->A[i-1][0],dd_purezero); /* It is almost completely degerate LP */ } if (set_member(i, M->linset)) { irev=irev+1; set_addelem(lp->equalityset,i); /* it is equality. */ /* the reversed row irev is not in the equality set. */ for (j = 2; j <= (M->colsize)+1; j++) { dd_neg(lp->A[irev-1][j-1],M->matrix[i-1][j-2]); } /*of j*/ if (localdebug) fprintf(stderr,"equality row %ld generates the reverse row %ld.\n",i,irev); } for (j = 2; j <= (M->colsize)+1; j++) { dd_set(lp->A[i-1][j-1],M->matrix[i-1][j-2]); } /*of j*/ } /*of i*/ for (j = 2; j <= (M->colsize)+1; j++) { dd_set(lp->A[m-1][j-1],M->matrix[itest-1][j-2]); /* objective is to violate the inequality in question. */ } /*of j*/ dd_set(lp->A[m-1][0],dd_purezero); /* the constant term for the objective is zero */ if (localdebug) dd_WriteLP(stdout, lp); return lp; } dd_LPPtr dd_CreateLP_V_SRedundancy(dd_MatrixPtr M, dd_rowrange itest) { /* V-representation (=boundary problem) g* = maximize 1^T b_{I-itest} x_0 + 1^T A_{I-itest} (the sum of slacks) subject to b_itest x_0 + A_itest x = 0 (the point has to lie on the boundary) b_{I-itest} x_0 + A_{I-itest} x >= 0 (all nonlinearity generators in one side) 1^T b_{I-itest} x_0 + 1^T A_{I-itest} x <= 1 (to make an LP bounded) b_L x_0 + A_L x = 0. (linearity generators) The redundant row is strongly redundant if and only if g* is zero. */ dd_rowrange m, i, irev, linc; dd_colrange d, j; dd_LPPtr lp; dd_boolean localdebug=dd_FALSE; linc=set_card(M->linset); m=M->rowsize+1+linc+2; /* We represent each equation by two inequalities. This is not the best way but makes the code simple. Two extra constraints are for the first equation and the bouding inequality. */ d=(M->colsize)+1; /* One more column. This is different from the H-reprentation case */ /* The below must be modified for V-representation!!! */ lp=dd_CreateLPData(M->objective, M->numbtype, m, d); lp->Homogeneous = dd_FALSE; lp->objective = dd_LPmax; lp->eqnumber=linc; /* this records the number of equations */ irev=M->rowsize; /* the first row of the linc reversed inequalities. */ for (i = 1; i <= M->rowsize; i++) { if (i==itest){ dd_set(lp->A[i-1][0],dd_purezero); /* this is a half of the boundary constraint. */ } else { dd_set(lp->A[i-1][0],dd_purezero); /* It is almost completely degerate LP */ } if (set_member(i, M->linset) || i==itest) { irev=irev+1; set_addelem(lp->equalityset,i); /* it is equality. */ /* the reversed row irev is not in the equality set. */ for (j = 2; j <= (M->colsize)+1; j++) { dd_neg(lp->A[irev-1][j-1],M->matrix[i-1][j-2]); } /*of j*/ if (localdebug) fprintf(stderr,"equality row %ld generates the reverse row %ld.\n",i,irev); } for (j = 2; j <= (M->colsize)+1; j++) { dd_set(lp->A[i-1][j-1],M->matrix[i-1][j-2]); dd_add(lp->A[m-1][j-1],lp->A[m-1][j-1],lp->A[i-1][j-1]); /* the objective is the sum of all ineqalities */ } /*of j*/ } /*of i*/ for (j = 2; j <= (M->colsize)+1; j++) { dd_neg(lp->A[m-2][j-1],lp->A[m-1][j-1]); /* to make an LP bounded. */ } /*of j*/ dd_set(lp->A[m-2][0],dd_one); /* the constant term for the bounding constraint is 1 */ if (localdebug) dd_WriteLP(stdout, lp); return lp; } dd_boolean dd_Redundant(dd_MatrixPtr M, dd_rowrange itest, dd_Arow certificate, dd_ErrorType *error) /* 092 */ { /* Checks whether the row itest is redundant for the representation. All linearity rows are not checked and considered NONredundant. This code works for both H- and V-representations. A certificate is given in the case of non-redundancy, showing a solution x violating only the itest inequality for H-representation, a hyperplane RHS and normal (x_0, x) that separates the itest from the rest. More explicitly, the LP to be setup is H-representation f* = minimize b_itest + A_itest x subject to b_itest + 1 + A_itest x >= 0 (relaxed inequality to make an LP bounded) b_{I-itest} + A_{I-itest} x >= 0 (all inequalities except for itest) b_L + A_L x = 0. (linearity) V-representation (=separation problem) f* = minimize b_itest x_0 + A_itest x subject to b_itest x_0 + A_itest x >= -1 (to make an LP bounded) b_{I-itest} x_0 + A_{I-itest} x >= 0 (all nonlinearity generators except for itest in one side) b_L x_0 + A_L x = 0. (linearity generators) Here, the input matrix is considered as (b, A), i.e. b corresponds to the first column of input and the row indices of input is partitioned into I and L where L is the set of linearity. In both cases, the itest data is nonredundant if and only if the optimal value f* is negative. The certificate has dimension one more for V-representation case. */ dd_colrange j; dd_LPPtr lp; dd_LPSolutionPtr lps; dd_ErrorType err=dd_NoError; dd_boolean answer=dd_FALSE,localdebug=dd_FALSE; *error=dd_NoError; if (set_member(itest, M->linset)){ if (localdebug) printf("The %ld th row is linearity and redundancy checking is skipped.\n",itest); goto _L99; } /* Create an LP data for redundancy checking */ if (M->representation==dd_Generator){ lp=dd_CreateLP_V_Redundancy(M, itest); } else { lp=dd_CreateLP_H_Redundancy(M, itest); } dd_LPSolve(lp,dd_choiceRedcheckAlgorithm,&err); if (err!=dd_NoError){ *error=err; goto _L999; } else { lps=dd_CopyLPSolution(lp); for (j=0; jd; j++) { dd_set(certificate[j], lps->sol[j]); } if (dd_Negative(lps->optvalue)){ answer=dd_FALSE; if (localdebug) fprintf(stderr,"==> %ld th row is nonredundant.\n",itest); } else { answer=dd_TRUE; if (localdebug) fprintf(stderr,"==> %ld th row is redundant.\n",itest); } dd_FreeLPSolution(lps); } _L999: dd_FreeLPData(lp); _L99: return answer; } dd_boolean dd_RedundantExtensive(dd_MatrixPtr M, dd_rowrange itest, dd_Arow certificate, dd_rowset *redset,dd_ErrorType *error) /* 094 */ { /* This uses the same LP construction as dd_Reduandant. But, while it is checking the redundancy of itest, it also tries to find some other variable that are redundant (i.e. forced to be nonnegative). This is expensive as it used the complete tableau information at each DualSimplex pivot. The redset must be initialized before this function is called. */ dd_colrange j; dd_LPPtr lp; dd_LPSolutionPtr lps; dd_ErrorType err=dd_NoError; dd_boolean answer=dd_FALSE,localdebug=dd_FALSE; *error=dd_NoError; if (set_member(itest, M->linset)){ if (localdebug) printf("The %ld th row is linearity and redundancy checking is skipped.\n",itest); goto _L99; } /* Create an LP data for redundancy checking */ if (M->representation==dd_Generator){ lp=dd_CreateLP_V_Redundancy(M, itest); } else { lp=dd_CreateLP_H_Redundancy(M, itest); } lp->redcheck_extensive=dd_TRUE; dd_LPSolve0(lp,dd_DualSimplex,&err); if (err!=dd_NoError){ *error=err; goto _L999; } else { set_copy(*redset,lp->redset_extra); set_delelem(*redset, itest); /* itest row might be redundant in the lp but this has nothing to do with its redundancy in the original system M. Thus we must delete it. */ if (localdebug){ fprintf(stderr, "dd_RedundantExtensive: checking for %ld, extra redset with cardinality %ld (%ld)\n",itest,set_card(*redset),set_card(lp->redset_extra)); set_fwrite(stderr, *redset); fprintf(stderr, "\n"); } lps=dd_CopyLPSolution(lp); for (j=0; jd; j++) { dd_set(certificate[j], lps->sol[j]); } if (dd_Negative(lps->optvalue)){ answer=dd_FALSE; if (localdebug) fprintf(stderr,"==> %ld th row is nonredundant.\n",itest); } else { answer=dd_TRUE; if (localdebug) fprintf(stderr,"==> %ld th row is redundant.\n",itest); } dd_FreeLPSolution(lps); } _L999: dd_FreeLPData(lp); _L99: return answer; } dd_rowset dd_RedundantRows(dd_MatrixPtr M, dd_ErrorType *error) /* 092 */ { dd_rowrange i,m; dd_colrange d; dd_rowset redset; dd_MatrixPtr Mcopy; dd_Arow cvec; /* certificate */ dd_boolean localdebug=dd_FALSE; m=M->rowsize; if (M->representation==dd_Generator){ d=(M->colsize)+1; } else { d=M->colsize; } Mcopy=dd_MatrixCopy(M); dd_InitializeArow(d,&cvec); set_initialize(&redset, m); for (i=m; i>=1; i--) { if (dd_Redundant(Mcopy, i, cvec, error)) { if (localdebug) printf("Iteration %ld: the row %ld is redundant.\n",m-i+1,i); set_addelem(redset, i); dd_MatrixRowRemove(&Mcopy, i); } else { if (localdebug) printf("Iteration %ld: the row %ld is essential.\n",m-i+1, i); } if (*error!=dd_NoError) goto _L99; } _L99: dd_FreeMatrix(Mcopy); dd_FreeArow(d, cvec); return redset; } dd_boolean dd_MatrixRedundancyRemove(dd_MatrixPtr *M, dd_rowset *redset,dd_rowindex *newpos, dd_ErrorType *error) /* 094 */ { /* It returns the set of all redundant rows. This should be called after all implicit linearity are recognized with dd_MatrixCanonicalizeLinearity. */ dd_rowrange i,k,m,m1; dd_colrange d; dd_rowset redset1; dd_rowindex newpos1; dd_MatrixPtr M1=NULL; dd_Arow cvec; /* certificate */ dd_boolean success=dd_FALSE, localdebug=dd_FALSE; m=(*M)->rowsize; set_initialize(redset, m); M1=dd_MatrixSortedUniqueCopy(*M,newpos); for (i=1; i<=m; i++){ if ((*newpos)[i]<=0) set_addelem(*redset,i); if (localdebug) printf(" %ld:%ld",i,(*newpos)[i]); } if (localdebug) printf("\n"); if ((*M)->representation==dd_Generator){ d=((*M)->colsize)+1; } else { d=(*M)->colsize; } m1=M1->rowsize; if (localdebug){ fprintf(stderr,"dd_MatrixRedundancyRemove: By sorting, %ld rows have been removed. The remaining has %ld rows.\n",m-m1,m1); /* dd_WriteMatrix(stdout,M1); */ } dd_InitializeArow(d,&cvec); set_initialize(&redset1, M1->rowsize); k=1; do { if (dd_RedundantExtensive(M1, k, cvec, &redset1,error)) { set_addelem(redset1, k); dd_MatrixRowsRemove2(&M1,redset1,&newpos1); for (i=1; i<=m; i++){ if ((*newpos)[i]>0){ if (set_member((*newpos)[i],redset1)){ set_addelem(*redset,i); (*newpos)[i]=0; /* now the original row i is recognized redundant and removed from M1 */ } else { (*newpos)[i]=newpos1[(*newpos)[i]]; /* update the new pos vector */ } } } set_free(redset1); set_initialize(&redset1, M1->rowsize); if (localdebug) { printf("dd_MatrixRedundancyRemove: the row %ld is redundant. The new matrix has %ld rows.\n", k, M1->rowsize); /* dd_WriteMatrix(stderr, M1); */ } free(newpos1); } else { if (set_card(redset1)>0) { dd_MatrixRowsRemove2(&M1,redset1,&newpos1); for (i=1; i<=m; i++){ if ((*newpos)[i]>0){ if (set_member((*newpos)[i],redset1)){ set_addelem(*redset,i); (*newpos)[i]=0; /* now the original row i is recognized redundant and removed from M1 */ } else { (*newpos)[i]=newpos1[(*newpos)[i]]; /* update the new pos vector */ } } } set_free(redset1); set_initialize(&redset1, M1->rowsize); free(newpos1); } if (localdebug) { printf("dd_MatrixRedundancyRemove: the row %ld is essential. The new matrix has %ld rows.\n", k, M1->rowsize); /* dd_WriteMatrix(stderr, M1); */ } k=k+1; } if (*error!=dd_NoError) goto _L99; } while (k<=M1->rowsize); if (localdebug) dd_WriteMatrix(stderr, M1); success=dd_TRUE; _L99: dd_FreeMatrix(*M); *M=M1; dd_FreeArow(d, cvec); set_free(redset1); return success; } dd_boolean dd_SRedundant(dd_MatrixPtr M, dd_rowrange itest, dd_Arow certificate, dd_ErrorType *error) /* 093a */ { /* Checks whether the row itest is strongly redundant for the representation. A row is strongly redundant in H-representation if every point in the polyhedron satisfies it with strict inequality. A row is strongly redundant in V-representation if this point is in the interior of the polyhedron. All linearity rows are not checked and considered NOT strongly redundant. This code works for both H- and V-representations. A certificate is given in the case of non-redundancy, showing a solution x violating only the itest inequality for H-representation, a hyperplane RHS and normal (x_0, x) that separates the itest from the rest. More explicitly, the LP to be setup is H-representation f* = minimize b_itest + A_itest x subject to b_itest + 1 + A_itest x >= 0 (relaxed inequality to make an LP bounded) b_{I-itest} + A_{I-itest} x >= 0 (all inequalities except for itest) b_L + A_L x = 0. (linearity) V-representation (=separation problem) f* = minimize b_itest x_0 + A_itest x subject to b_itest x_0 + A_itest x >= -1 (to make an LP bounded) b_{I-itest} x_0 + A_{I-itest} x >= 0 (all nonlinearity generators except for itest in one side) b_L x_0 + A_L x = 0. (linearity generators) Here, the input matrix is considered as (b, A), i.e. b corresponds to the first column of input and the row indices of input is partitioned into I and L where L is the set of linearity. In H-representation, the itest data is strongly redundant if and only if the optimal value f* is positive. In V-representation, the itest data is redundant if and only if the optimal value f* is zero (as the LP is homogeneous and the optimal value is always non-positive). To recognize strong redundancy, one can set up a second LP V-representation (=boundary problem) g* = maximize 1^T b_{I-itest} x_0 + 1^T A_{I-itest} (the sum of slacks) subject to b_itest x_0 + A_itest x = 0 (the point has to lie on the boundary) b_{I-itest} x_0 + A_{I-itest} x >= 0 (all nonlinearity generators in one side) 1^T b_{I-itest} x_0 + 1^T A_{I-itest} x <= 1 (to make an LP bounded) b_L x_0 + A_L x = 0. (linearity generators) The redundant row is strongly redundant if and only if g* is zero. The certificate has dimension one more for V-representation case. */ dd_colrange j; dd_LPPtr lp; dd_LPSolutionPtr lps; dd_ErrorType err=dd_NoError; dd_boolean answer=dd_FALSE,localdebug=dd_FALSE; *error=dd_NoError; if (set_member(itest, M->linset)){ if (localdebug) printf("The %ld th row is linearity and strong redundancy checking is skipped.\n",itest); goto _L99; } /* Create an LP data for redundancy checking */ if (M->representation==dd_Generator){ lp=dd_CreateLP_V_Redundancy(M, itest); } else { lp=dd_CreateLP_H_Redundancy(M, itest); } dd_LPSolve(lp,dd_choiceRedcheckAlgorithm,&err); if (err!=dd_NoError){ *error=err; goto _L999; } else { lps=dd_CopyLPSolution(lp); for (j=0; jd; j++) { dd_set(certificate[j], lps->sol[j]); } if (localdebug){ printf("Optimum value:"); dd_WriteNumber(stdout, lps->optvalue); printf("\n"); } if (M->representation==dd_Inequality){ if (dd_Positive(lps->optvalue)){ answer=dd_TRUE; if (localdebug) fprintf(stderr,"==> %ld th inequality is strongly redundant.\n",itest); } else { answer=dd_FALSE; if (localdebug) fprintf(stderr,"==> %ld th inequality is not strongly redundant.\n",itest); } } else { if (dd_Negative(lps->optvalue)){ answer=dd_FALSE; if (localdebug) fprintf(stderr,"==> %ld th point is not strongly redundant.\n",itest); } else { /* for V-representation, we have to solve another LP */ dd_FreeLPData(lp); dd_FreeLPSolution(lps); lp=dd_CreateLP_V_SRedundancy(M, itest); dd_LPSolve(lp,dd_DualSimplex,&err); lps=dd_CopyLPSolution(lp); if (localdebug) dd_WriteLPResult(stdout,lp,err); if (dd_Positive(lps->optvalue)){ answer=dd_FALSE; if (localdebug) fprintf(stderr,"==> %ld th point is not strongly redundant.\n",itest); } else { answer=dd_TRUE; if (localdebug) fprintf(stderr,"==> %ld th point is strongly redundant.\n",itest); } } } dd_FreeLPSolution(lps); } _L999: dd_FreeLPData(lp); _L99: return answer; } dd_rowset dd_SRedundantRows(dd_MatrixPtr M, dd_ErrorType *error) /* 093a */ { dd_rowrange i,m; dd_colrange d; dd_rowset redset; dd_MatrixPtr Mcopy; dd_Arow cvec; /* certificate */ dd_boolean localdebug=dd_FALSE; m=M->rowsize; if (M->representation==dd_Generator){ d=(M->colsize)+1; } else { d=M->colsize; } Mcopy=dd_MatrixCopy(M); dd_InitializeArow(d,&cvec); set_initialize(&redset, m); for (i=m; i>=1; i--) { if (dd_SRedundant(Mcopy, i, cvec, error)) { if (localdebug) printf("dd_SRedundantRows: the row %ld is strongly redundant.\n", i); set_addelem(redset, i); dd_MatrixRowRemove(&Mcopy, i); } else { if (localdebug) printf("dd_SRedundantRows: the row %ld is not strongly redundant.\n", i); } if (*error!=dd_NoError) goto _L99; } _L99: dd_FreeMatrix(Mcopy); dd_FreeArow(d, cvec); return redset; } dd_rowset dd_RedundantRowsViaShooting(dd_MatrixPtr M, dd_ErrorType *error) /* 092 */ { /* For H-representation only and not quite reliable, especially when floating-point arithmetic is used. Use the ordinary (slower) method dd_RedundantRows. */ dd_rowrange i,m, ired, irow=0; dd_colrange j,k,d; dd_rowset redset; dd_rowindex rowflag; /* ith comp is negative if the ith inequality (i-1 st row) is redundant. zero if it is not decided. k > 0 if it is nonredundant and assigned to the (k-1)th row of M1. */ dd_MatrixPtr M1; dd_Arow shootdir, cvec=NULL; dd_LPPtr lp0, lp; dd_LPSolutionPtr lps; dd_ErrorType err; dd_LPSolverType solver=dd_DualSimplex; dd_boolean localdebug=dd_FALSE; m=M->rowsize; d=M->colsize; M1=dd_CreateMatrix(m,d); M1->rowsize=0; /* cheat the rowsize so that smaller matrix can be stored */ set_initialize(&redset, m); dd_InitializeArow(d, &shootdir); dd_InitializeArow(d, &cvec); rowflag=(long *)calloc(m+1, sizeof(long)); /* First find some (likely) nonredundant inequalities by Interior Point Find. */ lp0=dd_Matrix2LP(M, &err); lp=dd_MakeLPforInteriorFinding(lp0); dd_FreeLPData(lp0); dd_LPSolve(lp, solver, &err); /* Solve the LP */ lps=dd_CopyLPSolution(lp); if (dd_Positive(lps->optvalue)){ /* An interior point is found. Use rayshooting to find some nonredundant inequalities. */ for (j=1; jsol, shootdir); if (localdebug) printf("nonredundant row %3ld found by shooting.\n", ired); if (ired>0 && rowflag[ired]<=0) { irow++; rowflag[ired]=irow; for (k=1; k<=d; k++) dd_set(M1->matrix[irow-1][k-1], M->matrix[ired-1][k-1]); } dd_neg(shootdir[j], dd_one); /* negative of the j-th unit vector */ ired=dd_RayShooting(M, lps->sol, shootdir); if (localdebug) printf("nonredundant row %3ld found by shooting.\n", ired); if (ired>0 && rowflag[ired]<=0) { irow++; rowflag[ired]=irow; for (k=1; k<=d; k++) dd_set(M1->matrix[irow-1][k-1], M->matrix[ired-1][k-1]); } } M1->rowsize=irow; if (localdebug) { printf("The initial nonredundant set is:"); for (i=1; i<=m; i++) if (rowflag[i]>0) printf(" %ld", i); printf("\n"); } i=1; while(i<=m){ if (rowflag[i]==0){ /* the ith inequality is not yet checked */ if (localdebug) fprintf(stderr, "Checking redundancy of %ld th inequality\n", i); irow++; M1->rowsize=irow; for (k=1; k<=d; k++) dd_set(M1->matrix[irow-1][k-1], M->matrix[i-1][k-1]); if (!dd_Redundant(M1, irow, cvec, &err)){ for (k=1; k<=d; k++) dd_sub(shootdir[k-1], cvec[k-1], lps->sol[k-1]); ired=dd_RayShooting(M, lps->sol, shootdir); rowflag[ired]=irow; for (k=1; k<=d; k++) dd_set(M1->matrix[irow-1][k-1], M->matrix[ired-1][k-1]); if (localdebug) { fprintf(stderr, "The %ld th inequality is nonredundant for the subsystem\n", i); fprintf(stderr, "The nonredundancy of %ld th inequality is found by shooting.\n", ired); } } else { if (localdebug) fprintf(stderr, "The %ld th inequality is redundant for the subsystem and thus for the whole.\n", i); rowflag[i]=-1; set_addelem(redset, i); i++; } } else { i++; } } /* endwhile */ } else { /* No interior point is found. Apply the standard LP technique. */ if (localdebug) printf("No interior-point is found and thus the standard LP technique will be used.\n", ired); redset=dd_RedundantRows(M, error); } dd_FreeLPData(lp); dd_FreeLPSolution(lps); M1->rowsize=m; M1->colsize=d; /* recover the original sizes */ dd_FreeMatrix(M1); dd_FreeArow(d, shootdir); dd_FreeArow(d, cvec); free(rowflag); return redset; } dd_SetFamilyPtr dd_Matrix2Adjacency(dd_MatrixPtr M, dd_ErrorType *error) /* 093 */ { /* This is to generate the (facet) graph of a polyheron (H) V-represented by M using LPs. Since it does not use the representation conversion, it should work for a large scale problem. */ dd_rowrange i,m; dd_colrange d; dd_rowset redset; dd_MatrixPtr Mcopy; dd_SetFamilyPtr F=NULL; m=M->rowsize; d=M->colsize; if (m<=0 ||d<=0) { *error=dd_EmptyRepresentation; goto _L999; } Mcopy=dd_MatrixCopy(M); F=dd_CreateSetFamily(m, m); for (i=1; i<=m; i++) { if (!set_member(i, M->linset)){ set_addelem(Mcopy->linset, i); redset=dd_RedundantRows(Mcopy, error); /* redset should contain all nonadjacent ones */ set_uni(redset, redset, Mcopy->linset); /* all linearity elements should be nonadjacent */ set_compl(F->set[i-1], redset); /* set the adjacency list of vertex i */ set_delelem(Mcopy->linset, i); set_free(redset); if (*error!=dd_NoError) goto _L99; } } _L99: dd_FreeMatrix(Mcopy); _L999: return F; } dd_SetFamilyPtr dd_Matrix2WeakAdjacency(dd_MatrixPtr M, dd_ErrorType *error) /* 093a */ { /* This is to generate the weak-adjacency (facet) graph of a polyheron (H) V-represented by M using LPs. Since it does not use the representation conversion, it should work for a large scale problem. */ dd_rowrange i,m; dd_colrange d; dd_rowset redset; dd_MatrixPtr Mcopy; dd_SetFamilyPtr F=NULL; m=M->rowsize; d=M->colsize; if (m<=0 ||d<=0) { *error=dd_EmptyRepresentation; goto _L999; } Mcopy=dd_MatrixCopy(M); F=dd_CreateSetFamily(m, m); for (i=1; i<=m; i++) { if (!set_member(i, M->linset)){ set_addelem(Mcopy->linset, i); redset=dd_SRedundantRows(Mcopy, error); /* redset should contain all weakly nonadjacent ones */ set_uni(redset, redset, Mcopy->linset); /* all linearity elements should be nonadjacent */ set_compl(F->set[i-1], redset); /* set the adjacency list of vertex i */ set_delelem(Mcopy->linset, i); set_free(redset); if (*error!=dd_NoError) goto _L99; } } _L99: dd_FreeMatrix(Mcopy); _L999: return F; } dd_boolean dd_ImplicitLinearity(dd_MatrixPtr M, dd_rowrange itest, dd_Arow certificate, dd_ErrorType *error) /* 092 */ { /* Checks whether the row itest is implicit linearity for the representation. All linearity rows are not checked and considered non implicit linearity (dd_FALSE). This code works for both H- and V-representations. A certificate is given in the case of dd_FALSE, showing a feasible solution x satisfying the itest strict inequality for H-representation, a hyperplane RHS and normal (x_0, x) that separates the itest from the rest. More explicitly, the LP to be setup is the same thing as redundancy case but with maximization: H-representation f* = maximize b_itest + A_itest x subject to b_itest + 1 + A_itest x >= 0 (relaxed inequality. This is not necessary but kept for simplicity of the code) b_{I-itest} + A_{I-itest} x >= 0 (all inequalities except for itest) b_L + A_L x = 0. (linearity) V-representation (=separation problem) f* = maximize b_itest x_0 + A_itest x subject to b_itest x_0 + A_itest x >= -1 (again, this is not necessary but kept for simplicity.) b_{I-itest} x_0 + A_{I-itest} x >= 0 (all nonlinearity generators except for itest in one side) b_L x_0 + A_L x = 0. (linearity generators) Here, the input matrix is considered as (b, A), i.e. b corresponds to the first column of input and the row indices of input is partitioned into I and L where L is the set of linearity. In both cases, the itest data is implicit linearity if and only if the optimal value f* is nonpositive. The certificate has dimension one more for V-representation case. */ dd_colrange j; dd_LPPtr lp; dd_LPSolutionPtr lps; dd_ErrorType err=dd_NoError; dd_boolean answer=dd_FALSE,localdebug=dd_FALSE; *error=dd_NoError; if (set_member(itest, M->linset)){ if (localdebug) printf("The %ld th row is linearity and redundancy checking is skipped.\n",itest); goto _L99; } /* Create an LP data for redundancy checking */ if (M->representation==dd_Generator){ lp=dd_CreateLP_V_Redundancy(M, itest); } else { lp=dd_CreateLP_H_Redundancy(M, itest); } lp->objective = dd_LPmax; /* the lp->objective is set by CreateLP* to LPmin */ dd_LPSolve(lp,dd_choiceRedcheckAlgorithm,&err); if (err!=dd_NoError){ *error=err; goto _L999; } else { lps=dd_CopyLPSolution(lp); for (j=0; jd; j++) { dd_set(certificate[j], lps->sol[j]); } if (lps->LPS==dd_Optimal && dd_EqualToZero(lps->optvalue)){ answer=dd_TRUE; if (localdebug) fprintf(stderr,"==> %ld th data is an implicit linearity.\n",itest); } else { answer=dd_FALSE; if (localdebug) fprintf(stderr,"==> %ld th data is not an implicit linearity.\n",itest); } dd_FreeLPSolution(lps); } _L999: dd_FreeLPData(lp); _L99: return answer; } int dd_FreeOfImplicitLinearity(dd_MatrixPtr M, dd_Arow certificate, dd_rowset *imp_linrows, dd_ErrorType *error) /* 092 */ { /* Checks whether the matrix M constains any implicit linearity at all. It returns 1 if it is free of any implicit linearity. This means that the present linearity rows define the linearity correctly. It returns nonpositive values otherwise. H-representation f* = maximize z subject to b_I + A_I x - 1 z >= 0 b_L + A_L x = 0 (linearity) z <= 1. V-representation (=separation problem) f* = maximize z subject to b_I x_0 + A_I x - 1 z >= 0 (all nonlinearity generators in one side) b_L x_0 + A_L x = 0 (linearity generators) z <= 1. Here, the input matrix is considered as (b, A), i.e. b corresponds to the first column of input and the row indices of input is partitioned into I and L where L is the set of linearity. In both cases, any implicit linearity exists if and only if the optimal value f* is nonpositive. The certificate has dimension one more for V-representation case. */ dd_LPPtr lp; dd_rowrange i,m; dd_colrange j,d1; dd_ErrorType err=dd_NoError; dd_Arow cvec; /* certificate for implicit linearity */ int answer=0,localdebug=dd_FALSE; *error=dd_NoError; /* Create an LP data for redundancy checking */ if (M->representation==dd_Generator){ lp=dd_CreateLP_V_ImplicitLinearity(M); } else { lp=dd_CreateLP_H_ImplicitLinearity(M); } dd_LPSolve(lp,dd_choiceRedcheckAlgorithm,&err); if (err!=dd_NoError){ *error=err; goto _L999; } else { for (j=0; jd; j++) { dd_set(certificate[j], lp->sol[j]); } if (localdebug) dd_WriteLPResult(stderr,lp,err); /* *posset contains a set of row indices that are recognized as nonlinearity. */ if (localdebug) { fprintf(stderr,"==> The following variables are not implicit linearity:\n"); set_fwrite(stderr, lp->posset_extra); fprintf(stderr,"\n"); } if (M->representation==dd_Generator){ d1=(M->colsize)+1; } else { d1=M->colsize; } m=M->rowsize; dd_InitializeArow(d1,&cvec); set_initialize(imp_linrows,m); if (lp->LPS==dd_Optimal){ if (dd_Positive(lp->optvalue)){ answer=1; if (localdebug) fprintf(stderr,"==> The matrix has no implicit linearity.\n"); } else if (dd_Negative(lp->optvalue)) { answer=-1; if (localdebug) fprintf(stderr,"==> The matrix defines the trivial system.\n"); } else { answer=0; if (localdebug) fprintf(stderr,"==> The matrix has some implicit linearity.\n"); } } else { answer=-2; if (localdebug) fprintf(stderr,"==> The LP fails.\n"); } if (answer==0){ /* List the implicit linearity rows */ for (i=m; i>=1; i--) { if (!set_member(i,lp->posset_extra)) { if (dd_ImplicitLinearity(M, i, cvec, error)) { set_addelem(*imp_linrows, i); if (localdebug) { fprintf(stderr," row %ld is implicit linearity\n",i); fprintf(stderr,"\n"); } } if (*error!=dd_NoError) goto _L999; } } } /* end of if (answer==0) */ if (answer==-1) { for (i=m; i>=1; i--) set_addelem(*imp_linrows, i); } /* all rows are considered implicit linearity */ dd_FreeArow(d1,cvec); } _L999: dd_FreeLPData(lp); return answer; } dd_rowset dd_ImplicitLinearityRows(dd_MatrixPtr M, dd_ErrorType *error) /* 092 */ { dd_colrange d; dd_rowset imp_linset; dd_Arow cvec; /* certificate */ int foi; dd_boolean localdebug=dd_FALSE; if (M->representation==dd_Generator){ d=(M->colsize)+2; } else { d=M->colsize+1; } dd_InitializeArow(d,&cvec); if (localdebug) fprintf(stdout, "\ndd_ImplicitLinearityRows: Check whether the system contains any implicit linearity.\n"); foi=dd_FreeOfImplicitLinearity(M, cvec, &imp_linset, error); if (localdebug){ switch (foi) { case 1: fprintf(stdout, " It is free of implicit linearity.\n"); break; case 0: fprintf(stdout, " It is not free of implicit linearity.\n"); break; case -1: fprintf(stdout, " The input system is trivial (i.e. the empty H-polytope or the V-rep of the whole space.\n"); break; default: fprintf(stdout, " The LP was not solved correctly.\n"); break; } } if (localdebug){ fprintf(stderr, " Implicit linearity rows are:\n"); set_fwrite(stderr,imp_linset); fprintf(stderr, "\n"); } dd_FreeArow(d, cvec); return imp_linset; } dd_boolean dd_MatrixCanonicalizeLinearity(dd_MatrixPtr *M, dd_rowset *impl_linset,dd_rowindex *newpos, dd_ErrorType *error) /* 094 */ { /* This is to recongnize all implicit linearities, and put all linearities at the top of the matrix. All implicit linearities will be returned by *impl_linset. */ dd_rowrange rank; dd_rowset linrows,ignoredrows,basisrows; dd_colset ignoredcols,basiscols; dd_rowrange i,k,m; dd_rowindex newpos1; dd_boolean success=dd_FALSE; linrows=dd_ImplicitLinearityRows(*M, error); if (*error!=dd_NoError) goto _L99; m=(*M)->rowsize; set_uni((*M)->linset, (*M)->linset, linrows); /* add the implicit linrows to the explicit linearity rows */ /* To remove redundancy of the linearity part, we need to compute the rank and a basis of the linearity part. */ set_initialize(&ignoredrows, (*M)->rowsize); set_initialize(&ignoredcols, (*M)->colsize); set_compl(ignoredrows, (*M)->linset); rank=dd_MatrixRank(*M,ignoredrows,ignoredcols,&basisrows,&basiscols); set_diff(ignoredrows, (*M)->linset, basisrows); dd_MatrixRowsRemove2(M,ignoredrows,newpos); dd_MatrixShiftupLinearity(M,&newpos1); for (i=1; i<=m; i++){ k=(*newpos)[i]; if (k>0) { (*newpos)[i]=newpos1[k]; } } *impl_linset=linrows; success=dd_TRUE; free(newpos1); set_free(basisrows); set_free(basiscols); set_free(ignoredrows); set_free(ignoredcols); _L99: return success; } dd_boolean dd_MatrixCanonicalize(dd_MatrixPtr *M, dd_rowset *impl_linset, dd_rowset *redset, dd_rowindex *newpos, dd_ErrorType *error) /* 094 */ { /* This is to find a canonical representation of a matrix *M by recognizing all implicit linearities and all redundancies. All implicit linearities will be returned by *impl_linset and redundancies will be returned by *redset. */ dd_rowrange i,k,m; dd_rowindex newpos1,revpos; dd_rowset redset1; dd_boolean success=dd_TRUE; m=(*M)->rowsize; set_initialize(redset, m); revpos=(long *)calloc(m+1,sizeof(long)); success=dd_MatrixCanonicalizeLinearity(M, impl_linset, newpos, error); if (!success) goto _L99; for (i=1; i<=m; i++){ k=(*newpos)[i]; if (k>0) revpos[k]=i; /* inverse of *newpos[] */ } success=dd_MatrixRedundancyRemove(M, &redset1, &newpos1, error); /* 094 */ if (!success) goto _L99; for (i=1; i<=m; i++){ k=(*newpos)[i]; if (k>0) { (*newpos)[i]=newpos1[k]; if (newpos1[k]<0) (*newpos)[i]=-revpos[-newpos1[k]]; /* update the certificate of its duplicate removal. */ if (set_member(k,redset1)) set_addelem(*redset, i); } } _L99: set_free(redset1); free(newpos1); free(revpos); return success; } dd_boolean dd_ExistsRestrictedFace(dd_MatrixPtr M, dd_rowset R, dd_rowset S, dd_ErrorType *err) /* 0.94 */ { /* This function checkes if there is a point that satifies all the constraints of the matrix M (interpreted as an H-representation) with additional equality contraints specified by R and additional strict inequality constraints specified by S. The set S is supposed to be disjoint from both R and M->linset. When it is not, the set S will be considered as S\(R U M->linset). */ dd_boolean answer=dd_FALSE; dd_LPPtr lp=NULL; /* printf("\n--- ERF ---\n"); printf("R = "); set_write(R); printf("S = "); set_write(S); */ lp=dd_Matrix2Feasibility2(M, R, S, err); if (*err!=dd_NoError) goto _L99; /* Solve the LP by cdd LP solver. */ dd_LPSolve(lp, dd_DualSimplex, err); /* Solve the LP */ if (*err!=dd_NoError) goto _L99; if (lp->LPS==dd_Optimal && dd_Positive(lp->optvalue)) { answer=dd_TRUE; } dd_FreeLPData(lp); _L99: return answer; } dd_boolean dd_ExistsRestrictedFace2(dd_MatrixPtr M, dd_rowset R, dd_rowset S, dd_LPSolutionPtr *lps, dd_ErrorType *err) /* 0.94 */ { /* This function checkes if there is a point that satifies all the constraints of the matrix M (interpreted as an H-representation) with additional equality contraints specified by R and additional strict inequality constraints specified by S. The set S is supposed to be disjoint from both R and M->linset. When it is not, the set S will be considered as S\(R U M->linset). This function returns a certificate of the answer in terms of the associated LP solutions. */ dd_boolean answer=dd_FALSE; dd_LPPtr lp=NULL; /* printf("\n--- ERF ---\n"); printf("R = "); set_write(R); printf("S = "); set_write(S); */ lp=dd_Matrix2Feasibility2(M, R, S, err); if (*err!=dd_NoError) goto _L99; /* Solve the LP by cdd LP solver. */ dd_LPSolve(lp, dd_DualSimplex, err); /* Solve the LP */ if (*err!=dd_NoError) goto _L99; if (lp->LPS==dd_Optimal && dd_Positive(lp->optvalue)) { answer=dd_TRUE; } (*lps)=dd_CopyLPSolution(lp); dd_FreeLPData(lp); _L99: return answer; } dd_boolean dd_FindRelativeInterior(dd_MatrixPtr M, dd_rowset *ImL, dd_rowset *Lbasis, dd_LPSolutionPtr *lps, dd_ErrorType *err) /* 0.94 */ { /* This function computes a point in the relative interior of the H-polyhedron given by M. Even the representation is V-representation, it simply interprete M as H-representation. lps returns the result of solving an LP whose solution is a relative interior point. ImL returns all row indices of M that are implicit linearities, i.e. their inqualities are satisfied by equality by all points in the polyhedron. Lbasis returns a row basis of the submatrix of M consisting of all linearities and implicit linearities. This means that the dimension of the polyhedron is M->colsize - set_card(Lbasis) -1. */ dd_rowset S; dd_colset T, Lbasiscols; dd_boolean success=dd_FALSE; dd_rowrange i; dd_colrange rank; *ImL=dd_ImplicitLinearityRows(M, err); if (*err!=dd_NoError) goto _L99; set_initialize(&S, M->rowsize); /* the empty set */ for (i=1; i <=M->rowsize; i++) { if (!set_member(i, M->linset) && !set_member(i, *ImL)){ set_addelem(S, i); /* all nonlinearity rows go to S */ } } if (dd_ExistsRestrictedFace2(M, *ImL, S, lps, err)){ /* printf("a relative interior point found\n"); */ success=dd_TRUE; } set_initialize(&T, M->colsize); /* empty set */ rank=dd_MatrixRank(M,S,T,Lbasis,&Lbasiscols); /* the rank of the linearity submatrix of M. */ set_free(S); set_free(T); set_free(Lbasiscols); _L99: return success; } dd_rowrange dd_RayShooting(dd_MatrixPtr M, dd_Arow p, dd_Arow r) { /* 092, find the first inequality "hit" by a ray from an intpt. */ dd_rowrange imin=-1,i,m; dd_colrange j, d; dd_Arow vecmin, vec; mytype min,t1,t2,alpha, t1min; dd_boolean started=dd_FALSE; dd_boolean localdebug=dd_FALSE; m=M->rowsize; d=M->colsize; if (!dd_Equal(dd_one, p[0])){ fprintf(stderr, "Warning: RayShooting is called with a point with first coordinate not 1.\n"); dd_set(p[0],dd_one); } if (!dd_EqualToZero(r[0])){ fprintf(stderr, "Warning: RayShooting is called with a direction with first coordinate not 0.\n"); dd_set(r[0],dd_purezero); } dd_init(alpha); dd_init(min); dd_init(t1); dd_init(t2); dd_init(t1min); dd_InitializeArow(d,&vecmin); dd_InitializeArow(d,&vec); for (i=1; i<=m; i++){ dd_InnerProduct(t1, d, M->matrix[i-1], p); if (dd_Positive(t1)) { dd_InnerProduct(t2, d, M->matrix[i-1], r); dd_div(alpha, t2, t1); if (!started){ imin=i; dd_set(min, alpha); dd_set(t1min, t1); /* store the denominator. */ started=dd_TRUE; if (localdebug) { fprintf(stderr," Level 1: imin = %ld and min = ", imin); dd_WriteNumber(stderr, min); fprintf(stderr,"\n"); } } else { if (dd_Smaller(alpha, min)){ imin=i; dd_set(min, alpha); dd_set(t1min, t1); /* store the denominator. */ if (localdebug) { fprintf(stderr," Level 2: imin = %ld and min = ", imin); dd_WriteNumber(stderr, min); fprintf(stderr,"\n"); } } else { if (dd_Equal(alpha, min)) { /* tie break */ for (j=1; j<= d; j++){ dd_div(vecmin[j-1], M->matrix[imin-1][j-1], t1min); dd_div(vec[j-1], M->matrix[i-1][j-1], t1); } if (dd_LexSmaller(vec,vecmin, d)){ imin=i; dd_set(min, alpha); dd_set(t1min, t1); /* store the denominator. */ if (localdebug) { fprintf(stderr," Level 3: imin = %ld and min = ", imin); dd_WriteNumber(stderr, min); fprintf(stderr,"\n"); } } } } } } } dd_clear(alpha); dd_clear(min); dd_clear(t1); dd_clear(t2); dd_clear(t1min); dd_FreeArow(d, vecmin); dd_FreeArow(d, vec); return imin; } #ifdef GMPRATIONAL void dd_BasisStatusMaximize(dd_rowrange m_size,dd_colrange d_size, dd_Amatrix A,dd_Bmatrix T,dd_rowset equalityset, dd_rowrange objrow,dd_colrange rhscol,ddf_LPStatusType LPS, mytype *optvalue,dd_Arow sol,dd_Arow dsol,dd_rowset posset, ddf_colindex nbindex, ddf_rowrange re,ddf_colrange se, dd_colrange *nse, long *pivots, int *found, int *LPScorrect) /* This is just to check whether the status LPS of the basis given by nbindex with extra certificates se or re is correct. It is done by recomputing the basis inverse matrix T. It does not solve the LP when the status *LPS is undecided. Thus the input is m_size, d_size, A, equalityset, LPS, nbindex, re and se. Other values will be recomputed from scratch. The main purpose of the function is to verify the correctness of the result of floating point computation with the GMP rational arithmetics. */ { long pivots0,pivots1,fbasisrank; dd_rowrange i,is; dd_colrange s,senew,j; static dd_rowindex bflag; static long mlast=0; static dd_rowindex OrderVector; /* the permutation vector to store a preordered row indices */ unsigned int rseed=1; mytype val; dd_colindex nbtemp; dd_LPStatusType ddlps; dd_boolean localdebug=dd_FALSE; if (dd_debug) localdebug=dd_debug; if (localdebug){ printf("\nEvaluating dd_BasisStatusMaximize:\n"); } dd_init(val); nbtemp=(long *) calloc(d_size+1,sizeof(long)); for (i=0; i<= 4; i++) pivots[i]=0; if (bflag==NULL || mlast!=m_size){ if (mlast!=m_size && mlast>0) { free(bflag); /* called previously with different m_size */ free(OrderVector); } bflag=(long *) calloc(m_size+1,sizeof(long)); OrderVector=(long *)calloc(m_size+1,sizeof(long)); /* initialize only for the first time or when a larger space is needed */ mlast=m_size; } /* Initializing control variables. */ dd_ComputeRowOrderVector2(m_size,d_size,A,OrderVector,dd_MinIndex,rseed); pivots1=0; dd_ResetTableau(m_size,d_size,T,nbtemp,bflag,objrow,rhscol); if (localdebug){ printf("\nnbindex:"); for (j=1; j<=d_size; j++) printf(" %ld", nbindex[j]); printf("\n"); printf("re = %ld, se=%ld\n", re, se); } is=nbindex[se]; if (localdebug) printf("se=%ld, is=%ld\n", se, is); fbasisrank=d_size-1; for (j=1; j<=d_size; j++){ if (nbindex[j]<0) fbasisrank=fbasisrank-1; /* fbasisrank=the basis rank computed by floating-point */ } if (fbasisrank0) { /* i is nonbasic variable */ dd_TableauEntry(&val,m_size,d_size,A,T,objrow,bflag[i]); if (dd_Positive(val)) { if (localdebug) printf("Reduced cost entry for %ld is positive\n", i); *LPScorrect=dd_FALSE; break; } } }; break; case dd_Inconsistent: for (j=1; j<=d_size; j++){ dd_TableauEntry(&val,m_size,d_size,A,T,re,j); if (j==rhscol){ if (dd_Nonnegative(val)){ if (localdebug) printf("RHS entry for %ld is nonnegative\n", re); *LPScorrect=dd_FALSE; break; } } else if (dd_Positive(val)){ if (localdebug) printf("the row entry for(%ld, %ld) is positive\n", re, j); *LPScorrect=dd_FALSE; break; } }; break; case dd_DualInconsistent: for (i=1; i<=m_size; i++){ dd_TableauEntry(&val,m_size,d_size,A,T,i,bflag[is]); if (i==objrow){ if (dd_Nonpositive(val)){ if (localdebug) printf("Reduced cost entry for %ld is nonpositive\n", bflag[is]); *LPScorrect=dd_FALSE; break; } } else if (dd_Negative(val)){ if (localdebug) printf("the column entry for(%ld, %ld) is positive\n", i, bflag[is]); *LPScorrect=dd_FALSE; break; } }; break; ; default: break; } ddlps=LPSf2LPS(LPS); dd_SetSolutions(m_size,d_size,A,T, objrow,rhscol,ddlps,optvalue,sol,dsol,posset,nbindex,re,senew,bflag); *nse=senew; _L99: dd_clear(val); free(nbtemp); } void dd_BasisStatusMinimize(dd_rowrange m_size,dd_colrange d_size, dd_Amatrix A,dd_Bmatrix T,dd_rowset equalityset, dd_rowrange objrow,dd_colrange rhscol,ddf_LPStatusType LPS, mytype *optvalue,dd_Arow sol,dd_Arow dsol, dd_rowset posset, ddf_colindex nbindex, ddf_rowrange re,ddf_colrange se,dd_colrange *nse,long *pivots, int *found, int *LPScorrect) { dd_colrange j; for (j=1; j<=d_size; j++) dd_neg(A[objrow-1][j-1],A[objrow-1][j-1]); dd_BasisStatusMaximize(m_size,d_size,A,T,equalityset, objrow,rhscol, LPS,optvalue,sol,dsol,posset,nbindex,re,se,nse,pivots,found,LPScorrect); dd_neg(*optvalue,*optvalue); for (j=1; j<=d_size; j++){ if (LPS!=dd_Inconsistent) { /* Inconsistent certificate stays valid for minimization, 0.94e */ dd_neg(dsol[j-1],dsol[j-1]); } dd_neg(A[objrow-1][j-1],A[objrow-1][j-1]); } } #endif /* end of cddlp.c */ cddlib-0.94j/lib-src/cddmp.c0000644000175000017500000001014513270066522012554 00000000000000/* cddmp.c (cddlib arithmetic operations using gmp) written by Komei Fukuda, fukuda@math.ethz.ch Version 0.94i, March 9, 2018 */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "setoper.h" /* set operation library header (Ver. March 16,1995 or later) */ #include "cdd.h" void dd_set_global_constants() { dd_init(dd_zero); dd_init(dd_minuszero); dd_init(dd_one); dd_init(dd_minusone); dd_init(dd_purezero); time(&dd_statStartTime); /* cddlib starting time */ dd_statBApivots=0; /* basis finding pivots */ dd_statCCpivots=0; /* criss-cross pivots */ dd_statDS1pivots=0; /* phase 1 pivots */ dd_statDS2pivots=0; /* phase 2 pivots */ dd_statACpivots=0; /* anticycling (cc) pivots */ dd_choiceLPSolverDefault=dd_DualSimplex; /* Default LP solver Algorithm */ dd_choiceRedcheckAlgorithm=dd_DualSimplex; /* Redundancy Checking Algorithm */ dd_choiceLexicoPivotQ=dd_TRUE; /* whether to use the lexicographic pivot */ #if defined GMPRATIONAL dd_statBSpivots=0; /* basis status checking pivots */ mpq_set_ui(dd_zero,0U,1U); mpq_set_ui(dd_purezero,0U,1U); mpq_set_ui(dd_one,1U,1U); mpq_set_si(dd_minusone,-1L,1U); ddf_set_global_constants(); #elif defined GMPFLOAT mpf_set_d(dd_zero,dd_almostzero); mpf_set_ui(dd_purezero,0U); mpf_set_ui(dd_one,1U); mpf_set_si(dd_minusone,-1L,1U); #else dd_zero[0]= dd_almostzero; /*real zero */ dd_purezero[0]= 0.0; dd_one[0]= 1L; dd_minusone[0]= -1L; #endif dd_neg(dd_minuszero,dd_zero); } void dd_free_global_constants() { dd_clear(dd_zero); dd_clear(dd_minuszero); dd_clear(dd_one); dd_clear(dd_minusone); dd_clear(dd_purezero); time(&dd_statStartTime); /* cddlib starting time */ dd_statBApivots=0; /* basis finding pivots */ dd_statCCpivots=0; /* criss-cross pivots */ dd_statDS1pivots=0; /* phase 1 pivots */ dd_statDS2pivots=0; /* phase 2 pivots */ dd_statACpivots=0; /* anticycling (cc) pivots */ dd_choiceLPSolverDefault=dd_DualSimplex; /* Default LP solver Algorithm */ dd_choiceRedcheckAlgorithm=dd_DualSimplex; /* Redundancy Checking Algorithm */ dd_choiceLexicoPivotQ=dd_TRUE; /* whether to use the lexicographic pivot */ #if defined GMPRATIONAL dd_statBSpivots=0; /* basis status checking pivots */ ddf_free_global_constants(); #endif } #if defined GMPRATIONAL void ddd_mpq_set_si(mytype a,signed long b) { mpz_t nz, dz; mpz_init(nz); mpz_init(dz); mpz_set_si(nz, b); mpz_set_ui(dz, 1U); mpq_set_num(a, nz); mpq_set_den(a, dz); mpz_clear(nz); mpz_clear(dz); } #endif #if defined dd_CDOUBLE void ddd_init(mytype a) { a[0]=0L; } void ddd_clear(mytype a) { /* a[0]=0L; */ } void ddd_set(mytype a,mytype b) { a[0]=b[0]; } void ddd_set_d(mytype a,double b) { a[0]=b; } void ddd_set_si(mytype a,signed long b) { a[0]=(double)b; } void ddd_set_si2(mytype a,signed long b, unsigned long c) { a[0]=(double)b/(double)c; } void ddd_add(mytype a,mytype b,mytype c) { a[0]=b[0]+c[0]; } void ddd_sub(mytype a,mytype b,mytype c) { a[0]=b[0]-c[0]; } void ddd_mul(mytype a,mytype b,mytype c) { a[0]=b[0]*c[0]; } void ddd_div(mytype a,mytype b,mytype c) { a[0]=b[0]/c[0]; } void ddd_neg(mytype a,mytype b) { a[0]=-b[0]; } void ddd_inv(mytype a,mytype b) { a[0]=1/b[0]; } int ddd_cmp(mytype a,mytype b) { if (a[0]-b[0]>0) return 1; else if (a[0]-b[0]>=0) return 0; else return -1; } int ddd_sgn(mytype a) { if (a[0]>0) return 1; else if (a[0]>=0) return 0; else return -1; } double ddd_get_d(mytype a) { return a[0]; } #endif /* end of cddmp.h */ cddlib-0.94j/lib-src/cddio.c0000644000175000017500000015377613312730770012571 00000000000000/* cddio.c: Basic Input and Output Procedures for cddlib written by Komei Fukuda, fukuda@math.ethz.ch Version 0.94i, March 9, 2018 */ /* cddlib : C-library of the double description method for computing all vertices and extreme rays of the polyhedron P= {x : b - A x >= 0}. Please read COPYING (GNU General Public Licence) and the manual cddlibman.tex for detail. */ #include "setoper.h" /* set operation library header (Ver. June 1, 2000 or later) */ #include "cdd.h" #include #include #include #include #include /* void dd_fread_rational_value (FILE *, mytype *); */ void dd_SetLinearity(dd_MatrixPtr, char *); void dd_SetInputFile(FILE **f,dd_DataFileType inputfile,dd_ErrorType *Error) { int opened=0,stop,quit=0; int i,dotpos=0,trial=0; char ch; char *tempname; *Error=dd_NoError; while (!opened && !quit) { fprintf(stderr,"\n>> Input file: "); scanf("%s",inputfile); ch=getchar(); stop=dd_FALSE; for (i=0; i5) { *Error=dd_IFileNotFound; quit=1; } } } } void dd_SetWriteFileName(dd_DataFileType inputfile, dd_DataFileType outfile, char cflag, dd_RepresentationType rep) { char *extension; dd_DataFileType ifilehead=""; int i,dotpos; switch (cflag) { case 'o': switch (rep) { case dd_Generator: extension=".ine"; break; /* output file for ine data */ case dd_Inequality: extension=".ext"; break; /* output file for ext data */ default: extension=".xxx";break; } break; case 'a': /* decide for output adjacence */ if (rep==dd_Inequality) extension=".ead"; /* adjacency file for ext data */ else extension=".iad"; /* adjacency file for ine data */ break; case 'i': /* decide for output incidence */ if (rep==dd_Inequality) extension=".ecd"; /* ext incidence file */ else extension=".icd"; /* ine incidence file */ break; case 'n': /* decide for input incidence */ if (rep==dd_Inequality) extension=".icd"; /* ine incidence file */ else extension=".ecd"; /* ext incidence file */ break; case 'j': /* decide for input adjacency */ if (rep==dd_Inequality) extension=".iad"; /* ine adjacency file */ else extension=".ead"; /* ext adjacency file */ break; case 'l': extension=".ddl";break; /* log file */ case 'd': extension=".dex";break; /* decomposition output */ case 'p': extension="sub.ine";break; /* preprojection sub inequality file */ case 'v': extension=".solved";break; /* verify_input file */ case 's': extension=".lps";break; /* LP solution file */ default: extension=".xxx";break; } dotpos=-1; for (i=0; i< strlen(inputfile); i++){ if (inputfile[i]=='.') dotpos=i; } if (dotpos>1) strncpy(ifilehead, inputfile, dotpos); else strcpy(ifilehead,inputfile); if (strlen(inputfile)<=0) strcpy(ifilehead,"tempcdd"); strcpy(outfile,ifilehead); strcat(outfile,extension); if (strcmp(inputfile, outfile)==0) { strcpy(outfile,inputfile); strcat(outfile,extension); } /* fprintf(stderr,"outfile name = %s\n",outfile); */ } dd_NumberType dd_GetNumberType(const char *line) { dd_NumberType nt; if (strncmp(line, "integer", 7)==0) { nt = dd_Integer; } else if (strncmp(line, "rational", 8)==0) { nt = dd_Rational; } else if (strncmp(line, "real", 4)==0) { nt = dd_Real; } else { nt=dd_Unknown; } return nt; } void dd_ProcessCommandLine(FILE *f, dd_MatrixPtr M, const char *line) { char newline[dd_linelenmax]; dd_colrange j; mytype value; dd_init(value); if (strncmp(line, "hull", 4)==0) { M->representation = dd_Generator; } if (strncmp(line, "debug", 5)==0) { dd_debug = dd_TRUE; #ifdef GMPRATIONAL ddf_debug = ddf_TRUE; #endif } if (strncmp(line, "partial_enum", 12)==0 || strncmp(line, "equality", 8)==0 || strncmp(line, "linearity", 9)==0 ) { fgets(newline,dd_linelenmax,f); dd_SetLinearity(M,newline); } if (strncmp(line, "maximize", 8)==0 || strncmp(line, "minimize", 8)==0) { if (strncmp(line, "maximize", 8)==0) M->objective=dd_LPmax; else M->objective=dd_LPmin; for (j = 1; j <= M->colsize; j++) { if (M->numbtype==dd_Real) { #if !defined(GMPRATIONAL) double rvalue; fscanf(f, "%lf", &rvalue); dd_set_d(value, rvalue); #endif } else { dd_fread_rational_value (f, value); } dd_set(M->rowvec[j - 1],value); if (dd_debug) {fprintf(stderr,"cost(%5ld) =",j); dd_WriteNumber(stderr,value);} } /*of j*/ } dd_clear(value); } dd_boolean dd_AppendMatrix2Poly(dd_PolyhedraPtr *poly, dd_MatrixPtr M) { dd_boolean success=dd_FALSE; dd_MatrixPtr Mpoly,Mnew=NULL; dd_ErrorType err; if ((*poly)!=NULL && (*poly)->m >=0 && (*poly)->d>=0 && (*poly)->d==M->colsize && M->rowsize>0){ Mpoly=dd_CopyInput(*poly); Mnew=dd_AppendMatrix(Mpoly, M); dd_FreePolyhedra(*poly); *poly=dd_DDMatrix2Poly(Mnew,&err); dd_FreeMatrix(Mpoly); dd_FreeMatrix(Mnew); if (err==dd_NoError) success=dd_TRUE; } return success; } dd_MatrixPtr dd_MatrixCopy(dd_MatrixPtr M) { dd_MatrixPtr Mcopy=NULL; dd_rowrange m; dd_colrange d; m= M->rowsize; d= M->colsize; if (m >=0 && d >=0){ Mcopy=dd_CreateMatrix(m, d); dd_CopyAmatrix(Mcopy->matrix, M->matrix, m, d); dd_CopyArow(Mcopy->rowvec, M->rowvec, d); set_copy(Mcopy->linset,M->linset); Mcopy->numbtype=M->numbtype; Mcopy->representation=M->representation; Mcopy->objective=M->objective; } return Mcopy; } dd_MatrixPtr dd_CopyMatrix(dd_MatrixPtr M) { return dd_MatrixCopy(M); } dd_MatrixPtr dd_MatrixNormalizedCopy(dd_MatrixPtr M) { dd_MatrixPtr Mcopy=NULL; dd_rowrange m; dd_colrange d; m= M->rowsize; d= M->colsize; if (m >=0 && d >=0){ Mcopy=dd_CreateMatrix(m, d); dd_CopyNormalizedAmatrix(Mcopy->matrix, M->matrix, m, d); dd_CopyArow(Mcopy->rowvec, M->rowvec, d); set_copy(Mcopy->linset,M->linset); Mcopy->numbtype=M->numbtype; Mcopy->representation=M->representation; Mcopy->objective=M->objective; } return Mcopy; } dd_MatrixPtr dd_MatrixAppend(dd_MatrixPtr M1, dd_MatrixPtr M2) { dd_MatrixPtr M=NULL; dd_rowrange i, m,m1,m2; dd_colrange j, d,d1,d2; m1=M1->rowsize; d1=M1->colsize; m2=M2->rowsize; d2=M2->colsize; m=m1+m2; d=d1; if (d1>=0 && d1==d2 && m1>=0 && m2>=0){ M=dd_CreateMatrix(m, d); dd_CopyAmatrix(M->matrix, M1->matrix, m1, d); dd_CopyArow(M->rowvec, M1->rowvec, d); for (i=0; ilinset)) set_addelem(M->linset,i+1); } for (i=0; imatrix[m1+i][j],M2->matrix[i][j]); /* append the second matrix */ if (set_member(i+1,M2->linset)) set_addelem(M->linset,m1+i+1); } M->numbtype=M1->numbtype; } return M; } dd_MatrixPtr dd_MatrixNormalizedSortedCopy(dd_MatrixPtr M,dd_rowindex *newpos) /* 094 */ { /* Sort the rows of Amatrix lexicographically, and return a link to this sorted copy. The vector newpos is allocated, where newpos[i] returns the new row index of the original row i (i=1,...,M->rowsize). */ dd_MatrixPtr Mcopy=NULL,Mnorm=NULL; dd_rowrange m,i; dd_colrange d; dd_rowindex roworder; /* if (newpos!=NULL) free(newpos); */ m= M->rowsize; d= M->colsize; roworder=(long *)calloc(m+1,sizeof(long)); *newpos=(long *)calloc(m+1,sizeof(long)); if (m >=0 && d >=0){ Mnorm=dd_MatrixNormalizedCopy(M); Mcopy=dd_CreateMatrix(m, d); for(i=1; i<=m; i++) roworder[i]=i; dd_RandomPermutation(roworder, m, 123); dd_QuickSort(roworder,1,m,Mnorm->matrix,d); dd_PermuteCopyAmatrix(Mcopy->matrix, Mnorm->matrix, m, d, roworder); dd_CopyArow(Mcopy->rowvec, M->rowvec, d); for(i=1; i<=m; i++) { if (set_member(roworder[i],M->linset)) set_addelem(Mcopy->linset, i); (*newpos)[roworder[i]]=i; } Mcopy->numbtype=M->numbtype; Mcopy->representation=M->representation; Mcopy->objective=M->objective; dd_FreeMatrix(Mnorm); } free(roworder); return Mcopy; } dd_MatrixPtr dd_MatrixUniqueCopy(dd_MatrixPtr M,dd_rowindex *newpos) { /* Remove row duplicates, and return a link to this sorted copy. Linearity rows have priority over the other rows. It is better to call this after sorting with dd_MatrixNormalizedSortedCopy. The vector newpos is allocated, where *newpos[i] returns the new row index of the original row i (i=1,...,M->rowsize). *newpos[i] is negative if the original row is dominated by -*newpos[i] and eliminated in the new copy. */ dd_MatrixPtr Mcopy=NULL; dd_rowrange m,i,uniqrows; dd_rowset preferredrows; dd_colrange d; dd_rowindex roworder; /* if (newpos!=NULL) free(newpos); */ m= M->rowsize; d= M->colsize; preferredrows=M->linset; roworder=(long *)calloc(m+1,sizeof(long)); if (m >=0 && d >=0){ for(i=1; i<=m; i++) roworder[i]=i; dd_UniqueRows(roworder, 1, m, M->matrix, d,preferredrows, &uniqrows); Mcopy=dd_CreateMatrix(uniqrows, d); dd_PermutePartialCopyAmatrix(Mcopy->matrix, M->matrix, m, d, roworder,1,m); dd_CopyArow(Mcopy->rowvec, M->rowvec, d); for(i=1; i<=m; i++) { if (roworder[i]>0 && set_member(i,M->linset)) set_addelem(Mcopy->linset, roworder[i]); } Mcopy->numbtype=M->numbtype; Mcopy->representation=M->representation; Mcopy->objective=M->objective; } *newpos=roworder; return Mcopy; } dd_MatrixPtr dd_MatrixNormalizedSortedUniqueCopy(dd_MatrixPtr M,dd_rowindex *newpos) /* 094 */ { /* Sort and remove row duplicates, and return a link to this sorted copy. Linearity rows have priority over the other rows. It is better to call this after sorting with dd_MatrixNormalizedSortedCopy. The vector newpos is allocated, where *newpos[i] returns the new row index of the original row i (i=1,...,M->rowsize). *newpos[i] is negative if the original row is dominated by -*newpos[i] and eliminated in the new copy. */ dd_MatrixPtr M1=NULL,M2=NULL; dd_rowrange m,i; dd_colrange d; dd_rowindex newpos1=NULL,newpos1r=NULL,newpos2=NULL; /* if (newpos!=NULL) free(newpos); */ m= M->rowsize; d= M->colsize; *newpos=(long *)calloc(m+1,sizeof(long)); newpos1r=(long *)calloc(m+1,sizeof(long)); if (m>=0 && d>=0){ M1=dd_MatrixNormalizedSortedCopy(M,&newpos1); for (i=1; i<=m;i++) newpos1r[newpos1[i]]=i; /* reverse of newpos1 */ M2=dd_MatrixUniqueCopy(M1,&newpos2); set_emptyset(M2->linset); for(i=1; i<=m; i++) { if (newpos2[newpos1[i]]>0){ printf("newpos1[%ld]=%ld, newpos2[newpos1[%ld]]=%ld\n",i,newpos1[i], i,newpos2[newpos1[i]]); if (set_member(i,M->linset)) set_addelem(M2->linset, newpos2[newpos1[i]]); (*newpos)[i]=newpos2[newpos1[i]]; } else { (*newpos)[i]=-newpos1r[-newpos2[newpos1[i]]]; } } dd_FreeMatrix(M1);free(newpos1);free(newpos2);free(newpos1r); } return M2; } dd_MatrixPtr dd_MatrixSortedUniqueCopy(dd_MatrixPtr M,dd_rowindex *newpos) /* 094 */ { /* Same as dd_MatrixNormalizedSortedUniqueCopy except that it returns a unnormalized origial data with original ordering. */ dd_MatrixPtr M1=NULL,M2=NULL; dd_rowrange m,i,k,ii; dd_colrange d; dd_rowindex newpos1=NULL,newpos1r=NULL,newpos2=NULL; /* if (newpos!=NULL) free(newpos); */ m= M->rowsize; d= M->colsize; *newpos=(long *)calloc(m+1,sizeof(long)); newpos1r=(long *)calloc(m+1,sizeof(long)); if (m>=0 && d>=0){ M1=dd_MatrixNormalizedSortedCopy(M,&newpos1); for (i=1; i<=m;i++) newpos1r[newpos1[i]]=i; /* reverse of newpos1 */ M2=dd_MatrixUniqueCopy(M1,&newpos2); dd_FreeMatrix(M1); set_emptyset(M2->linset); for(i=1; i<=m; i++) { if (newpos2[newpos1[i]]>0){ if (set_member(i,M->linset)) set_addelem(M2->linset, newpos2[newpos1[i]]); (*newpos)[i]=newpos2[newpos1[i]]; } else { (*newpos)[i]=-newpos1r[-newpos2[newpos1[i]]]; } } ii=0; set_emptyset(M2->linset); for (i = 1; i<=m ; i++) { k=(*newpos)[i]; if (k>0) { ii+=1; (*newpos)[i]=ii; dd_CopyArow(M2->matrix[ii-1],M->matrix[i-1],d); if (set_member(i,M->linset)) set_addelem(M2->linset, ii); } } free(newpos1);free(newpos2);free(newpos1r); } return M2; } dd_MatrixPtr dd_AppendMatrix(dd_MatrixPtr M1, dd_MatrixPtr M2) { return dd_MatrixAppend(M1,M2); } int dd_MatrixAppendTo(dd_MatrixPtr *M1, dd_MatrixPtr M2) { dd_MatrixPtr M=NULL; dd_rowrange i, m,m1,m2; dd_colrange j, d,d1,d2; dd_boolean success=0; m1=(*M1)->rowsize; d1=(*M1)->colsize; m2=M2->rowsize; d2=M2->colsize; m=m1+m2; d=d1; if (d1>=0 && d1==d2 && m1>=0 && m2>=0){ M=dd_CreateMatrix(m, d); dd_CopyAmatrix(M->matrix, (*M1)->matrix, m1, d); dd_CopyArow(M->rowvec, (*M1)->rowvec, d); for (i=0; ilinset)) set_addelem(M->linset,i+1); } for (i=0; imatrix[m1+i][j],M2->matrix[i][j]); /* append the second matrix */ if (set_member(i+1,M2->linset)) set_addelem(M->linset,m1+i+1); } M->numbtype=(*M1)->numbtype; M->representation=(*M1)->representation; dd_FreeMatrix(*M1); *M1=M; success=1; } return success; } int dd_MatrixRowRemove(dd_MatrixPtr *M, dd_rowrange r) /* 092 */ { dd_rowrange i,m; dd_colrange d; dd_boolean success=0; m=(*M)->rowsize; d=(*M)->colsize; if (r >= 1 && r <=m){ (*M)->rowsize=m-1; dd_FreeArow(d, (*M)->matrix[r-1]); set_delelem((*M)->linset,r); /* slide the row headers */ for (i=r; imatrix[i-1]=(*M)->matrix[i]; if (set_member(i+1, (*M)->linset)){ set_delelem((*M)->linset,i+1); set_addelem((*M)->linset,i); } } success=1; } return success; } int dd_MatrixRowRemove2(dd_MatrixPtr *M, dd_rowrange r, dd_rowindex *newpos) /* 094 */ { dd_rowrange i,m; dd_colrange d; dd_boolean success=0; dd_rowindex roworder; m=(*M)->rowsize; d=(*M)->colsize; if (r >= 1 && r <=m){ roworder=(long *)calloc(m+1,sizeof(long)); (*M)->rowsize=m-1; dd_FreeArow(d, (*M)->matrix[r-1]); set_delelem((*M)->linset,r); /* slide the row headers */ for (i=1; imatrix[i-1]=(*M)->matrix[i]; roworder[i+1]=i; if (set_member(i+1, (*M)->linset)){ set_delelem((*M)->linset,i+1); set_addelem((*M)->linset,i); } } success=1; } return success; } dd_MatrixPtr dd_MatrixSubmatrix(dd_MatrixPtr M, dd_rowset delset) /* 092 */ { dd_MatrixPtr Msub=NULL; dd_rowrange i,isub=1, m,msub; dd_colrange d; m= M->rowsize; d= M->colsize; msub=m; if (m >=0 && d >=0){ for (i=1; i<=m; i++) { if (set_member(i,delset)) msub-=1; } Msub=dd_CreateMatrix(msub, d); for (i=1; i<=m; i++){ if (!set_member(i,delset)){ dd_CopyArow(Msub->matrix[isub-1], M->matrix[i-1], d); if (set_member(i, M->linset)){ set_addelem(Msub->linset,isub); } isub++; } } dd_CopyArow(Msub->rowvec, M->rowvec, d); Msub->numbtype=M->numbtype; Msub->representation=M->representation; Msub->objective=M->objective; } return Msub; } dd_MatrixPtr dd_MatrixSubmatrix2(dd_MatrixPtr M, dd_rowset delset,dd_rowindex *newpos) /* 092 */ { /* returns a pointer to a new matrix which is a submatrix of M with rows in delset removed. *newpos[i] returns the position of the original row i in the new matrix. It is -1 if and only if it is deleted. */ dd_MatrixPtr Msub=NULL; dd_rowrange i,isub=1, m,msub; dd_colrange d; dd_rowindex roworder; m= M->rowsize; d= M->colsize; msub=m; if (m >=0 && d >=0){ roworder=(long *)calloc(m+1,sizeof(long)); for (i=1; i<=m; i++) { if (set_member(i,delset)) msub-=1; } Msub=dd_CreateMatrix(msub, d); for (i=1; i<=m; i++){ if (set_member(i,delset)){ roworder[i]=0; /* zero means the row i is removed */ } else { dd_CopyArow(Msub->matrix[isub-1], M->matrix[i-1], d); if (set_member(i, M->linset)){ set_addelem(Msub->linset,isub); } roworder[i]=isub; isub++; } } *newpos=roworder; dd_CopyArow(Msub->rowvec, M->rowvec, d); Msub->numbtype=M->numbtype; Msub->representation=M->representation; Msub->objective=M->objective; } return Msub; } dd_MatrixPtr dd_MatrixSubmatrix2L(dd_MatrixPtr M, dd_rowset delset,dd_rowindex *newpos) /* 094 */ { /* This is same as dd_MatrixSubmatrix2 except that the linearity rows will be shifted up so that they are at the top of the matrix. */ dd_MatrixPtr Msub=NULL; dd_rowrange i,iL, iI, m,msub; dd_colrange d; dd_rowindex roworder; m= M->rowsize; d= M->colsize; msub=m; if (m >=0 && d >=0){ roworder=(long *)calloc(m+1,sizeof(long)); for (i=1; i<=m; i++) { if (set_member(i,delset)) msub-=1; } Msub=dd_CreateMatrix(msub, d); iL=1; iI=set_card(M->linset)+1; /* starting positions */ for (i=1; i<=m; i++){ if (set_member(i,delset)){ roworder[i]=0; /* zero means the row i is removed */ } else { if (set_member(i,M->linset)){ dd_CopyArow(Msub->matrix[iL-1], M->matrix[i-1], d); set_delelem(Msub->linset,i); set_addelem(Msub->linset,iL); roworder[i]=iL; iL+=1; } else { dd_CopyArow(Msub->matrix[iI-1], M->matrix[i-1], d); roworder[i]=iI; iI+=1; } } } *newpos=roworder; dd_CopyArow(Msub->rowvec, M->rowvec, d); Msub->numbtype=M->numbtype; Msub->representation=M->representation; Msub->objective=M->objective; } return Msub; } int dd_MatrixRowsRemove(dd_MatrixPtr *M, dd_rowset delset) /* 094 */ { dd_MatrixPtr Msub=NULL; int success; Msub=dd_MatrixSubmatrix(*M, delset); dd_FreeMatrix(*M); *M=Msub; success=1; return success; } int dd_MatrixRowsRemove2(dd_MatrixPtr *M, dd_rowset delset,dd_rowindex *newpos) /* 094 */ { dd_MatrixPtr Msub=NULL; int success; Msub=dd_MatrixSubmatrix2(*M, delset,newpos); dd_FreeMatrix(*M); *M=Msub; success=1; return success; } int dd_MatrixShiftupLinearity(dd_MatrixPtr *M,dd_rowindex *newpos) /* 094 */ { dd_MatrixPtr Msub=NULL; int success; dd_rowset delset; set_initialize(&delset,(*M)->rowsize); /* emptyset */ Msub=dd_MatrixSubmatrix2L(*M, delset,newpos); dd_FreeMatrix(*M); *M=Msub; set_free(delset); success=1; return success; } dd_PolyhedraPtr dd_CreatePolyhedraData(dd_rowrange m, dd_colrange d) { dd_rowrange i; dd_PolyhedraPtr poly=NULL; poly=(dd_PolyhedraPtr) malloc (sizeof(dd_PolyhedraType)); poly->child =NULL; /* this links the homogenized cone data */ poly->m =m; poly->d =d; poly->n =-1; /* the size of output is not known */ poly->m_alloc =m+2; /* the allocated row size of matrix A */ poly->d_alloc =d; /* the allocated col size of matrix A */ poly->ldim =0; /* initialize the linearity dimension */ poly->numbtype=dd_Real; dd_InitializeAmatrix(poly->m_alloc,poly->d_alloc,&(poly->A)); dd_InitializeArow(d,&(poly->c)); /* cost vector */ poly->representation =dd_Inequality; poly->homogeneous =dd_FALSE; poly->EqualityIndex=(int *)calloc(m+2, sizeof(int)); /* size increased to m+2 in 092b because it is used by the child cone, This is a bug fix suggested by Thao Dang. */ /* ith component is 1 if it is equality, -1 if it is strict inequality, 0 otherwise. */ for (i = 0; i <= m+1; i++) poly->EqualityIndex[i]=0; poly->IsEmpty = -1; /* initially set to -1, neither TRUE nor FALSE, meaning unknown */ poly->NondegAssumed = dd_FALSE; poly->InitBasisAtBottom = dd_FALSE; poly->RestrictedEnumeration = dd_FALSE; poly->RelaxedEnumeration = dd_FALSE; poly->AincGenerated=dd_FALSE; /* Ainc is a set array to store the input incidence. */ return poly; } dd_boolean dd_InitializeConeData(dd_rowrange m, dd_colrange d, dd_ConePtr *cone) { dd_boolean success=dd_TRUE; dd_colrange j; (*cone)=(dd_ConePtr)calloc(1, sizeof(dd_ConeType)); /* INPUT: A given representation of a cone: inequality */ (*cone)->m=m; (*cone)->d=d; (*cone)->m_alloc=m+2; /* allocated row size of matrix A */ (*cone)->d_alloc=d; /* allocated col size of matrix A, B and Bsave */ (*cone)->numbtype=dd_Real; (*cone)->parent=NULL; /* CONTROL: variables to control computation */ (*cone)->Iteration=0; (*cone)->HalfspaceOrder=dd_LexMin; (*cone)->ArtificialRay=NULL; (*cone)->FirstRay=NULL; (*cone)->LastRay=NULL; /* The second description: Generator */ (*cone)->PosHead=NULL; (*cone)->ZeroHead=NULL; (*cone)->NegHead=NULL; (*cone)->PosLast=NULL; (*cone)->ZeroLast=NULL; (*cone)->NegLast=NULL; (*cone)->RecomputeRowOrder = dd_TRUE; (*cone)->PreOrderedRun = dd_FALSE; set_initialize(&((*cone)->GroundSet),(*cone)->m_alloc); set_initialize(&((*cone)->EqualitySet),(*cone)->m_alloc); set_initialize(&((*cone)->NonequalitySet),(*cone)->m_alloc); set_initialize(&((*cone)->AddedHalfspaces),(*cone)->m_alloc); set_initialize(&((*cone)->WeaklyAddedHalfspaces),(*cone)->m_alloc); set_initialize(&((*cone)->InitialHalfspaces),(*cone)->m_alloc); (*cone)->RayCount=0; (*cone)->FeasibleRayCount=0; (*cone)->WeaklyFeasibleRayCount=0; (*cone)->TotalRayCount=0; (*cone)->ZeroRayCount=0; (*cone)->EdgeCount=0; (*cone)->TotalEdgeCount=0; (*cone)->count_int=0; (*cone)->count_int_good=0; (*cone)->count_int_bad=0; (*cone)->rseed=1; /* random seed for random row permutation */ dd_InitializeBmatrix((*cone)->d_alloc, &((*cone)->B)); dd_InitializeBmatrix((*cone)->d_alloc, &((*cone)->Bsave)); dd_InitializeAmatrix((*cone)->m_alloc,(*cone)->d_alloc,&((*cone)->A)); (*cone)->Edges =(dd_AdjacencyType**) calloc((*cone)->m_alloc,sizeof(dd_AdjacencyType*)); for (j=0; j<(*cone)->m_alloc; j++) (*cone)->Edges[j]=NULL; /* 094h */ (*cone)->InitialRayIndex=(long*)calloc(d+1,sizeof(long)); (*cone)->OrderVector=(long*)calloc((*cone)->m_alloc+1,sizeof(long)); (*cone)->newcol=(long*)calloc(((*cone)->d)+1,sizeof(long)); for (j=0; j<=(*cone)->d; j++) (*cone)->newcol[j]=j; /* identity map, initially */ (*cone)->LinearityDim = -2; /* -2 if it is not computed */ (*cone)->ColReduced = dd_FALSE; (*cone)->d_orig = d; /* STATES: variables to represent current state. */ /*(*cone)->Error; (*cone)->CompStatus; (*cone)->starttime; (*cone)->endtime; */ return success; } dd_ConePtr dd_ConeDataLoad(dd_PolyhedraPtr poly) { dd_ConePtr cone=NULL; dd_colrange d,j; dd_rowrange m,i; m=poly->m; d=poly->d; if (!(poly->homogeneous) && poly->representation==dd_Inequality){ m=poly->m+1; } poly->m1=m; dd_InitializeConeData(m, d, &cone); cone->representation=poly->representation; /* Points to the original polyhedra data, and reversely */ cone->parent=poly; poly->child=cone; for (i=1; i<=poly->m; i++) for (j=1; j<=cone->d; j++) dd_set(cone->A[i-1][j-1],poly->A[i-1][j-1]); if (poly->representation==dd_Inequality && !(poly->homogeneous)){ dd_set(cone->A[m-1][0],dd_one); for (j=2; j<=d; j++) dd_set(cone->A[m-1][j-1],dd_purezero); } return cone; } void dd_SetLinearity(dd_MatrixPtr M, char *line) { int i=0; dd_rowrange eqsize,var; char *next; const char ct[]=", "; /* allows separators "," and " ". */ next=strtok(line,ct); eqsize=atol(next); while (i < eqsize && (next=strtok(NULL,ct))!=NULL) { var=atol(next); set_addelem(M->linset,var); i++; } if (i!=eqsize) { fprintf(stderr,"* Warning: there are inconsistencies in linearity setting.\n"); } return; } dd_MatrixPtr dd_PolyFile2Matrix (FILE *f, dd_ErrorType *Error) { dd_MatrixPtr M=NULL; dd_rowrange m_input,i; dd_colrange d_input,j; dd_RepresentationType rep=dd_Inequality; mytype value; dd_boolean found=dd_FALSE, newformat=dd_FALSE, successful=dd_FALSE, linearity=dd_FALSE; char command[dd_linelenmax], comsave[dd_linelenmax], numbtype[dd_wordlenmax]; dd_NumberType NT; #if !defined(GMPRATIONAL) double rvalue; #endif dd_init(value); (*Error)=dd_NoError; while (!found) { if (fscanf(f,"%s",command)==EOF) { (*Error)=dd_ImproperInputFormat; goto _L99; } else { if (strncmp(command, "V-representation", 16)==0) { rep=dd_Generator; newformat=dd_TRUE; } if (strncmp(command, "H-representation", 16)==0){ rep=dd_Inequality; newformat=dd_TRUE; } if (strncmp(command, "partial_enum", 12)==0 || strncmp(command, "equality", 8)==0 || strncmp(command, "linearity", 9)==0 ) { linearity=dd_TRUE; fgets(comsave,dd_linelenmax,f); } if (strncmp(command, "begin", 5)==0) found=dd_TRUE; } } fscanf(f, "%ld %ld %s", &m_input, &d_input, numbtype); fprintf(stderr,"size = %ld x %ld\nNumber Type = %s\n", m_input, d_input, numbtype); NT=dd_GetNumberType(numbtype); if (NT==dd_Unknown) { (*Error)=dd_ImproperInputFormat; goto _L99; } M=dd_CreateMatrix(m_input, d_input); M->representation=rep; M->numbtype=NT; for (i = 1; i <= m_input; i++) { for (j = 1; j <= d_input; j++) { if (NT==dd_Real) { #if defined GMPRATIONAL *Error=dd_NoRealNumberSupport; goto _L99; #else fscanf(f, "%lf", &rvalue); dd_set_d(value, rvalue); #endif } else { dd_fread_rational_value (f, value); } dd_set(M->matrix[i-1][j - 1],value); if (dd_debug) {fprintf(stderr,"a(%3ld,%5ld) = ",i,j); dd_WriteNumber(stderr,value);} } /*of j*/ } /*of i*/ if (fscanf(f,"%s",command)==EOF) { (*Error)=dd_ImproperInputFormat; goto _L99; } else if (strncmp(command, "end", 3)!=0) { if (dd_debug) fprintf(stderr,"'end' missing or illegal extra data: %s\n",command); (*Error)=dd_ImproperInputFormat; goto _L99; } successful=dd_TRUE; if (linearity) { dd_SetLinearity(M,comsave); } while (!feof(f)) { fscanf(f,"%s", command); dd_ProcessCommandLine(f, M, command); fgets(command,dd_linelenmax,f); /* skip the CR/LF */ } _L99: ; dd_clear(value); /* if (f!=NULL) fclose(f); */ return M; } dd_PolyhedraPtr dd_DDMatrix2Poly(dd_MatrixPtr M, dd_ErrorType *err) { dd_rowrange i; dd_colrange j; dd_PolyhedraPtr poly=NULL; *err=dd_NoError; if (M->rowsize<0 || M->colsize<0){ *err=dd_NegativeMatrixSize; goto _L99; } poly=dd_CreatePolyhedraData(M->rowsize, M->colsize); poly->representation=M->representation; poly->homogeneous=dd_TRUE; for (i = 1; i <= M->rowsize; i++) { if (set_member(i, M->linset)) { poly->EqualityIndex[i]=1; } for (j = 1; j <= M->colsize; j++) { dd_set(poly->A[i-1][j-1], M->matrix[i-1][j-1]); if (j==1 && dd_Nonzero(M->matrix[i-1][j-1])) poly->homogeneous = dd_FALSE; } /*of j*/ } /*of i*/ dd_DoubleDescription(poly,err); _L99: return poly; } dd_PolyhedraPtr dd_DDMatrix2Poly2(dd_MatrixPtr M, dd_RowOrderType horder, dd_ErrorType *err) { dd_rowrange i; dd_colrange j; dd_PolyhedraPtr poly=NULL; *err=dd_NoError; if (M->rowsize<0 || M->colsize<0){ *err=dd_NegativeMatrixSize; goto _L99; } poly=dd_CreatePolyhedraData(M->rowsize, M->colsize); poly->representation=M->representation; poly->homogeneous=dd_TRUE; for (i = 1; i <= M->rowsize; i++) { if (set_member(i, M->linset)) { poly->EqualityIndex[i]=1; } for (j = 1; j <= M->colsize; j++) { dd_set(poly->A[i-1][j-1], M->matrix[i-1][j-1]); if (j==1 && dd_Nonzero(M->matrix[i-1][j-1])) poly->homogeneous = dd_FALSE; } /*of j*/ } /*of i*/ dd_DoubleDescription2(poly, horder, err); _L99: return poly; } void dd_MatrixIntegerFilter(dd_MatrixPtr M) { /* setting an almost integer to the integer. */ dd_rowrange i; dd_colrange j; mytype x; dd_init(x); for (i=0; i< M->rowsize; i++) for (j=0; j< M->colsize; j++){ dd_SnapToInteger(x, M->matrix[i][j]); dd_set(M->matrix[i][j],x); } dd_clear(x); } void dd_CopyRay(mytype *a, dd_colrange d_origsize, dd_RayPtr RR, dd_RepresentationType rep, dd_colindex reducedcol) { long j,j1; mytype b; dd_init(b); for (j = 1; j <= d_origsize; j++){ j1=reducedcol[j]; if (j1>0){ dd_set(a[j-1],RR->Ray[j1-1]); /* the original column j is mapped to j1, and thus copy the corresponding component */ } else { dd_set(a[j-1],dd_purezero); /* original column is redundant and removed for computation */ } } dd_set(b,a[0]); if (rep==dd_Generator && dd_Nonzero(b)){ dd_set(a[0],dd_one); for (j = 2; j <= d_origsize; j++) dd_div(a[j-1],a[j-1],b); /* normalization for generators */ } dd_clear(b); } void dd_WriteRay(FILE *f, dd_colrange d_origsize, dd_RayPtr RR, dd_RepresentationType rep, dd_colindex reducedcol) { dd_colrange j; static dd_colrange d_last=0; static dd_Arow a; if (d_last< d_origsize){ if (d_last>0) free(a); dd_InitializeArow(d_origsize+1, &a); d_last=d_origsize+1; } dd_CopyRay(a, d_origsize, RR, rep, reducedcol); for (j = 0; j < d_origsize; j++) dd_WriteNumber(f, a[j]); fprintf(f, "\n"); } void dd_WriteArow(FILE *f, dd_Arow a, dd_colrange d) { dd_colrange j; for (j = 0; j < d; j++) dd_WriteNumber(f, a[j]); fprintf(f, "\n"); } void dd_WriteAmatrix(FILE *f, dd_Amatrix A, long rowmax, long colmax) { long i,j; if (A==NULL){ fprintf(f, "WriteAmatrix: The requested matrix is empty\n"); goto _L99; } fprintf(f, "begin\n"); #if defined GMPRATIONAL fprintf(f, " %ld %ld rational\n",rowmax, colmax); #else fprintf(f, " %ld %ld real\n",rowmax, colmax); #endif for (i=1; i <= rowmax; i++) { for (j=1; j <= colmax; j++) { dd_WriteNumber(f, A[i-1][j-1]); } fprintf(f,"\n"); } fprintf(f, "end\n"); _L99:; } void dd_WriteBmatrix(FILE *f, dd_colrange d_size, dd_Bmatrix B) { dd_colrange j1, j2; if (B==NULL){ fprintf(f, "WriteBmatrix: The requested matrix is empty\n"); goto _L99; } for (j1 = 0; j1 < d_size; j1++) { for (j2 = 0; j2 < d_size; j2++) { dd_WriteNumber(f, B[j1][j2]); } /*of j2*/ putc('\n', f); } /*of j1*/ putc('\n', f); _L99:; } void dd_WriteSetFamily(FILE *f, dd_SetFamilyPtr F) { dd_bigrange i; if (F==NULL){ fprintf(f, "WriteSetFamily: The requested family is empty\n"); goto _L99; } fprintf(f,"begin\n"); fprintf(f," %ld %ld\n", F->famsize, F->setsize); for (i=0; ifamsize; i++) { fprintf(f, " %ld %ld : ", i+1, set_card(F->set[i])); set_fwrite(f, F->set[i]); } fprintf(f,"end\n"); _L99:; } void dd_WriteSetFamilyCompressed(FILE *f, dd_SetFamilyPtr F) { dd_bigrange i,card; if (F==NULL){ fprintf(f, "WriteSetFamily: The requested family is empty\n"); goto _L99; } fprintf(f,"begin\n"); fprintf(f," %ld %ld\n", F->famsize, F->setsize); for (i=0; ifamsize; i++) { card=set_card(F->set[i]); if (F->setsize - card >= card){ fprintf(f, " %ld %ld : ", i+1, card); set_fwrite(f, F->set[i]); } else { fprintf(f, " %ld %ld : ", i+1, -card); set_fwrite_compl(f, F->set[i]); } } fprintf(f,"end\n"); _L99:; } void dd_WriteMatrix(FILE *f, dd_MatrixPtr M) { dd_rowrange i, linsize; if (M==NULL){ fprintf(f, "WriteMatrix: The requested matrix is empty\n"); goto _L99; } switch (M->representation) { case dd_Inequality: fprintf(f, "H-representation\n"); break; case dd_Generator: fprintf(f, "V-representation\n"); break; case dd_Unspecified: break; } linsize=set_card(M->linset); if (linsize>0) { fprintf(f, "linearity %ld ", linsize); for (i=1; i<=M->rowsize; i++) if (set_member(i, M->linset)) fprintf(f, " %ld", i); fprintf(f, "\n"); } dd_WriteAmatrix(f, M->matrix, M->rowsize, M->colsize); if (M->objective!=dd_LPnone){ if (M->objective==dd_LPmax) fprintf(f, "maximize\n"); else fprintf(f, "minimize\n"); dd_WriteArow(f, M->rowvec, M->colsize); } _L99:; } void dd_WriteLP(FILE *f, dd_LPPtr lp) { if (lp==NULL){ fprintf(f, "WriteLP: The requested lp is empty\n"); goto _L99; } fprintf(f, "H-representation\n"); dd_WriteAmatrix(f, lp->A, (lp->m)-1, lp->d); if (lp->objective!=dd_LPnone){ if (lp->objective==dd_LPmax) fprintf(f, "maximize\n"); else fprintf(f, "minimize\n"); dd_WriteArow(f, lp->A[lp->objrow-1], lp->d); } _L99:; } void dd_SnapToInteger(mytype y, mytype x) { /* this is broken. It does nothing. */ dd_set(y,x); } void dd_WriteReal(FILE *f, mytype x) { long ix1,ix2,ix; double ax; ax=dd_get_d(x); ix1= (long) (fabs(ax) * 10000. + 0.5); ix2= (long) (fabs(ax) + 0.5); ix2= ix2*10000; if ( ix1 == ix2) { if (dd_Positive(x)) { ix = (long)(ax + 0.5); } else { ix = (long)(-ax + 0.5); ix = -ix; } fprintf(f, " %2ld", ix); } else fprintf(f, " % .9E",ax); } void dd_WriteNumber(FILE *f, mytype x) { #if defined GMPRATIONAL fprintf(f," "); mpq_out_str(f, 10, x); #else dd_WriteReal(f, x); #endif } void dd_WriteIncidence(FILE *f, dd_PolyhedraPtr poly) { dd_SetFamilyPtr I; switch (poly->representation) { case dd_Inequality: fprintf(f, "ecd_file: Incidence of generators and inequalities\n"); break; case dd_Generator: fprintf(f, "icd_file: Incidence of inequalities and generators\n"); break; default: break; } I=dd_CopyIncidence(poly); dd_WriteSetFamilyCompressed(f,I); dd_FreeSetFamily(I); } void dd_WriteAdjacency(FILE *f, dd_PolyhedraPtr poly) { dd_SetFamilyPtr A; switch (poly->representation) { case dd_Inequality: fprintf(f, "ead_file: Adjacency of generators\n"); break; case dd_Generator: fprintf(f, "iad_file: Adjacency of inequalities\n"); break; default: break; } A=dd_CopyAdjacency(poly); dd_WriteSetFamilyCompressed(f,A); dd_FreeSetFamily(A); } void dd_ComputeAinc(dd_PolyhedraPtr poly) { /* This generates the input incidence array poly->Ainc, and two sets: poly->Ared, poly->Adom. */ dd_bigrange k; dd_rowrange i,m1; dd_colrange j; dd_boolean redundant; dd_MatrixPtr M=NULL; mytype sum,temp; dd_init(sum); dd_init(temp); if (poly->AincGenerated==dd_TRUE) goto _L99; M=dd_CopyOutput(poly); poly->n=M->rowsize; m1=poly->m1; /* this number is same as poly->m, except when poly is given by nonhomogeneous inequalty: !(poly->homogeneous) && poly->representation==Inequality, it is poly->m+1. See dd_ConeDataLoad. */ poly->Ainc=(set_type*)calloc(m1, sizeof(set_type)); for(i=1; i<=m1; i++) set_initialize(&(poly->Ainc[i-1]),poly->n); set_initialize(&(poly->Ared), m1); set_initialize(&(poly->Adom), m1); for (k=1; k<=poly->n; k++){ for (i=1; i<=poly->m; i++){ dd_set(sum,dd_purezero); for (j=1; j<=poly->d; j++){ dd_mul(temp,poly->A[i-1][j-1],M->matrix[k-1][j-1]); dd_add(sum,sum,temp); } if (dd_EqualToZero(sum)) { set_addelem(poly->Ainc[i-1], k); } } if (!(poly->homogeneous) && poly->representation==dd_Inequality){ if (dd_EqualToZero(M->matrix[k-1][0])) { set_addelem(poly->Ainc[m1-1], k); /* added infinity inequality (1,0,0,...,0) */ } } } for (i=1; i<=m1; i++){ if (set_card(poly->Ainc[i-1])==M->rowsize){ set_addelem(poly->Adom, i); } } for (i=m1; i>=1; i--){ if (set_card(poly->Ainc[i-1])==0){ redundant=dd_TRUE; set_addelem(poly->Ared, i); }else { redundant=dd_FALSE; for (k=1; k<=m1; k++) { if (k!=i && !set_member(k, poly->Ared) && !set_member(k, poly->Adom) && set_subset(poly->Ainc[i-1], poly->Ainc[k-1])){ if (!redundant){ redundant=dd_TRUE; } set_addelem(poly->Ared, i); } } } } dd_FreeMatrix(M); poly->AincGenerated=dd_TRUE; _L99:; dd_clear(sum); dd_clear(temp); } dd_boolean dd_InputAdjacentQ(dd_PolyhedraPtr poly, dd_rowrange i1, dd_rowrange i2) /* Before calling this function, RedundantSet must be a set of row indices whose removal results in a minimal nonredundant system to represent the input polyhedron, DominantSet must be the set of row indices which are active at every extreme points/rays. */ { dd_boolean adj=dd_TRUE; dd_rowrange i; static set_type common; static long lastn=0; if (poly->AincGenerated==dd_FALSE) dd_ComputeAinc(poly); if (lastn!=poly->n){ if (lastn >0) set_free(common); set_initialize(&common, poly->n); lastn=poly->n; } if (set_member(i1, poly->Ared) || set_member(i2, poly->Ared)){ adj=dd_FALSE; goto _L99; } if (set_member(i1, poly->Adom) || set_member(i2, poly->Adom)){ // dominant inequality is considered adjacencent to all others. adj=dd_TRUE; goto _L99; } set_int(common, poly->Ainc[i1-1], poly->Ainc[i2-1]); i=0; while (im1 && adj==dd_TRUE){ i++; if (i!=i1 && i!=i2 && !set_member(i, poly->Ared) && !set_member(i, poly->Adom) && set_subset(common,poly->Ainc[i-1])){ adj=dd_FALSE; } } _L99:; return adj; } void dd_WriteInputIncidence(FILE *f, dd_PolyhedraPtr poly) { dd_SetFamilyPtr I; if (poly->AincGenerated==dd_FALSE) dd_ComputeAinc(poly); switch (poly->representation) { case dd_Inequality: fprintf(f,"icd_file: Incidence of inequalities and generators\n"); break; case dd_Generator: fprintf(f,"ecd_file: Incidence of generators and inequalities\n"); break; default: break; } I=dd_CopyInputIncidence(poly); dd_WriteSetFamilyCompressed(f,I); dd_FreeSetFamily(I); } void dd_WriteInputAdjacency(FILE *f, dd_PolyhedraPtr poly) { dd_SetFamilyPtr A; if (poly->AincGenerated==dd_FALSE){ dd_ComputeAinc(poly); } switch (poly->representation) { case dd_Inequality: fprintf(f, "iad_file: Adjacency of inequalities\n"); break; case dd_Generator: fprintf(f, "ead_file: Adjacency of generators\n"); break; default: break; } A=dd_CopyInputAdjacency(poly); dd_WriteSetFamilyCompressed(f,A); dd_FreeSetFamily(A); } void dd_WriteProgramDescription(FILE *f) { fprintf(f, "* cddlib: a double description library:%s\n", dd_DDVERSION); fprintf(f, "* compiled for %s arithmetic.\n", dd_ARITHMETIC); fprintf(f,"* %s\n",dd_COPYRIGHT); } void dd_WriteTimes(FILE *f, time_t starttime, time_t endtime) { long ptime,ptime_sec,ptime_minu, ptime_hour; /* ptime=difftime(endtime,starttime); This function is ANSI standard, but not available sometime */ ptime=(endtime - starttime); /* This is to replace the line above, but it may not give correct time in seconds */ ptime_hour=ptime/3600; ptime_minu=(ptime-ptime_hour*3600)/60; ptime_sec=ptime%60; fprintf(f,"* Computation started at %s",asctime(localtime(&starttime))); fprintf(f,"* ended at %s",asctime(localtime(&endtime))); fprintf(f,"* Total processor time = %ld seconds\n",ptime); fprintf(f,"* = %ld h %ld m %ld s\n",ptime_hour, ptime_minu, ptime_sec); } void dd_WriteDDTimes(FILE *f, dd_PolyhedraPtr poly) { dd_WriteTimes(f,poly->child->starttime,poly->child->endtime); } void dd_WriteLPTimes(FILE *f, dd_LPPtr lp) { dd_WriteTimes(f,lp->starttime,lp->endtime); } void dd_WriteLPStats(FILE *f) { time_t currenttime; time(¤ttime); fprintf(f, "\n*--- Statistics of pivots ---\n"); #if defined GMPRATIONAL fprintf(f, "* f0 = %ld (float basis finding pivots)\n",ddf_statBApivots); fprintf(f, "* fc = %ld (float CC pivots)\n",ddf_statCCpivots); fprintf(f, "* f1 = %ld (float dual simplex phase I pivots)\n",ddf_statDS1pivots); fprintf(f, "* f2 = %ld (float dual simplex phase II pivots)\n",ddf_statDS2pivots); fprintf(f, "* f3 = %ld (float anticycling CC pivots)\n",ddf_statACpivots); fprintf(f, "* e0 = %ld (exact basis finding pivots)\n",dd_statBApivots); fprintf(f, "* ec = %ld (exact CC pivots)\n",dd_statCCpivots); fprintf(f, "* e1 = %ld (exact dual simplex phase I pivots)\n",dd_statDS1pivots); fprintf(f, "* e2 = %ld (exact dual simplex phase II pivots)\n",dd_statDS2pivots); fprintf(f, "* e3 = %ld (exact anticycling CC pivots)\n",dd_statACpivots); fprintf(f, "* e4 = %ld (exact basis verification pivots)\n",dd_statBSpivots); #else fprintf(f, "f0 = %ld (float basis finding pivots)\n",dd_statBApivots); fprintf(f, "fc = %ld (float CC pivots)\n",dd_statCCpivots); fprintf(f, "f1 = %ld (float dual simplex phase I pivots)\n",dd_statDS1pivots); fprintf(f, "f2 = %ld (float dual simplex phase II pivots)\n",dd_statDS2pivots); fprintf(f, "f3 = %ld (float anticycling CC pivots)\n",dd_statACpivots); #endif dd_WriteLPMode(f); dd_WriteTimes(f,dd_statStartTime, currenttime); } void dd_WriteLPMode(FILE *f) { fprintf(f, "\n* LP solver: "); switch (dd_choiceLPSolverDefault) { case dd_DualSimplex: fprintf(f, "DualSimplex\n"); break; case dd_CrissCross: fprintf(f, "Criss-Cross\n"); break; default: break; } fprintf(f, "* Redundancy cheking solver: "); switch (dd_choiceRedcheckAlgorithm) { case dd_DualSimplex: fprintf(f, "DualSimplex\n"); break; case dd_CrissCross: fprintf(f, "Criss-Cross\n"); break; default: break; } fprintf(f, "* Lexicographic pivot: "); if (dd_choiceLexicoPivotQ) fprintf(f, " on\n"); else fprintf(f, " off\n"); } void dd_WriteRunningMode(FILE *f, dd_PolyhedraPtr poly) { if (poly->child!=NULL){ fprintf(f,"* roworder: "); switch (poly->child->HalfspaceOrder) { case dd_MinIndex: fprintf(f, "minindex\n"); break; case dd_MaxIndex: fprintf(f, "maxindex\n"); break; case dd_MinCutoff: fprintf(f, "mincutoff\n"); break; case dd_MaxCutoff: fprintf(f, "maxcutoff\n"); break; case dd_MixCutoff: fprintf(f, "mixcutoff\n"); break; case dd_LexMin: fprintf(f, "lexmin\n"); break; case dd_LexMax: fprintf(f, "lexmax\n"); break; case dd_RandomRow: fprintf(f, "random %d\n",poly->child->rseed); break; default: break; } } } void dd_WriteCompletionStatus(FILE *f, dd_ConePtr cone) { if (cone->Iterationm && cone->CompStatus==dd_AllFound) { fprintf(f,"*Computation completed at Iteration %4ld.\n", cone->Iteration); } if (cone->CompStatus == dd_RegionEmpty) { fprintf(f,"*Computation completed at Iteration %4ld because the region found empty.\n",cone->Iteration); } } void dd_WritePolyFile(FILE *f, dd_PolyhedraPtr poly) { dd_WriteAmatrix(f,poly->A,poly->m,poly->d); } void dd_WriteErrorMessages(FILE *f, dd_ErrorType Error) { switch (Error) { case dd_DimensionTooLarge: fprintf(f, "*Input Error: Input matrix is too large:\n"); fprintf(f, "*Please increase MMAX and/or NMAX in the source code and recompile.\n"); break; case dd_IFileNotFound: fprintf(f, "*Input Error: Specified input file does not exist.\n"); break; case dd_OFileNotOpen: fprintf(f, "*Output Error: Specified output file cannot be opened.\n"); break; case dd_NegativeMatrixSize: fprintf(f, "*Input Error: Input matrix has a negative size:\n"); fprintf(f, "*Please check rowsize or colsize.\n"); break; case dd_ImproperInputFormat: fprintf(f,"*Input Error: Input format is not correct.\n"); fprintf(f,"*Format:\n"); fprintf(f," begin\n"); fprintf(f," m n NumberType(real, rational or integer)\n"); fprintf(f," b -A\n"); fprintf(f," end\n"); break; case dd_EmptyVrepresentation: fprintf(f, "*Input Error: V-representation is empty:\n"); fprintf(f, "*cddlib does not accept this trivial case for which output can be any inconsistent system.\n"); break; case dd_EmptyHrepresentation: fprintf(f, "*Input Error: H-representation is empty.\n"); break; case dd_EmptyRepresentation: fprintf(f, "*Input Error: Representation is empty.\n"); break; case dd_NoLPObjective: fprintf(f, "*LP Error: No LP objective (max or min) is set.\n"); break; case dd_NoRealNumberSupport: fprintf(f, "*LP Error: The binary (with GMP Rational) does not support Real number input.\n"); fprintf(f, " : Use a binary compiled without -DGMPRATIONAL option.\n"); break; case dd_NotAvailForH: fprintf(f, "*Error: A function is called with H-rep which does not support an H-representation.\n"); break; case dd_NotAvailForV: fprintf(f, "*Error: A function is called with V-rep which does not support an V-representation.\n"); break; case dd_CannotHandleLinearity: fprintf(f, "*Error: The function called cannot handle linearity.\n"); break; case dd_RowIndexOutOfRange: fprintf(f, "*Error: Specified row index is out of range\n"); break; case dd_ColIndexOutOfRange: fprintf(f, "*Error: Specified column index is out of range\n"); break; case dd_LPCycling: fprintf(f, "*Error: Possibly an LP cycling occurs. Use the Criss-Cross method.\n"); break; case dd_NumericallyInconsistent: fprintf(f, "*Error: Numerical inconsistency is found. Use the GMP exact arithmetic.\n"); break; case dd_NoError: fprintf(f,"*No Error found.\n"); break; } } dd_SetFamilyPtr dd_CopyIncidence(dd_PolyhedraPtr poly) { dd_SetFamilyPtr F=NULL; dd_bigrange k; dd_rowrange i; if (poly->child==NULL || poly->child->CompStatus!=dd_AllFound) goto _L99; if (poly->AincGenerated==dd_FALSE) dd_ComputeAinc(poly); F=dd_CreateSetFamily(poly->n, poly->m1); for (i=1; i<=poly->m1; i++) for (k=1; k<=poly->n; k++) if (set_member(k,poly->Ainc[i-1])) set_addelem(F->set[k-1],i); _L99:; return F; } dd_SetFamilyPtr dd_CopyInputIncidence(dd_PolyhedraPtr poly) { dd_rowrange i; dd_SetFamilyPtr F=NULL; if (poly->child==NULL || poly->child->CompStatus!=dd_AllFound) goto _L99; if (poly->AincGenerated==dd_FALSE) dd_ComputeAinc(poly); F=dd_CreateSetFamily(poly->m1, poly->n); for(i=0; i< poly->m1; i++){ set_copy(F->set[i], poly->Ainc[i]); } _L99:; return F; } dd_SetFamilyPtr dd_CopyAdjacency(dd_PolyhedraPtr poly) { dd_RayPtr RayPtr1,RayPtr2; dd_SetFamilyPtr F=NULL; long pos1, pos2; dd_bigrange lstart,k,n; set_type linset,allset; dd_boolean adj; if (poly->n==0 && poly->homogeneous && poly->representation==dd_Inequality){ n=1; /* the origin (the unique vertex) should be output. */ } else n=poly->n; set_initialize(&linset, n); set_initialize(&allset, n); if (poly->child==NULL || poly->child->CompStatus!=dd_AllFound) goto _L99; F=dd_CreateSetFamily(n, n); if (n<=0) goto _L99; poly->child->LastRay->Next=NULL; for (RayPtr1=poly->child->FirstRay, pos1=1;RayPtr1 != NULL; RayPtr1 = RayPtr1->Next, pos1++){ for (RayPtr2=poly->child->FirstRay, pos2=1; RayPtr2 != NULL; RayPtr2 = RayPtr2->Next, pos2++){ if (RayPtr1!=RayPtr2){ dd_CheckAdjacency(poly->child, &RayPtr1, &RayPtr2, &adj); if (adj){ set_addelem(F->set[pos1-1], pos2); } } } } lstart=poly->n - poly->ldim + 1; set_compl(allset,allset); /* allset is set to the ground set. */ for (k=lstart; k<=poly->n; k++){ set_addelem(linset,k); /* linearity set */ set_copy(F->set[k-1],allset); /* linearity generator is adjacent to all */ } for (k=1; kset[k-1],F->set[k-1],linset); /* every generator is adjacent to all linearity generators */ } _L99:; set_free(allset); set_free(linset); return F; } dd_SetFamilyPtr dd_CopyInputAdjacency(dd_PolyhedraPtr poly) { dd_rowrange i,j; dd_SetFamilyPtr F=NULL; if (poly->child==NULL || poly->child->CompStatus!=dd_AllFound) goto _L99; if (poly->AincGenerated==dd_FALSE) dd_ComputeAinc(poly); F=dd_CreateSetFamily(poly->m1, poly->m1); for (i=1; i<=poly->m1; i++){ for (j=1; j<=poly->m1; j++){ if (i!=j && dd_InputAdjacentQ(poly, i, j)) { set_addelem(F->set[i-1],j); } } } _L99:; return F; } dd_MatrixPtr dd_CopyOutput(dd_PolyhedraPtr poly) { dd_RayPtr RayPtr; dd_MatrixPtr M=NULL; dd_rowrange i=0,total; dd_colrange j,j1; mytype b; dd_RepresentationType outputrep=dd_Inequality; dd_boolean outputorigin=dd_FALSE; dd_init(b); total=poly->child->LinearityDim + poly->child->FeasibleRayCount; if (poly->child->d<=0 || poly->child->newcol[1]==0) total=total-1; if (poly->representation==dd_Inequality) outputrep=dd_Generator; if (total==0 && poly->homogeneous && poly->representation==dd_Inequality){ total=1; outputorigin=dd_TRUE; /* the origin (the unique vertex) should be output. */ } if (poly->child==NULL || poly->child->CompStatus!=dd_AllFound) goto _L99; M=dd_CreateMatrix(total, poly->d); RayPtr = poly->child->FirstRay; while (RayPtr != NULL) { if (RayPtr->feasible) { dd_CopyRay(M->matrix[i], poly->d, RayPtr, outputrep, poly->child->newcol); i++; /* 086 */ } RayPtr = RayPtr->Next; } for (j=2; j<=poly->d; j++){ if (poly->child->newcol[j]==0){ /* original column j is dependent on others and removed for the cone */ dd_set(b,poly->child->Bsave[0][j-1]); if (outputrep==dd_Generator && dd_Positive(b)){ dd_set(M->matrix[i][0],dd_one); /* dd_Normalize */ for (j1=1; j1d; j1++) dd_div(M->matrix[i][j1],(poly->child->Bsave[j1][j-1]),b); } else { for (j1=0; j1d; j1++) dd_set(M->matrix[i][j1],poly->child->Bsave[j1][j-1]); } set_addelem(M->linset, i+1); i++; } } if (outputorigin){ /* output the origin for homogeneous H-polyhedron with no rays. */ dd_set(M->matrix[0][0],dd_one); for (j=1; jd; j++){ dd_set(M->matrix[0][j],dd_purezero); } } dd_MatrixIntegerFilter(M); if (poly->representation==dd_Inequality) M->representation=dd_Generator; else M->representation=dd_Inequality; _L99:; dd_clear(b); return M; } dd_MatrixPtr dd_CopyInput(dd_PolyhedraPtr poly) { dd_MatrixPtr M=NULL; dd_rowrange i; M=dd_CreateMatrix(poly->m, poly->d); dd_CopyAmatrix(M->matrix, poly->A, poly->m, poly->d); for (i=1; i<=poly->m; i++) if (poly->EqualityIndex[i]==1) set_addelem(M->linset,i); dd_MatrixIntegerFilter(M); if (poly->representation==dd_Generator) M->representation=dd_Generator; else M->representation=dd_Inequality; return M; } dd_MatrixPtr dd_CopyGenerators(dd_PolyhedraPtr poly) { dd_MatrixPtr M=NULL; if (poly->representation==dd_Generator){ M=dd_CopyInput(poly); } else { M=dd_CopyOutput(poly); } return M; } dd_MatrixPtr dd_CopyInequalities(dd_PolyhedraPtr poly) { dd_MatrixPtr M=NULL; if (poly->representation==dd_Inequality){ M=dd_CopyInput(poly); } else { M=dd_CopyOutput(poly); } return M; } /****************************************************************************************/ /* rational number (a/b) read is taken from Vinci by Benno Bueeler and Andreas Enge */ /****************************************************************************************/ void dd_sread_rational_value (const char *s, mytype value) /* reads a rational value from the specified string "s" and assigns it to "value" */ { char *numerator_s=NULL, *denominator_s=NULL, *position; int sign = 1; double numerator, denominator; #if defined GMPRATIONAL mpz_t znum, zden; #else double rvalue; #endif /* determine the sign of the number */ numerator_s = s; if (s [0] == '-') { sign = -1; numerator_s++; } else if (s [0] == '+') numerator_s++; /* look for a sign '/' and eventually split the number in numerator and denominator */ position = strchr (numerator_s, '/'); if (position != NULL) { *position = '\0'; /* terminates the numerator */ denominator_s = position + 1; }; /* determine the floating point values of numerator and denominator */ numerator=atol (numerator_s); if (position != NULL) { denominator=atol (denominator_s); } else denominator = 1; /* fprintf(stderr,"\nrational_read: numerator %f\n",numerator); fprintf(stderr,"rational_read: denominator %f\n",denominator); fprintf(stderr,"rational_read: sign %d\n",sign); */ #if defined GMPRATIONAL mpz_init_set_str(znum,numerator_s,10); if (sign<0) mpz_neg(znum,znum); mpz_init(zden); mpz_set_ui(zden,1); if (denominator_s!=NULL) mpz_init_set_str(zden,denominator_s,10); mpq_set_num(value,znum); mpq_set_den(value,zden); mpq_canonicalize(value); mpz_clear(znum); mpz_clear(zden); /* num=(long)sign * numerator; */ /* den=(unsigned long) denominator; */ /* mpq_set_si(value, num, den); */ #elif defined GMPFLOAT rvalue=sign * numerator/ (signed long) denominator; mpf_set_d(value, rvalue); #else rvalue=sign * numerator/ (signed long) denominator; ddd_set_d(value, rvalue); #endif if (dd_debug) { fprintf(stderr,"rational_read: "); dd_WriteNumber(stderr,value); fprintf(stderr,"\n"); } } void dd_fread_rational_value (FILE *f, mytype value) /* reads a rational value from the specified file "f" and assigns it to "value" */ { char number_s [dd_wordlenmax]; mytype rational_value; dd_init(rational_value); fscanf(f, "%s ", number_s); dd_sread_rational_value (number_s, rational_value); dd_set(value,rational_value); dd_clear(rational_value); } /****************************************************************************************/ /* end of cddio.c */ cddlib-0.94j/lib-src/cddlib.c0000644000175000017500000002642313270066522012714 00000000000000/* cddlib.c: cdd library (library version of cdd) written by Komei Fukuda, fukuda@math.ethz.ch Version 0.94i, March 9, 2018 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* cdd : C-Implementation of the double description method for computing all vertices and extreme rays of the polyhedron P= {x : b - A x >= 0}. Please read COPYING (GNU General Public Licence) and the manual cddlibman.tex for detail. */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* The first version C0.21 was created on November 10,1993 with Dave Gillespie's p2c translator from the Pascal program pdd.p written by Komei Fukuda. */ #include "setoper.h" /* set operation library header (Ver. June 1, 2000 or later) */ #include "cdd.h" #include #include #include #include #include /* Global Variables */ dd_boolean dd_debug =dd_FALSE; dd_boolean dd_log =dd_FALSE; /* GLOBAL CONSTANTS and STATICS VARIABLES (to be set by dd_set_global_constants() */ mytype dd_zero; mytype dd_one; mytype dd_purezero; mytype dd_minuszero; mytype dd_minusone; time_t dd_statStartTime; /* cddlib starting time */ long dd_statBApivots; /* basis finding pivots */ long dd_statCCpivots; /* criss-cross pivots */ long dd_statDS1pivots; /* phase 1 pivots */ long dd_statDS2pivots; /* phase 2 pivots */ long dd_statACpivots; /* anticycling (cc) pivots */ #ifdef GMPRATIONAL long dd_statBSpivots; /* basis status checking pivots */ #endif dd_LPSolverType dd_choiceLPSolverDefault; /* Default LP solver Algorithm */ dd_LPSolverType dd_choiceRedcheckAlgorithm; /* Redundancy Checking Algorithm */ dd_boolean dd_choiceLexicoPivotQ; /* whether to use the lexicographic pivot */ /* #include THINK C PROFILER */ /* #include THINK C PROFILER */ void dd_DDInit(dd_ConePtr cone) { cone->Error=dd_NoError; cone->CompStatus=dd_InProgress; cone->RayCount = 0; cone->TotalRayCount = 0; cone->FeasibleRayCount = 0; cone->WeaklyFeasibleRayCount = 0; cone->EdgeCount=0; /* active edge count */ cone->TotalEdgeCount=0; /* active edge count */ dd_SetInequalitySets(cone); dd_ComputeRowOrderVector(cone); cone->RecomputeRowOrder=dd_FALSE; } void dd_DDMain(dd_ConePtr cone) { dd_rowrange hh, itemp, otemp; dd_boolean locallog=dd_log; /* if dd_log=dd_FALSE, no log will be written. */ if (cone->d<=0){ cone->Iteration=cone->m; cone->FeasibleRayCount=0; cone->CompStatus=dd_AllFound; goto _L99; } if (locallog) { fprintf(stderr,"(Initially added rows ) = "); set_fwrite(stderr,cone->InitialHalfspaces); } while (cone->Iteration <= cone->m) { dd_SelectNextHalfspace(cone, cone->WeaklyAddedHalfspaces, &hh); if (set_member(hh,cone->NonequalitySet)){ /* Skip the row hh */ if (dd_debug) { fprintf(stderr,"*The row # %3ld should be inactive and thus skipped.\n", hh); } set_addelem(cone->WeaklyAddedHalfspaces, hh); } else { if (cone->PreOrderedRun) dd_AddNewHalfspace2(cone, hh); else{ dd_AddNewHalfspace1(cone, hh); } set_addelem(cone->AddedHalfspaces, hh); set_addelem(cone->WeaklyAddedHalfspaces, hh); } if (!cone->PreOrderedRun){ for (itemp=1; cone->OrderVector[itemp]!=hh; itemp++); otemp=cone->OrderVector[cone->Iteration]; cone->OrderVector[cone->Iteration]=hh; /* store the dynamic ordering in ordervec */ cone->OrderVector[itemp]=otemp; /* store the dynamic ordering in ordervec */ } if (locallog){ fprintf(stderr,"(Iter, Row, #Total, #Curr, #Feas)= %5ld %5ld %9ld %6ld %6ld\n", cone->Iteration, hh, cone->TotalRayCount, cone->RayCount, cone->FeasibleRayCount); } if (cone->CompStatus==dd_AllFound||cone->CompStatus==dd_RegionEmpty) { set_addelem(cone->AddedHalfspaces, hh); goto _L99; } (cone->Iteration)++; } _L99:; if (cone->d<=0 || cone->newcol[1]==0){ /* fixing the number of output */ cone->parent->n=cone->LinearityDim + cone->FeasibleRayCount -1; cone->parent->ldim=cone->LinearityDim - 1; } else { cone->parent->n=cone->LinearityDim + cone->FeasibleRayCount; cone->parent->ldim=cone->LinearityDim; } } void dd_InitialDataSetup(dd_ConePtr cone) { long j, r; dd_rowset ZSet; static dd_Arow Vector1,Vector2; static dd_colrange last_d=0; if (last_d < cone->d){ if (last_d>0) { for (j=0; jd,sizeof(mytype)); Vector2=(mytype*)calloc(cone->d,sizeof(mytype)); for (j=0; jd; j++){ dd_init(Vector1[j]); dd_init(Vector2[j]); } last_d=cone->d; } cone->RecomputeRowOrder=dd_FALSE; cone->ArtificialRay = NULL; cone->FirstRay = NULL; cone->LastRay = NULL; set_initialize(&ZSet,cone->m); dd_AddArtificialRay(cone); set_copy(cone->AddedHalfspaces, cone->InitialHalfspaces); set_copy(cone->WeaklyAddedHalfspaces, cone->InitialHalfspaces); dd_UpdateRowOrderVector(cone, cone->InitialHalfspaces); for (r = 1; r <= cone->d; r++) { for (j = 0; j < cone->d; j++){ dd_set(Vector1[j], cone->B[j][r-1]); dd_neg(Vector2[j], cone->B[j][r-1]); } dd_Normalize(cone->d, Vector1); dd_Normalize(cone->d, Vector2); dd_ZeroIndexSet(cone->m, cone->d, cone->A, Vector1, ZSet); if (set_subset(cone->EqualitySet, ZSet)){ if (dd_debug) { fprintf(stderr,"add an initial ray with zero set:"); set_fwrite(stderr,ZSet); } dd_AddRay(cone, Vector1); if (cone->InitialRayIndex[r]==0) { dd_AddRay(cone, Vector2); if (dd_debug) { fprintf(stderr,"and add its negative also.\n"); } } } } dd_CreateInitialEdges(cone); cone->Iteration = cone->d + 1; if (cone->Iteration > cone->m) cone->CompStatus=dd_AllFound; /* 0.94b */ set_free(ZSet); } dd_boolean dd_CheckEmptiness(dd_PolyhedraPtr poly, dd_ErrorType *err) { dd_rowset R, S; dd_MatrixPtr M=NULL; dd_boolean answer=dd_FALSE; *err=dd_NoError; if (poly->representation==dd_Inequality){ M=dd_CopyInequalities(poly); set_initialize(&R, M->rowsize); set_initialize(&S, M->rowsize); if (!dd_ExistsRestrictedFace(M, R, S, err)){ poly->child->CompStatus=dd_AllFound; poly->IsEmpty=dd_TRUE; poly->n=0; answer=dd_TRUE; } set_free(R); set_free(S); dd_FreeMatrix(M); } else if (poly->representation==dd_Generator && poly->m<=0){ *err=dd_EmptyVrepresentation; poly->IsEmpty=dd_TRUE; poly->child->CompStatus=dd_AllFound; answer=dd_TRUE; poly->child->Error=*err; } return answer; } dd_boolean dd_DoubleDescription(dd_PolyhedraPtr poly, dd_ErrorType *err) { dd_ConePtr cone=NULL; dd_boolean found=dd_FALSE; *err=dd_NoError; if (poly!=NULL && (poly->child==NULL || poly->child->CompStatus!=dd_AllFound)){ cone=dd_ConeDataLoad(poly); /* create a cone associated with poly by homogenization */ time(&cone->starttime); dd_DDInit(cone); if (poly->representation==dd_Generator && poly->m<=0){ *err=dd_EmptyVrepresentation; cone->Error=*err; goto _L99; } /* Check emptiness of the polyhedron */ dd_CheckEmptiness(poly,err); if (cone->CompStatus!=dd_AllFound){ dd_FindInitialRays(cone, &found); if (found) { dd_InitialDataSetup(cone); if (cone->CompStatus==dd_AllFound) goto _L99; dd_DDMain(cone); if (cone->FeasibleRayCount!=cone->RayCount) *err=dd_NumericallyInconsistent; /* cddlib-093d */ } } time(&cone->endtime); } _L99: ; return found; } dd_boolean dd_DoubleDescription2(dd_PolyhedraPtr poly, dd_RowOrderType horder, dd_ErrorType *err) { dd_ConePtr cone=NULL; dd_boolean found=dd_FALSE; *err=dd_NoError; if (poly!=NULL && (poly->child==NULL || poly->child->CompStatus!=dd_AllFound)){ cone=dd_ConeDataLoad(poly); /* create a cone associated with poly by homogenization */ cone->HalfspaceOrder=horder; /* set the row order */ time(&cone->starttime); dd_DDInit(cone); if (poly->representation==dd_Generator && poly->m<=0){ *err=dd_EmptyVrepresentation; cone->Error=*err; goto _L99; } /* Check emptiness of the polyhedron */ dd_CheckEmptiness(poly,err); if (cone->CompStatus!=dd_AllFound){ dd_FindInitialRays(cone, &found); if (found) { dd_InitialDataSetup(cone); if (cone->CompStatus==dd_AllFound) goto _L99; dd_DDMain(cone); if (cone->FeasibleRayCount!=cone->RayCount) *err=dd_NumericallyInconsistent; /* cddlib-093d */ } } time(&cone->endtime); } _L99: ; return found; } dd_boolean dd_DDInputAppend(dd_PolyhedraPtr *poly, dd_MatrixPtr M, dd_ErrorType *err) { /* This is imcomplete. It simply solves the problem from scratch. */ dd_boolean found; dd_ErrorType error; if ((*poly)->child!=NULL) dd_FreeDDMemory(*poly); dd_AppendMatrix2Poly(poly, M); (*poly)->representation=dd_Inequality; found=dd_DoubleDescription(*poly, &error); *err=error; return found; } dd_boolean dd_DDFile2File(char *ifile, char *ofile, dd_ErrorType *err) { /* The representation conversion from an input file to an outfile. */ /* modified by D. Avis to allow stdin/stdout */ dd_boolean found=dd_TRUE; FILE *reading=NULL,*writing=NULL; dd_PolyhedraPtr poly; dd_MatrixPtr M, A, G; if (strcmp(ifile,"**stdin") == 0 ) reading = stdin; else if ( ( reading = fopen(ifile, "r") )!= NULL) { fprintf(stderr,"input file %s is open\n", ifile); } else{ fprintf(stderr,"The input file %s not found\n",ifile); found=dd_FALSE; *err=dd_IFileNotFound; goto _L99; } if (found){ if (strcmp(ofile,"**stdout") == 0 ) writing = stdout; else if ( (writing = fopen(ofile, "w") ) != NULL){ fprintf(stderr,"output file %s is open\n",ofile); found=dd_TRUE; } else { fprintf(stderr,"The output file %s cannot be opened\n",ofile); found=dd_FALSE; *err=dd_OFileNotOpen; goto _L99; } } M=dd_PolyFile2Matrix(reading, err); if (*err!=dd_NoError){ goto _L99; } poly=dd_DDMatrix2Poly(M, err); /* compute the second representation */ dd_FreeMatrix(M); if (*err==dd_NoError) { dd_WriteRunningMode(writing, poly); A=dd_CopyInequalities(poly); G=dd_CopyGenerators(poly); if (poly->representation==dd_Inequality) { dd_WriteMatrix(writing,G); } else { dd_WriteMatrix(writing,A); } dd_FreePolyhedra(poly); dd_FreeMatrix(A); dd_FreeMatrix(G); } _L99: ; if (*err!=dd_NoError) dd_WriteErrorMessages(stderr,*err); if (reading!=NULL) fclose(reading); if (writing!=NULL) fclose(writing); return found; } /* end of cddlib.c */ cddlib-0.94j/lib-src/cddproj.c0000644000175000017500000001465113270066522013120 00000000000000/* cddproj.c: Polyhedral Projections in cddlib written by Komei Fukuda, fukuda@cs.mcgill.ca Version 0.94i, March 9, 2018 */ /* cddlib : C-library of the double description method for computing all vertices and extreme rays of the polyhedron P= {x : b - A x >= 0}. Please read COPYING (GNU General Public Licence) and the manual cddlibman.tex for detail. */ #include "setoper.h" /* set operation library header (Ver. June 1, 2000 or later) */ #include "cdd.h" #include #include #include #include #include dd_MatrixPtr dd_BlockElimination(dd_MatrixPtr M, dd_colset delset, dd_ErrorType *error) /* Eliminate the variables (columns) delset by the Block Elimination with dd_DoubleDescription algorithm. Given (where y is to be eliminated): c1 + A1 x + B1 y >= 0 c2 + A2 x + B2 y = 0 1. First construct the dual system: z1^T B1 + z2^T B2 = 0, z1 >= 0. 2. Compute the generators of the dual. 3. Then take the linear combination of the original system with each generator. 4. Remove redundant inequalies. */ { dd_MatrixPtr Mdual=NULL, Mproj=NULL, Gdual=NULL; dd_rowrange i,h,m,mproj,mdual,linsize; dd_colrange j,k,d,dproj,ddual,delsize; dd_colindex delindex; mytype temp,prod; dd_PolyhedraPtr dualpoly; dd_ErrorType err=dd_NoError; dd_boolean localdebug=dd_FALSE; *error=dd_NoError; m= M->rowsize; d= M->colsize; delindex=(long*)calloc(d+1,sizeof(long)); dd_init(temp); dd_init(prod); k=0; delsize=0; for (j=1; j<=d; j++){ if (set_member(j, delset)){ k++; delsize++; delindex[k]=j; /* stores the kth deletion column index */ } } if (localdebug) dd_WriteMatrix(stdout, M); linsize=set_card(M->linset); ddual=m+1; mdual=delsize + m - linsize; /* #equalitions + dimension of z1 */ /* setup the dual matrix */ Mdual=dd_CreateMatrix(mdual, ddual); Mdual->representation=dd_Inequality; for (i = 1; i <= delsize; i++){ set_addelem(Mdual->linset,i); /* equality */ for (j = 1; j <= m; j++) { dd_set(Mdual->matrix[i-1][j], M->matrix[j-1][delindex[i]-1]); } } k=0; for (i = 1; i <= m; i++){ if (!set_member(i, M->linset)){ /* set nonnegativity for the dual variable associated with each non-linearity inequality. */ k++; dd_set(Mdual->matrix[delsize+k-1][i], dd_one); } } /* 2. Compute the generators of the dual system. */ dualpoly=dd_DDMatrix2Poly(Mdual, &err); Gdual=dd_CopyGenerators(dualpoly); /* 3. Take the linear combination of the original system with each generator. */ dproj=d-delsize; mproj=Gdual->rowsize; Mproj=dd_CreateMatrix(mproj, dproj); Mproj->representation=dd_Inequality; set_copy(Mproj->linset, Gdual->linset); for (i=1; i<=mproj; i++){ k=0; for (j=1; j<=d; j++){ if (!set_member(j, delset)){ k++; /* new index of the variable x_j */ dd_set(prod, dd_purezero); for (h = 1; h <= m; h++){ dd_mul(temp,M->matrix[h-1][j-1],Gdual->matrix[i-1][h]); dd_add(prod,prod,temp); } dd_set(Mproj->matrix[i-1][k-1],prod); } } } if (localdebug) printf("Size of the projection system: %ld x %ld\n", mproj, dproj); dd_FreePolyhedra(dualpoly); free(delindex); dd_clear(temp); dd_clear(prod); dd_FreeMatrix(Mdual); dd_FreeMatrix(Gdual); return Mproj; } dd_MatrixPtr dd_FourierElimination(dd_MatrixPtr M,dd_ErrorType *error) /* Eliminate the last variable (column) from the given H-matrix using the standard Fourier Elimination. */ { dd_MatrixPtr Mnew=NULL; dd_rowrange i,inew,ip,in,iz,m,mpos=0,mneg=0,mzero=0,mnew; dd_colrange j,d,dnew; dd_rowindex posrowindex, negrowindex,zerorowindex; mytype temp1,temp2; dd_boolean localdebug=dd_FALSE; *error=dd_NoError; m= M->rowsize; d= M->colsize; if (d<=1){ *error=dd_ColIndexOutOfRange; if (localdebug) { printf("The number of column is too small: %ld for Fourier's Elimination.\n",d); } goto _L99; } if (M->representation==dd_Generator){ *error=dd_NotAvailForV; if (localdebug) { printf("Fourier's Elimination cannot be applied to a V-polyhedron.\n"); } goto _L99; } if (set_card(M->linset)>0){ *error=dd_CannotHandleLinearity; if (localdebug) { printf("The Fourier Elimination function does not handle equality in this version.\n"); } goto _L99; } /* Create temporary spaces to be removed at the end of this function */ posrowindex=(long*)calloc(m+1,sizeof(long)); negrowindex=(long*)calloc(m+1,sizeof(long)); zerorowindex=(long*)calloc(m+1,sizeof(long)); dd_init(temp1); dd_init(temp2); for (i = 1; i <= m; i++) { if (dd_Positive(M->matrix[i-1][d-1])){ mpos++; posrowindex[mpos]=i; } else if (dd_Negative(M->matrix[i-1][d-1])) { mneg++; negrowindex[mneg]=i; } else { mzero++; zerorowindex[mzero]=i; } } /*of i*/ if (localdebug) { dd_WriteMatrix(stdout, M); printf("No of (+ - 0) rows = (%ld, %ld, %ld)\n", mpos,mneg, mzero); } /* The present code generates so many redundant inequalities and thus is quite useless, except for very small examples */ mnew=mzero+mpos*mneg; /* the total number of rows after elimination */ dnew=d-1; Mnew=dd_CreateMatrix(mnew, dnew); dd_CopyArow(Mnew->rowvec, M->rowvec, dnew); /* set_copy(Mnew->linset,M->linset); */ Mnew->numbtype=M->numbtype; Mnew->representation=M->representation; Mnew->objective=M->objective; /* Copy the inequalities independent of x_d to the top of the new matrix. */ for (iz = 1; iz <= mzero; iz++){ for (j = 1; j <= dnew; j++) { dd_set(Mnew->matrix[iz-1][j-1], M->matrix[zerorowindex[iz]-1][j-1]); } } /* Create the new inequalities by combining x_d positive and negative ones. */ inew=mzero; /* the index of the last x_d zero inequality */ for (ip = 1; ip <= mpos; ip++){ for (in = 1; in <= mneg; in++){ inew++; dd_neg(temp1, M->matrix[negrowindex[in]-1][d-1]); for (j = 1; j <= dnew; j++) { dd_LinearComb(temp2,M->matrix[posrowindex[ip]-1][j-1],temp1,\ M->matrix[negrowindex[in]-1][j-1],\ M->matrix[posrowindex[ip]-1][d-1]); dd_set(Mnew->matrix[inew-1][j-1],temp2); } dd_Normalize(dnew,Mnew->matrix[inew-1]); } } free(posrowindex); free(negrowindex); free(zerorowindex); dd_clear(temp1); dd_clear(temp2); _L99: return Mnew; } /* end of cddproj.c */ cddlib-0.94j/lib-src/setoper.c0000644000175000017500000001466313270061057013155 00000000000000/* setoper.c: * A set operation library * created by Komei Fukuda, Nov.14, 1993 * modified on December 5, 1994 (set_card function replaced with a better code by David Bremner) * last modified on June 1, 2000 (set_fwrite_compl(), set_groundsize added. set_compl fixed.) */ #include "setoper.h" #include #define SETBITS (sizeof(long) * CHAR_BIT) /* (Number of chars in a long) * (number of bits in a char) */ /* Definitions for optimized set_card function by David Bremner bremner@cs.mcgill.ca */ /* Caution!!! Bremner's technique depends on the assumption that CHAR_BIT == 8. */ #define LUTBLOCKS(set) (((set[0]-1)/SETBITS+1)*(sizeof(long)/sizeof(set_card_lut_t))) static unsigned char set_card_lut[]={ 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5, 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6, 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6, 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7, 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6, 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7, 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7, 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8}; /* End of Definitions for optimized set_card */ unsigned long set_blocks(long len) { long blocks=1L; if (len>0) blocks=((long)len-1)/SETBITS+2; return blocks; } void set_initialize(set_type *setp, long length) /* Make a set with a given bit lengths */ { long i,forlim1,len; if (length<=0) len=1;else len=length; /* if negative length is requested, it generates the shortest length */ forlim1=set_blocks(len); *setp=(unsigned long *) calloc(forlim1, sizeof i); (*setp)[0]=(unsigned long) len; /* size of the ground set */ for (i=1; i=1;i--) { e1=e2=set[i]; for (j=SETBITS-1;j>=0;j--) { e1=(e1>>j); printf("%1ld",e1); e1=e2-(e1<=1;i--) { e1=e2=set[i]; for (j=SETBITS-1;j>=0;j--) { e1=(e1>>j); fprintf(f,"%1ld",e1); e1=e2-(e1<&2; \ exit 1;; \ esac; \ has_opt=no; \ sane_makeflags=$$MAKEFLAGS; \ if $(am__is_gnu_make); then \ sane_makeflags=$$MFLAGS; \ else \ case $$MAKEFLAGS in \ *\\[\ \ ]*) \ bs=\\; \ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ esac; \ fi; \ skip_next=no; \ strip_trailopt () \ { \ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ }; \ for flg in $$sane_makeflags; do \ test $$skip_next = yes && { skip_next=no; continue; }; \ case $$flg in \ *=*|--*) continue;; \ -*I) strip_trailopt 'I'; skip_next=yes;; \ -*I?*) strip_trailopt 'I';; \ -*O) strip_trailopt 'O'; skip_next=yes;; \ -*O?*) strip_trailopt 'O';; \ -*l) strip_trailopt 'l'; skip_next=yes;; \ -*l?*) strip_trailopt 'l';; \ -[dEDm]) skip_next=yes;; \ -[JT]) skip_next=yes;; \ esac; \ case $$flg in \ *$$target_option*) has_opt=yes; break;; \ esac; \ done; \ test $$has_opt = yes am__make_dryrun = (target_option=n; $(am__make_running_with_option)) am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkglibexecdir = $(libexecdir)/@PACKAGE@ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd install_sh_DATA = $(install_sh) -c -m 644 install_sh_PROGRAM = $(install_sh) -c install_sh_SCRIPT = $(install_sh) -c INSTALL_HEADER = $(INSTALL_DATA) transform = $(program_transform_name) NORMAL_INSTALL = : PRE_INSTALL = : POST_INSTALL = : NORMAL_UNINSTALL = : PRE_UNINSTALL = : POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ bin_PROGRAMS = scdd$(EXEEXT) lcdd$(EXEEXT) redcheck$(EXEEXT) \ fourier$(EXEEXT) projection$(EXEEXT) adjacency$(EXEEXT) \ allfaces$(EXEEXT) testcdd1$(EXEEXT) testshoot$(EXEEXT) \ testcdd2$(EXEEXT) testlp1$(EXEEXT) testlp2$(EXEEXT) \ testlp3$(EXEEXT) cddexec$(EXEEXT) $(am__EXEEXT_1) noinst_PROGRAMS = redexter$(EXEEXT) redundancies$(EXEEXT) \ redundancies_clarkson$(EXEEXT) $(am__EXEEXT_2) @GMP_TRUE@am__append_1 = scdd_gmp lcdd_gmp fourier_gmp redcheck_gmp \ @GMP_TRUE@ projection_gmp adjacency_gmp allfaces_gmp \ @GMP_TRUE@ testshoot_gmp testcdd1_gmp testcdd2_gmp testlp1_gmp \ @GMP_TRUE@ testlp2_gmp testlp3_gmp cddexec_gmp @GMP_TRUE@am__append_2 = redundancies_gmp redundancies_clarkson_gmp \ @GMP_TRUE@ redexter_gmp subdir = src ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) mkinstalldirs = $(install_sh) -d CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = @GMP_TRUE@am__EXEEXT_1 = scdd_gmp$(EXEEXT) lcdd_gmp$(EXEEXT) \ @GMP_TRUE@ fourier_gmp$(EXEEXT) redcheck_gmp$(EXEEXT) \ @GMP_TRUE@ projection_gmp$(EXEEXT) adjacency_gmp$(EXEEXT) \ @GMP_TRUE@ allfaces_gmp$(EXEEXT) testshoot_gmp$(EXEEXT) \ @GMP_TRUE@ testcdd1_gmp$(EXEEXT) testcdd2_gmp$(EXEEXT) \ @GMP_TRUE@ testlp1_gmp$(EXEEXT) testlp2_gmp$(EXEEXT) \ @GMP_TRUE@ testlp3_gmp$(EXEEXT) cddexec_gmp$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" @GMP_TRUE@am__EXEEXT_2 = redundancies_gmp$(EXEEXT) \ @GMP_TRUE@ redundancies_clarkson_gmp$(EXEEXT) \ @GMP_TRUE@ redexter_gmp$(EXEEXT) PROGRAMS = $(bin_PROGRAMS) $(noinst_PROGRAMS) adjacency_SOURCES = adjacency.c adjacency_OBJECTS = adjacency.$(OBJEXT) adjacency_LDADD = $(LDADD) adjacency_DEPENDENCIES = ../lib-src/libcdd.la AM_V_lt = $(am__v_lt_@AM_V@) am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent am__v_lt_1 = am__adjacency_gmp_SOURCES_DIST = adjacency.c @GMP_TRUE@am_adjacency_gmp_OBJECTS = \ @GMP_TRUE@ adjacency_gmp-adjacency.$(OBJEXT) adjacency_gmp_OBJECTS = $(am_adjacency_gmp_OBJECTS) @GMP_TRUE@am__DEPENDENCIES_1 = ../lib-src/libcddgmp.la @GMP_TRUE@adjacency_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) allfaces_SOURCES = allfaces.c allfaces_OBJECTS = allfaces.$(OBJEXT) allfaces_LDADD = $(LDADD) allfaces_DEPENDENCIES = ../lib-src/libcdd.la am__allfaces_gmp_SOURCES_DIST = allfaces.c @GMP_TRUE@am_allfaces_gmp_OBJECTS = allfaces_gmp-allfaces.$(OBJEXT) allfaces_gmp_OBJECTS = $(am_allfaces_gmp_OBJECTS) @GMP_TRUE@allfaces_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) cddexec_SOURCES = cddexec.c cddexec_OBJECTS = cddexec.$(OBJEXT) cddexec_LDADD = $(LDADD) cddexec_DEPENDENCIES = ../lib-src/libcdd.la am__cddexec_gmp_SOURCES_DIST = cddexec.c @GMP_TRUE@am_cddexec_gmp_OBJECTS = cddexec_gmp-cddexec.$(OBJEXT) cddexec_gmp_OBJECTS = $(am_cddexec_gmp_OBJECTS) @GMP_TRUE@cddexec_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) fourier_SOURCES = fourier.c fourier_OBJECTS = fourier.$(OBJEXT) fourier_LDADD = $(LDADD) fourier_DEPENDENCIES = ../lib-src/libcdd.la am__fourier_gmp_SOURCES_DIST = fourier.c @GMP_TRUE@am_fourier_gmp_OBJECTS = fourier_gmp-fourier.$(OBJEXT) fourier_gmp_OBJECTS = $(am_fourier_gmp_OBJECTS) @GMP_TRUE@fourier_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) lcdd_SOURCES = lcdd.c lcdd_OBJECTS = lcdd.$(OBJEXT) lcdd_LDADD = $(LDADD) lcdd_DEPENDENCIES = ../lib-src/libcdd.la am__lcdd_gmp_SOURCES_DIST = lcdd.c @GMP_TRUE@am_lcdd_gmp_OBJECTS = lcdd_gmp-lcdd.$(OBJEXT) lcdd_gmp_OBJECTS = $(am_lcdd_gmp_OBJECTS) @GMP_TRUE@lcdd_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) projection_SOURCES = projection.c projection_OBJECTS = projection.$(OBJEXT) projection_LDADD = $(LDADD) projection_DEPENDENCIES = ../lib-src/libcdd.la am__projection_gmp_SOURCES_DIST = projection.c @GMP_TRUE@am_projection_gmp_OBJECTS = \ @GMP_TRUE@ projection_gmp-projection.$(OBJEXT) projection_gmp_OBJECTS = $(am_projection_gmp_OBJECTS) @GMP_TRUE@projection_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) redcheck_SOURCES = redcheck.c redcheck_OBJECTS = redcheck.$(OBJEXT) redcheck_LDADD = $(LDADD) redcheck_DEPENDENCIES = ../lib-src/libcdd.la am__redcheck_gmp_SOURCES_DIST = redcheck.c @GMP_TRUE@am_redcheck_gmp_OBJECTS = redcheck_gmp-redcheck.$(OBJEXT) redcheck_gmp_OBJECTS = $(am_redcheck_gmp_OBJECTS) @GMP_TRUE@redcheck_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) redexter_SOURCES = redexter.c redexter_OBJECTS = redexter.$(OBJEXT) redexter_LDADD = $(LDADD) redexter_DEPENDENCIES = ../lib-src/libcdd.la am__redexter_gmp_SOURCES_DIST = redexter.c @GMP_TRUE@am_redexter_gmp_OBJECTS = redexter_gmp-redexter.$(OBJEXT) redexter_gmp_OBJECTS = $(am_redexter_gmp_OBJECTS) @GMP_TRUE@redexter_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) redundancies_SOURCES = redundancies.c redundancies_OBJECTS = redundancies.$(OBJEXT) redundancies_LDADD = $(LDADD) redundancies_DEPENDENCIES = ../lib-src/libcdd.la redundancies_clarkson_SOURCES = redundancies_clarkson.c redundancies_clarkson_OBJECTS = redundancies_clarkson.$(OBJEXT) redundancies_clarkson_LDADD = $(LDADD) redundancies_clarkson_DEPENDENCIES = ../lib-src/libcdd.la am__redundancies_clarkson_gmp_SOURCES_DIST = redundancies_clarkson.c @GMP_TRUE@am_redundancies_clarkson_gmp_OBJECTS = redundancies_clarkson_gmp-redundancies_clarkson.$(OBJEXT) redundancies_clarkson_gmp_OBJECTS = \ $(am_redundancies_clarkson_gmp_OBJECTS) @GMP_TRUE@redundancies_clarkson_gmp_DEPENDENCIES = \ @GMP_TRUE@ $(am__DEPENDENCIES_1) am__redundancies_gmp_SOURCES_DIST = redundancies.c @GMP_TRUE@am_redundancies_gmp_OBJECTS = \ @GMP_TRUE@ redundancies_gmp-redundancies.$(OBJEXT) redundancies_gmp_OBJECTS = $(am_redundancies_gmp_OBJECTS) @GMP_TRUE@redundancies_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) scdd_SOURCES = scdd.c scdd_OBJECTS = scdd.$(OBJEXT) scdd_LDADD = $(LDADD) scdd_DEPENDENCIES = ../lib-src/libcdd.la am__scdd_gmp_SOURCES_DIST = scdd.c @GMP_TRUE@am_scdd_gmp_OBJECTS = scdd_gmp-scdd.$(OBJEXT) scdd_gmp_OBJECTS = $(am_scdd_gmp_OBJECTS) @GMP_TRUE@scdd_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) testcdd1_SOURCES = testcdd1.c testcdd1_OBJECTS = testcdd1.$(OBJEXT) testcdd1_LDADD = $(LDADD) testcdd1_DEPENDENCIES = ../lib-src/libcdd.la am__testcdd1_gmp_SOURCES_DIST = testcdd1.c @GMP_TRUE@am_testcdd1_gmp_OBJECTS = testcdd1_gmp-testcdd1.$(OBJEXT) testcdd1_gmp_OBJECTS = $(am_testcdd1_gmp_OBJECTS) @GMP_TRUE@testcdd1_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) testcdd2_SOURCES = testcdd2.c testcdd2_OBJECTS = testcdd2.$(OBJEXT) testcdd2_LDADD = $(LDADD) testcdd2_DEPENDENCIES = ../lib-src/libcdd.la am__testcdd2_gmp_SOURCES_DIST = testcdd2.c @GMP_TRUE@am_testcdd2_gmp_OBJECTS = testcdd2_gmp-testcdd2.$(OBJEXT) testcdd2_gmp_OBJECTS = $(am_testcdd2_gmp_OBJECTS) @GMP_TRUE@testcdd2_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) testlp1_SOURCES = testlp1.c testlp1_OBJECTS = testlp1.$(OBJEXT) testlp1_LDADD = $(LDADD) testlp1_DEPENDENCIES = ../lib-src/libcdd.la am__testlp1_gmp_SOURCES_DIST = testlp1.c @GMP_TRUE@am_testlp1_gmp_OBJECTS = testlp1_gmp-testlp1.$(OBJEXT) testlp1_gmp_OBJECTS = $(am_testlp1_gmp_OBJECTS) @GMP_TRUE@testlp1_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) testlp2_SOURCES = testlp2.c testlp2_OBJECTS = testlp2.$(OBJEXT) testlp2_LDADD = $(LDADD) testlp2_DEPENDENCIES = ../lib-src/libcdd.la am__testlp2_gmp_SOURCES_DIST = testlp2.c @GMP_TRUE@am_testlp2_gmp_OBJECTS = testlp2_gmp-testlp2.$(OBJEXT) testlp2_gmp_OBJECTS = $(am_testlp2_gmp_OBJECTS) @GMP_TRUE@testlp2_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) testlp3_SOURCES = testlp3.c testlp3_OBJECTS = testlp3.$(OBJEXT) testlp3_LDADD = $(LDADD) testlp3_DEPENDENCIES = ../lib-src/libcdd.la am__testlp3_gmp_SOURCES_DIST = testlp3.c @GMP_TRUE@am_testlp3_gmp_OBJECTS = testlp3_gmp-testlp3.$(OBJEXT) testlp3_gmp_OBJECTS = $(am_testlp3_gmp_OBJECTS) @GMP_TRUE@testlp3_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) testshoot_SOURCES = testshoot.c testshoot_OBJECTS = testshoot.$(OBJEXT) testshoot_LDADD = $(LDADD) testshoot_DEPENDENCIES = ../lib-src/libcdd.la am__testshoot_gmp_SOURCES_DIST = testshoot.c @GMP_TRUE@am_testshoot_gmp_OBJECTS = \ @GMP_TRUE@ testshoot_gmp-testshoot.$(OBJEXT) testshoot_gmp_OBJECTS = $(am_testshoot_gmp_OBJECTS) @GMP_TRUE@testshoot_gmp_DEPENDENCIES = $(am__DEPENDENCIES_1) AM_V_P = $(am__v_P_@AM_V@) am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) am__v_P_0 = false am__v_P_1 = : AM_V_GEN = $(am__v_GEN_@AM_V@) am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) am__v_GEN_0 = @echo " GEN " $@; am__v_GEN_1 = AM_V_at = $(am__v_at_@AM_V@) am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles am__mv = mv -f COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ $(AM_CFLAGS) $(CFLAGS) AM_V_CC = $(am__v_CC_@AM_V@) am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) am__v_CC_0 = @echo " CC " $@; am__v_CC_1 = CCLD = $(CC) LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ $(AM_LDFLAGS) $(LDFLAGS) -o $@ AM_V_CCLD = $(am__v_CCLD_@AM_V@) am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) am__v_CCLD_0 = @echo " CCLD " $@; am__v_CCLD_1 = SOURCES = adjacency.c $(adjacency_gmp_SOURCES) allfaces.c \ $(allfaces_gmp_SOURCES) cddexec.c $(cddexec_gmp_SOURCES) \ fourier.c $(fourier_gmp_SOURCES) lcdd.c $(lcdd_gmp_SOURCES) \ projection.c $(projection_gmp_SOURCES) redcheck.c \ $(redcheck_gmp_SOURCES) redexter.c $(redexter_gmp_SOURCES) \ redundancies.c redundancies_clarkson.c \ $(redundancies_clarkson_gmp_SOURCES) \ $(redundancies_gmp_SOURCES) scdd.c $(scdd_gmp_SOURCES) \ testcdd1.c $(testcdd1_gmp_SOURCES) testcdd2.c \ $(testcdd2_gmp_SOURCES) testlp1.c $(testlp1_gmp_SOURCES) \ testlp2.c $(testlp2_gmp_SOURCES) testlp3.c \ $(testlp3_gmp_SOURCES) testshoot.c $(testshoot_gmp_SOURCES) DIST_SOURCES = adjacency.c $(am__adjacency_gmp_SOURCES_DIST) \ allfaces.c $(am__allfaces_gmp_SOURCES_DIST) cddexec.c \ $(am__cddexec_gmp_SOURCES_DIST) fourier.c \ $(am__fourier_gmp_SOURCES_DIST) lcdd.c \ $(am__lcdd_gmp_SOURCES_DIST) projection.c \ $(am__projection_gmp_SOURCES_DIST) redcheck.c \ $(am__redcheck_gmp_SOURCES_DIST) redexter.c \ $(am__redexter_gmp_SOURCES_DIST) redundancies.c \ redundancies_clarkson.c \ $(am__redundancies_clarkson_gmp_SOURCES_DIST) \ $(am__redundancies_gmp_SOURCES_DIST) scdd.c \ $(am__scdd_gmp_SOURCES_DIST) testcdd1.c \ $(am__testcdd1_gmp_SOURCES_DIST) testcdd2.c \ $(am__testcdd2_gmp_SOURCES_DIST) testlp1.c \ $(am__testlp1_gmp_SOURCES_DIST) testlp2.c \ $(am__testlp2_gmp_SOURCES_DIST) testlp3.c \ $(am__testlp3_gmp_SOURCES_DIST) testshoot.c \ $(am__testshoot_gmp_SOURCES_DIST) am__can_run_installinfo = \ case $$AM_UPDATE_INFO_DIR in \ n|no|NO) false;; \ *) (install-info --version) >/dev/null 2>&1;; \ esac am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) # Read a list of newline-separated strings from the standard input, # and print each of them once, without duplicates. Input order is # *not* preserved. am__uniquify_input = $(AWK) '\ BEGIN { nonempty = 0; } \ { items[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in items) print i; }; } \ ' # Make sure the list of sources is unique. This is necessary because, # e.g., the same source file might be shared among _SOURCES variables # for different programs/libraries. am__define_uniq_tagged_files = \ list='$(am__tagged_files)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags am__DIST_COMMON = $(srcdir)/./Makefile.gmp.am $(srcdir)/Makefile.in \ $(top_srcdir)/depcomp DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ AR = @AR@ AS = @AS@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CDD_LDFLAGS = @CDD_LDFLAGS@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ DLLTOOL = @DLLTOOL@ DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ ECHO_T = @ECHO_T@ EGREP = @EGREP@ EXEEXT = @EXEEXT@ FGREP = @FGREP@ GREP = @GREP@ INSTALL = @INSTALL@ INSTALL_DATA = @INSTALL_DATA@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ LD = @LD@ LDFLAGS = @LDFLAGS@ LIBOBJS = @LIBOBJS@ LIBS = @LIBS@ LIBTOOL = @LIBTOOL@ LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ LT_SYS_LIBRARY_PATH = @LT_SYS_LIBRARY_PATH@ MAKEINFO = @MAKEINFO@ MANIFEST_TOOL = @MANIFEST_TOOL@ MKDIR_P = @MKDIR_P@ NM = @NM@ NMEDIT = @NMEDIT@ OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ OTOOL = @OTOOL@ OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ PACKAGE_STRING = @PACKAGE_STRING@ PACKAGE_TARNAME = @PACKAGE_TARNAME@ PACKAGE_URL = @PACKAGE_URL@ PACKAGE_VERSION = @PACKAGE_VERSION@ PATH_SEPARATOR = @PATH_SEPARATOR@ RANLIB = @RANLIB@ SED = @SED@ SET_MAKE = @SET_MAKE@ SHELL = @SHELL@ STRIP = @STRIP@ VERSION = @VERSION@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ abs_top_srcdir = @abs_top_srcdir@ ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ am__include = @am__include@ am__leading_dot = @am__leading_dot@ am__quote = @am__quote@ am__tar = @am__tar@ am__untar = @am__untar@ bindir = @bindir@ build = @build@ build_alias = @build_alias@ build_cpu = @build_cpu@ build_os = @build_os@ build_vendor = @build_vendor@ builddir = @builddir@ datadir = @datadir@ datarootdir = @datarootdir@ docdir = @docdir@ dvidir = @dvidir@ dvips = @dvips@ exec_prefix = @exec_prefix@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ host_os = @host_os@ host_vendor = @host_vendor@ htmldir = @htmldir@ includedir = @includedir@ infodir = @infodir@ install_sh = @install_sh@ latex = @latex@ latex2html = @latex2html@ libcdd_version_info = @libcdd_version_info@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ pdflatex = @pdflatex@ prefix = @prefix@ program_transform_name = @program_transform_name@ psdir = @psdir@ sbindir = @sbindir@ sharedstatedir = @sharedstatedir@ srcdir = @srcdir@ sysconfdir = @sysconfdir@ target_alias = @target_alias@ top_build_prefix = @top_build_prefix@ top_builddir = @top_builddir@ top_srcdir = @top_srcdir@ LDADD = ../lib-src/libcdd.la AM_CPPFLAGS = -I$(top_srcdir)/lib-src @GMP_TRUE@gmp_ldflags = ../lib-src/libcddgmp.la -lgmp @GMP_TRUE@gmp_cppflags = $(AM_CPPFLAGS) -DGMPRATIONAL @GMP_TRUE@scdd_gmp_SOURCES = scdd.c @GMP_TRUE@scdd_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@scdd_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@lcdd_gmp_SOURCES = lcdd.c @GMP_TRUE@lcdd_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@lcdd_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@fourier_gmp_SOURCES = fourier.c @GMP_TRUE@fourier_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@fourier_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@redcheck_gmp_SOURCES = redcheck.c @GMP_TRUE@redcheck_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@redcheck_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@projection_gmp_SOURCES = projection.c @GMP_TRUE@projection_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@projection_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@adjacency_gmp_SOURCES = adjacency.c @GMP_TRUE@adjacency_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@adjacency_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@allfaces_gmp_SOURCES = allfaces.c @GMP_TRUE@allfaces_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@allfaces_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@testshoot_gmp_SOURCES = testshoot.c @GMP_TRUE@testshoot_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@testshoot_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@testcdd1_gmp_SOURCES = testcdd1.c @GMP_TRUE@testcdd1_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@testcdd1_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@testcdd2_gmp_SOURCES = testcdd2.c @GMP_TRUE@testcdd2_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@testcdd2_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@testlp1_gmp_SOURCES = testlp1.c @GMP_TRUE@testlp1_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@testlp1_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@testlp2_gmp_SOURCES = testlp2.c @GMP_TRUE@testlp2_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@testlp2_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@testlp3_gmp_SOURCES = testlp3.c @GMP_TRUE@testlp3_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@testlp3_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@cddexec_gmp_SOURCES = cddexec.c @GMP_TRUE@cddexec_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@cddexec_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@redundancies_gmp_SOURCES = redundancies.c @GMP_TRUE@redundancies_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@redundancies_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@redundancies_clarkson_gmp_SOURCES = redundancies_clarkson.c @GMP_TRUE@redundancies_clarkson_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@redundancies_clarkson_gmp_CPPFLAGS = $(gmp_cppflags) @GMP_TRUE@redexter_gmp_SOURCES = redexter.c @GMP_TRUE@redexter_gmp_LDADD = $(gmp_ldflags) @GMP_TRUE@redexter_gmp_CPPFLAGS = $(gmp_cppflags) all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/./Makefile.gmp.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ && { if test -f $@; then exit 0; else break; fi; }; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ $(am__cd) $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status @case '$?' in \ *config.status*) \ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ *) \ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ esac; $(srcdir)/./Makefile.gmp.am $(am__empty): $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(top_srcdir)/configure: $(am__configure_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh $(am__aclocal_m4_deps): install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ if test -n "$$list"; then \ echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ while read p p1; do if test -f $$p \ || test -f $$p1 \ ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ sed -e 'p;s,.*/,,;n;h' \ -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ if ($$2 == $$4) files[d] = files[d] " " $$1; \ else { print "f", $$3 "/" $$4, $$1; } } \ END { for (d in files) print "f", d, files[d] }' | \ while read type dir files; do \ if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ test -z "$$files" || { \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ } \ ; done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ -e 's/$$/$(EXEEXT)/' \ `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list clean-noinstPROGRAMS: @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ echo " rm -f" $$list; \ rm -f $$list || exit $$?; \ test -n "$(EXEEXT)" || exit 0; \ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ echo " rm -f" $$list; \ rm -f $$list adjacency$(EXEEXT): $(adjacency_OBJECTS) $(adjacency_DEPENDENCIES) $(EXTRA_adjacency_DEPENDENCIES) @rm -f adjacency$(EXEEXT) $(AM_V_CCLD)$(LINK) $(adjacency_OBJECTS) $(adjacency_LDADD) $(LIBS) adjacency_gmp$(EXEEXT): $(adjacency_gmp_OBJECTS) $(adjacency_gmp_DEPENDENCIES) $(EXTRA_adjacency_gmp_DEPENDENCIES) @rm -f adjacency_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(adjacency_gmp_OBJECTS) $(adjacency_gmp_LDADD) $(LIBS) allfaces$(EXEEXT): $(allfaces_OBJECTS) $(allfaces_DEPENDENCIES) $(EXTRA_allfaces_DEPENDENCIES) @rm -f allfaces$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allfaces_OBJECTS) $(allfaces_LDADD) $(LIBS) allfaces_gmp$(EXEEXT): $(allfaces_gmp_OBJECTS) $(allfaces_gmp_DEPENDENCIES) $(EXTRA_allfaces_gmp_DEPENDENCIES) @rm -f allfaces_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(allfaces_gmp_OBJECTS) $(allfaces_gmp_LDADD) $(LIBS) cddexec$(EXEEXT): $(cddexec_OBJECTS) $(cddexec_DEPENDENCIES) $(EXTRA_cddexec_DEPENDENCIES) @rm -f cddexec$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cddexec_OBJECTS) $(cddexec_LDADD) $(LIBS) cddexec_gmp$(EXEEXT): $(cddexec_gmp_OBJECTS) $(cddexec_gmp_DEPENDENCIES) $(EXTRA_cddexec_gmp_DEPENDENCIES) @rm -f cddexec_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(cddexec_gmp_OBJECTS) $(cddexec_gmp_LDADD) $(LIBS) fourier$(EXEEXT): $(fourier_OBJECTS) $(fourier_DEPENDENCIES) $(EXTRA_fourier_DEPENDENCIES) @rm -f fourier$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fourier_OBJECTS) $(fourier_LDADD) $(LIBS) fourier_gmp$(EXEEXT): $(fourier_gmp_OBJECTS) $(fourier_gmp_DEPENDENCIES) $(EXTRA_fourier_gmp_DEPENDENCIES) @rm -f fourier_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(fourier_gmp_OBJECTS) $(fourier_gmp_LDADD) $(LIBS) lcdd$(EXEEXT): $(lcdd_OBJECTS) $(lcdd_DEPENDENCIES) $(EXTRA_lcdd_DEPENDENCIES) @rm -f lcdd$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lcdd_OBJECTS) $(lcdd_LDADD) $(LIBS) lcdd_gmp$(EXEEXT): $(lcdd_gmp_OBJECTS) $(lcdd_gmp_DEPENDENCIES) $(EXTRA_lcdd_gmp_DEPENDENCIES) @rm -f lcdd_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(lcdd_gmp_OBJECTS) $(lcdd_gmp_LDADD) $(LIBS) projection$(EXEEXT): $(projection_OBJECTS) $(projection_DEPENDENCIES) $(EXTRA_projection_DEPENDENCIES) @rm -f projection$(EXEEXT) $(AM_V_CCLD)$(LINK) $(projection_OBJECTS) $(projection_LDADD) $(LIBS) projection_gmp$(EXEEXT): $(projection_gmp_OBJECTS) $(projection_gmp_DEPENDENCIES) $(EXTRA_projection_gmp_DEPENDENCIES) @rm -f projection_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(projection_gmp_OBJECTS) $(projection_gmp_LDADD) $(LIBS) redcheck$(EXEEXT): $(redcheck_OBJECTS) $(redcheck_DEPENDENCIES) $(EXTRA_redcheck_DEPENDENCIES) @rm -f redcheck$(EXEEXT) $(AM_V_CCLD)$(LINK) $(redcheck_OBJECTS) $(redcheck_LDADD) $(LIBS) redcheck_gmp$(EXEEXT): $(redcheck_gmp_OBJECTS) $(redcheck_gmp_DEPENDENCIES) $(EXTRA_redcheck_gmp_DEPENDENCIES) @rm -f redcheck_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(redcheck_gmp_OBJECTS) $(redcheck_gmp_LDADD) $(LIBS) redexter$(EXEEXT): $(redexter_OBJECTS) $(redexter_DEPENDENCIES) $(EXTRA_redexter_DEPENDENCIES) @rm -f redexter$(EXEEXT) $(AM_V_CCLD)$(LINK) $(redexter_OBJECTS) $(redexter_LDADD) $(LIBS) redexter_gmp$(EXEEXT): $(redexter_gmp_OBJECTS) $(redexter_gmp_DEPENDENCIES) $(EXTRA_redexter_gmp_DEPENDENCIES) @rm -f redexter_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(redexter_gmp_OBJECTS) $(redexter_gmp_LDADD) $(LIBS) redundancies$(EXEEXT): $(redundancies_OBJECTS) $(redundancies_DEPENDENCIES) $(EXTRA_redundancies_DEPENDENCIES) @rm -f redundancies$(EXEEXT) $(AM_V_CCLD)$(LINK) $(redundancies_OBJECTS) $(redundancies_LDADD) $(LIBS) redundancies_clarkson$(EXEEXT): $(redundancies_clarkson_OBJECTS) $(redundancies_clarkson_DEPENDENCIES) $(EXTRA_redundancies_clarkson_DEPENDENCIES) @rm -f redundancies_clarkson$(EXEEXT) $(AM_V_CCLD)$(LINK) $(redundancies_clarkson_OBJECTS) $(redundancies_clarkson_LDADD) $(LIBS) redundancies_clarkson_gmp$(EXEEXT): $(redundancies_clarkson_gmp_OBJECTS) $(redundancies_clarkson_gmp_DEPENDENCIES) $(EXTRA_redundancies_clarkson_gmp_DEPENDENCIES) @rm -f redundancies_clarkson_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(redundancies_clarkson_gmp_OBJECTS) $(redundancies_clarkson_gmp_LDADD) $(LIBS) redundancies_gmp$(EXEEXT): $(redundancies_gmp_OBJECTS) $(redundancies_gmp_DEPENDENCIES) $(EXTRA_redundancies_gmp_DEPENDENCIES) @rm -f redundancies_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(redundancies_gmp_OBJECTS) $(redundancies_gmp_LDADD) $(LIBS) scdd$(EXEEXT): $(scdd_OBJECTS) $(scdd_DEPENDENCIES) $(EXTRA_scdd_DEPENDENCIES) @rm -f scdd$(EXEEXT) $(AM_V_CCLD)$(LINK) $(scdd_OBJECTS) $(scdd_LDADD) $(LIBS) scdd_gmp$(EXEEXT): $(scdd_gmp_OBJECTS) $(scdd_gmp_DEPENDENCIES) $(EXTRA_scdd_gmp_DEPENDENCIES) @rm -f scdd_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(scdd_gmp_OBJECTS) $(scdd_gmp_LDADD) $(LIBS) testcdd1$(EXEEXT): $(testcdd1_OBJECTS) $(testcdd1_DEPENDENCIES) $(EXTRA_testcdd1_DEPENDENCIES) @rm -f testcdd1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testcdd1_OBJECTS) $(testcdd1_LDADD) $(LIBS) testcdd1_gmp$(EXEEXT): $(testcdd1_gmp_OBJECTS) $(testcdd1_gmp_DEPENDENCIES) $(EXTRA_testcdd1_gmp_DEPENDENCIES) @rm -f testcdd1_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testcdd1_gmp_OBJECTS) $(testcdd1_gmp_LDADD) $(LIBS) testcdd2$(EXEEXT): $(testcdd2_OBJECTS) $(testcdd2_DEPENDENCIES) $(EXTRA_testcdd2_DEPENDENCIES) @rm -f testcdd2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testcdd2_OBJECTS) $(testcdd2_LDADD) $(LIBS) testcdd2_gmp$(EXEEXT): $(testcdd2_gmp_OBJECTS) $(testcdd2_gmp_DEPENDENCIES) $(EXTRA_testcdd2_gmp_DEPENDENCIES) @rm -f testcdd2_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testcdd2_gmp_OBJECTS) $(testcdd2_gmp_LDADD) $(LIBS) testlp1$(EXEEXT): $(testlp1_OBJECTS) $(testlp1_DEPENDENCIES) $(EXTRA_testlp1_DEPENDENCIES) @rm -f testlp1$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testlp1_OBJECTS) $(testlp1_LDADD) $(LIBS) testlp1_gmp$(EXEEXT): $(testlp1_gmp_OBJECTS) $(testlp1_gmp_DEPENDENCIES) $(EXTRA_testlp1_gmp_DEPENDENCIES) @rm -f testlp1_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testlp1_gmp_OBJECTS) $(testlp1_gmp_LDADD) $(LIBS) testlp2$(EXEEXT): $(testlp2_OBJECTS) $(testlp2_DEPENDENCIES) $(EXTRA_testlp2_DEPENDENCIES) @rm -f testlp2$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testlp2_OBJECTS) $(testlp2_LDADD) $(LIBS) testlp2_gmp$(EXEEXT): $(testlp2_gmp_OBJECTS) $(testlp2_gmp_DEPENDENCIES) $(EXTRA_testlp2_gmp_DEPENDENCIES) @rm -f testlp2_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testlp2_gmp_OBJECTS) $(testlp2_gmp_LDADD) $(LIBS) testlp3$(EXEEXT): $(testlp3_OBJECTS) $(testlp3_DEPENDENCIES) $(EXTRA_testlp3_DEPENDENCIES) @rm -f testlp3$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testlp3_OBJECTS) $(testlp3_LDADD) $(LIBS) testlp3_gmp$(EXEEXT): $(testlp3_gmp_OBJECTS) $(testlp3_gmp_DEPENDENCIES) $(EXTRA_testlp3_gmp_DEPENDENCIES) @rm -f testlp3_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testlp3_gmp_OBJECTS) $(testlp3_gmp_LDADD) $(LIBS) testshoot$(EXEEXT): $(testshoot_OBJECTS) $(testshoot_DEPENDENCIES) $(EXTRA_testshoot_DEPENDENCIES) @rm -f testshoot$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testshoot_OBJECTS) $(testshoot_LDADD) $(LIBS) testshoot_gmp$(EXEEXT): $(testshoot_gmp_OBJECTS) $(testshoot_gmp_DEPENDENCIES) $(EXTRA_testshoot_gmp_DEPENDENCIES) @rm -f testshoot_gmp$(EXEEXT) $(AM_V_CCLD)$(LINK) $(testshoot_gmp_OBJECTS) $(testshoot_gmp_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adjacency.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/adjacency_gmp-adjacency.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allfaces.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/allfaces_gmp-allfaces.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddexec.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddexec_gmp-cddexec.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fourier.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fourier_gmp-fourier.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcdd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcdd_gmp-lcdd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/projection.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/projection_gmp-projection.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redcheck.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redcheck_gmp-redcheck.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redexter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redexter_gmp-redexter.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redundancies.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redundancies_clarkson.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redundancies_clarkson_gmp-redundancies_clarkson.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redundancies_gmp-redundancies.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scdd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/scdd_gmp-scdd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testcdd1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testcdd1_gmp-testcdd1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testcdd2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testcdd2_gmp-testcdd2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testlp1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testlp1_gmp-testlp1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testlp2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testlp2_gmp-testlp2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testlp3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testlp3_gmp-testlp3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testshoot.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testshoot_gmp-testshoot.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< adjacency_gmp-adjacency.o: adjacency.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adjacency_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT adjacency_gmp-adjacency.o -MD -MP -MF $(DEPDIR)/adjacency_gmp-adjacency.Tpo -c -o adjacency_gmp-adjacency.o `test -f 'adjacency.c' || echo '$(srcdir)/'`adjacency.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/adjacency_gmp-adjacency.Tpo $(DEPDIR)/adjacency_gmp-adjacency.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='adjacency.c' object='adjacency_gmp-adjacency.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adjacency_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adjacency_gmp-adjacency.o `test -f 'adjacency.c' || echo '$(srcdir)/'`adjacency.c adjacency_gmp-adjacency.obj: adjacency.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adjacency_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT adjacency_gmp-adjacency.obj -MD -MP -MF $(DEPDIR)/adjacency_gmp-adjacency.Tpo -c -o adjacency_gmp-adjacency.obj `if test -f 'adjacency.c'; then $(CYGPATH_W) 'adjacency.c'; else $(CYGPATH_W) '$(srcdir)/adjacency.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/adjacency_gmp-adjacency.Tpo $(DEPDIR)/adjacency_gmp-adjacency.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='adjacency.c' object='adjacency_gmp-adjacency.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(adjacency_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o adjacency_gmp-adjacency.obj `if test -f 'adjacency.c'; then $(CYGPATH_W) 'adjacency.c'; else $(CYGPATH_W) '$(srcdir)/adjacency.c'; fi` allfaces_gmp-allfaces.o: allfaces.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(allfaces_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT allfaces_gmp-allfaces.o -MD -MP -MF $(DEPDIR)/allfaces_gmp-allfaces.Tpo -c -o allfaces_gmp-allfaces.o `test -f 'allfaces.c' || echo '$(srcdir)/'`allfaces.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/allfaces_gmp-allfaces.Tpo $(DEPDIR)/allfaces_gmp-allfaces.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='allfaces.c' object='allfaces_gmp-allfaces.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(allfaces_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o allfaces_gmp-allfaces.o `test -f 'allfaces.c' || echo '$(srcdir)/'`allfaces.c allfaces_gmp-allfaces.obj: allfaces.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(allfaces_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT allfaces_gmp-allfaces.obj -MD -MP -MF $(DEPDIR)/allfaces_gmp-allfaces.Tpo -c -o allfaces_gmp-allfaces.obj `if test -f 'allfaces.c'; then $(CYGPATH_W) 'allfaces.c'; else $(CYGPATH_W) '$(srcdir)/allfaces.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/allfaces_gmp-allfaces.Tpo $(DEPDIR)/allfaces_gmp-allfaces.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='allfaces.c' object='allfaces_gmp-allfaces.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(allfaces_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o allfaces_gmp-allfaces.obj `if test -f 'allfaces.c'; then $(CYGPATH_W) 'allfaces.c'; else $(CYGPATH_W) '$(srcdir)/allfaces.c'; fi` cddexec_gmp-cddexec.o: cddexec.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cddexec_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cddexec_gmp-cddexec.o -MD -MP -MF $(DEPDIR)/cddexec_gmp-cddexec.Tpo -c -o cddexec_gmp-cddexec.o `test -f 'cddexec.c' || echo '$(srcdir)/'`cddexec.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cddexec_gmp-cddexec.Tpo $(DEPDIR)/cddexec_gmp-cddexec.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddexec.c' object='cddexec_gmp-cddexec.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cddexec_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cddexec_gmp-cddexec.o `test -f 'cddexec.c' || echo '$(srcdir)/'`cddexec.c cddexec_gmp-cddexec.obj: cddexec.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cddexec_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cddexec_gmp-cddexec.obj -MD -MP -MF $(DEPDIR)/cddexec_gmp-cddexec.Tpo -c -o cddexec_gmp-cddexec.obj `if test -f 'cddexec.c'; then $(CYGPATH_W) 'cddexec.c'; else $(CYGPATH_W) '$(srcdir)/cddexec.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cddexec_gmp-cddexec.Tpo $(DEPDIR)/cddexec_gmp-cddexec.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='cddexec.c' object='cddexec_gmp-cddexec.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cddexec_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cddexec_gmp-cddexec.obj `if test -f 'cddexec.c'; then $(CYGPATH_W) 'cddexec.c'; else $(CYGPATH_W) '$(srcdir)/cddexec.c'; fi` fourier_gmp-fourier.o: fourier.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fourier_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fourier_gmp-fourier.o -MD -MP -MF $(DEPDIR)/fourier_gmp-fourier.Tpo -c -o fourier_gmp-fourier.o `test -f 'fourier.c' || echo '$(srcdir)/'`fourier.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fourier_gmp-fourier.Tpo $(DEPDIR)/fourier_gmp-fourier.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fourier.c' object='fourier_gmp-fourier.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fourier_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fourier_gmp-fourier.o `test -f 'fourier.c' || echo '$(srcdir)/'`fourier.c fourier_gmp-fourier.obj: fourier.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fourier_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT fourier_gmp-fourier.obj -MD -MP -MF $(DEPDIR)/fourier_gmp-fourier.Tpo -c -o fourier_gmp-fourier.obj `if test -f 'fourier.c'; then $(CYGPATH_W) 'fourier.c'; else $(CYGPATH_W) '$(srcdir)/fourier.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/fourier_gmp-fourier.Tpo $(DEPDIR)/fourier_gmp-fourier.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='fourier.c' object='fourier_gmp-fourier.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(fourier_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o fourier_gmp-fourier.obj `if test -f 'fourier.c'; then $(CYGPATH_W) 'fourier.c'; else $(CYGPATH_W) '$(srcdir)/fourier.c'; fi` lcdd_gmp-lcdd.o: lcdd.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lcdd_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lcdd_gmp-lcdd.o -MD -MP -MF $(DEPDIR)/lcdd_gmp-lcdd.Tpo -c -o lcdd_gmp-lcdd.o `test -f 'lcdd.c' || echo '$(srcdir)/'`lcdd.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lcdd_gmp-lcdd.Tpo $(DEPDIR)/lcdd_gmp-lcdd.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lcdd.c' object='lcdd_gmp-lcdd.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lcdd_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lcdd_gmp-lcdd.o `test -f 'lcdd.c' || echo '$(srcdir)/'`lcdd.c lcdd_gmp-lcdd.obj: lcdd.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lcdd_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lcdd_gmp-lcdd.obj -MD -MP -MF $(DEPDIR)/lcdd_gmp-lcdd.Tpo -c -o lcdd_gmp-lcdd.obj `if test -f 'lcdd.c'; then $(CYGPATH_W) 'lcdd.c'; else $(CYGPATH_W) '$(srcdir)/lcdd.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lcdd_gmp-lcdd.Tpo $(DEPDIR)/lcdd_gmp-lcdd.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='lcdd.c' object='lcdd_gmp-lcdd.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(lcdd_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lcdd_gmp-lcdd.obj `if test -f 'lcdd.c'; then $(CYGPATH_W) 'lcdd.c'; else $(CYGPATH_W) '$(srcdir)/lcdd.c'; fi` projection_gmp-projection.o: projection.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(projection_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT projection_gmp-projection.o -MD -MP -MF $(DEPDIR)/projection_gmp-projection.Tpo -c -o projection_gmp-projection.o `test -f 'projection.c' || echo '$(srcdir)/'`projection.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/projection_gmp-projection.Tpo $(DEPDIR)/projection_gmp-projection.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='projection.c' object='projection_gmp-projection.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(projection_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o projection_gmp-projection.o `test -f 'projection.c' || echo '$(srcdir)/'`projection.c projection_gmp-projection.obj: projection.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(projection_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT projection_gmp-projection.obj -MD -MP -MF $(DEPDIR)/projection_gmp-projection.Tpo -c -o projection_gmp-projection.obj `if test -f 'projection.c'; then $(CYGPATH_W) 'projection.c'; else $(CYGPATH_W) '$(srcdir)/projection.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/projection_gmp-projection.Tpo $(DEPDIR)/projection_gmp-projection.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='projection.c' object='projection_gmp-projection.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(projection_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o projection_gmp-projection.obj `if test -f 'projection.c'; then $(CYGPATH_W) 'projection.c'; else $(CYGPATH_W) '$(srcdir)/projection.c'; fi` redcheck_gmp-redcheck.o: redcheck.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redcheck_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT redcheck_gmp-redcheck.o -MD -MP -MF $(DEPDIR)/redcheck_gmp-redcheck.Tpo -c -o redcheck_gmp-redcheck.o `test -f 'redcheck.c' || echo '$(srcdir)/'`redcheck.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/redcheck_gmp-redcheck.Tpo $(DEPDIR)/redcheck_gmp-redcheck.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='redcheck.c' object='redcheck_gmp-redcheck.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redcheck_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o redcheck_gmp-redcheck.o `test -f 'redcheck.c' || echo '$(srcdir)/'`redcheck.c redcheck_gmp-redcheck.obj: redcheck.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redcheck_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT redcheck_gmp-redcheck.obj -MD -MP -MF $(DEPDIR)/redcheck_gmp-redcheck.Tpo -c -o redcheck_gmp-redcheck.obj `if test -f 'redcheck.c'; then $(CYGPATH_W) 'redcheck.c'; else $(CYGPATH_W) '$(srcdir)/redcheck.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/redcheck_gmp-redcheck.Tpo $(DEPDIR)/redcheck_gmp-redcheck.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='redcheck.c' object='redcheck_gmp-redcheck.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redcheck_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o redcheck_gmp-redcheck.obj `if test -f 'redcheck.c'; then $(CYGPATH_W) 'redcheck.c'; else $(CYGPATH_W) '$(srcdir)/redcheck.c'; fi` redexter_gmp-redexter.o: redexter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redexter_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT redexter_gmp-redexter.o -MD -MP -MF $(DEPDIR)/redexter_gmp-redexter.Tpo -c -o redexter_gmp-redexter.o `test -f 'redexter.c' || echo '$(srcdir)/'`redexter.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/redexter_gmp-redexter.Tpo $(DEPDIR)/redexter_gmp-redexter.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='redexter.c' object='redexter_gmp-redexter.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redexter_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o redexter_gmp-redexter.o `test -f 'redexter.c' || echo '$(srcdir)/'`redexter.c redexter_gmp-redexter.obj: redexter.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redexter_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT redexter_gmp-redexter.obj -MD -MP -MF $(DEPDIR)/redexter_gmp-redexter.Tpo -c -o redexter_gmp-redexter.obj `if test -f 'redexter.c'; then $(CYGPATH_W) 'redexter.c'; else $(CYGPATH_W) '$(srcdir)/redexter.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/redexter_gmp-redexter.Tpo $(DEPDIR)/redexter_gmp-redexter.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='redexter.c' object='redexter_gmp-redexter.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redexter_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o redexter_gmp-redexter.obj `if test -f 'redexter.c'; then $(CYGPATH_W) 'redexter.c'; else $(CYGPATH_W) '$(srcdir)/redexter.c'; fi` redundancies_clarkson_gmp-redundancies_clarkson.o: redundancies_clarkson.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redundancies_clarkson_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT redundancies_clarkson_gmp-redundancies_clarkson.o -MD -MP -MF $(DEPDIR)/redundancies_clarkson_gmp-redundancies_clarkson.Tpo -c -o redundancies_clarkson_gmp-redundancies_clarkson.o `test -f 'redundancies_clarkson.c' || echo '$(srcdir)/'`redundancies_clarkson.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/redundancies_clarkson_gmp-redundancies_clarkson.Tpo $(DEPDIR)/redundancies_clarkson_gmp-redundancies_clarkson.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='redundancies_clarkson.c' object='redundancies_clarkson_gmp-redundancies_clarkson.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redundancies_clarkson_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o redundancies_clarkson_gmp-redundancies_clarkson.o `test -f 'redundancies_clarkson.c' || echo '$(srcdir)/'`redundancies_clarkson.c redundancies_clarkson_gmp-redundancies_clarkson.obj: redundancies_clarkson.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redundancies_clarkson_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT redundancies_clarkson_gmp-redundancies_clarkson.obj -MD -MP -MF $(DEPDIR)/redundancies_clarkson_gmp-redundancies_clarkson.Tpo -c -o redundancies_clarkson_gmp-redundancies_clarkson.obj `if test -f 'redundancies_clarkson.c'; then $(CYGPATH_W) 'redundancies_clarkson.c'; else $(CYGPATH_W) '$(srcdir)/redundancies_clarkson.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/redundancies_clarkson_gmp-redundancies_clarkson.Tpo $(DEPDIR)/redundancies_clarkson_gmp-redundancies_clarkson.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='redundancies_clarkson.c' object='redundancies_clarkson_gmp-redundancies_clarkson.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redundancies_clarkson_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o redundancies_clarkson_gmp-redundancies_clarkson.obj `if test -f 'redundancies_clarkson.c'; then $(CYGPATH_W) 'redundancies_clarkson.c'; else $(CYGPATH_W) '$(srcdir)/redundancies_clarkson.c'; fi` redundancies_gmp-redundancies.o: redundancies.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redundancies_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT redundancies_gmp-redundancies.o -MD -MP -MF $(DEPDIR)/redundancies_gmp-redundancies.Tpo -c -o redundancies_gmp-redundancies.o `test -f 'redundancies.c' || echo '$(srcdir)/'`redundancies.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/redundancies_gmp-redundancies.Tpo $(DEPDIR)/redundancies_gmp-redundancies.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='redundancies.c' object='redundancies_gmp-redundancies.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redundancies_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o redundancies_gmp-redundancies.o `test -f 'redundancies.c' || echo '$(srcdir)/'`redundancies.c redundancies_gmp-redundancies.obj: redundancies.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redundancies_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT redundancies_gmp-redundancies.obj -MD -MP -MF $(DEPDIR)/redundancies_gmp-redundancies.Tpo -c -o redundancies_gmp-redundancies.obj `if test -f 'redundancies.c'; then $(CYGPATH_W) 'redundancies.c'; else $(CYGPATH_W) '$(srcdir)/redundancies.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/redundancies_gmp-redundancies.Tpo $(DEPDIR)/redundancies_gmp-redundancies.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='redundancies.c' object='redundancies_gmp-redundancies.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(redundancies_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o redundancies_gmp-redundancies.obj `if test -f 'redundancies.c'; then $(CYGPATH_W) 'redundancies.c'; else $(CYGPATH_W) '$(srcdir)/redundancies.c'; fi` scdd_gmp-scdd.o: scdd.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(scdd_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT scdd_gmp-scdd.o -MD -MP -MF $(DEPDIR)/scdd_gmp-scdd.Tpo -c -o scdd_gmp-scdd.o `test -f 'scdd.c' || echo '$(srcdir)/'`scdd.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/scdd_gmp-scdd.Tpo $(DEPDIR)/scdd_gmp-scdd.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='scdd.c' object='scdd_gmp-scdd.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(scdd_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o scdd_gmp-scdd.o `test -f 'scdd.c' || echo '$(srcdir)/'`scdd.c scdd_gmp-scdd.obj: scdd.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(scdd_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT scdd_gmp-scdd.obj -MD -MP -MF $(DEPDIR)/scdd_gmp-scdd.Tpo -c -o scdd_gmp-scdd.obj `if test -f 'scdd.c'; then $(CYGPATH_W) 'scdd.c'; else $(CYGPATH_W) '$(srcdir)/scdd.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/scdd_gmp-scdd.Tpo $(DEPDIR)/scdd_gmp-scdd.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='scdd.c' object='scdd_gmp-scdd.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(scdd_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o scdd_gmp-scdd.obj `if test -f 'scdd.c'; then $(CYGPATH_W) 'scdd.c'; else $(CYGPATH_W) '$(srcdir)/scdd.c'; fi` testcdd1_gmp-testcdd1.o: testcdd1.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testcdd1_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT testcdd1_gmp-testcdd1.o -MD -MP -MF $(DEPDIR)/testcdd1_gmp-testcdd1.Tpo -c -o testcdd1_gmp-testcdd1.o `test -f 'testcdd1.c' || echo '$(srcdir)/'`testcdd1.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/testcdd1_gmp-testcdd1.Tpo $(DEPDIR)/testcdd1_gmp-testcdd1.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testcdd1.c' object='testcdd1_gmp-testcdd1.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testcdd1_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o testcdd1_gmp-testcdd1.o `test -f 'testcdd1.c' || echo '$(srcdir)/'`testcdd1.c testcdd1_gmp-testcdd1.obj: testcdd1.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testcdd1_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT testcdd1_gmp-testcdd1.obj -MD -MP -MF $(DEPDIR)/testcdd1_gmp-testcdd1.Tpo -c -o testcdd1_gmp-testcdd1.obj `if test -f 'testcdd1.c'; then $(CYGPATH_W) 'testcdd1.c'; else $(CYGPATH_W) '$(srcdir)/testcdd1.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/testcdd1_gmp-testcdd1.Tpo $(DEPDIR)/testcdd1_gmp-testcdd1.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testcdd1.c' object='testcdd1_gmp-testcdd1.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testcdd1_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o testcdd1_gmp-testcdd1.obj `if test -f 'testcdd1.c'; then $(CYGPATH_W) 'testcdd1.c'; else $(CYGPATH_W) '$(srcdir)/testcdd1.c'; fi` testcdd2_gmp-testcdd2.o: testcdd2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testcdd2_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT testcdd2_gmp-testcdd2.o -MD -MP -MF $(DEPDIR)/testcdd2_gmp-testcdd2.Tpo -c -o testcdd2_gmp-testcdd2.o `test -f 'testcdd2.c' || echo '$(srcdir)/'`testcdd2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/testcdd2_gmp-testcdd2.Tpo $(DEPDIR)/testcdd2_gmp-testcdd2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testcdd2.c' object='testcdd2_gmp-testcdd2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testcdd2_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o testcdd2_gmp-testcdd2.o `test -f 'testcdd2.c' || echo '$(srcdir)/'`testcdd2.c testcdd2_gmp-testcdd2.obj: testcdd2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testcdd2_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT testcdd2_gmp-testcdd2.obj -MD -MP -MF $(DEPDIR)/testcdd2_gmp-testcdd2.Tpo -c -o testcdd2_gmp-testcdd2.obj `if test -f 'testcdd2.c'; then $(CYGPATH_W) 'testcdd2.c'; else $(CYGPATH_W) '$(srcdir)/testcdd2.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/testcdd2_gmp-testcdd2.Tpo $(DEPDIR)/testcdd2_gmp-testcdd2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testcdd2.c' object='testcdd2_gmp-testcdd2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testcdd2_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o testcdd2_gmp-testcdd2.obj `if test -f 'testcdd2.c'; then $(CYGPATH_W) 'testcdd2.c'; else $(CYGPATH_W) '$(srcdir)/testcdd2.c'; fi` testlp1_gmp-testlp1.o: testlp1.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testlp1_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT testlp1_gmp-testlp1.o -MD -MP -MF $(DEPDIR)/testlp1_gmp-testlp1.Tpo -c -o testlp1_gmp-testlp1.o `test -f 'testlp1.c' || echo '$(srcdir)/'`testlp1.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/testlp1_gmp-testlp1.Tpo $(DEPDIR)/testlp1_gmp-testlp1.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testlp1.c' object='testlp1_gmp-testlp1.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testlp1_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o testlp1_gmp-testlp1.o `test -f 'testlp1.c' || echo '$(srcdir)/'`testlp1.c testlp1_gmp-testlp1.obj: testlp1.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testlp1_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT testlp1_gmp-testlp1.obj -MD -MP -MF $(DEPDIR)/testlp1_gmp-testlp1.Tpo -c -o testlp1_gmp-testlp1.obj `if test -f 'testlp1.c'; then $(CYGPATH_W) 'testlp1.c'; else $(CYGPATH_W) '$(srcdir)/testlp1.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/testlp1_gmp-testlp1.Tpo $(DEPDIR)/testlp1_gmp-testlp1.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testlp1.c' object='testlp1_gmp-testlp1.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testlp1_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o testlp1_gmp-testlp1.obj `if test -f 'testlp1.c'; then $(CYGPATH_W) 'testlp1.c'; else $(CYGPATH_W) '$(srcdir)/testlp1.c'; fi` testlp2_gmp-testlp2.o: testlp2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testlp2_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT testlp2_gmp-testlp2.o -MD -MP -MF $(DEPDIR)/testlp2_gmp-testlp2.Tpo -c -o testlp2_gmp-testlp2.o `test -f 'testlp2.c' || echo '$(srcdir)/'`testlp2.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/testlp2_gmp-testlp2.Tpo $(DEPDIR)/testlp2_gmp-testlp2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testlp2.c' object='testlp2_gmp-testlp2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testlp2_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o testlp2_gmp-testlp2.o `test -f 'testlp2.c' || echo '$(srcdir)/'`testlp2.c testlp2_gmp-testlp2.obj: testlp2.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testlp2_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT testlp2_gmp-testlp2.obj -MD -MP -MF $(DEPDIR)/testlp2_gmp-testlp2.Tpo -c -o testlp2_gmp-testlp2.obj `if test -f 'testlp2.c'; then $(CYGPATH_W) 'testlp2.c'; else $(CYGPATH_W) '$(srcdir)/testlp2.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/testlp2_gmp-testlp2.Tpo $(DEPDIR)/testlp2_gmp-testlp2.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testlp2.c' object='testlp2_gmp-testlp2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testlp2_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o testlp2_gmp-testlp2.obj `if test -f 'testlp2.c'; then $(CYGPATH_W) 'testlp2.c'; else $(CYGPATH_W) '$(srcdir)/testlp2.c'; fi` testlp3_gmp-testlp3.o: testlp3.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testlp3_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT testlp3_gmp-testlp3.o -MD -MP -MF $(DEPDIR)/testlp3_gmp-testlp3.Tpo -c -o testlp3_gmp-testlp3.o `test -f 'testlp3.c' || echo '$(srcdir)/'`testlp3.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/testlp3_gmp-testlp3.Tpo $(DEPDIR)/testlp3_gmp-testlp3.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testlp3.c' object='testlp3_gmp-testlp3.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testlp3_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o testlp3_gmp-testlp3.o `test -f 'testlp3.c' || echo '$(srcdir)/'`testlp3.c testlp3_gmp-testlp3.obj: testlp3.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testlp3_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT testlp3_gmp-testlp3.obj -MD -MP -MF $(DEPDIR)/testlp3_gmp-testlp3.Tpo -c -o testlp3_gmp-testlp3.obj `if test -f 'testlp3.c'; then $(CYGPATH_W) 'testlp3.c'; else $(CYGPATH_W) '$(srcdir)/testlp3.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/testlp3_gmp-testlp3.Tpo $(DEPDIR)/testlp3_gmp-testlp3.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testlp3.c' object='testlp3_gmp-testlp3.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testlp3_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o testlp3_gmp-testlp3.obj `if test -f 'testlp3.c'; then $(CYGPATH_W) 'testlp3.c'; else $(CYGPATH_W) '$(srcdir)/testlp3.c'; fi` testshoot_gmp-testshoot.o: testshoot.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testshoot_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT testshoot_gmp-testshoot.o -MD -MP -MF $(DEPDIR)/testshoot_gmp-testshoot.Tpo -c -o testshoot_gmp-testshoot.o `test -f 'testshoot.c' || echo '$(srcdir)/'`testshoot.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/testshoot_gmp-testshoot.Tpo $(DEPDIR)/testshoot_gmp-testshoot.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testshoot.c' object='testshoot_gmp-testshoot.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testshoot_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o testshoot_gmp-testshoot.o `test -f 'testshoot.c' || echo '$(srcdir)/'`testshoot.c testshoot_gmp-testshoot.obj: testshoot.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testshoot_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT testshoot_gmp-testshoot.obj -MD -MP -MF $(DEPDIR)/testshoot_gmp-testshoot.Tpo -c -o testshoot_gmp-testshoot.obj `if test -f 'testshoot.c'; then $(CYGPATH_W) 'testshoot.c'; else $(CYGPATH_W) '$(srcdir)/testshoot.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/testshoot_gmp-testshoot.Tpo $(DEPDIR)/testshoot_gmp-testshoot.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='testshoot.c' object='testshoot_gmp-testshoot.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(testshoot_gmp_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o testshoot_gmp-testshoot.obj `if test -f 'testshoot.c'; then $(CYGPATH_W) 'testshoot.c'; else $(CYGPATH_W) '$(srcdir)/testshoot.c'; fi` mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(am__tagged_files) $(am__define_uniq_tagged_files); mkid -fID $$unique tags: tags-am TAGS: tags tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ if test $$# -gt 0; then \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ "$$@" $$unique; \ else \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$unique; \ fi; \ fi ctags: ctags-am CTAGS: ctags ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" cscopelist: cscopelist-am cscopelist-am: $(am__tagged_files) list='$(am__tagged_files)'; \ case "$(srcdir)" in \ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ *) sdir=$(subdir)/$(srcdir) ;; \ esac; \ for i in $$list; do \ if test -f "$$i"; then \ echo "$(subdir)/$$i"; \ else \ echo "$$sdir/$$i"; \ fi; \ done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags distdir: $(DISTFILES) @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ list='$(DISTFILES)'; \ dist_files=`for file in $$list; do echo $$file; done | \ sed -e "s|^$$srcdirstrip/||;t" \ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ case $$dist_files in \ */*) $(MKDIR_P) `echo "$$dist_files" | \ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ sort -u` ;; \ esac; \ for file in $$dist_files; do \ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ if test -d $$d/$$file; then \ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ if test -d "$(distdir)/$$file"; then \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ fi; \ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ else \ test -f "$(distdir)/$$file" \ || cp -p $$d/$$file "$(distdir)/$$file" \ || exit 1; \ fi; \ done check-am: all-am check: check-am all-am: Makefile $(PROGRAMS) installdirs: for dir in "$(DESTDIR)$(bindir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-am install-exec: install-exec-am install-data: install-data-am uninstall: uninstall-am install-am: all-am @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am installcheck: installcheck-am install-strip: if test -z '$(STRIP)'; then \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ install; \ else \ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ fi mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) maintainer-clean-generic: @echo "This command is intended for maintainers to use" @echo "it deletes files that may require special tools to rebuild." clean: clean-am clean-am: clean-binPROGRAMS clean-generic clean-libtool \ clean-noinstPROGRAMS mostlyclean-am distclean: distclean-am -rm -rf ./$(DEPDIR) -rm -f Makefile distclean-am: clean-am distclean-compile distclean-generic \ distclean-tags dvi: dvi-am dvi-am: html: html-am html-am: info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-dvi-am: install-exec-am: install-binPROGRAMS install-html: install-html-am install-html-am: install-info: install-info-am install-info-am: install-man: install-pdf: install-pdf-am install-pdf-am: install-ps: install-ps-am install-ps-am: installcheck-am: maintainer-clean: maintainer-clean-am -rm -rf ./$(DEPDIR) -rm -f Makefile maintainer-clean-am: distclean-am maintainer-clean-generic mostlyclean: mostlyclean-am mostlyclean-am: mostlyclean-compile mostlyclean-generic \ mostlyclean-libtool pdf: pdf-am pdf-am: ps: ps-am ps-am: uninstall-am: uninstall-binPROGRAMS .MAKE: install-am install-strip .PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ clean-binPROGRAMS clean-generic clean-libtool \ clean-noinstPROGRAMS cscopelist-am ctags ctags-am distclean \ distclean-compile distclean-generic distclean-libtool \ distclean-tags distdir dvi dvi-am html html-am info info-am \ install install-am install-binPROGRAMS install-data \ install-data-am install-dvi install-dvi-am install-exec \ install-exec-am install-html install-html-am install-info \ install-info-am install-man install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-compile \ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ tags tags-am uninstall uninstall-am uninstall-binPROGRAMS .PRECIOUS: Makefile # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: cddlib-0.94j/src/adjacency.c0000644000175000017500000001126713277651306012657 00000000000000/* adjacency.c: Test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.93, July 18, 2003 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include dd_boolean SetInputFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; success=dd_FALSE; if ( ( *f = fopen(fname, "r") )!= NULL) { printf("input file %s is open\n", fname); success=dd_TRUE; } else{ printf("The input file %s not found\n",fname); } return success; } dd_boolean SetWriteFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; if ( (*f = fopen(fname, "w")) != NULL){ printf("output file %s is open\n",fname); success=dd_TRUE; } else{ printf("The output file %s cannot be opened\n",fname); } return success; } int main(int argc, char *argv[]) { dd_MatrixPtr M=NULL,M2=NULL,M3=NULL; dd_SetFamilyPtr A=NULL; dd_colrange d; dd_ErrorType err=dd_NoError; dd_rowset redrows,linrows,ignoredrows, basisrows; dd_colset ignoredcols, basiscols; long rank; mytype val; time_t starttime, endtime; dd_DataFileType inputfile; FILE *reading=NULL; dd_set_global_constants(); /* First, this must be called. */ dd_init(val); if (argc>1) strcpy(inputfile,argv[1]); if (argc<=1 || !SetInputFile(&reading,argv[1])){ dd_WriteProgramDescription(stdout); fprintf(stdout,"\ncddlib test program to remove redundancy and compute adjacency of the resulting representation.\n"); dd_SetInputFile(&reading,inputfile, &err); } if (err==dd_NoError) { M=dd_PolyFile2Matrix(reading, &err); } else { fprintf(stderr,"Input file not found\n"); goto _L99; } if (err!=dd_NoError) goto _L99; if (M->representation==dd_Generator) d=M->colsize+1; else d=M->colsize; fprintf(stdout, "redundant rows:\n"); time(&starttime); redrows=dd_RedundantRows(M, &err); time(&endtime); set_fwrite(stdout, redrows); dd_WriteTimes(stdout,starttime,endtime); M2=dd_MatrixSubmatrix(M, redrows); fprintf(stdout, "Implicit linearity (after removal of redundant rows): "); linrows=dd_ImplicitLinearityRows(M2, &err); if (M->representation==dd_Generator) fprintf(stdout," %ld ", set_card(linrows)); else fprintf(stdout," %ld ", set_card(linrows)); set_fwrite(stdout,linrows); set_uni(M2->linset, M2->linset, linrows); /* add the implicit linrows to the explicit linearity rows */ printf("\nNonredundant representation (except possibly for the linearity part):\n"); dd_WriteMatrix(stdout, M2); /* To remove redundancy of the linearity part, we need to compute the rank and a basis of the linearity part. */ set_initialize(&ignoredrows, M2->rowsize); set_initialize(&ignoredcols, M2->colsize); set_compl(ignoredrows, M2->linset); rank=dd_MatrixRank(M2,ignoredrows,ignoredcols, &basisrows, &basiscols); set_diff(ignoredrows, M2->linset, basisrows); M3=dd_MatrixSubmatrix(M2, ignoredrows); if (rank>0){ if (set_card(ignoredrows)) { fprintf(stdout,"\nThe following %ld linearity rows are dependent and unnecessary:", set_card(ignoredrows)); set_fwrite(stdout,ignoredrows); } } else fprintf(stdout,"\nThe linearity rows are independent and thus minimal\n"); printf("Nonredundant representation (= minimal representation):\n"); dd_WriteMatrix(stdout, M3); printf("\nAdjacency of the minimal representation:\n"); A=dd_Matrix2Adjacency(M3, &err); dd_WriteSetFamily(stdout, A); dd_clear(val); set_free(linrows); set_free(basisrows); set_free(basiscols); set_free(ignoredrows); set_free(ignoredcols); set_free(redrows); if (A!=NULL) dd_FreeSetFamily(A); dd_FreeMatrix(M); dd_FreeMatrix(M2); dd_FreeMatrix(M3); _L99:; if (err!=dd_NoError) dd_WriteErrorMessages(stderr,err); dd_free_global_constants(); /* At the end, this should be called. */ return 0; } /* end of adjacency.c */ cddlib-0.94j/src/allfaces.c0000644000175000017500000001145113277651306012503 00000000000000/* allfaces.c: Test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94, August 4, 2005 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include dd_boolean SetInputFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; success=dd_FALSE; if ( ( *f = fopen(fname, "r") )!= NULL) { printf("input file %s is open\n", fname); success=dd_TRUE; } else{ printf("The input file %s not found\n",fname); } return success; } dd_boolean SetWriteFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; if ( (*f = fopen(fname, "w")) != NULL){ printf("output file %s is open\n",fname); success=dd_TRUE; } else{ printf("The output file %s cannot be opened\n",fname); } return success; } dd_boolean FaceEnum(dd_MatrixPtr M, dd_rowset R, dd_rowset S, dd_boolean rip, dd_colrange mindim) { dd_ErrorType err; dd_rowset LL, ImL, RR, SS, Lbasis; dd_rowrange i,iprev=0; dd_colrange j,dim; dd_LPSolutionPtr lps=NULL; dd_boolean success=dd_FALSE; set_initialize(&LL, M->rowsize); set_initialize(&RR, M->rowsize); set_initialize(&SS, M->rowsize); set_copy(LL, M->linset); /* rememer the linset. */ set_copy(RR, R); /* copy of R. */ set_copy(SS, S); /* copy of S. */ if (dd_ExistsRestrictedFace(M, R, S, &err)){ set_uni(M->linset, M->linset, R); dd_FindRelativeInterior(M, &ImL, &Lbasis, &lps, &err); dim=M->colsize - set_card(Lbasis)-1; set_uni(M->linset, M->linset, ImL); fprintf(stdout,"%ld: ", dim); set_fwrite(stdout,M->linset); if (rip){ /* Write an interior point. */ printf("RIP: ("); for (j=1; j <(lps->d)-1; j++) { dd_WriteNumber(stdout,lps->sol[j]); } printf(")\n"); } dd_FreeLPSolution(lps); set_free(ImL); set_free(Lbasis); if (dim>mindim){ for (i=1; i<=M->rowsize; i++){ if (!set_member(i, M->linset) && !set_member(i, S)){ set_addelem(RR, i); if (iprev) { set_delelem(RR,iprev); set_delelem(M->linset,iprev); set_addelem(SS, iprev); } iprev=i; FaceEnum(M, RR, SS, rip, mindim); } } } } else if (err!=dd_NoError) goto _L99; success=dd_TRUE; _L99: set_copy(M->linset, LL); /* restore the linset */ set_free(LL); set_free(RR); set_free(SS); return success; } int main(int argc, char *argv[]) { dd_MatrixPtr M=NULL; dd_rowrange m; dd_ErrorType err=dd_NoError; dd_rowset R, S; dd_DataFileType inputfile; FILE *reading=NULL; char ch; dd_colrange mindim; dd_boolean rip=dd_FALSE; dd_set_global_constants(); /* First, this must be called. */ if (argc>1) strcpy(inputfile,argv[1]); if (argc<=1 || !SetInputFile(&reading,argv[1])){ dd_WriteProgramDescription(stdout); fprintf(stdout,"\ncddlib test program to list all faces of an H-polyhedron.\n"); dd_SetInputFile(&reading,inputfile, &err); } if (err==dd_NoError) { M=dd_PolyFile2Matrix(reading, &err); } else { fprintf(stderr,"Input file not found\n"); goto _L99; } if (err!=dd_NoError) goto _L99; if (M->representation==dd_Generator){ printf("The input is V-representation. Consider it as H-representation (N)? "); ch=getchar(); getchar(); if (ch!='y' && ch!='Y') goto _L99; } m=M->rowsize; set_initialize(&R, M->rowsize); set_initialize(&S, M->rowsize); printf("Output relative interior points (N)? "); ch=getchar(); if (ch=='y' || ch=='Y') rip=dd_TRUE; printf("Minimum dimension of faces to list (0..%ld) ? ",M->colsize-1); scanf("%ld", &mindim); if (mindim>=M->colsize) mindim=M->colsize-1; printf("Minimum dimension is set to %ld.", mindim); printf("\n--- FaceEnum (dim: active set) ---\nbegin\n"); FaceEnum(M, R, S, rip, mindim); fprintf(stderr,"end\nFaceEnum completed.\n"); dd_FreeMatrix(M); set_free(R); set_free(S); _L99:; if (err!=dd_NoError) dd_WriteErrorMessages(stderr,err); dd_free_global_constants(); /* At the end, this should be called. */ return 0; } /* end of allfaces.c */ cddlib-0.94j/src/cddexec.c0000644000175000017500000002076713307420677012341 00000000000000/* cddexec.c: executing cdd functions. It mimics the interface of the program cdd_both_reps by Volker Braun with much faster executions. The input is taken from stdin and can be either a H or V representation. Written by Komei Fukuda , by using some part of cdd_both_reps. Version 0.94j, May 10, 2018. */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include "setoper.h" #include "cdd.h" #include #include #include #include #include void compute_adjacency(dd_MatrixPtr Rep, dd_ErrorType* err_ptr) { dd_SetFamilyPtr AdjacencyGraph; if (*err_ptr != dd_NoError) return; switch (Rep->representation) { case dd_Inequality: fprintf(stdout, "Facet adjacency\n"); break; case dd_Generator: fprintf(stdout, "Vertex adjacency\n"); break; case dd_Unspecified: fprintf(stderr, "unknown representation type!\n"); default: fprintf(stderr, "This should be unreachable!\n"); exit(2); } /* Output adjacency of vertices/rays/lines */ if (Rep->rowsize > 0) { /* workaround for bug with empty polyhedron */ /* compute adjacent vertices/rays/lines */ AdjacencyGraph = dd_Matrix2Adjacency(Rep, err_ptr); if (*err_ptr == dd_NoError) { dd_WriteSetFamily(stdout,AdjacencyGraph); dd_FreeSetFamily(AdjacencyGraph); } } else { printf("begin\n"); printf(" 0 0\n"); printf("end\n"); } printf("\n"); } void compute_the_second_rep(dd_MatrixPtr M, dd_ErrorType* err_ptr) { dd_PolyhedraPtr poly; dd_MatrixPtr A; /* compute the second representation */ poly = dd_DDMatrix2Poly(M, err_ptr); if (*err_ptr!=dd_NoError) goto _L99; switch (poly->representation) { case dd_Inequality: fprintf(stdout, "The second representation:\n"); A=dd_CopyGenerators(poly); dd_WriteMatrix(stdout,A); dd_FreeMatrix(A); break; case dd_Generator: fprintf(stdout, "The second representation:\n"); A=dd_CopyInequalities(poly); dd_WriteMatrix(stdout,A); dd_FreeMatrix(A); break; default: break; } _L99:; } void compute_the_second_repall(dd_MatrixPtr M, dd_ErrorType* err_ptr) { dd_PolyhedraPtr poly; dd_MatrixPtr A,B; /* compute the second representation */ poly = dd_DDMatrix2Poly(M, err_ptr); if (*err_ptr!=dd_NoError) goto _L99; switch (poly->representation) { case dd_Inequality: A=dd_CopyGenerators(poly); B=dd_CopyInequalities(poly); fprintf(stdout, "The second representation:\n"); dd_WriteMatrix(stdout,A); fprintf(stdout, "\nVertex incidence\n"); dd_WriteIncidence(stdout,poly); fprintf(stdout, "\nVertex adjacency\n"); dd_WriteAdjacency(stdout,poly); fprintf(stdout, "\nThe first (input) representation\n"); dd_WriteMatrix(stdout,B); fprintf(stdout, "\nFacet incidence\n"); dd_WriteInputIncidence(stdout,poly); fprintf(stdout, "\nFacet adjacency\n"); dd_WriteInputAdjacency(stdout,poly); dd_FreeMatrix(A); dd_FreeMatrix(B); break; case dd_Generator: A=dd_CopyInequalities(poly); B=dd_CopyGenerators(poly); fprintf(stdout, "The second representation:\n"); dd_WriteMatrix(stdout,A); fprintf(stdout, "\nFacet incidence\n"); dd_WriteIncidence(stdout,poly); fprintf(stdout, "\nFacet adjacency\n"); dd_WriteAdjacency(stdout,poly); fprintf(stdout, "\nThe first (input) representation\n"); dd_WriteMatrix(stdout,B); fprintf(stdout, "\nVertex incidence\n"); dd_WriteInputIncidence(stdout,poly); fprintf(stdout, "\nVertex adjacency\n"); dd_WriteInputAdjacency(stdout,poly); dd_FreeMatrix(A); dd_FreeMatrix(B); break; default: break; } _L99:; } void compute_redundancy(dd_MatrixPtr M, dd_ErrorType* err_ptr) { dd_rowrange i,m; dd_rowindex newpos; dd_rowset impl_linset,redset; m=M->rowsize; fprintf(stdout, "Canonicalize the matrix.\n"); dd_MatrixCanonicalize(&M, &impl_linset, &redset, &newpos, err_ptr); if (*err_ptr!=dd_NoError) goto _L99; fprintf(stdout, "Implicit linearity rows are:"); set_fwrite(stdout, impl_linset); fprintf(stdout, "\nRedundant rows are:"); set_fwrite(stdout, redset); fprintf(stdout, "\n"); fprintf(stdout, "Nonredundant representation:\n"); fprintf(stdout, "The new row positions are as follows (orig:new).\nEach redundant row has the new number 0.\nEach deleted duplicated row has a number nagative of the row that\nrepresents its equivalence class.\n"); for (i=1; i<=m; i++){ fprintf(stdout, " %ld:%ld",i, newpos[i]); } fprintf(stdout, "\n"); dd_WriteMatrix(stdout, M); set_free(redset); set_free(impl_linset); free(newpos); dd_FreeMatrix(M); _L99:; } void usage(char *name) { fprintf(stderr, "No known option specified, I don't know what to do!\n" "Usage:\n" "%s --option\n" "where --option is precisely one of the following:\n\n" " --rep: Compute the second (H- or V-) representation.\n" " The computed representation is minimal (without redundancy).\n" "\n" " --repall: Compute the second (H- or V-) representation.\n" " It outputs both the input and output representations,\n" " as well as their incidence and adjacency relations.\n" "\n" " --redcheck: Compute a minimal (non-redundant) representation.\n" " This is sometimes called the redundancy removal.\n" "\n" " --adjacency: Compute adjacency information only.\n" " The input is assumed to be a minimal representation, as, for example, computed\n" " by --redcheck. Warning, you will not get the correct answer if the input\n" " representation is not minimal! The output is the vertex or facet graph,\n" " depending on the input.\n" "\n" "The input data is a H- or V-representation in cdd's ine/ext format and\n" "is in each case read from stdin.\n", name); } enum command_line_arguments {REP, REPALL, ADJACENCY, REDCHECK}; int parse_arguments(char* arg, enum command_line_arguments* option) { if (strcmp(arg,"--repall")==0) { *option = REPALL; return 0; } if (strcmp(arg,"--rep")==0) { *option = REP; return 0; } if (strcmp(arg,"--adjacency")==0) { *option = ADJACENCY; return 0; } if (strcmp(arg,"--redcheck")==0) { *option = REDCHECK; return 0; } fprintf(stderr, "Unknown option: %s\n", arg); return 1; } int main(int argc, char *argv[]) { dd_ErrorType err=dd_NoError; dd_MatrixPtr M=NULL; enum command_line_arguments option; if (argc!=2 || parse_arguments(argv[1],&option)) { usage(argv[0]); return 1; } dd_set_global_constants(); /* Read data from stdin */ M = dd_PolyFile2Matrix(stdin, &err); if (err != dd_NoError) { fprintf(stderr, "I was unable to parse the input data!\n"); dd_WriteErrorMessages(stdout,err); dd_free_global_constants(); return 1; } switch (option) { case REPALL: compute_the_second_repall(M,&err); break; case REP: compute_the_second_rep(M,&err); break; case ADJACENCY: compute_adjacency(M,&err); break; case REDCHECK: compute_redundancy(M,&err); break; default: fprintf(stderr, "unreachable option %d\n", option); exit(3); /* unreachable */ } /* cleanup */ if (option!=REDCHECK) dd_FreeMatrix(M); /* compute_redundancy modifies M and frees M. */ if (err != dd_NoError) { dd_WriteErrorMessages(stdout,err); } dd_free_global_constants(); return 0; } cddlib-0.94j/src/fourier.c0000644000175000017500000000661413277651306012411 00000000000000/* fourier.c: Test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94, August 4, 2005 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include dd_boolean SetInputFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; success=dd_FALSE; if ( ( *f = fopen(fname, "r") )!= NULL) { printf("input file %s is open\n", fname); success=dd_TRUE; } else{ printf("The input file %s not found\n",fname); } return success; } dd_boolean SetWriteFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; if ( (*f = fopen(fname, "w")) != NULL){ printf("output file %s is open\n",fname); success=dd_TRUE; } else{ printf("The output file %s cannot be opened\n",fname); } return success; } int main(int argc, char *argv[]) { dd_MatrixPtr M=NULL,M1=NULL,M2=NULL; dd_colrange j,s,d; dd_ErrorType err=dd_NoError; dd_rowset redset,impl_linset; dd_rowindex newpos; mytype val; dd_DataFileType inputfile; FILE *reading=NULL; dd_set_global_constants(); /* First, this must be called. */ dd_init(val); if (argc>1) strcpy(inputfile,argv[1]); if (argc<=1 || !SetInputFile(&reading,argv[1])){ dd_WriteProgramDescription(stdout); fprintf(stdout,"\ncddlib test program to apply Fourier's Elimination to an H-polyhedron.\n"); dd_SetInputFile(&reading,inputfile, &err); } if (err==dd_NoError) { M=dd_PolyFile2Matrix(reading, &err); } else { fprintf(stderr,"Input file not found\n"); goto _L99; } if (err!=dd_NoError) goto _L99; d=M->colsize; M2=dd_CopyMatrix(M); printf("How many variables to elminate? (max %ld): ",d-1); scanf("%ld",&s); if (s>0 && s < d){ for (j=1; j<=s; j++){ M1=dd_FourierElimination(M2, &err); printf("\nRemove the variable %ld. The resulting redundant system.\n",d-j); dd_WriteMatrix(stdout, M1); dd_MatrixCanonicalize(&M1, &impl_linset, &redset, &newpos, &err); if (err!=dd_NoError) goto _L99; fprintf(stdout, "\nRedundant rows: "); set_fwrite(stdout, redset); dd_FreeMatrix(M2); M2=M1; set_free(redset); set_free(impl_linset); free(newpos); } printf("\nNonredundant representation:\n"); dd_WriteMatrix(stdout, M1); } else { printf("Value out of range\n"); } dd_FreeMatrix(M); dd_FreeMatrix(M1); dd_clear(val); _L99:; /* if (err!=dd_NoError) dd_WriteErrorMessages(stderr,err); */ dd_free_global_constants(); /* At the end, this should be called. */ return 0; } /* end of fourier.c */ cddlib-0.94j/src/lcdd.c0000644000175000017500000000343213277651306011637 00000000000000/* lcdd.c: Main test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch and David Avis, avis@mutt.cs.mcgill.ca Version 0.94, August 4, 2005 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ /* This program behaves like lrs by David Avis. Usage: lcdd filein fileout lcdd filein output to stdout lcdd input stdin, output stdout This allows things like lcdd file | lcdd (should give a minimal rep of the input file on stdout) lcdd file | lrs lcdd < filein */ #include #include #include #include #include #include #include int main(int argc, char *argv[]) { dd_ErrorType err; dd_set_global_constants(); /* First, this must be called. */ dd_log=dd_TRUE; /* Output log */ if (argc > 2) dd_DDFile2File(argv[1],argv[2],&err); else if (argc > 1) dd_DDFile2File(argv[1],"**stdout",&err); else dd_DDFile2File("**stdin","**stdout",&err); return 0; } /* end of lcdd.c */ cddlib-0.94j/src/projection.c0000644000175000017500000000641513277651306013111 00000000000000/* projection.c: Test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94, July 27, 2005 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include dd_boolean SetInputFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; success=dd_FALSE; if ( ( *f = fopen(fname, "r") )!= NULL) { printf("input file %s is open\n", fname); success=dd_TRUE; } else{ printf("The input file %s not found\n",fname); } return success; } dd_boolean SetWriteFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; if ( (*f = fopen(fname, "w")) != NULL){ printf("output file %s is open\n",fname); success=dd_TRUE; } else{ printf("The output file %s cannot be opened\n",fname); } return success; } int main(int argc, char *argv[]) { dd_MatrixPtr M=NULL,M1=NULL; dd_colrange j,s,t,d; dd_ErrorType err=dd_NoError; dd_rowset redset,impl_linset; dd_colset delset; dd_rowindex newpos; mytype val; dd_DataFileType inputfile; FILE *reading=NULL; dd_set_global_constants(); /* First, this must be called. */ dd_init(val); if (argc>1) strcpy(inputfile,argv[1]); if (argc<=1 || !SetInputFile(&reading,argv[1])){ dd_WriteProgramDescription(stdout); fprintf(stdout,"\ncddlib test program to apply the Block Elimination to an H-polyhedron.\n"); dd_SetInputFile(&reading,inputfile, &err); } if (err==dd_NoError) { M=dd_PolyFile2Matrix(reading, &err); } else { fprintf(stderr,"Input file not found\n"); goto _L99; } if (err!=dd_NoError) goto _L99; d=M->colsize; set_initialize(&delset, d); printf("How many variables to elminate? (max %ld): ",d-1); scanf("%ld",&s); for (j=1; j<=s; j++){ printf("\n%ld th deletion variable): ",j); scanf("%ld",&t); set_addelem(delset, t+1); } M1=dd_BlockElimination(M, delset, &err); dd_WriteMatrix(stdout, M1); dd_MatrixCanonicalize(&M1,&impl_linset,&redset,&newpos,&err); if (err!=dd_NoError) goto _L99; fprintf(stdout, "\nRedundant rows: "); set_fwrite(stdout, redset); fprintf(stdout, "\n"); dd_WriteMatrix(stdout, M1); dd_FreeMatrix(M); dd_FreeMatrix(M1); set_free(delset); set_free(redset); set_free(impl_linset); free(newpos); _L99:; /* if (err!=dd_NoError) dd_WriteErrorMessages(stderr,err); */ dd_free_global_constants(); /* At the end, this should be called. */ return 0; } /* end of projection.c */ cddlib-0.94j/src/redcheck.c0000644000175000017500000000661113277651306012503 00000000000000/* redcheck.c: Test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94, April 4, 2005 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include dd_boolean SetInputFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; success=dd_FALSE; if ( ( *f = fopen(fname, "r") )!= NULL) { printf("input file %s is open\n", fname); success=dd_TRUE; } else{ printf("The input file %s not found\n",fname); } return success; } dd_boolean SetWriteFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; if ( (*f = fopen(fname, "w")) != NULL){ printf("output file %s is open\n",fname); success=dd_TRUE; } else{ printf("The output file %s cannot be opened\n",fname); } return success; } int main(int argc, char *argv[]) { dd_MatrixPtr M=NULL; dd_rowrange i,m; dd_ErrorType err=dd_NoError; dd_rowindex newpos; dd_rowset impl_linset,redset; time_t starttime, endtime; dd_DataFileType inputfile; FILE *reading=NULL; dd_set_global_constants(); /* First, this must be called. */ if (argc>1) strcpy(inputfile,argv[1]); if (argc<=1 || !SetInputFile(&reading,argv[1])){ dd_WriteProgramDescription(stdout); fprintf(stdout,"\ncddlib test program to check redundancy of an H/V-representation.\n"); dd_SetInputFile(&reading,inputfile, &err); } if (err==dd_NoError) { M=dd_PolyFile2Matrix(reading, &err); } else { fprintf(stderr,"Input file not found\n"); goto _L99; } if (err!=dd_NoError) goto _L99; m=M->rowsize; fprintf(stdout, "Canonicalize the matrix.\n"); time(&starttime); dd_MatrixCanonicalize(&M, &impl_linset, &redset, &newpos, &err); time(&endtime); if (err!=dd_NoError) goto _L99; fprintf(stdout, "Implicit linearity rows are:"); set_fwrite(stdout, impl_linset); fprintf(stdout, "\nRedundant rows are:"); set_fwrite(stdout, redset); fprintf(stdout, "\n"); fprintf(stdout, "Nonredundant representation:\n"); fprintf(stdout, "The new row positions are as follows (orig:new).\nEach redundant row has the new number 0.\nEach deleted duplicated row has a number nagative of the row that\nrepresents its equivalence class.\n"); for (i=1; i<=m; i++){ fprintf(stdout, " %ld:%ld",i, newpos[i]); } fprintf(stdout, "\n"); dd_WriteMatrix(stdout, M); dd_WriteTimes(stdout,starttime,endtime); set_free(redset); set_free(impl_linset); dd_FreeMatrix(M); free(newpos); _L99:; if (err!=dd_NoError) dd_WriteErrorMessages(stderr,err); return 0; } /* end of redcheck.c */ cddlib-0.94j/src/redexter.c0000644000175000017500000001021413277651306012547 00000000000000/* redexter.c: Test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94, November 21, 2005 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include dd_boolean SetInputFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; success=dd_FALSE; if ( ( *f = fopen(fname, "r") )!= NULL) { printf("input file %s is open\n", fname); success=dd_TRUE; } else{ printf("The input file %s not found\n",fname); } return success; } dd_boolean SetWriteFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; if ( (*f = fopen(fname, "w")) != NULL){ printf("output file %s is open\n",fname); success=dd_TRUE; } else{ printf("The output file %s cannot be opened\n",fname); } return success; } int main(int argc, char *argv[]) { dd_MatrixPtr M1=NULL,M2=NULL,M2row=NULL,M1plus=NULL; dd_colrange d1; dd_rowrange i,m1,m2,m1plus; dd_ErrorType err=dd_NoError,err1=dd_NoError,err2=dd_NoError; dd_rowset delset,rowset2; dd_Arow cvec; /* certificate */ time_t starttime, endtime; dd_DataFileType inputfile1,inputfile2; FILE *reading1=NULL,*reading2=NULL; dd_set_global_constants(); /* First, this must be called. */ dd_WriteProgramDescription(stdout); fprintf(stdout,"\ncddlib test program to check redundancy of additional data.\n"); if (argc>2){ strcpy(inputfile1,argv[1]); strcpy(inputfile2,argv[2]); } /* if (argc<=2){ fprintf(stdout,"\nUsage:\n redexter file1 file2\n"); goto _L99; } */ if (!SetInputFile(&reading1,argv[1])){ fprintf(stdout,"\nSpecify file1.\n"); dd_SetInputFile(&reading1,inputfile1, &err1); } if (!SetInputFile(&reading2,argv[2])){ fprintf(stdout,"\nSpecify the secondary file.\n"); dd_SetInputFile(&reading2,inputfile2, &err2); } if ((err1==dd_NoError) && (err2==dd_NoError)) { M1=dd_PolyFile2Matrix(reading1, &err1); M2=dd_PolyFile2Matrix(reading2, &err2); } else { fprintf(stderr,"Input file(s) not found\n"); goto _L99; } if ((err1!=dd_NoError) || (err2!=dd_NoError)) goto _L99; m1=M1->rowsize; m2=M2->rowsize; set_initialize(&delset,m2); m1plus=m1+1; if (M1->representation==dd_Generator){ d1=(M1->colsize)+1; } else { d1=M1->colsize; } dd_InitializeArow(d1,&cvec); fprintf(stdout, "\nThe first matrix\n"); dd_WriteMatrix(stdout, M1); fprintf(stdout, "\nThe second matrix\n"); dd_WriteMatrix(stdout, M2); printf("\nChecking whether each row of the second matrix is redundant w.r.t. the first.\n"); time(&starttime); for (i=1; i<=m2; i++){ set_initialize(&rowset2,m2); set_addelem(rowset2, i); set_compl(delset, rowset2); M2row=dd_MatrixSubmatrix(M2, delset); M1plus=dd_MatrixAppend(M1,M2row); if (dd_Redundant(M1plus, m1plus, cvec, &err)) { printf("%ld-th row: redundant\n", i); } else { printf("%ld-th row: non-redundant\n A certificate:", i); dd_WriteArow(stdout, cvec, d1); } dd_FreeMatrix(M1plus); dd_FreeMatrix(M2row); set_free(rowset2); } time(&endtime); dd_WriteTimes(stdout,starttime,endtime); set_free(delset); dd_FreeMatrix(M1); dd_FreeMatrix(M2); _L99:; if (err1!=dd_NoError) dd_WriteErrorMessages(stderr,err1); if (err2!=dd_NoError) dd_WriteErrorMessages(stderr,err2); return 0; } /* end of redexter.c */ cddlib-0.94j/src/redundancies.c0000644000175000017500000000637113277651306013402 00000000000000/* redcheck.c: Test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94, April 12, 2012 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include dd_boolean SetInputFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; success=dd_FALSE; if ( ( *f = fopen(fname, "r") )!= NULL) { printf("input file %s is open\n", fname); success=dd_TRUE; } else{ printf("The input file %s not found\n",fname); } return success; } dd_boolean SetWriteFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; if ( (*f = fopen(fname, "w")) != NULL){ printf("output file %s is open\n",fname); success=dd_TRUE; } else{ printf("The output file %s cannot be opened\n",fname); } return success; } int main(int argc, char *argv[]) { dd_MatrixPtr M=NULL,M2=NULL; dd_ErrorType err=dd_NoError; dd_rowset redrows,linrows; mytype val; dd_DataFileType inputfile; FILE *reading=NULL; time_t starttime,endtime; dd_set_global_constants(); /* First, this must be called. */ dd_init(val); if (argc>1) strcpy(inputfile,argv[1]); if (argc<=1 || !SetInputFile(&reading,argv[1])){ dd_WriteProgramDescription(stdout); fprintf(stdout,"\ncddlib test program to check redundancy of an H/V-representation.\n"); dd_SetInputFile(&reading,inputfile, &err); } if (err==dd_NoError) { M=dd_PolyFile2Matrix(reading, &err); } else { fprintf(stderr,"Input file not found\n"); goto _L99; } if (err!=dd_NoError) goto _L99; time(&starttime); fprintf(stdout, "redundant rows: "); redrows=dd_RedundantRows(M, &err); set_fwrite(stdout, redrows); M2=dd_MatrixSubmatrix(M, redrows); fprintf(stdout, "Implicit linearity (after removal of redundant rows): "); linrows=dd_ImplicitLinearityRows(M2, &err); if (M->representation==dd_Generator) fprintf(stdout," %ld ", set_card(linrows)); else fprintf(stdout," %ld ", set_card(linrows)); set_fwrite(stdout,linrows); set_uni(M2->linset, M2->linset, linrows); /* add the implicit linrows to the given linearity rows */ time(&endtime); printf("\nNonredundant representation (except for the linearity part):\n"); dd_WriteMatrix(stdout, M2); dd_WriteTimes(stdout,starttime,endtime); dd_FreeMatrix(M); dd_FreeMatrix(M2); _L99:; if (err!=dd_NoError) dd_WriteErrorMessages(stderr,err); return 0; } /* end of redcheck.c */ cddlib-0.94j/src/redundancies_clarkson.c0000644000175000017500000000643113277651306015273 00000000000000/* redcheck.c: Test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94, April 12, 2012 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include dd_boolean SetInputFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; success=dd_FALSE; if ( ( *f = fopen(fname, "r") )!= NULL) { printf("input file %s is open\n", fname); success=dd_TRUE; } else{ printf("The input file %s not found\n",fname); } return success; } dd_boolean SetWriteFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; if ( (*f = fopen(fname, "w")) != NULL){ printf("output file %s is open\n",fname); success=dd_TRUE; } else{ printf("The output file %s cannot be opened\n",fname); } return success; } int main(int argc, char *argv[]) { dd_MatrixPtr M=NULL,M2=NULL; dd_ErrorType err=dd_NoError; dd_rowset redrows,linrows; mytype val; dd_DataFileType inputfile; FILE *reading=NULL; time_t starttime,endtime; dd_set_global_constants(); /* First, this must be called. */ dd_init(val); if (argc>1) strcpy(inputfile,argv[1]); if (argc<=1 || !SetInputFile(&reading,argv[1])){ dd_WriteProgramDescription(stdout); fprintf(stdout,"\ncddlib test program to check redundancy of an H/V-representation\nby Clarkson's algorithm."); dd_SetInputFile(&reading,inputfile, &err); } if (err==dd_NoError) { M=dd_PolyFile2Matrix(reading, &err); } else { fprintf(stderr,"Input file not found\n"); goto _L99; } if (err!=dd_NoError) goto _L99; time(&starttime); fprintf(stdout, "redundant rows: "); redrows=dd_RedundantRowsViaShooting(M, &err); set_fwrite(stdout, redrows); M2=dd_MatrixSubmatrix(M, redrows); fprintf(stdout, "Implicit linearity (after removal of redundant rows): "); linrows=dd_ImplicitLinearityRows(M2, &err); if (M->representation==dd_Generator) fprintf(stdout," %ld ", set_card(linrows)); else fprintf(stdout," %ld ", set_card(linrows)); set_fwrite(stdout,linrows); set_uni(M2->linset, M2->linset, linrows); /* add the implicit linrows to the given linearity rows */ time(&endtime); printf("\nNonredundant representation (except for the linearity part):\n"); dd_WriteMatrix(stdout, M2); dd_WriteTimes(stdout,starttime,endtime); dd_FreeMatrix(M); dd_FreeMatrix(M2); _L99:; if (err!=dd_NoError) dd_WriteErrorMessages(stderr,err); return 0; } /* end of redcheck.c */ cddlib-0.94j/src/scdd.c0000644000175000017500000001063413277651306011650 00000000000000/* scdd.c: Main test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94, Aug. 4, 2005 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include dd_boolean SetInputFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; success=dd_FALSE; if ( ( *f = fopen(fname, "r") )!= NULL) { printf("input file %s is open\n", fname); success=dd_TRUE; } else{ printf("The input file %s not found\n",fname); } return success; } dd_boolean SetWriteFile(FILE **f, dd_DataFileType fname) { dd_boolean success=dd_FALSE; if ( (*f = fopen(fname, "w")) != NULL){ printf("output file %s is open\n",fname); success=dd_TRUE; } else{ printf("The output file %s cannot be opened\n",fname); } return success; } int main(int argc, char *argv[]) { dd_PolyhedraPtr poly; dd_LPPtr lp; dd_MatrixPtr M,A; dd_ErrorType err=dd_NoError; dd_DataFileType inputfile,outputfile; FILE *reading=NULL, *writing; dd_set_global_constants(); /* First, this must be called. */ dd_log=dd_TRUE; /* output log */ if (argc>1) strcpy(inputfile,argv[1]); if (argc<=1 || !SetInputFile(&reading,argv[1])){ dd_WriteProgramDescription(stdout); dd_SetInputFile(&reading,inputfile, &err); } if (err==dd_NoError) { M=dd_PolyFile2Matrix(reading, &err); } else { printf("Input file not found\n"); goto _L99; } if (err!=dd_NoError) goto _L99; if (M->objective==dd_LPnone){ /* do representation conversion */ poly=dd_DDMatrix2Poly2(M, dd_LexMin, &err); /* equivalent to poly=dd_DDMatrix2Poly2(M, &err) when the second argument is set to dd_LexMin. */ if (err!=dd_NoError) goto _L99; dd_SetWriteFileName(inputfile, outputfile, 'o', poly->representation); SetWriteFile(&writing, outputfile); dd_WriteProgramDescription(writing); dd_WriteRunningMode(writing, poly); switch (poly->representation) { case dd_Inequality: fprintf(writing, "ext_file: Generators\n"); A=dd_CopyGenerators(poly); dd_WriteMatrix(writing,A); dd_FreeMatrix(A); break; case dd_Generator: fprintf(writing, "ine_file: Inequalities\n"); A=dd_CopyInequalities(poly); dd_WriteMatrix(writing,A); dd_FreeMatrix(A); break; default: break; } dd_WriteDDTimes(writing,poly); fclose(writing); dd_SetWriteFileName(inputfile, outputfile, 'a', poly->representation); SetWriteFile(&writing, outputfile); dd_WriteAdjacency(writing,poly); fclose(writing); dd_SetWriteFileName(inputfile, outputfile, 'j', poly->representation); SetWriteFile(&writing, outputfile); dd_WriteInputAdjacency(writing,poly); fclose(writing); dd_SetWriteFileName(inputfile, outputfile, 'i', poly->representation); SetWriteFile(&writing, outputfile); dd_WriteIncidence(writing,poly); fclose(writing); dd_SetWriteFileName(inputfile, outputfile, 'n', poly->representation); SetWriteFile(&writing, outputfile); dd_WriteInputIncidence(writing,poly); fclose(writing); dd_FreeMatrix(M); dd_FreePolyhedra(poly); } else { /* solve the LP */ lp=dd_Matrix2LP(M, &err); if (err!=dd_NoError) goto _L99; dd_LPSolve(lp,dd_DualSimplex,&err); if (err!=dd_NoError) goto _L99; dd_SetWriteFileName(inputfile, outputfile, 's', M->representation); SetWriteFile(&writing, outputfile); dd_WriteLPResult(writing, lp, err); fclose(writing); dd_FreeMatrix(M); dd_FreeLPData(lp); } _L99: if (err!=dd_NoError) dd_WriteErrorMessages(stdout,err); return 0; } /* end of simplecdd.c */ cddlib-0.94j/src/testcdd1.c0000644000175000017500000000550313277651306012445 00000000000000/* testcdd1.c: Main test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.93, July 9, 2003 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include dd_boolean SetInputFile(FILE **f, char *fname) { dd_boolean success=dd_FALSE; if ( ( *f = fopen(fname, "r") )!= NULL) { printf("input file %s is open\n", fname); success=dd_TRUE; } else{ printf("The input file %s not found\n",fname); } return success; } int main(int argc, char *argv[]) { dd_PolyhedraPtr poly; dd_MatrixPtr M; dd_ErrorType err; dd_DataFileType inputfile; FILE *reading=NULL; dd_MatrixPtr A, G; dd_SetFamilyPtr GI,GA; dd_set_global_constants(); /* First, this must be called. */ dd_SetInputFile(&reading,inputfile, &err); if (err==dd_NoError) { M=dd_PolyFile2Matrix(reading, &err); } else { printf("Input file not found\n"); goto _L99; } if (err==dd_NoError) { poly=dd_DDMatrix2Poly(M, &err); /* compute the second representation */ if (err!=dd_NoError) { dd_WriteErrorMessages(stdout,err); goto _L99; } A=dd_CopyInequalities(poly); G=dd_CopyGenerators(poly); GI=dd_CopyIncidence(poly); GA=dd_CopyAdjacency(poly); if (poly->representation==dd_Inequality) { printf("\nInput is an H-representation\n"); } else { printf("\nInput is a V-representation\n"); } dd_WriteMatrix(stdout,A); printf("\n"); dd_WriteMatrix(stdout,G); printf("\nHere is the incidence list:\n"); dd_WriteSetFamily(stdout,GI); printf("\nHere is the adjacency list:\n"); dd_WriteSetFamily(stdout,GA); dd_FreePolyhedra(poly); /* This is to remove all the space allocated for poly. */ dd_FreeMatrix(M); dd_FreeMatrix(A); dd_FreeMatrix(G); dd_FreeSetFamily(GI); dd_FreeSetFamily(GA); } else { dd_WriteErrorMessages(stdout,err); } _L99: dd_free_global_constants(); /* At the end, this must be called. */ return 0; } /* end of testcdd1.c */ cddlib-0.94j/src/testcdd2.c0000644000175000017500000000703113277651306012444 00000000000000/* testcdd2.c: Main test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94i, March 9, 2018 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include int main(int argc, char *argv[]) { dd_PolyhedraPtr poly; dd_MatrixPtr A, B, G; dd_rowrange m; dd_colrange d; dd_ErrorType err; dd_set_global_constants(); /* First, this must be called to use cddlib. */ m=4; d=3; A=dd_CreateMatrix(m,d); dd_set_si(A->matrix[0][0],7); dd_set_si(A->matrix[0][1],-3); dd_set_si(A->matrix[0][2], 0); dd_set_si(A->matrix[1][0],7); dd_set_si(A->matrix[1][1], 0); dd_set_si(A->matrix[1][2],-3); dd_set_si(A->matrix[2][0],1); dd_set_si(A->matrix[2][1], 1); dd_set_si(A->matrix[2][2], 0); dd_set_si(A->matrix[3][0],1); dd_set_si(A->matrix[3][1], 0); dd_set_si(A->matrix[3][2], 1); /* 7 - 3 x1 >= 0 7 - 3x2 >= 0 1 + x1 >= 0 1 + x2 >= 0 */ A->representation=dd_Inequality; poly=dd_DDMatrix2Poly(A, &err); /* compute the second (generator) representation */ if (err!=dd_NoError) goto _L99; printf("\nInput is H-representation:\n"); G=dd_CopyGenerators(poly); dd_WriteMatrix(stdout,A); printf("\n"); dd_WriteMatrix(stdout,G); dd_FreeMatrix(A); dd_FreeMatrix(G); /* Add inequalities: 7 + x1 -3x2 = 0 7 - 3x1 + x2 >= 0 */ m=2; B=dd_CreateMatrix(m,d); dd_set_d(B->matrix[0][0],7.0); dd_set_d(B->matrix[0][1], 1.0); dd_set_d(B->matrix[0][2],-3.0); dd_set_d(B->matrix[1][0],7.0); dd_set_d(B->matrix[1][1],-3.0); dd_set_d(B->matrix[1][2], 1.0); set_addelem(B->linset,1); /* setting the first to be equality */ /* Above dd_set_d is used instead of dd_set_si. This might be useful when your input is float. Yet, 0.33333 won't be converted to 1/3 when -DGMPRATIONAL flag is used. Better alternative might be dd_set_si2 function to assign a rational number, e.g. dd_set_si2(B->matrix[0][0],1,3). Use these three assignment functions according to your need. These functions are defined in cddmp.h and cddmp.c. */ dd_DDInputAppend(&poly,B, &err); /* append the two inequalities and compute the generators */ if (err!=dd_NoError) goto _L99; A=dd_CopyInequalities(poly); /* get the inequalities (=input). */ G=dd_CopyGenerators(poly); /* get the generators (=output). */ printf("\nNew H-representation with added inequalities:\n"); dd_WriteMatrix(stdout,A); printf("\n"); dd_WriteMatrix(stdout,G); dd_FreeMatrix(A); dd_FreeMatrix(B); dd_FreeMatrix(G); dd_FreePolyhedra(poly); _L99: if (err!=dd_NoError) dd_WriteErrorMessages(stdout,err); dd_free_global_constants(); /* At the end, this must be called. */ return 0; } /* end of testcdd2.c */ cddlib-0.94j/src/testlp1.c0000644000175000017500000000774613277651306012341 00000000000000/* testlp1.c: Main test program to call the cdd lp library written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94, August 4, 2005 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include FILE *reading, *writing; int main(int argc, char *argv[]) { /* The original LP data m x n matrix = | b -A | | c0 c^T |, where the LP to be solved is to maximize c^T x + c0 subj. to A x <= b. */ dd_ErrorType error=dd_NoError; dd_MatrixPtr M,G; dd_LPSolverType solver=dd_DualSimplex; /* either DualSimplex or CrissCross */ dd_LPPtr lp; /* pointer to LP data structure that is not visible by user. */ dd_LPSolutionPtr lps1; dd_colrange j; dd_rowset ImL, Lbasis; dd_PolyhedraPtr poly; dd_DataFileType inputfile; int ans; dd_set_global_constants(); /* First, this must be called once to use cddlib. */ printf("Welcome to cddlib %s\n",dd_DDVERSION); while (error==dd_NoError) { /* Input an LP using the cdd library */ dd_SetInputFile(&reading,inputfile,&error); if (error!=dd_NoError) goto _L99; M=dd_PolyFile2Matrix(reading, &error); if (error!=dd_NoError) goto _L99; /* dd_WriteMatrix(stdout, M); */ lp=dd_Matrix2LP(M, &error); if (error!=dd_NoError) goto _L99; /* Solve the LP by cdd LP solver. */ printf("\n--- Running dd_LPSolve ---\n"); dd_LPSolve(lp,solver,&error); if (error!=dd_NoError) goto _L99; /* Write the LP solutions by cdd LP reporter. */ dd_WriteLPResult(stdout, lp, error); /* Generate all vertices of the feasible reagion */ printf("\nDo you want to compute the generator representation (y/n)? "); ans=getchar(); if (ans=='y' || ans=='Y'){ poly=dd_DDMatrix2Poly(M, &error); G=dd_CopyGenerators(poly); printf("\nGenerators (All the vertices of the feasible region if bounded.)\n"); dd_WriteMatrix(stdout,G); /* Free allocated spaces. */ dd_FreeMatrix(G); dd_FreePolyhedra(poly); } /* Find an interior point with cdd LP library. */ printf("\nDo you want to find a relative interior point (y/n)? "); ans=getchar(); ans=getchar(); if (ans=='y' || ans=='Y'){ printf("\n--- Running dd_FindRelativeInteriorPoint ---\n"); dd_FindRelativeInterior(M, &ImL, &Lbasis, &lps1, &error); if (error!=dd_NoError) goto _L99; /* Write an interior point. */ if (dd_Positive(lps1->optvalue)){ printf("A relative interior point found: ("); for (j=1; j <(lps1->d)-1; j++) { dd_WriteNumber(stdout,lps1->sol[j]); } printf(")\nThe dimension of the region = "); printf("%ld\n",M->colsize-set_card(Lbasis)-1); if (set_card(ImL)>0) { printf("Implicit equations: "); set_write(ImL); printf("\n"); } } else { printf("The feasible region is empty.\n"); } dd_FreeLPSolution(lps1); set_free(ImL); set_free(Lbasis); } /* Free allocated spaces. */ dd_FreeMatrix(M); dd_FreeLPData(lp); } _L99:; fclose(reading); if (error!=dd_NoError) dd_WriteErrorMessages(stdout, error); dd_free_global_constants(); /* At the end, this should be called. */ return 0; } /* end of testlp1.c */ cddlib-0.94j/src/testlp2.c0000644000175000017500000000661113277651306012330 00000000000000/* testlp2.c: Main test program to call the cdd lp library written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.93a, July 23, 2003 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include FILE *reading, *writing; int main(int argc, char *argv[]) { /* The original LP data m x n matrix = | b -A | | c0 c^T |, where the LP to be solved is to maximize c^T x + c0 subj. to A x <= b. */ dd_ErrorType error=dd_NoError; dd_LPSolverType solver; /* either DualSimplex or CrissCross */ dd_LPPtr lp; dd_rowrange m; dd_colrange n; dd_NumberType numb; dd_MatrixPtr A; dd_ErrorType err; /* Define an LP */ /* max 0 + 3 x1 + 4 x2 s.t. 4/3 - 2 x1 - x2 >= 0 2/3 - x2 >= 0 x1 >= 0 x2 >= 0 For this LP, we set up a matrix A as 4 x 3 matrix and a row vector: 4/3 -2 -1 <- 1st constraint 2/3 0 -1 0 1 0 0 0 1 <- last constraint 0 3 4 <- objective row */ dd_set_global_constants(); numb=dd_Real; /* set a number type */ m=4; /* number of rows */ n=3; /* number of columns */ A=dd_CreateMatrix(m,n); dd_set_si2(A->matrix[0][0],4,3); dd_set_si(A->matrix[0][1],-2); dd_set_si(A->matrix[0][2],-1); dd_set_si2(A->matrix[1][0],2,3); dd_set_si(A->matrix[1][1], 0); dd_set_si(A->matrix[1][2],-1); dd_set_si(A->matrix[2][0],0); dd_set_si(A->matrix[2][1], 1); dd_set_si(A->matrix[2][2], 0); dd_set_si(A->matrix[3][0],0); dd_set_si(A->matrix[3][1], 0); dd_set_si(A->matrix[3][2], 1); dd_set_si(A->rowvec[0],0); dd_set_si(A->rowvec[1], 3); dd_set_si(A->rowvec[2], 4); A->objective=dd_LPmax; lp=dd_Matrix2LP(A, &err); /* load an LP */ if (lp==NULL) goto _L99; /* Print the LP. */ printf("\n--- LP to be solved ---\n"); dd_WriteLP(stdout, lp); /* Solve the LP by cdd LP solver. */ printf("\n--- Running dd_LPSolve ---\n"); solver=dd_DualSimplex; dd_LPSolve(lp, solver, &error); /* Solve the LP */ if (error!=dd_NoError) goto _L99; /* Write the LP solutions by cdd LP reporter. */ dd_WriteLPResult(stdout, lp, error); /* Free allocated spaces. */ dd_FreeLPData(lp); dd_FreeMatrix(A); _L99:; if (error!=dd_NoError) dd_WriteErrorMessages(stdout, error); dd_free_global_constants(); /* At the end, this should be called. */ return 0; } /* end of testlp2.c */ /* The dual LP is min 0 + 4 y1 + 2 y2 s.t. -3 + 2 y1 >= 0 -4 y1 + y2 >= 0 y1 >= 0 y2 >= 0 */ cddlib-0.94j/src/testlp3.c0000644000175000017500000001034713277651306012332 00000000000000/* testlp3.c: Main test program to call the cdd lp library written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.93b, October 30, 2003 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include FILE *reading, *writing; void SetWriteFile(FILE **f) { char *fname; fname="testlp.out"; *f = fopen(fname, "w"); printf("file %s is open\n",fname); } int main(int argc, char *argv[]) { /* The original LP data m x n matrix = | b -A | | c0 c^T |, where the LP to be solved is to maximize c^T x + c0 subj. to A x <= b. */ dd_ErrorType err=dd_NoError; dd_LPSolverType solver=dd_DualSimplex; /* either DualSimplex or CrissCross */ dd_LPPtr lp,lp1; /* pointer to LP data structure that is not visible by user. */ dd_LPSolutionPtr lps,lps1; /* pointer to LP solution data that is visible by user. */ dd_MatrixPtr M; dd_colrange j; dd_DataFileType inputfile; dd_set_global_constants(); printf("\n--- Solving an LP with dd_LPSolve, and Finding an Interior Point ---\n"); /* Input an LP using the cdd library */ dd_SetInputFile(&reading,inputfile,&err); if (err!=dd_NoError) goto _L99; M=dd_PolyFile2Matrix(reading, &err); if (err!=dd_NoError) goto _L99; /* dd_WriteMatrix(stdout, M); */ lp=dd_Matrix2LP(M, &err); if (err!=dd_NoError) goto _L99; /* Solve the LP by cdd LP solver. */ printf("\n--- Running dd_LPSolve ---\n"); solver=dd_DualSimplex; dd_LPSolve(lp, solver, &err); /* Solve the LP */ if (err!=dd_NoError) goto _L99; /* Write the LP solutions by cdd LP reporter. */ /* dd_WriteLPResult(stdout, lp, err); */ /* dd_WriteLPResult(writing, lp, err); */ /* One can access the solutions by loading them. See dd_WriteLPResult for outputing the results correctly. */ lps=dd_CopyLPSolution(lp); if (lps->LPS==dd_Optimal){ printf("Optimal solution found:\n"); printf(" primal_solution\n"); for (j=1; jd; j++) { printf(" %3ld : ",j); dd_WriteNumber(stdout,lps->sol[j]); printf("\n"); } printf(" dual_solution\n"); for (j=1; jd; j++){ if (lps->nbindex[j+1]>0) { printf(" %3ld : ",lps->nbindex[j+1]); dd_WriteNumber(stdout,lps->dsol[j]); printf("\n"); } } printf(" optimal_value : "); dd_WriteNumber(stdout,lps->optvalue); printf("\n"); } /* Find an interior point with cdd LP library. */ printf("\n--- Running dd_FindInteriorPoint ---\n"); lp1=dd_MakeLPforInteriorFinding(lp); printf("The LP to be solved for finding an interior point:\n"); dd_WriteLP(stdout,lp1); dd_LPSolve(lp1,solver,&err); if (err!=dd_NoError) goto _L99; /* Write an interior point. */ lps1=dd_CopyLPSolution(lp1); if (dd_Positive(lps1->optvalue)){ printf("\nAn interior point found: ("); for (j=1; j <(lps1->d)-1; j++) { dd_WriteNumber(stdout,lps1->sol[j]); } printf(")\n"); } if (dd_Negative(lps1->optvalue)) printf("\nThe feasible region is empty.\n"); if (dd_EqualToZero(lps1->optvalue)) printf("\nThe feasible region is nonempty but has no interior point.\n"); /* Free allocated spaces. */ dd_FreeLPSolution(lps); dd_FreeLPData(lp); dd_FreeLPSolution(lps1); dd_FreeLPData(lp1); dd_FreeMatrix(M); _L99:; if (err!=dd_NoError) dd_WriteErrorMessages(stdout, err); dd_free_global_constants(); /* At the end, this should be called. */ return 0; } /* end of testlp3.c */ cddlib-0.94j/src/testshoot.c0000644000175000017500000001076613277651306012775 00000000000000/* testshoot.c: Main test program to call the cdd lp library written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.92, August 24, 2001 Standard ftp site: ftp.ifor.math.ethz.ch, Directory: pub/fukuda/cdd */ /* This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #include #include #include #include #include #include #include FILE *reading, *writing; void SetWriteFile(FILE **f) { char *fname; fname="testlp.out"; *f = fopen(fname, "w"); printf("file %s is open\n",fname); } int main(int argc, char *argv[]) { /* The original LP data m x n matrix = | b -A | | c0 c^T |, where the LP to be solved is to maximize c^T x + c0 subj. to A x <= b. */ dd_ErrorType err=dd_NoError; dd_LPSolverType solver=dd_DualSimplex; /* either DualSimplex or CrissCross */ dd_LPPtr lp,lp1; /* pointer to LP data structure that is not visible by user. */ dd_LPSolutionPtr lps1; /* pointer to LP solution data that is visible by user. */ dd_rowrange i,m; dd_colrange d; dd_NumberType numb; dd_MatrixPtr A; dd_Arow r; dd_colrange j; int iter; /* Define an LP */ /* max 0 + x1 + x2 s.t. 1 - x2 >= 0 1 - x1 >= 0 x1 >= 0 x2 >= 0 2 - x1 - x2 >= 0 For this LP, we set up a matrix A as 4 x 3 matrix and a row vector: 1 0 -1 <- 1st constraint 1 -1 0 0 1 0 0 0 1 2 -1 -1 <- last constraint 0 1 1 <- objective row */ dd_set_global_constants(); numb=dd_Real; /* set a number type */ m=5; /* number of rows */ d=3; /* number of columns */ A=dd_CreateMatrix(m,d); dd_set_si(A->matrix[0][0],1); dd_set_si(A->matrix[0][1], 0); dd_set_si(A->matrix[0][2],-1); dd_set_si(A->matrix[1][0],1); dd_set_si(A->matrix[1][1],-1); dd_set_si(A->matrix[1][2], 0); dd_set_si(A->matrix[2][0],0); dd_set_si(A->matrix[2][1], 1); dd_set_si(A->matrix[2][2], 0); dd_set_si(A->matrix[3][0],0); dd_set_si(A->matrix[3][1], 0); dd_set_si(A->matrix[3][2], 1); dd_set_si(A->matrix[4][0],2); dd_set_si(A->matrix[4][1],-1); dd_set_si(A->matrix[4][2],-1); dd_set_si(A->rowvec[0],0); dd_set_si(A->rowvec[1], 1); dd_set_si(A->rowvec[2], 1); A->objective=dd_LPmax; lp=dd_Matrix2LP(A, &err); /* load an LP */ if (lp==NULL) goto _L99; /* Find an interior point with cdd LP library. */ printf("\n--- Running dd_FindInteriorPoint ---\n"); lp1=dd_MakeLPforInteriorFinding(lp); dd_LPSolve(lp1,solver,&err); if (err!=dd_NoError) goto _L99; /* Write an interior point. */ lps1=dd_CopyLPSolution(lp1); if (dd_Positive(lps1->optvalue)){ printf("An interior point found: ("); for (j=1; j <(lps1->d)-1; j++) { dd_WriteNumber(stdout,lps1->sol[j]); } printf(")\n"); } if (dd_Negative(lps1->optvalue)) printf("The feasible region is empty.\n"); if (dd_EqualToZero(lps1->optvalue)) printf("The feasible region is nonempty but has no interior point.\n"); /* Do shootings from the interior point. */ dd_InitializeArow(d, &r); printf("Shooting test from the point:"); dd_WriteArow(stdout,lps1->sol,d); printf("\n"); for (iter=1; iter<=3; iter++){ dd_set_si(r[0],0); dd_set_si(r[1], 9998+iter); dd_set_si(r[2], 10000); printf("Shooting to the direction:"); dd_WriteArow(stdout,r,d); printf("\n"); i=dd_RayShooting(A, lps1->sol, r); printf("The first hyperplane hit: %ld.\n\n", i); } /* Free allocated spaces. */ dd_FreeLPData(lp); dd_FreeLPSolution(lps1); dd_FreeLPData(lp1); dd_FreeArow(d, r); dd_FreeMatrix(A); _L99:; if (err!=dd_NoError) dd_WriteErrorMessages(stdout, err); dd_free_global_constants(); /* At the end, this should be called. */ return 0; } /* end of testlp3.c */