pax_global_header00006660000000000000000000000064120677025110014513gustar00rootroot0000000000000052 comment=1f762dcdeeb863012e7c5d5f4086edc379230bfe cddlib-094g/000077500000000000000000000000001206770251100127615ustar00rootroot00000000000000cddlib-094g/.DS_Store000066400000000000000000000140041206770251100144430ustar00rootroot00000000000000Bud1i0blobZdevfwi0blobZ[)icnvdevfwswlong¬devfwvhshor©srcfwi0blobicnvsrcfwswlongÍ  @€ @€ @€ @ EDSDB `€ @€ @€ @cddlib-094g/.DS_Store.1000077500000000000000000000140041206770251100146050ustar00rootroot00000000000000Bud1i0blobdevfwi0blobicnvdevfwswlong†docfwi0blobicnvdocfwswlongÃsrcfwi0blobicnvsrcfwswlong€  @€ @€ @€ @ EDSDB `€ @€ @€ @cddlib-094g/AUTHORS000066400000000000000000000007521206770251100140350ustar00rootroot00000000000000Current Address: Komei Fukuda Department of Mathematics, and Institute of Theoretical Computer Science ETH Zurich (CAB G 33.3) Universitaetsstrasse 6 CH-8092 Zurich, Switzerland Tel +41-44-632-4023, Fax +41-44-632-1063 http://www.ifor.math.ethz.ch/~fukuda/ Previous Addrss: Komei Fukuda School of Computer Science McGill University McConnel Engineering Building 3480 University Street Montreal, Quebec Canada H3A 2A7 email: fukuda@cs.mcgill.ca fax: +1-514-398-3883 cddlib-094g/COPYING000066400000000000000000000430761206770251100140260ustar00rootroot00000000000000 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-094g/ChangeLog000066400000000000000000000631471206770251100145460ustar00rootroot00000000000000libcdd, cdd & cdd+ HISTORY file (as of March 23, 2012) *** libcdd version (date) / changes *** 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-094g/ChangeLog (Autosaved)000066400000000000000000000625011206770251100165740ustar00rootroot00000000000000libcdd, cdd & cdd+ HISTORY file (as of February 7, 2008) *** libcdd version (date) / changes *** 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-094g/HISTORY000077700000000000000000000000001206770251100156122ChangeLogustar00rootroot00000000000000cddlib-094g/INSTALL000066400000000000000000000262221206770251100140160ustar00rootroot00000000000000Installation Instructions ************************* Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. This file is free documentation; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. Basic Installation ================== Briefly, the shell commands `./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. 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. 4. Type `make install' to install the programs and any data files and documentation. 5. 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. 6. Often, you can also type `make uninstall' to remove the installed files again. 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 `..'. 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'. 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. 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'. Optional Features ================= 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. 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" and if that doesn't work, install pre-built binaries of GCC for HP-UX. 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" 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 bug. Until the bug is fixed you can use this workaround: CONFIG_SHELL=/bin/bash /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-094g/Makefile.am000066400000000000000000000014461206770251100150220ustar00rootroot00000000000000############################################## # Site customizations: #--------------------------------------------- # where is gmp? #--------------------------------------------- # export gmpdir := $(PWD)/../gmp-4.1 export gmpdir := /usr/local #--------------------------------------------- # where is gmp lib? export gmplibdir = $(gmpdir)/lib #--------------------------------------------- # where is gmp include? #--------------------------------------------- # export gmpincludedir = $(gmpdir) export gmpincludedir = $(gmpdir)/include #--------------------------------------------- # End of site customization. ############################################## SUBDIRS = lib-src src lib-src-gmp src-gmp EXTRA_DIST = examples/*.* examples-ine/*.* examples-ine3d/*.* examples-ml/*.* examples-ext/*.* cddlib-094g/Makefile.in000066400000000000000000000466761206770251100150510ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 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@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@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 = . DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in $(top_srcdir)/configure AUTHORS COPYING \ ChangeLog INSTALL NEWS config.guess config.sub depcomp \ install-sh ltmain.sh missing mkinstalldirs ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ configure.lineno config.status.lineno mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_CLEAN_FILES = SOURCES = DIST_SOURCES = RECURSIVE_TARGETS = all-recursive check-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 uninstall-recursive RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive ETAGS = etags CTAGS = ctags DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ { test ! -d $(distdir) \ || { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \ && rm -fr $(distdir); }; } DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best distuninstallcheck_listfiles = find . -type f -print distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ 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@ MAKEINFO = @MAKEINFO@ 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_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_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@ 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@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ 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@ #--------------------------------------------- # End of site customization. ############################################## SUBDIRS = lib-src src lib-src-gmp src-gmp EXTRA_DIST = examples/*.* examples-ine/*.* examples-ine3d/*.* examples-ml/*.* examples-ext/*.* all: all-recursive .SUFFIXES: am--refresh: @: $(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) @for dep in $?; do \ case '$(am__configure_deps)' in \ *$$dep*) \ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu '; \ cd $(srcdir) && $(AUTOMAKE) --gnu \ && exit 0; \ exit 1;; \ esac; \ done; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu Makefile .PRECIOUS: 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) cd $(srcdir) && $(AUTOCONF) $(ACLOCAL_M4): $(am__aclocal_m4_deps) cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs distclean-libtool: -rm -f libtool config.lt # 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. $(RECURSIVE_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ list='$(SUBDIRS)'; 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; \ (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" $(RECURSIVE_CLEAN_TARGETS): @failcom='exit 1'; \ for f in x $$MAKEFLAGS; do \ case $$f in \ *=* | --[!k]*);; \ *k*) failcom='fail=yes';; \ esac; \ done; \ dot_seen=no; \ case "$@" in \ distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ *) list='$(SUBDIRS)' ;; \ esac; \ rev=''; for subdir in $$list; do \ if test "$$subdir" = "."; then :; else \ rev="$$subdir $$rev"; \ fi; \ done; \ rev="$$rev ."; \ target=`echo $@ | sed s/-recursive//`; \ for subdir in $$rev; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ local_target="$$target-am"; \ else \ local_target="$$target"; \ fi; \ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ || eval $$failcom; \ done && test -z "$$fail" tags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ done ctags-recursive: list='$(SUBDIRS)'; for subdir in $$list; do \ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ 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 || \ tags="$$tags $$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags 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 $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$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 \ test -d "$(distdir)/$$subdir" \ || $(MKDIR_P) "$(distdir)/$$subdir" \ || exit 1; \ distdir=`$(am__cd) $(distdir) && pwd`; \ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \ (cd $$subdir && \ $(MAKE) $(AM_MAKEFLAGS) \ top_distdir="$$top_distdir" \ distdir="$$distdir/$$subdir" \ am__remove_distdir=: \ am__skip_length_check=: \ distdir) \ || exit 1; \ fi; \ done -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -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) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__remove_distdir) dist-bzip2: distdir tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 $(am__remove_distdir) dist-lzma: distdir tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma $(am__remove_distdir) dist-tarZ: distdir tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z $(am__remove_distdir) dist-shar: distdir shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz $(am__remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) $(am__remove_distdir) dist dist-all: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz $(am__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*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\ *.tar.lzma*) \ unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\ *.tar.Z*) \ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ *.shar.gz*) \ GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\ *.zip*) \ unzip $(distdir).zip ;;\ esac chmod -R a-w $(distdir); chmod a+w $(distdir) mkdir $(distdir)/_build mkdir $(distdir)/_inst chmod a-w $(distdir) dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ && cd $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(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 $(am__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: @cd $(distuninstallcheck_dir) \ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ || { 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 installdirs: installdirs-recursive installdirs-am: 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: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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 info: info-recursive info-am: install-data-am: install-dvi: install-dvi-recursive install-exec-am: install-html: install-html-recursive install-info: install-info-recursive install-man: install-pdf: install-pdf-recursive install-ps: install-ps-recursive 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: .MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \ install-strip .PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ all all-am am--refresh check check-am clean clean-generic \ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ dist-gzip dist-lzma dist-shar dist-tarZ 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-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-recursive \ uninstall uninstall-am ############################################## # Site customizations: #--------------------------------------------- # where is gmp? #--------------------------------------------- # export gmpdir := $(PWD)/../gmp-4.1 export gmpdir := /usr/local #--------------------------------------------- # where is gmp lib? export gmplibdir = $(gmpdir)/lib #--------------------------------------------- # where is gmp include? #--------------------------------------------- # export gmpincludedir = $(gmpdir) export gmpincludedir = $(gmpdir)/include # 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-094g/NEWS000077700000000000000000000000001206770251100145372HISTORYustar00rootroot00000000000000cddlib-094g/README000066400000000000000000000143561206770251100136520ustar00rootroot000000000000002012-03-25 (March 25, 2012) ----------------------------------------------- C-Library cddlib (version 0.94g) README FILE ----------------------------------------------- 1. 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 R^d given by a system of linear inequalities: P = { x=(x1, ..., xd)^T : b - A x >= 0 } where A is a given m x 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 cdd. Also, cdd can solve a linear programming problem, i.e. a problem of maximizing and minimizing a linear function over P. The version 0.94 is the seventh release of libcdd. New functions added in this release include dd_MatrixCanonicalize, dd_FindRelativeInterior and dd_ExistsRestrictedFace. These functions are LP-based and should be reasonably efficient. The sample programs such as redcheck.c, testlp1.c and allfaces.c show how these functions can be used to remove redundancies, to compute the dimension and all faces of an H-polyhedron. In addition to the new functionalities, many small bugs have been fixed. For example, the mishandling of empty H-polyhedra has been fixed for the representation conversion. If you find some problems or bugs, please kindly report them to fukuda@ifor.math.ethz.ch. Please read README.whatsnew for the changes over the last release. The documentation (cddlibman.tex) is still incomplete but contains descriptions of the most important functions. Please look at the examples, testcdd*.c, testlp*.c, simplecdd.c, lcdd.c, redcheck,c for how the library functions can be used in user's C-codes. 2. 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. 3. 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 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: #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. 4. The cddlib package is in "tar"ed and "gzip"ed format with name cddlib-***.tar.gz, where *** is the version number. The standard download site for the package is web site : http://www.ifor.math.ethz.ch/~fukuda/cdd_home/index.html file name: cddlib-***.tar.gz In order to unpack the package in a standard unix environment, type % tar xvfz cddlib-***.tar.gz where *** must be replaced by the appropriate version number, and % is a unix prompt. For compilation of libcdd, go to the cddlib top directorycddlib and follow the general instruction of autoconf. In generic unix/linux environment, use "./configure" and "make". To enforce a certain compiler to be used, specify it as CXX=g++ ./configure The default compiler is gcc. Note that one must install GMP-4.* (or higher) first. For compilation of MathLink programs, you need a binary "mprep", MathLink library "libML.a" and include file "mathlink.h" which come with Mathematica. I have tested for Mathematica 4.1 and 3.* on MacOSX and Linux. This part is not "autoconf"igured and thus one needs to edit Makefile in the src-mathlink and src-mathlink2 subdirectories. To install the library in public directory of unix environment, just type "make install". The default installation directory is /usr/local. If you want to select other places, use "./configure --prefix=" to configure with your favorite . One might have to make the files publicly readable by chmod. Once the files are properly installed, any user can use compile one's own code (e.g. testcdd1.c) and link it with libcdd by % gcc -I/usr/local/include -L/usr/local/lib testcdd1.c -lcdd or (with GMP rational arithmetic) % gcc -I/usr/local/include -L/usr/local/lib -DGMPRATIONAL testcdd1.c -lcddgmp -lgmp 5. cddlib comes with a MathLink version of cddlib that can be called from Mathematica (tested for Mathematica 2.2, 3.0, 4.1, 5.1). A few Mathematica notebooks are included to explain how one can use this program "cddmathlink" from Mathematica to manipulate polytopes. Please check the files, cddml-notbook.ma, cddml-PolytopeSkeleton.ma, cddml-DietProblem.ma, and cddml-Zonotope.ma, in the mma subdirectory. I could compile cddmathlink.c for Macintosh and Windows. Please use gcc instead of g++ to compile cddlib. I have put binaries for different platforms in http://www.cs.mcgill.ca/~fukuda/download/cdd/cddlibml_binary/ . 6. The library cddlib is free software, but if cddlib turns out to be useful, please kindly send me (at the address below) a note or a paper mentioning what purpose and how cdd has been used for. The most powerful support for free software development is user's appreciation. For more information, contact Komei Fukuda Institute of Theoretical Computer Science ETH Zentrum, CH-8092 Zurich, Switzerland Tel +41-1-632-4023, Fax +41-1-632-1063 http://www.ifor.math.ethz.ch/staff/fukuda/ // END of README cddlib-094g/README.core2processor000066400000000000000000000004771206770251100166220ustar00rootroot00000000000000To 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-094g/aclocal.m4000066400000000000000000011452631206770251100146350ustar00rootroot00000000000000# generated automatically by aclocal 1.10.2 -*- Autoconf -*- # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2007, 2008 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_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.63],, [m4_warning([this file was generated for autoconf 2.63. 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'.])]) # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 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) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # 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 GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ]) # serial 56 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.58])dnl We use AC_INCLUDES_DEFAULT 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 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_CC_BASENAME(CC) # ------------------- # Calculate cc_basename. Skip known compiler wrappers and cross-prefix. m4_defun([_LT_CC_BASENAME], [for cc_temp in $1""; do case $cc_temp in compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` ]) # _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 _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_CMD_RELOAD])dnl m4_require([_LT_CHECK_MAGIC_METHOD])dnl m4_require([_LT_CMD_OLD_ARCHIVE])dnl m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl _LT_CONFIG_LIBTOOL_INIT([ # See if we are running on zsh, and set the options which 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 _LT_PROG_ECHO_BACKSLASH 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 "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # 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. 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' # 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_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 # 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], [[!?.]$], [], [.]) )]) # _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 "X$][$1" | $Xsed -e "$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 "X$" | $Xsed -e "$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' # Quote evaled strings. for var in lt_decl_all_varnames([[ \ ]], lt_decl_quote_varnames); do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) 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 "X\\\\\$\$var"\` in *[[\\\\\\\`\\"\\\$]]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\[$]0 --fallback-echo"')dnl " lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\[$]0 --fallback-echo"\[$]/\[$]0 --fallback-echo"/'\` ;; esac _LT_OUTPUT_LIBTOOL_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]) cat >"$CONFIG_LT" <<_LTEOF #! $SHELL # Generated by $as_me. # Run this file to recreate a libtool stub with the current configuration. lt_cl_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 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) 2008 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. if test "$no_create" != yes; then lt_cl_success=: test "$silent" = yes && 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) fi ])# 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 which 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 # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $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. # _LT_COPYING _LT_LIBTOOL_TAGS # ### BEGIN LIBTOOL CONFIG _LT_LIBTOOL_CONFIG_VARS _LT_LIBTOOL_TAG_VARS # ### END LIBTOOL CONFIG _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 "X${COLLECT_NAMES+set}" != Xset; 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) _LT_PROG_XSI_SHELLFNS sed -n '/^# Generated shell functions inserted here/,$p' "$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' TIMESTAMP='$TIMESTAMP' 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)], [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 # _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([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)]) 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], []) # _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 test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; 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" ]) 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 "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; 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" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; esac ]) # _LT_DARWIN_LINKER_FEATURES # -------------------------- # 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 _LT_TAGVAR(whole_archive_flag_spec, $1)='' _LT_TAGVAR(link_all_deplibs, $1)=yes _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo _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 "$lt_cv_apple_cc_single_mod" != "yes"; 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 # ----------------------- # 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. m4_defun([_LT_SYS_MODULE_PATH_AIX], [m4_require([_LT_DECL_SED])dnl AC_LINK_IFELSE(AC_LANG_PROGRAM,[ lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' 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 "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi],[]) if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ])# _LT_SYS_MODULE_PATH_AIX # _LT_SHELL_INIT(ARG) # ------------------- m4_define([_LT_SHELL_INIT], [ifdef([AC_DIVERSION_NOTICE], [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)], [AC_DIVERT_PUSH(NOTICE)]) $1 AC_DIVERT_POP ])# _LT_SHELL_INIT # _LT_PROG_ECHO_BACKSLASH # ----------------------- # Add some code to the start of the generated configure script which # will find an echo command which doesn't interpret backslashes. m4_defun([_LT_PROG_ECHO_BACKSLASH], [_LT_SHELL_INIT([ # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','` ;; esac ECHO=${lt_ECHO-echo} if test "X[$]1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X[$]1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "[$]0" --no-reexec ${1+"[$]@"} fi if test "X[$]1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF [$]* _LT_EOF exit 0 fi # 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 if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL [$]0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL [$]0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "[$]0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo" fi AC_SUBST(lt_ECHO) ]) _LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) _LT_DECL([], [ECHO], [1], [An echo program that does not interpret backslashes]) ])# _LT_PROG_ECHO_BACKSLASH # _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 "x$enable_libtool_lock" != xno && 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 which ABI we are using. 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 which ABI we are using. echo '[#]line __oline__ "configure"' > conftest.$ac_ext if AC_TRY_EVAL(ac_compile); then if test "$lt_cv_prog_gnu_ld" = yes; 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* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. 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*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|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" ;; ppc*-*linux*|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 x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. 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*) LD="${LD-ld} -m elf64_sparc" ;; *) 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_CMD_OLD_ARCHIVE # ------------------- m4_defun([_LT_CMD_OLD_ARCHIVE], [AC_CHECK_TOOL(AR, ar, false) test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru _LT_DECL([], [AR], [1], [The archiver]) _LT_DECL([], [AR_FLAGS], [1]) 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 openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi _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_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" # 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:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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 x"[$]$2" = xyes; 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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/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 x"[$]$2" = xyes; 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; ;; 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; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # 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 ;; 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"; 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"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 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 "$cross_compiling" = yes; 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 __oline__ "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 void fnord() { int i=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; /* 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 "x$enable_dlopen" != xyes; 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 ]) ;; *) 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 "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && 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 "x$lt_cv_dlopen_self" = xyes; 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:__oline__: $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:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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 "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; 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 "$hard_links" = no; 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 in which 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 "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then # We can hardcode non-existent directories. if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && # 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 "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; 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 "$_LT_TAGVAR(hardcode_action, $1)" = relink || test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; 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 -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" AC_MSG_RESULT([yes]) else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" AC_MSG_RESULT([yes]) else AC_MSG_RESULT([no]) fi ;; *) AC_MSG_RESULT([no]) ;; esac fi _LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) _LT_DECL([], [striplib], [1]) ])# _LT_CMD_STRIPLIB # _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 AC_MSG_CHECKING([dynamic linker characteristics]) m4_if([$1], [], [ if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # 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 -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # 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` 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" else 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; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` 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 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 need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; 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 # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # 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}' else # 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' fi 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=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $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 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,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) 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="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. 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 ;; 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 ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # 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 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 ;; freebsd1*) dynamic_linker=no ;; 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[[123]]*) 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} $libname${shared_ext}' 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 ;; gnu*) version_type=linux 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 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 "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; 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' ;; interix[[3-9]]*) version_type=linux 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 "$lt_cv_prog_gnu_ld" = yes; then version_type=linux 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 ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux 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 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], [shlibpath_overrides_runpath=yes])]) LDFLAGS=$save_LDFLAGS libdir=$save_libdir # 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 # Append ld.so.conf contents 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;/^$/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 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*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac 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 if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[[89]] | openbsd2.[[89]].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; 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 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 "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux 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 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=freebsd-elf 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 "$with_gnu_ld" = yes; 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 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 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 "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi _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([], [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], [2], [Run-time system search path for libraries]) ])# _LT_SYS_DYNAMIC_LINKER # _LT_PATH_TOOL_PREFIX(TOOL) # -------------------------- # find a file program which 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 which 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 AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; 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 "$with_gnu_ld" = yes; 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 /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 lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' 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 ;; gnu*) 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]) 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 Linux ELF. linux* | k*bsd*-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*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; 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 ;; esac ]) 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_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 case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) 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 "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) 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:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: $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:__oline__: 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_LIB_M # -------- # check for math library AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-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 "$GCC" = yes; then _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' _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([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 "$host_cpu" = ia64; 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 # 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 -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$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 -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/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 # and D for any global 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};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print 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 # 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 #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. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[[]] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$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_save_LIBS="$LIBS" lt_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_save_LIBS" CFLAGS="$lt_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 "$pipe_works" = yes; 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 _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_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_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)= AC_MSG_CHECKING([for $compiler option to produce PIC]) m4_if([$1], [CXX], [ # C++ specific cases for pic, static, wl, etc. if test "$GXX" = yes; 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 "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; 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']) ;; 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)= ;; 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 "$host_cpu" = ia64; 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 ;; 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 "$host_cpu" != ia64; 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) 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*) # IBM XL 8.0 on PPC _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*) # 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 "$GCC" = yes; 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 "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' fi ;; 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']) ;; 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' ;; 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 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 "$host_cpu" = ia64; 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 ;; 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']) ;; 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) 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' ;; pgcc* | pgf77* | pgf90* | pgf95*) # 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*) # IBM XL C 8.0/Fortran 10.1 on PPC _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)='-Wl,' ;; *Sun\ F*) # 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)='' ;; 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*) _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 which 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_MSG_RESULT([$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) _LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], [How to pass a linker flag through the compiler]) # # 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]) # # 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_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' 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 AIX nm, but means don't demangle with GNU 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")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi ;; pw32*) _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" ;; cygwin* | mingw* | cegcc*) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;/^.*[[ ]]__nm__/s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' ;; *) _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' ;; esac _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] ], [ 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_flag_spec_ld, $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 "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac _LT_TAGVAR(ld_shlibs, $1)=yes if test "$with_gnu_ld" = yes; 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 2>&1` in *\ [[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 "$host_cpu" != ia64; then _LT_TAGVAR(ld_shlibs, $1)=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH *** so that a non-GNU linker is found, and then restart. _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(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/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' 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 (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; 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 ;; 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) tmp_diet=no if test "$host_os" = linux-dietlibc; 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 "$tmp_diet" = no then tmp_addflag= 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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # 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; $ECHO \"$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' ;; xl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; 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; $ECHO \"$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 "x$supports_anon_versioning" = xyes; 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 xlf*) # 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)= _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; 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 $compiler_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 $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' 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 $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 ;; 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 can not *** 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 $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 if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; 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 "$GCC" = yes && 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 "$host_cpu" = ia64; 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 AIX nm, but means don't demangle with GNU 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")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | 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 # need to do runtime linking. case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; 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,' if test "$GCC" = yes; 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 "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; 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 "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi 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_use_runtimelinking" = yes; 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 _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 "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; 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 _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' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' 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. _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 `$ECHO "X$deplibs" | $Xsed -e '\''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(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`' _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes ;; 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 ;; freebsd1*) _LT_TAGVAR(ld_shlibs, $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 -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 "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $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 $output_objdir/$soname = $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 "$GCC" = yes -a "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${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 "$with_gnu_ld" = no; then _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $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 "$GCC" = yes -a "$with_gnu_ld" = no; 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 -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${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' ;; *) _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 "$with_gnu_ld" = no; 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 "$GCC" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" AC_LINK_IFELSE(int foo(void) {}, _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' ) LDFLAGS="$save_LDFLAGS" else _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -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" && $ECHO "X-set_version $verstring" | $Xsed` -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 ;; 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*) 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__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; 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 case $host_os in openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' ;; *) _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' ;; esac 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 _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; 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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "$GCC" = yes; 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}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "X-set_version $verstring" | $Xsed` -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 "$GCC" = yes; then wlarc='${wl}' _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${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 ${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 "$GCC" = yes; 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 "x$host_vendor" = xsequent; 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 "$GCC" = yes; 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 can NOT 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 "$GCC" = yes; 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 x$host_vendor = xsni; 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 "$_LT_TAGVAR(ld_shlibs, $1)" = no && 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 "$enable_shared" = yes && test "$GCC" = yes; 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_MSG_CHECKING([whether -lc should be explicitly linked in]) $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_TAGVAR(archive_cmds_need_lc, $1)=no else _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* AC_MSG_RESULT([$_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_flag_spec_ld], [1], [[If ld is used when linking, 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([], [fix_srcfile_path], [1], [Fix the shell variable $srcfile for the compiler]) _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([], [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 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 which 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 "$can_build_shared" = "no" && 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 "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no 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 "$enable_shared" = yes || enable_static=yes AC_MSG_RESULT([$enable_static]) _LT_CONFIG($1) fi AC_LANG_POP CC="$lt_save_CC" ])# _LT_LANG_C_CONFIG # _LT_PROG_CXX # ------------ # Since AC_PROG_CXX is broken, in that it returns g++ if there is no c++ # compiler, we have our own version here. m4_defun([_LT_PROG_CXX], [ pushdef([AC_MSG_ERROR], [_lt_caught_CXX_error=yes]) AC_PROG_CXX if test -n "$CXX" && ( test "X$CXX" != "Xno" && ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || (test "X$CXX" != "Xg++"))) ; then AC_PROG_CXXCPP else _lt_caught_CXX_error=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_CXX dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_CXX], []) # _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], [AC_REQUIRE([_LT_PROG_CXX])dnl m4_require([_LT_FILEUTILS_DEFAULTS])dnl m4_require([_LT_DECL_EGREP])dnl 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_flag_spec_ld, $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(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 "$_lt_caught_CXX_error" != yes; 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_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++"} 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 "$GXX" = yes; 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 "$GXX" = yes; 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 "$with_gnu_ld" = yes; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -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 "\-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 "$host_cpu" = ia64; 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 # need to do runtime linking. 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 ;; 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,' if test "$GXX" = yes; 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 "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; 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 "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi 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_use_runtimelinking" = yes; 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 _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 "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; 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 _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' # Exported symbols can be pulled into shared objects from archives _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' _LT_TAGVAR(archive_cmds_need_lc, $1)=yes # This is similar to how AIX traditionally builds its shared # libraries. _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' 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*) # _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(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 (1st line # is EXPORTS), use it as is; otherwise, prepend... _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; 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 ;; darwin* | rhapsody*) _LT_DARWIN_LINKER_FEATURES($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 ;; freebsd[[12]]*) # 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 ;; gnu*) ;; 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 $output_objdir/$soname = $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; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $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 $with_gnu_ld = no; 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; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes; then if test $with_gnu_ld = no; 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 -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "$GXX" = yes; then if test "$with_gnu_ld" = no; then _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' else _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` -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) 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; $ECHO "X$list" | $Xsed' _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 | $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 | $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 | $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 | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' ;; *) # Version 6 will 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; $ECHO \"$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=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; xl*) # 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 "x$supports_anon_versioning" = xyes; 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; $ECHO \"$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='echo' # 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 ;; openbsd2*) # C++ shared libraries are fairly broken _LT_TAGVAR(ld_shlibs, $1)=no ;; openbsd*) 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__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; 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=echo 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" && $ECHO "X${wl}-set_version $verstring" | $Xsed` -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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "X-set_version $verstring" | $Xsed` -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=`$ECHO "X$templist" | $Xsed -e "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; $ECHO "X$list" | $Xsed' ;; *) if test "$GXX" = yes && test "$with_gnu_ld" = no; 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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' ;; *) _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "${wl}-set_version ${wl}$verstring" | $Xsed` ${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 "\-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*) # 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='echo' # 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 "$GXX" = yes && test "$with_gnu_ld" = no; 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 -nostdlib $LDFLAGS $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 -nostdlib ${wl}-M $wl$lib.exp -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 "\-L"' else # g++ 2.7 appears to require `-G' NOT `-shared' on this # platform. _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $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 -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 "\-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 can NOT 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(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 "$_LT_TAGVAR(ld_shlibs, $1)" = no && 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 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 "$_lt_caught_CXX_error" != yes AC_LANG_POP ])# _LT_LANG_CXX_CONFIG # _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 # 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 ]) 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 $p in -L* | -R* | -l*) # Some compilers place space between "-{L,R}" and the path. # Remove the space. if test $p = "-L" || test $p = "-R"; then prev=$p continue else prev= fi if test "$pre_test_object_deps_done" = no; then case $p 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 ;; *.$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 "$pre_test_object_deps_done" = no; 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 # 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)= ;; linux*) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C++ 5.9 # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; solaris*) case $cc_basename in CC*) # The more standards-conforming stlport4 library is # incompatible with the Cstd library. Avoid specifying # it if it's in CXXFLAGS. Ignore libCrun as # -library=stlport4 depends on it. case " $CXX $CXXFLAGS " in *" -library=stlport4 "*) solaris_use_stlport4=yes ;; esac # Adding this requires a known-good setup of shared libraries for # Sun compiler versions before 5.6, else PIC objects from an old # archive will be linked into the output, leading to subtle bugs. if test "$solaris_use_stlport4" != yes; then _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' fi ;; esac ;; 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_PROG_F77 # ------------ # Since AC_PROG_F77 is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_F77], [ pushdef([AC_MSG_ERROR], [_lt_disable_F77=yes]) AC_PROG_F77 if test -z "$F77" || test "X$F77" = "Xno"; then _lt_disable_F77=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_F77 dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_F77], []) # _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_REQUIRE([_LT_PROG_F77])dnl AC_LANG_PUSH(Fortran 77) _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_flag_spec_ld, $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(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 "$_lt_disable_F77" != yes; 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 CC=${F77-"f77"} 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 "$can_build_shared" = "no" && 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 "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no 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 "$enable_shared" = yes || 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" fi # test "$_lt_disable_F77" != yes AC_LANG_POP ])# _LT_LANG_F77_CONFIG # _LT_PROG_FC # ----------- # Since AC_PROG_FC is broken, in that it returns the empty string # if there is no fortran compiler, we have our own version here. m4_defun([_LT_PROG_FC], [ pushdef([AC_MSG_ERROR], [_lt_disable_FC=yes]) AC_PROG_FC if test -z "$FC" || test "X$FC" = "Xno"; then _lt_disable_FC=yes fi popdef([AC_MSG_ERROR]) ])# _LT_PROG_FC dnl aclocal-1.4 backwards compatibility: dnl AC_DEFUN([_LT_PROG_FC], []) # _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_REQUIRE([_LT_PROG_FC])dnl AC_LANG_PUSH(Fortran) _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_flag_spec_ld, $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(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 "$_lt_disable_FC" != yes; 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 CC=${FC-"f95"} 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 "$can_build_shared" = "no" && 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 "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[[4-9]]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no 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 "$enable_shared" = yes || 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" fi # test "$_lt_disable_FC" != yes 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_GCC=$GCC GCC=yes CC=${GCJ-"gcj"} 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 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" ])# _LT_LANG_GCJ_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_GCC=$GCC GCC= CC=${RC-"windres"} 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" ])# _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 "x${GCJFLAGS+set}" = xset || 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_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_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 $lt_ac_count -gt 10 && 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], [AC_MSG_CHECKING([whether the shell understands some XSI constructs]) # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes AC_MSG_RESULT([$xsi_shell]) _LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) AC_MSG_CHECKING([whether the shell understands "+="]) lt_shell_append=no ( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes AC_MSG_RESULT([$lt_shell_append]) _LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) 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_PROG_XSI_SHELLFNS # --------------------- # Bourne and XSI compatible variants of some useful shell functions. m4_defun([_LT_PROG_XSI_SHELLFNS], [case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # 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" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname 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). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $[*] )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } dnl func_dirname_and_basename dnl A portable version of this function is already defined in general.m4sh dnl so there is no need for it here. # func_stripname 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). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[[^=]]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[[^=]]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[[^.]]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$[@]"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$[1]" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$[1]+=\$[2]" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$[1]=\$$[1]\$[2]" } _LT_EOF ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # # Copyright (C) 2004, 2005, 2007, 2008 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 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_SET_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], [0], [Assembler program])dnl test -z "$DLLTOOL" && DLLTOOL=dlltool _LT_DECL([], [DLLTOOL], [0], [DLL creation program])dnl test -z "$OBJDUMP" && OBJDUMP=objdump _LT_DECL([], [OBJDUMP], [0], [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_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], [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], [pic_mode="$withval"], [pic_mode=default]) test -z "$pic_mode" && 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], []) 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])]) # ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007, 2008 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 ]) # ltversion.m4 -- version numbers -*- Autoconf -*- # # Copyright (C) 2004 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. # Generated from ltversion.in. # serial 3017 ltversion.m4 # This file is part of GNU Libtool m4_define([LT_PACKAGE_VERSION], [2.2.6b]) m4_define([LT_PACKAGE_REVISION], [1.3017]) AC_DEFUN([LTVERSION_VERSION], [macro_version='2.2.6b' macro_revision='1.3017' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) # lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- # # Copyright (C) 2004, 2005, 2007 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 4 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_RC], [AC_DEFUN([AC_LIBTOOL_RC])]) 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])]) # Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 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.10' 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.10.2], [], [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.10.2])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, 2003, 2005 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], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006 # 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. # serial 8 # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$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 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, 2000, 2001, 2002, 2003, 2004, 2005, 2006 # 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. # serial 9 # 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", "GCJ", or "OBJC". # 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 ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" 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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} 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 sub/conftest.${OBJEXT-o} 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, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 # 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. #serial 4 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [# Autoconf 2.62 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"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //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' -e 's/\$U/'"$U"'/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, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, # 2005, 2006, 2008 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. # serial 13 # 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. # 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.60])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], [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], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [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) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. 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)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) ]) # 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, 2003, 2005 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 install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # Copyright (C) 2003, 2005 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. # serial 2 # 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, 2002, 2003, 2005 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. # serial 3 # 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 done .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 # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi 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, 1999, 2000, 2001, 2003, 2004, 2005 # 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. # serial 5 # 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 supports --run. # If it does, 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 test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # Copyright (C) 2003, 2004, 2005, 2006 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_MKDIR_P # --------------- # Check for `mkdir -p'. AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) # Helper functions for option handling. -*- Autoconf -*- # Copyright (C) 2001, 2002, 2003, 2005, 2008 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. # serial 4 # _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])]) # Check to make sure that the build environment is sane. -*- Autoconf -*- # Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 # 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. # serial 4 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # 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 ( 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 rm -f conftest.file 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 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)]) # Copyright (C) 2001, 2003, 2005 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 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]) # Check how to create a tarball. -*- Autoconf -*- # Copyright (C) 2004, 2005 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. # serial 2 # _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. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. 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 cddlib-094g/aclocal.m4~000066400000000000000000000666241206770251100150350ustar00rootroot00000000000000# aclocal.m4 generated automatically by aclocal 1.6.3 -*- Autoconf -*- # Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 # 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. # Do all the work for Automake. -*- Autoconf -*- # 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. # Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002 # 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 8 # 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... AC_PREREQ([2.52]) # Autoconf 2.50 wants to disallow AM_ names. We explicitly allow # the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl # 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_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl AC_REQUIRE([AC_PROG_INSTALL])dnl # test to see if srcdir already configured if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) fi # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], [m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])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) AM_MISSING_PROG(AMTAR, tar) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl AC_REQUIRE([AC_PROG_MAKE_SET])dnl _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_][CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_][CC], defn([AC_PROG_][CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_][CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_][CXX], defn([AC_PROG_][CXX])[_AM_DEPENDENCIES(CXX)])])dnl ]) ]) # Copyright 2002 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 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. AC_DEFUN([AM_AUTOMAKE_VERSION],[am__api_version="1.6"]) # AM_SET_CURRENT_AUTOMAKE_VERSION # ------------------------------- # Call AM_AUTOMAKE_VERSION so it can be traced. # This function is AC_REQUIREd by AC_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.6.3])]) # Helper functions for option handling. -*- Autoconf -*- # Copyright 2001, 2002 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 2 # _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], [AC_FOREACH([_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])]) # # Check to make sure that the build environment is sane. # # Copyright 1996, 1997, 2000, 2001 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 3 # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # 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 ( 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 rm -f conftest.file 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 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)]) # -*- Autoconf -*- # Copyright 1997, 1999, 2000, 2001 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 3 # 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 supports --run. # If it does, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) # AM_AUX_DIR_EXPAND # Copyright 2001 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # 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. # Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50]) AC_DEFUN([AM_AUX_DIR_EXPAND], [ # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) # AM_PROG_INSTALL_SH # ------------------ # Define $install_sh. # Copyright 2001 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"$am_aux_dir/install-sh"} AC_SUBST(install_sh)]) # AM_PROG_INSTALL_STRIP # Copyright 2001 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # 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="\${SHELL} \$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) # serial 4 -*- Autoconf -*- # Copyright 1999, 2000, 2001 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # 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", "GCJ", or "OBJC". # 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 ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], [$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'. 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 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 for depmode in $am_compiler_list; do # 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. echo '#include "conftest.h"' > conftest.c echo 'int i;' > conftest.h echo "${am__include} ${am__quote}conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=conftest.c object=conftest.o \ depfile=conftest.Po tmpdepfile=conftest.TPo \ $SHELL ./depcomp $depcc -c conftest.c -o conftest.o >/dev/null 2>&1 && grep conftest.h conftest.Po > /dev/null 2>&1 && ${MAKE-make} -s -f confmf > /dev/null 2>&1; then am_cv_$1_dependencies_compiler_type=$depmode break 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_SET_DEPDIR # ------------- # Choose a directory name for dependency files. # This macro is AC_REQUIREd in _AM_DEPENDENCIES AC_DEFUN([AM_SET_DEPDIR], [rm -f .deps 2>/dev/null mkdir .deps 2>/dev/null if test -d .deps; then DEPDIR=.deps else # MS-DOS does not allow filenames that begin with a dot. DEPDIR=_deps fi rmdir .deps 2>/dev/null AC_SUBST([DEPDIR]) ]) # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking Speeds up one-time builds --enable-dependency-tracking Do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH]) ]) # Generate code to set up dependency tracking. -*- Autoconf -*- # Copyright 1999, 2000, 2001, 2002 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. #serial 2 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [for mf in $CONFIG_FILES; 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. # So let's grep whole file. if grep '^#.*generated by automake' $mf > /dev/null 2>&1; then dirpart=`AS_DIRNAME("$mf")` else continue fi grep '^DEP_FILES *= *[[^ @%:@]]' < "$mf" > /dev/null || continue # Extract the definition of DEP_FILES from the Makefile without # running `make'. DEPDIR=`sed -n -e '/^DEPDIR = / s///p' < "$mf"` test -z "$DEPDIR" && continue # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n -e '/^U = / s///p' < "$mf"` test -d "$dirpart/$DEPDIR" || mkdir "$dirpart/$DEPDIR" # 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 -e ' /^DEP_FILES = .*\\\\$/ { s/^DEP_FILES = // :loop s/\\\\$// p n /\\\\$/ b loop p } /^DEP_FILES = / s/^DEP_FILES = //p' < "$mf" | \ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/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"]) ]) # Copyright 2001 Free Software Foundation, Inc. -*- Autoconf -*- # 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 2 # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' doit: @echo done 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 # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | fgrep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST(am__include) AC_SUBST(am__quote) AC_MSG_RESULT($_am_result) rm -f confinc confmf ]) # AM_CONDITIONAL -*- Autoconf -*- # Copyright 1997, 2000, 2001 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, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA # 02111-1307, USA. # serial 5 AC_PREREQ(2.52) # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], [ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE]) AC_SUBST([$1_FALSE]) 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])]) cddlib-094g/autom4te.cache/000077500000000000000000000000001206770251100155655ustar00rootroot00000000000000cddlib-094g/autom4te.cache/output.0000066400000000000000000014061611206770251100172170ustar00rootroot00000000000000@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.63. @%:@ @%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @%:@ 2002, 2003, 2004, 2005, 2006, 2007, 2008 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 # PATH needs CR # 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_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 if (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 # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false 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. 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); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. 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 # Name of the executable. 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'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF 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 : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF 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_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell bug-autoconf@gnu.org about your system, echo including any error possibly output before this message. echo This can help us improve future autoconf versions. echo Configuration will now proceed without shell functions. } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. 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 { (exit 1); exit 1; }; } # 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 } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi 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 -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' 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=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # 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'" # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac ECHO=${lt_ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF $* _LT_EOF exit 0 fi # 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 if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, 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=. LIB@&t@OBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= # 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='LTLIBOBJS LIB@&t@OBJS CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL lt_ECHO RANLIB AR OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC 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 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_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_gnu_ld enable_libtool_lock ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS 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}' 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=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_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 { (exit 1); exit 1; }; } ;; *) $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_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } 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 $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 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_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # 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_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } 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 this package 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/PACKAGE@:>@ --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 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] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --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 try to use only PIC/non-PIC objects @<:@default=use both@:>@ --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ 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 C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory 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. _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 configure generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 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 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 $as_me, which was generated by GNU Autoconf 2.63. 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) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$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 ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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 cat <<\_ASBOX @%:@@%:@ ---------------- @%:@@%:@ @%:@@%:@ Cache variables. @%:@@%:@ @%:@@%:@ ---------------- @%:@@%:@ _ASBOX 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:$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= ;; #( *) $as_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 cat <<\_ASBOX @%:@@%:@ ----------------- @%:@@%:@ @%:@@%:@ Output variables. @%:@@%:@ @%:@@%:@ ----------------- @%:@@%:@ _ASBOX 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 cat <<\_ASBOX @%:@@%:@ ------------------- @%:@@%:@ @%:@@%:@ File substitutions. @%:@@%:@ @%:@@%:@ ------------------- @%:@@%:@ _ASBOX 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 cat <<\_ASBOX @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ confdefs.h. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ASBOX 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'; { (exit 1); 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 # 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 # 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 ac_site_file1=$CONFIG_SITE 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 -r "$ac_site_file"; then { $as_echo "$as_me:$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" 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. if test -f "$cache_file"; then { $as_echo "$as_me:$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:$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:$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:$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:$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:$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:$LINENO: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:$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. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:$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_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 $as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } 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 am__api_version='1.10' 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_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 $as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } 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:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; 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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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:$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:$LINENO: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # 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 ( 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 rm -f conftest.file 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_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 $as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 $as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } 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` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi { $as_echo "$as_me:$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 test "${ac_cv_path_mkdir+set}" = set; 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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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 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. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:$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:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:$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 { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; 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:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$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 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_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 $as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } 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.94 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"} install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} # 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$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:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$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:$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" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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:$LINENO: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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 { $as_echo "$as_me:$LINENO: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } if test -z "$ac_file"; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 $as_echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } { $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } { $as_echo "$as_me:$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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext { $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:$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 test "${ac_cv_c_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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:$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:$LINENO: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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:$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:$LINENO: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* 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" 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; 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 DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:$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 # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi { $as_echo "$as_me:$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='\' 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:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; 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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} 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 sub/conftest.${OBJEXT-o} 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:$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 # 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:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; 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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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:$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' case `pwd` in *\ * | *\ *) { $as_echo "$as_me:$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.2.6b' macro_revision='1.3017' 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_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 $as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; 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_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 $as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 $as_echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; 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:$LINENO: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; 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_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 $as_echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; 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 { $as_echo "$as_me:$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 test "${ac_cv_path_SED+set}" = set; 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 $as_unset ac_script || 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" { test -f "$ac_path_SED" && $as_test_x "$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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:$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:$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 test "${ac_cv_path_GREP+set}" = set; 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" { test -f "$ac_path_GREP" && $as_test_x "$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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:$LINENO: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; 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" { test -f "$ac_path_EGREP" && $as_test_x "$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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:$LINENO: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if test "${ac_cv_path_FGREP+set}" = set; 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" { test -f "$ac_path_FGREP" && $as_test_x "$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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:$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 "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:$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 "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; 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:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; 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:$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 test "${lt_cv_path_NM+set}" = set; 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 case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) 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:$LINENO: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$ac_tool_prefix"; then for ac_prog in "dumpbin -symbols" "link -dump -symbols" 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DUMPBIN+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$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:$LINENO: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:$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 -symbols" "link -dump -symbols" 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:$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:$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 if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if test "${lt_cv_nm_interface+set}" = set; 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:__oline__: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:__oline__: 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:$LINENO: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:$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:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; 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; ;; 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; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # 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 ;; 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"; 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"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 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:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:$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"} { $as_echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } 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:$LINENO: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:$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 darwin*) if test "$GCC" = yes; 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OBJDUMP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:$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:$LINENO: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; 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 # which 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 lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' 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 ;; gnu*) 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]) 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 Linux ELF. linux* | k*bsd*-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*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; 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 ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } 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}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AR+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:$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:$LINENO: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$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 else AR="$ac_cv_prog_AR" fi test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$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:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:$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:$LINENO: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:$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:$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 openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # 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:$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 test "${lt_cv_sys_global_symbol_pipe+set}" = set; 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 "$host_cpu" = ia64; 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 # 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 -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$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 -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/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 # and D for any global 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};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print 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 # 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:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$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:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && 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 #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. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$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_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_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 "$pipe_works" = yes; 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:$LINENO: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:$LINENO: result: ok" >&5 $as_echo "ok" >&6; } fi @%:@ Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && 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 which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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 which ABI we are using. echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; 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* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|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" ;; ppc*-*linux*|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:$LINENO: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_cc_needs_belf=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 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:$LINENO: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) 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" 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:$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:$LINENO: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:$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:$LINENO: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_LIPO+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:$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:$LINENO: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:$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:$LINENO: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL64+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:$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:$LINENO: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; 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 test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; 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:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_ld_exported_symbols_list=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_ld_exported_symbols_list=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&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 "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; 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" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; 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:$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 test "${ac_cv_prog_CPP+set}" = set; 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f 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:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } 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:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 rm -f 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : 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 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STDC_HEADERS 1 _ACEOF 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` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = 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 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Set options enable_dlopen=no enable_win32_dll=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; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default @%:@ 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 # 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:$LINENO: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if test "${lt_cv_objdir+set}" = set; 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:$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 "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # 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. 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' # 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 for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # 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:$LINENO: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; 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:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; 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:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$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* if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; 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" # 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:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; 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= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; 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' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; 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 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 "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; 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' ;; 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) 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' ;; pgcc* | pgf77* | pgf90* | pgf95*) # 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*) # IBM XL C 8.0/Fortran 10.1 on PPC lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # 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='' ;; 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*) 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 which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC" ;; esac { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 $as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_pic_works+set}" = set; 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@&t@ -DPIC" # 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:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; 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:$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 test "${lt_cv_prog_compiler_static_works+set}" = set; 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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/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:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_c_o+set}" = set; 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:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_c_o+set}" = set; 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:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$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:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$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:$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_flag_spec_ld= 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 "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; 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 2>&1` in *\ [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 "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH *** so that a non-GNU linker is found, and then restart. _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' 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/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' 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 (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; 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 ;; 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) tmp_diet=no if test "$host_os" = linux-dietlibc; 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 "$tmp_diet" = no then tmp_addflag= 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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # 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; $ECHO \"$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' ;; xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; 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; $ECHO \"$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 "x$supports_anon_versioning" = xyes; 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 xlf*) # 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= hardcode_libdir_flag_spec_ld='-rpath $libdir' archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; 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 $compiler_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 $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' 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 $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 ;; 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 can not *** 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 $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 if test "$ld_shlibs" = no; 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 "$GCC" = yes && 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 "$host_cpu" = ia64; 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 AIX nm, but means don't demangle with GNU 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")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | 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 # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; 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,' if test "$GCC" = yes; 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 "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; 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 "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi 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_use_runtimelinking" = yes; 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. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' 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 "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; 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 "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; 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. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' 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 "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; 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' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' 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. 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 `$ECHO "X$deplibs" | $Xsed -e '\''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' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo 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 ;; freebsd1*) ld_shlibs=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 -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $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 $output_objdir/$soname = $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 "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${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 "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $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 "$GCC" = yes -a "$with_gnu_ld" = no; 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 -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${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' ;; *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; 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 "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat >conftest.$ac_ext <<_ACEOF int foo(void) {} _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -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 ;; 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*) 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__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; 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 case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; 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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "X-set_version $verstring" | $Xsed` -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 "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${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 ${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 "$GCC" = yes; 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 "x$host_vendor" = xsequent; 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 "$GCC" = yes; 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 can NOT 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 "$GCC" = yes; 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 x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && 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 "$enable_shared" = yes && test "$GCC" = yes; 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:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 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:$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:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 $as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # 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 -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # 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` 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" else 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; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` 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 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 need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; 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 # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # 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}' else # 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' fi 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=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $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 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,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) 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="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. 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 ;; 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 ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # 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 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 ;; freebsd1*) dynamic_linker=no ;; 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[123]*) 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} $libname${shared_ext}' 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 ;; gnu*) version_type=linux 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 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 "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; 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' ;; interix[3-9]*) version_type=linux 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 "$lt_cv_prog_gnu_ld" = yes; then version_type=linux 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 ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux 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 save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then shlibpath_overrides_runpath=yes fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir # 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 # Append ld.so.conf contents 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;/^$/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 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*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac 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 if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; 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 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 "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux 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 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=freebsd-elf 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 "$with_gnu_ld" = yes; 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 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 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:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:$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 "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # 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 "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; 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:$LINENO: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; 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:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; 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 ;; *) { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 $as_echo_n "checking for shl_load... " >&6; } if test "${ac_cv_func_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* 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 (); /* 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_shl_load || defined __stub___shl_load choke me #endif int main () { return shl_load (); ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 $as_echo "$ac_cv_func_shl_load" >&6; } if test "x$ac_cv_func_shl_load" = x""yes; then lt_cv_dlopen="shl_load" else { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$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" = x""yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 $as_echo_n "checking for dlopen... " >&6; } if test "${ac_cv_func_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* 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 (); /* 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_dlopen || defined __stub___dlopen choke me #endif int main () { return dlopen (); ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 $as_echo "$ac_cv_func_dlopen" >&6; } if test "x$ac_cv_func_dlopen" = x""yes; then lt_cv_dlopen="dlopen" else { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_svld_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_dld_link=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$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" = x""yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && 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:$LINENO: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; 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 __oline__ "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 void fnord() { int i=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; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && 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:$LINENO: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:$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 test "${lt_cv_dlopen_self_static+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; 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 __oline__ "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 void fnord() { int i=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; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && 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:$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:$LINENO: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && 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 "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:$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 "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:$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: { $as_echo "$as_me:$LINENO: checking for main in -lgmp" >&5 $as_echo_n "checking for main in -lgmp... " >&6; } if test "${ac_cv_lib_gmp_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgmp $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_gmp_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gmp_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_gmp_main" >&5 $as_echo "$ac_cv_lib_gmp_main" >&6; } if test "x$ac_cv_lib_gmp_main" = x""yes; then cat >>confdefs.h <<_ACEOF @%:@define HAVE_LIBGMP 1 _ACEOF LIBS="-lgmp $LIBS" fi { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 rm -f 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : 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 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STDC_HEADERS 1 _ACEOF fi { $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if test "${ac_cv_c_const+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset cs; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_c_const=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF @%:@define const /**/ _ACEOF fi ac_config_files="$ac_config_files lib-src/Makefile src/Makefile lib-src-gmp/Makefile src-gmp/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:$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= ;; #( *) $as_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 test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$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= for ac_i in : $LIB@&t@OBJS; 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. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } 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:$LINENO: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF || ac_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} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_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 # PATH needs CR # 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_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 if (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 # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false 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. 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); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. 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 # Name of the executable. 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'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. 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 { (exit 1); exit 1; }; } # 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 } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi 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 -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' 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=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # 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 # 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 $as_me, which was generated by GNU Autoconf 2.63. 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 from templates according to the current configuration. Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, 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 ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2008 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=$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 ;; --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"` ;; esac CONFIG_FILES="$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_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$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 "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ AR \ AR_FLAGS \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ SHELL \ ECHO \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ 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_flag_spec_ld \ hardcode_libdir_separator \ fix_srcfile_path \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) 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 \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` ;; esac ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which 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' TIMESTAMP='$TIMESTAMP' 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" ;; "lib-src/Makefile") CONFIG_FILES="$CONFIG_FILES lib-src/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "lib-src-gmp/Makefile") CONFIG_FILES="$CONFIG_FILES lib-src-gmp/Makefile" ;; "src-gmp/Makefile") CONFIG_FILES="$CONFIG_FILES src-gmp/Makefile" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 $as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; 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= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # 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=' ' 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 {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } 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_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } 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_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } 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 >>"\$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 >>"\$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 < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 $as_echo "$as_me: error: could not setup config files machinery" >&2;} { (exit 1); exit 1; }; } _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ 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[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// 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_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[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="$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_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ac_file_inputs="$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:$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 >"$tmp/stdin" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; 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" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { 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_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } 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:$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 "$tmp/subs.awk" >$tmp/out \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:$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 "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; :C) { $as_echo "$as_me:$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"" || # Autoconf 2.62 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"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //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' -e 's/\$U/'"$U"'/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 case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { 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_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; "libtool":C) # See if we are running on zsh, and set the options which 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 # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $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. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # 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 GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="" # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # 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 # 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 # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # 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 # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # 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 # 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 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 of the directory that contains temporary libtool files. objdir=$objdir # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that does not interpret backslashes. ECHO=$lt_ECHO # 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 # 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 # 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 # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # 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 # 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 # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # 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 # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # 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 # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # 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 # 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 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 "X${COLLECT_NAMES+set}" != Xset; 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # 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" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname 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). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $* )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # func_stripname 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). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[^=]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$@"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1+=\$2" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1=\$$1\$2" } _LT_EOF ;; esac sed -n '/^# Generated shell functions inserted here/,$p' "$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 { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 $as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } # 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 || { (exit 1); exit 1; } fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi cddlib-094g/autom4te.cache/output.1000066400000000000000000014064571206770251100172300ustar00rootroot00000000000000@%:@! /bin/sh @%:@ Guess values for system-dependent variables and create Makefiles. @%:@ Generated by GNU Autoconf 2.63. @%:@ @%:@ Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, @%:@ 2002, 2003, 2004, 2005, 2006, 2007, 2008 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 # PATH needs CR # 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_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 if (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 # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false 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. 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); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. 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 # Name of the executable. 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'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF 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 : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF 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_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell bug-autoconf@gnu.org about your system, echo including any error possibly output before this message. echo This can help us improve future autoconf versions. echo Configuration will now proceed without shell functions. } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. 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 { (exit 1); exit 1; }; } # 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 } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi 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 -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' 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=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # 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'" # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac ECHO=${lt_ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF $* _LT_EOF exit 0 fi # 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 if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, 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=. LIB@&t@OBJS= cross_compiling=no subdirs= MFLAGS= MAKEFLAGS= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= # 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='LTLIBOBJS LIB@&t@OBJS CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL lt_ECHO RANLIB AR OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC 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 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_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_gnu_ld enable_libtool_lock ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS 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}' 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=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_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 { (exit 1); exit 1; }; } ;; *) $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_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } 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 $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 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_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # 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_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } 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 this package 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/PACKAGE@:>@ --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 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] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --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 try to use only PIC/non-PIC objects @<:@default=use both@:>@ --with-gnu-ld assume the C compiler uses GNU ld @<:@default=no@:>@ 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 C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory 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. _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 configure generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 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 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 $as_me, which was generated by GNU Autoconf 2.63. 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) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$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 ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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 cat <<\_ASBOX @%:@@%:@ ---------------- @%:@@%:@ @%:@@%:@ Cache variables. @%:@@%:@ @%:@@%:@ ---------------- @%:@@%:@ _ASBOX 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:$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= ;; #( *) $as_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 cat <<\_ASBOX @%:@@%:@ ----------------- @%:@@%:@ @%:@@%:@ Output variables. @%:@@%:@ @%:@@%:@ ----------------- @%:@@%:@ _ASBOX 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 cat <<\_ASBOX @%:@@%:@ ------------------- @%:@@%:@ @%:@@%:@ File substitutions. @%:@@%:@ @%:@@%:@ ------------------- @%:@@%:@ _ASBOX 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 cat <<\_ASBOX @%:@@%:@ ----------- @%:@@%:@ @%:@@%:@ confdefs.h. @%:@@%:@ @%:@@%:@ ----------- @%:@@%:@ _ASBOX 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'; { (exit 1); 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 # 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 # 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 ac_site_file1=$CONFIG_SITE 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 -r "$ac_site_file"; then { $as_echo "$as_me:$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" 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. if test -f "$cache_file"; then { $as_echo "$as_me:$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:$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:$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:$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:$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:$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:$LINENO: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:$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. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:$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_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 $as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } 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 am__api_version='1.10' 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_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 $as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } 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:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; 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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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:$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:$LINENO: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # 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 ( 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 rm -f conftest.file 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_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 $as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 $as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } 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` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi { $as_echo "$as_me:$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 test "${ac_cv_path_mkdir+set}" = set; 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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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 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. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:$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:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:$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 { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; 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:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$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 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_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 $as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } 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.94 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"} install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} # 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$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:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$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:$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" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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:$LINENO: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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 { $as_echo "$as_me:$LINENO: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } if test -z "$ac_file"; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 $as_echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } { $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } { $as_echo "$as_me:$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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext { $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:$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 test "${ac_cv_c_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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:$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:$LINENO: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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:$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:$LINENO: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* 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" 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; 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 DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:$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 # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi { $as_echo "$as_me:$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='\' 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:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; 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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} 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 sub/conftest.${OBJEXT-o} 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:$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 # 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:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; 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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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:$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' case `pwd` in *\ * | *\ *) { $as_echo "$as_me:$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.2.6b' macro_revision='1.3017' 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_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 $as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; 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_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 $as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 $as_echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; 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:$LINENO: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; 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_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 $as_echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; 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 { $as_echo "$as_me:$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 test "${ac_cv_path_SED+set}" = set; 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 $as_unset ac_script || 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" { test -f "$ac_path_SED" && $as_test_x "$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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:$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:$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 test "${ac_cv_path_GREP+set}" = set; 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" { test -f "$ac_path_GREP" && $as_test_x "$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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:$LINENO: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; 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" { test -f "$ac_path_EGREP" && $as_test_x "$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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:$LINENO: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if test "${ac_cv_path_FGREP+set}" = set; 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" { test -f "$ac_path_FGREP" && $as_test_x "$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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:$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 "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:$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 "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; 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:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; 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:$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 test "${lt_cv_path_NM+set}" = set; 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 case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) 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:$LINENO: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$ac_tool_prefix"; then for ac_prog in "dumpbin -symbols" "link -dump -symbols" 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DUMPBIN+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$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:$LINENO: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:$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 -symbols" "link -dump -symbols" 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:$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:$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 if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if test "${lt_cv_nm_interface+set}" = set; 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:__oline__: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:__oline__: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:__oline__: 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:$LINENO: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:$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:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; 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; ;; 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; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # 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 ;; 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"; 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"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 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:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:$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"} { $as_echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } 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:$LINENO: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:$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 darwin*) if test "$GCC" = yes; 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OBJDUMP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:$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:$LINENO: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; 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 # which 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 lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' 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 ;; gnu*) 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]) 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 Linux ELF. linux* | k*bsd*-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*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; 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 ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } 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}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AR+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:$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:$LINENO: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$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 else AR="$ac_cv_prog_AR" fi test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$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:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:$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:$LINENO: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:$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:$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 openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # 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:$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 test "${lt_cv_sys_global_symbol_pipe+set}" = set; 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 "$host_cpu" = ia64; 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 # 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 -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$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 -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/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 # and D for any global 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};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print 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 # 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:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$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:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && 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 #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. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$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_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_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 "$pipe_works" = yes; 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:$LINENO: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:$LINENO: result: ok" >&5 $as_echo "ok" >&6; } fi @%:@ Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && 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 which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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 which ABI we are using. echo '#line __oline__ "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; 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* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|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" ;; ppc*-*linux*|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:$LINENO: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_cc_needs_belf=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 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:$LINENO: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) 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" 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:$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:$LINENO: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:$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:$LINENO: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_LIPO+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:$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:$LINENO: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:$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:$LINENO: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL64+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:$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:$LINENO: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; 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 test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; 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:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_ld_exported_symbols_list=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_ld_exported_symbols_list=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&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 "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; 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" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; 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:$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 test "${ac_cv_prog_CPP+set}" = set; 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f 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:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@ifdef __STDC__ @%:@ include @%:@else @%:@ include @%:@endif Syntax error _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ @%:@include _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } 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:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 rm -f 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : 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 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STDC_HEADERS 1 _ACEOF 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` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = 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 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default @%:@include <$ac_header> _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF @%:@define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Set options enable_dlopen=no enable_win32_dll=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; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default @%:@ 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 # 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:$LINENO: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if test "${lt_cv_objdir+set}" = set; 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:$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 "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # 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. 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' # 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 for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # 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:$LINENO: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; 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:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; 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:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$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 "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; 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" # 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:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; 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= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; 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' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; 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 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 "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; 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' ;; 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) 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' ;; pgcc* | pgf77* | pgf90* | pgf95*) # 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*) # IBM XL C 8.0/Fortran 10.1 on PPC lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # 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='' ;; 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*) 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 which do not support PIC, -DPIC is meaningless: *djgpp*) lt_prog_compiler_pic= ;; *) lt_prog_compiler_pic="$lt_prog_compiler_pic@&t@ -DPIC" ;; esac { $as_echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5 $as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_pic_works+set}" = set; 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@&t@ -DPIC" # 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:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; 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:$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 test "${lt_cv_prog_compiler_static_works+set}" = set; 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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/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:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_c_o+set}" = set; 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:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_c_o+set}" = set; 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:__oline__: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$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:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$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:$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_flag_spec_ld= 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 "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; 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 2>&1` in *\ [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 "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH *** so that a non-GNU linker is found, and then restart. _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' 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/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' 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 (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; 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 ;; 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) tmp_diet=no if test "$host_os" = linux-dietlibc; 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 "$tmp_diet" = no then tmp_addflag= 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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # 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; $ECHO \"$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' ;; xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; 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; $ECHO \"$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 "x$supports_anon_versioning" = xyes; 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 xlf*) # 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= hardcode_libdir_flag_spec_ld='-rpath $libdir' archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; 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 $compiler_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 $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' 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 $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 ;; 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 can not *** 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 $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 if test "$ld_shlibs" = no; 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 "$GCC" = yes && 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 "$host_cpu" = ia64; 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 AIX nm, but means don't demangle with GNU 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")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | 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 # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; 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,' if test "$GCC" = yes; 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 "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; 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 "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi 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_use_runtimelinking" = yes; 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. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' 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 "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; 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 "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; 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. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' 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 "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; 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' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' 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. 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 `$ECHO "X$deplibs" | $Xsed -e '\''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' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo 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 ;; freebsd1*) ld_shlibs=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 -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $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 $output_objdir/$soname = $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 "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${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 "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $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 "$GCC" = yes -a "$with_gnu_ld" = no; 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 -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${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' ;; *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; 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 "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat >conftest.$ac_ext <<_ACEOF int foo(void) {} _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -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 ;; 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*) 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__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; 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 case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; 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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "X-set_version $verstring" | $Xsed` -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 "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${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 ${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 "$GCC" = yes; 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 "x$host_vendor" = xsequent; 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 "$GCC" = yes; 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 can NOT 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 "$GCC" = yes; 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 x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && 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 "$enable_shared" = yes && test "$GCC" = yes; 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:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 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:$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:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 $as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # 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 -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # 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` 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" else 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; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` 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 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 need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; 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 # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # 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}' else # 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' fi 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=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $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 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,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) 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="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. 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 ;; 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 ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # 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 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 ;; freebsd1*) dynamic_linker=no ;; 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[123]*) 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} $libname${shared_ext}' 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 ;; gnu*) version_type=linux 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 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 "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; 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' ;; interix[3-9]*) version_type=linux 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 "$lt_cv_prog_gnu_ld" = yes; then version_type=linux 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 ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux 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 save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then shlibpath_overrides_runpath=yes fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir # 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 # Append ld.so.conf contents 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;/^$/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 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*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac 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 if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; 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 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 "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux 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 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=freebsd-elf 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 "$with_gnu_ld" = yes; 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 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 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:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:$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 "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # 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 "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; 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:$LINENO: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; 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:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; 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 ;; *) { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 $as_echo_n "checking for shl_load... " >&6; } if test "${ac_cv_func_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* 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 (); /* 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_shl_load || defined __stub___shl_load choke me #endif int main () { return shl_load (); ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 $as_echo "$ac_cv_func_shl_load" >&6; } if test "x$ac_cv_func_shl_load" = x""yes; then lt_cv_dlopen="shl_load" else { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$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" = x""yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 $as_echo_n "checking for dlopen... " >&6; } if test "${ac_cv_func_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* 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 (); /* 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_dlopen || defined __stub___dlopen choke me #endif int main () { return dlopen (); ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 $as_echo "$ac_cv_func_dlopen" >&6; } if test "x$ac_cv_func_dlopen" = x""yes; then lt_cv_dlopen="dlopen" else { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_svld_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_dld_link=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$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" = x""yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && 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:$LINENO: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; 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 __oline__ "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 void fnord() { int i=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; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && 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:$LINENO: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:$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 test "${lt_cv_dlopen_self_static+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; 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 __oline__ "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 void fnord() { int i=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; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && 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:$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:$LINENO: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && 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 "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:$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 "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:$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: { $as_echo "$as_me:$LINENO: checking for main in -lgmp" >&5 $as_echo_n "checking for main in -lgmp... " >&6; } if test "${ac_cv_lib_gmp_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgmp $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_gmp_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gmp_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_gmp_main" >&5 $as_echo "$ac_cv_lib_gmp_main" >&6; } if test "x$ac_cv_lib_gmp_main" = x""yes; then cat >>confdefs.h <<_ACEOF @%:@define HAVE_LIBGMP 1 _ACEOF LIBS="-lgmp $LIBS" fi { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 rm -f 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : 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 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF @%:@define STDC_HEADERS 1 _ACEOF fi { $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if test "${ac_cv_c_const+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset cs; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_c_const=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF @%:@define const /**/ _ACEOF fi ac_config_files="$ac_config_files lib-src/Makefile src/Makefile lib-src-gmp/Makefile src-gmp/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:$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= ;; #( *) $as_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 test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$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= for ac_i in : $LIB@&t@OBJS; 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. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIB@&t@OBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } 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:$LINENO: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF || ac_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} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_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 # PATH needs CR # 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_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 if (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 # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false 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. 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); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. 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 # Name of the executable. 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'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. 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 { (exit 1); exit 1; }; } # 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 } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi 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 -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' 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=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # 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 # 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 $as_me, which was generated by GNU Autoconf 2.63. 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 from templates according to the current configuration. Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, 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 ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2008 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=$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 ;; --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"` ;; esac CONFIG_FILES="$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_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$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 "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ AR \ AR_FLAGS \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ SHELL \ ECHO \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ 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_flag_spec_ld \ hardcode_libdir_separator \ fix_srcfile_path \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) 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 \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` ;; esac ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which 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' TIMESTAMP='$TIMESTAMP' 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" ;; "lib-src/Makefile") CONFIG_FILES="$CONFIG_FILES lib-src/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "lib-src-gmp/Makefile") CONFIG_FILES="$CONFIG_FILES lib-src-gmp/Makefile" ;; "src-gmp/Makefile") CONFIG_FILES="$CONFIG_FILES src-gmp/Makefile" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 $as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; 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= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # 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=' ' 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 {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } 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_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } 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_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } 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 >>"\$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 >>"\$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 < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 $as_echo "$as_me: error: could not setup config files machinery" >&2;} { (exit 1); exit 1; }; } _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ 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[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// 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_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[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="$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_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ac_file_inputs="$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:$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 >"$tmp/stdin" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; 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" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { 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_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } 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:$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 "$tmp/subs.awk" >$tmp/out \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:$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 "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; :C) { $as_echo "$as_me:$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"" || # Autoconf 2.62 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"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //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' -e 's/\$U/'"$U"'/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 case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { 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_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; "libtool":C) # See if we are running on zsh, and set the options which 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 # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $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. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # 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 GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="" # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # 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 # 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 # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # 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 # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # 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 # 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 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 of the directory that contains temporary libtool files. objdir=$objdir # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that does not interpret backslashes. ECHO=$lt_ECHO # 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 # 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 # 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 # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # 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 # 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 # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # 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 # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # 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 # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # 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 # 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 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 "X${COLLECT_NAMES+set}" != Xset; 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # 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" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname 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). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $* )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # func_stripname 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). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[^=]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$@"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1+=\$2" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1=\$$1\$2" } _LT_EOF ;; esac sed -n '/^# Generated shell functions inserted here/,$p' "$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 { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 $as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } # 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 || { (exit 1); exit 1; } fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi cddlib-094g/autom4te.cache/requests000066400000000000000000000311421206770251100173640ustar00rootroot00000000000000# This file was generated. # It contains the lists of macros which have been traced. # It can be safely removed. @request = ( bless( [ '0', 1, [ '/sw/share/autoconf' ], [ '/sw/share/autoconf/autoconf/autoconf.m4f', 'aclocal.m4', 'configure.in' ], { 'AM_PROG_F77_C_O' => 1, '_LT_AC_TAGCONFIG' => 1, 'm4_pattern_forbid' => 1, 'AC_INIT' => 1, '_AM_COND_IF' => 1, 'AC_CANONICAL_TARGET' => 1, 'AC_SUBST' => 1, 'AC_CONFIG_LIBOBJ_DIR' => 1, 'AC_FC_SRCEXT' => 1, 'AC_CANONICAL_HOST' => 1, 'AC_PROG_LIBTOOL' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AC_CONFIG_SUBDIRS' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'LT_CONFIG_LTDL_DIR' => 1, 'AC_CONFIG_LINKS' => 1, 'AC_REQUIRE_AUX_FILE' => 1, 'm4_sinclude' => 1, 'LT_SUPPORTED_TAG' => 1, 'AM_MAINTAINER_MODE' => 1, 'AM_GNU_GETTEXT_INTL_SUBDIR' => 1, '_m4_warn' => 1, 'AM_PROG_CXX_C_O' => 1, '_AM_COND_ENDIF' => 1, 'AM_ENABLE_MULTILIB' => 1, 'AC_CONFIG_FILES' => 1, 'LT_INIT' => 1, 'include' => 1, 'AM_GNU_GETTEXT' => 1, 'AC_LIBSOURCE' => 1, 'AM_PROG_FC_C_O' => 1, 'AC_CANONICAL_BUILD' => 1, 'AC_FC_FREEFORM' => 1, 'AH_OUTPUT' => 1, '_AM_SUBST_NOTMAKE' => 1, 'AC_CONFIG_AUX_DIR' => 1, 'sinclude' => 1, 'AM_PROG_CC_C_O' => 1, 'm4_pattern_allow' => 1, 'AC_CANONICAL_SYSTEM' => 1, 'AM_CONDITIONAL' => 1, 'AC_CONFIG_HEADERS' => 1, 'AC_DEFINE_TRACE_LITERAL' => 1, 'm4_include' => 1, '_AM_COND_ELSE' => 1, 'AC_SUBST_TRACE' => 1 } ], 'Autom4te::Request' ), bless( [ '1', 1, [ '/sw/share/autoconf' ], [ '/sw/share/autoconf/autoconf/autoconf.m4f', '/sw/share/aclocal/argz.m4', '/sw/share/aclocal/libtool.m4', '/sw/share/aclocal/ltdl.m4', '/sw/share/aclocal/ltoptions.m4', '/sw/share/aclocal/ltsugar.m4', '/sw/share/aclocal/ltversion.m4', '/sw/share/aclocal/lt~obsolete.m4', '/sw/share/aclocal-1.10/amversion.m4', '/sw/share/aclocal-1.10/auxdir.m4', '/sw/share/aclocal-1.10/cond.m4', '/sw/share/aclocal-1.10/depend.m4', '/sw/share/aclocal-1.10/depout.m4', '/sw/share/aclocal-1.10/init.m4', '/sw/share/aclocal-1.10/install-sh.m4', '/sw/share/aclocal-1.10/lead-dot.m4', '/sw/share/aclocal-1.10/make.m4', '/sw/share/aclocal-1.10/missing.m4', '/sw/share/aclocal-1.10/mkdirp.m4', '/sw/share/aclocal-1.10/options.m4', '/sw/share/aclocal-1.10/runlog.m4', '/sw/share/aclocal-1.10/sanity.m4', '/sw/share/aclocal-1.10/strip.m4', '/sw/share/aclocal-1.10/substnot.m4', '/sw/share/aclocal-1.10/tar.m4', 'configure.in' ], { 'AM_ENABLE_STATIC' => 1, 'AC_LIBTOOL_LANG_RC_CONFIG' => 1, '_LT_AC_SHELL_INIT' => 1, 'AC_DEFUN' => 1, '_LT_AC_LANG_CXX_CONFIG' => 1, 'AC_PROG_LIBTOOL' => 1, 'AM_PROG_MKDIR_P' => 1, 'AM_AUTOMAKE_VERSION' => 1, 'AM_MISSING_PROG' => 1, 'AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH' => 1, '_LT_AC_LANG_C_CONFIG' => 1, 'AM_PROG_INSTALL_STRIP' => 1, '_m4_warn' => 1, 'AC_LIBTOOL_OBJDIR' => 1, 'gl_FUNC_ARGZ' => 1, 'AM_SANITY_CHECK' => 1, 'LTOBSOLETE_VERSION' => 1, 'AC_LIBTOOL_LANG_GCJ_CONFIG' => 1, 'AC_LIBTOOL_PROG_COMPILER_PIC' => 1, 'LT_LIB_M' => 1, '_LT_AC_CHECK_DLFCN' => 1, 'AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE' => 1, 'LTSUGAR_VERSION' => 1, '_LT_PROG_LTMAIN' => 1, 'LT_SYS_SYMBOL_USCORE' => 1, '_AM_PROG_TAR' => 1, 'AC_LIBTOOL_GCJ' => 1, 'LT_SYS_DLOPEN_DEPLIBS' => 1, 'LT_FUNC_DLSYM_USCORE' => 1, '_LT_AC_LANG_F77' => 1, 'AC_LIBTOOL_CONFIG' => 1, '_AM_SUBST_NOTMAKE' => 1, 'AC_LTDL_DLLIB' => 1, '_AM_AUTOCONF_VERSION' => 1, 'AM_DISABLE_SHARED' => 1, '_LTDL_SETUP' => 1, 'AM_PROG_LIBTOOL' => 1, '_LT_AC_LANG_CXX' => 1, 'AM_PROG_LD' => 1, '_LT_AC_FILE_LTDLL_C' => 1, 'AC_LIB_LTDL' => 1, 'AU_DEFUN' => 1, 'AC_PROG_NM' => 1, 'AC_LIBTOOL_DLOPEN' => 1, 'AC_PROG_LD' => 1, 'AC_PROG_LD_GNU' => 1, 'AC_ENABLE_FAST_INSTALL' => 1, 'AC_LIBTOOL_FC' => 1, 'LTDL_CONVENIENCE' => 1, '_AM_SET_OPTION' => 1, 'AC_LTDL_PREOPEN' => 1, '_LT_LINKER_BOILERPLATE' => 1, 'AC_LIBTOOL_LANG_CXX_CONFIG' => 1, 'AC_LIBTOOL_PROG_CC_C_O' => 1, 'gl_PREREQ_ARGZ' => 1, 'LT_SUPPORTED_TAG' => 1, 'AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, 'LT_PROG_RC' => 1, 'LT_SYS_MODULE_EXT' => 1, 'AC_DEFUN_ONCE' => 1, '_LT_AC_LANG_GCJ' => 1, 'AC_LTDL_OBJDIR' => 1, '_LT_PATH_TOOL_PREFIX' => 1, 'AC_LIBTOOL_RC' => 1, '_LT_AC_PROG_ECHO_BACKSLASH' => 1, 'AC_DISABLE_FAST_INSTALL' => 1, 'include' => 1, '_LT_AC_TRY_DLOPEN_SELF' => 1, '_LT_AC_SYS_LIBPATH_AIX' => 1, 'LT_AC_PROG_SED' => 1, 'AM_ENABLE_SHARED' => 1, 'LTDL_INSTALLABLE' => 1, '_LT_AC_LANG_GCJ_CONFIG' => 1, 'AC_ENABLE_SHARED' => 1, 'AC_LIBTOOL_SYS_HARD_LINK_LOCKS' => 1, 'AC_ENABLE_STATIC' => 1, '_LT_AC_TAGVAR' => 1, 'AC_LIBTOOL_LANG_F77_CONFIG' => 1, 'AM_CONDITIONAL' => 1, 'LT_LIB_DLLOAD' => 1, 'LTVERSION_VERSION' => 1, 'LTDL_INIT' => 1, 'm4_include' => 1, 'AM_PROG_INSTALL_SH' => 1, 'AC_PROG_EGREP' => 1, 'AC_PATH_MAGIC' => 1, '_AC_AM_CONFIG_HEADER_HOOK' => 1, 'AC_LTDL_SYSSEARCHPATH' => 1, 'AM_MAKE_INCLUDE' => 1, 'LT_CMD_MAX_LEN' => 1, '_LT_AC_TAGCONFIG' => 1, 'm4_pattern_forbid' => 1, '_LT_LINKER_OPTION' => 1, 'AC_LIBTOOL_COMPILER_OPTION' => 1, 'AC_DISABLE_SHARED' => 1, '_LT_COMPILER_BOILERPLATE' => 1, 'AC_LIBTOOL_WIN32_DLL' => 1, 'AC_LIBTOOL_SETUP' => 1, 'AC_PROG_LD_RELOAD_FLAG' => 1, 'AC_LTDL_DLSYM_USCORE' => 1, 'AM_MISSING_HAS_RUN' => 1, 'LT_LANG' => 1, 'LT_SYS_DLSEARCH_PATH' => 1, 'LT_CONFIG_LTDL_DIR' => 1, 'AC_LIBTOOL_DLOPEN_SELF' => 1, 'LT_OUTPUT' => 1, 'AC_LIBTOOL_PROG_LD_SHLIBS' => 1, 'AC_WITH_LTDL' => 1, 'AC_LIBTOOL_LINKER_OPTION' => 1, 'LT_AC_PROG_RC' => 1, 'AC_LIBTOOL_CXX' => 1, 'LT_INIT' => 1, 'LT_AC_PROG_GCJ' => 1, 'LT_SYS_DLOPEN_SELF' => 1, 'AM_DEP_TRACK' => 1, 'AM_DISABLE_STATIC' => 1, '_AC_PROG_LIBTOOL' => 1, '_AM_IF_OPTION' => 1, 'AC_PATH_TOOL_PREFIX' => 1, 'm4_pattern_allow' => 1, 'AC_LIBTOOL_F77' => 1, 'AM_SET_LEADING_DOT' => 1, 'LT_AC_PROG_EGREP' => 1, '_AM_DEPENDENCIES' => 1, 'AC_LIBTOOL_LANG_C_CONFIG' => 1, 'LTOPTIONS_VERSION' => 1, '_LT_AC_SYS_COMPILER' => 1, 'AM_PROG_NM' => 1, 'AC_LIBLTDL_CONVENIENCE' => 1, 'AC_DEPLIBS_CHECK_METHOD' => 1, 'AC_LIBLTDL_INSTALLABLE' => 1, 'AM_SET_CURRENT_AUTOMAKE_VERSION' => 1, 'AC_LTDL_ENABLE_INSTALL' => 1, 'LT_PROG_GCJ' => 1, 'AC_LIBTOOL_SYS_DYNAMIC_LINKER' => 1, 'AM_INIT_AUTOMAKE' => 1, 'AC_DISABLE_STATIC' => 1, 'LT_PATH_NM' => 1, 'AC_LTDL_SHLIBEXT' => 1, '_LT_AC_LOCK' => 1, '_LT_AC_LANG_RC_CONFIG' => 1, 'LT_SYS_MODULE_PATH' => 1, 'LT_WITH_LTDL' => 1, 'AC_LIBTOOL_POSTDEP_PREDEP' => 1, 'AC_LTDL_SHLIBPATH' => 1, 'AM_AUX_DIR_EXPAND' => 1, 'AC_LIBTOOL_PROG_COMPILER_NO_RTTI' => 1, '_LT_AC_LANG_F77_CONFIG' => 1, '_LT_COMPILER_OPTION' => 1, '_AM_SET_OPTIONS' => 1, 'AM_RUN_LOG' => 1, '_AM_OUTPUT_DEPENDENCY_COMMANDS' => 1, 'AC_LTDL_SYS_DLOPEN_DEPLIBS' => 1, 'AC_LIBTOOL_SYS_OLD_ARCHIVE' => 1, 'AC_LIBTOOL_PICMODE' => 1, 'AC_CHECK_LIBM' => 1, 'LT_PATH_LD' => 1, 'AC_LIBTOOL_SYS_LIB_STRIP' => 1, '_AM_MANGLE_OPTION' => 1, 'AC_LIBTOOL_SYS_MAX_CMD_LEN' => 1, 'AC_LTDL_SYMBOL_USCORE' => 1, 'AM_SET_DEPDIR' => 1, '_LT_CC_BASENAME' => 1, '_LT_LIBOBJ' => 1 } ], 'Autom4te::Request' ) ); cddlib-094g/autom4te.cache/traces.0000066400000000000000000000674311206770251100171420ustar00rootroot00000000000000m4trace:configure.in:2: -1- AC_INIT m4trace:configure.in:2: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.in:2: -1- m4_pattern_forbid([_AC_]) m4trace:configure.in:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.in:2: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.in:2: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.in:2: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.in:2: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.in:2: -1- AC_SUBST([SHELL], [${CONFIG_SHELL-/bin/sh}]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([SHELL]) m4trace:configure.in:2: -1- m4_pattern_allow([^SHELL$]) m4trace:configure.in:2: -1- AC_SUBST([PATH_SEPARATOR]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([PATH_SEPARATOR]) m4trace:configure.in:2: -1- m4_pattern_allow([^PATH_SEPARATOR$]) m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_NAME], [m4_ifdef([AC_PACKAGE_NAME], ['AC_PACKAGE_NAME'])]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_NAME]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_TARNAME], [m4_ifdef([AC_PACKAGE_TARNAME], ['AC_PACKAGE_TARNAME'])]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_TARNAME]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_VERSION], [m4_ifdef([AC_PACKAGE_VERSION], ['AC_PACKAGE_VERSION'])]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_VERSION]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_STRING], [m4_ifdef([AC_PACKAGE_STRING], ['AC_PACKAGE_STRING'])]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_STRING]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.in:2: -1- AC_SUBST([PACKAGE_BUGREPORT], [m4_ifdef([AC_PACKAGE_BUGREPORT], ['AC_PACKAGE_BUGREPORT'])]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([PACKAGE_BUGREPORT]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.in:2: -1- AC_SUBST([exec_prefix], [NONE]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([exec_prefix]) m4trace:configure.in:2: -1- m4_pattern_allow([^exec_prefix$]) m4trace:configure.in:2: -1- AC_SUBST([prefix], [NONE]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([prefix]) m4trace:configure.in:2: -1- m4_pattern_allow([^prefix$]) m4trace:configure.in:2: -1- AC_SUBST([program_transform_name], [s,x,x,]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([program_transform_name]) m4trace:configure.in:2: -1- m4_pattern_allow([^program_transform_name$]) m4trace:configure.in:2: -1- AC_SUBST([bindir], ['${exec_prefix}/bin']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([bindir]) m4trace:configure.in:2: -1- m4_pattern_allow([^bindir$]) m4trace:configure.in:2: -1- AC_SUBST([sbindir], ['${exec_prefix}/sbin']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([sbindir]) m4trace:configure.in:2: -1- m4_pattern_allow([^sbindir$]) m4trace:configure.in:2: -1- AC_SUBST([libexecdir], ['${exec_prefix}/libexec']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([libexecdir]) m4trace:configure.in:2: -1- m4_pattern_allow([^libexecdir$]) m4trace:configure.in:2: -1- AC_SUBST([datarootdir], ['${prefix}/share']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([datarootdir]) m4trace:configure.in:2: -1- m4_pattern_allow([^datarootdir$]) m4trace:configure.in:2: -1- AC_SUBST([datadir], ['${datarootdir}']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([datadir]) m4trace:configure.in:2: -1- m4_pattern_allow([^datadir$]) m4trace:configure.in:2: -1- AC_SUBST([sysconfdir], ['${prefix}/etc']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([sysconfdir]) m4trace:configure.in:2: -1- m4_pattern_allow([^sysconfdir$]) m4trace:configure.in:2: -1- AC_SUBST([sharedstatedir], ['${prefix}/com']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([sharedstatedir]) m4trace:configure.in:2: -1- m4_pattern_allow([^sharedstatedir$]) m4trace:configure.in:2: -1- AC_SUBST([localstatedir], ['${prefix}/var']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([localstatedir]) m4trace:configure.in:2: -1- m4_pattern_allow([^localstatedir$]) m4trace:configure.in:2: -1- AC_SUBST([includedir], ['${prefix}/include']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([includedir]) m4trace:configure.in:2: -1- m4_pattern_allow([^includedir$]) m4trace:configure.in:2: -1- AC_SUBST([oldincludedir], ['/usr/include']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([oldincludedir]) m4trace:configure.in:2: -1- m4_pattern_allow([^oldincludedir$]) m4trace:configure.in:2: -1- AC_SUBST([docdir], [m4_ifset([AC_PACKAGE_TARNAME], ['${datarootdir}/doc/${PACKAGE_TARNAME}'], ['${datarootdir}/doc/${PACKAGE}'])]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([docdir]) m4trace:configure.in:2: -1- m4_pattern_allow([^docdir$]) m4trace:configure.in:2: -1- AC_SUBST([infodir], ['${datarootdir}/info']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([infodir]) m4trace:configure.in:2: -1- m4_pattern_allow([^infodir$]) m4trace:configure.in:2: -1- AC_SUBST([htmldir], ['${docdir}']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([htmldir]) m4trace:configure.in:2: -1- m4_pattern_allow([^htmldir$]) m4trace:configure.in:2: -1- AC_SUBST([dvidir], ['${docdir}']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([dvidir]) m4trace:configure.in:2: -1- m4_pattern_allow([^dvidir$]) m4trace:configure.in:2: -1- AC_SUBST([pdfdir], ['${docdir}']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([pdfdir]) m4trace:configure.in:2: -1- m4_pattern_allow([^pdfdir$]) m4trace:configure.in:2: -1- AC_SUBST([psdir], ['${docdir}']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([psdir]) m4trace:configure.in:2: -1- m4_pattern_allow([^psdir$]) m4trace:configure.in:2: -1- AC_SUBST([libdir], ['${exec_prefix}/lib']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([libdir]) m4trace:configure.in:2: -1- m4_pattern_allow([^libdir$]) m4trace:configure.in:2: -1- AC_SUBST([localedir], ['${datarootdir}/locale']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([localedir]) m4trace:configure.in:2: -1- m4_pattern_allow([^localedir$]) m4trace:configure.in:2: -1- AC_SUBST([mandir], ['${datarootdir}/man']) m4trace:configure.in:2: -1- AC_SUBST_TRACE([mandir]) m4trace:configure.in:2: -1- m4_pattern_allow([^mandir$]) m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_NAME]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_NAME], [/* Define to the full name of this package. */ #undef PACKAGE_NAME]) m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_TARNAME]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_TARNAME], [/* Define to the one symbol short name of this package. */ #undef PACKAGE_TARNAME]) m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_VERSION]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_VERSION], [/* Define to the version of this package. */ #undef PACKAGE_VERSION]) m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_STRING]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_STRING], [/* Define to the full name and version of this package. */ #undef PACKAGE_STRING]) m4trace:configure.in:2: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE_BUGREPORT]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.in:2: -1- AH_OUTPUT([PACKAGE_BUGREPORT], [/* Define to the address where bug reports for this package should be sent. */ #undef PACKAGE_BUGREPORT]) m4trace:configure.in:2: -1- AC_SUBST([DEFS]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([DEFS]) m4trace:configure.in:2: -1- m4_pattern_allow([^DEFS$]) m4trace:configure.in:2: -1- AC_SUBST([ECHO_C]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([ECHO_C]) m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_C$]) m4trace:configure.in:2: -1- AC_SUBST([ECHO_N]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([ECHO_N]) m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_N$]) m4trace:configure.in:2: -1- AC_SUBST([ECHO_T]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([ECHO_T]) m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_T$]) m4trace:configure.in:2: -1- AC_SUBST([LIBS]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.in:2: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:2: -1- AC_SUBST([build_alias]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([build_alias]) m4trace:configure.in:2: -1- m4_pattern_allow([^build_alias$]) m4trace:configure.in:2: -1- AC_SUBST([host_alias]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([host_alias]) m4trace:configure.in:2: -1- m4_pattern_allow([^host_alias$]) m4trace:configure.in:2: -1- AC_SUBST([target_alias]) m4trace:configure.in:2: -1- AC_SUBST_TRACE([target_alias]) m4trace:configure.in:2: -1- m4_pattern_allow([^target_alias$]) m4trace:configure.in:5: -1- AM_INIT_AUTOMAKE([cddlib], [0.94]) m4trace:configure.in:5: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) m4trace:configure.in:5: -1- AM_AUTOMAKE_VERSION([1.10.2]) m4trace:configure.in:5: -1- AC_REQUIRE_AUX_FILE([install-sh]) m4trace:configure.in:5: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) m4trace:configure.in:5: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) m4trace:configure.in:5: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) m4trace:configure.in:5: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) m4trace:configure.in:5: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([INSTALL_DATA]) m4trace:configure.in:5: -1- m4_pattern_allow([^INSTALL_DATA$]) m4trace:configure.in:5: -1- AC_SUBST([am__isrc], [' -I$(srcdir)']) m4trace:configure.in:5: -1- AC_SUBST_TRACE([am__isrc]) m4trace:configure.in:5: -1- m4_pattern_allow([^am__isrc$]) m4trace:configure.in:5: -1- _AM_SUBST_NOTMAKE([am__isrc]) m4trace:configure.in:5: -1- AC_SUBST([CYGPATH_W]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([CYGPATH_W]) m4trace:configure.in:5: -1- m4_pattern_allow([^CYGPATH_W$]) m4trace:configure.in:5: -1- AC_SUBST([PACKAGE], [cddlib]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([PACKAGE]) m4trace:configure.in:5: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.in:5: -1- AC_SUBST([VERSION], [0.94]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([VERSION]) m4trace:configure.in:5: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.in:5: -1- AC_DEFINE_TRACE_LITERAL([PACKAGE]) m4trace:configure.in:5: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.in:5: -1- AH_OUTPUT([PACKAGE], [/* Name of package */ #undef PACKAGE]) m4trace:configure.in:5: -1- AC_DEFINE_TRACE_LITERAL([VERSION]) m4trace:configure.in:5: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.in:5: -1- AH_OUTPUT([VERSION], [/* Version number of package */ #undef VERSION]) m4trace:configure.in:5: -1- AC_REQUIRE_AUX_FILE([missing]) m4trace:configure.in:5: -1- AC_SUBST([ACLOCAL]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([ACLOCAL]) m4trace:configure.in:5: -1- m4_pattern_allow([^ACLOCAL$]) m4trace:configure.in:5: -1- AC_SUBST([AUTOCONF]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([AUTOCONF]) m4trace:configure.in:5: -1- m4_pattern_allow([^AUTOCONF$]) m4trace:configure.in:5: -1- AC_SUBST([AUTOMAKE]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([AUTOMAKE]) m4trace:configure.in:5: -1- m4_pattern_allow([^AUTOMAKE$]) m4trace:configure.in:5: -1- AC_SUBST([AUTOHEADER]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([AUTOHEADER]) m4trace:configure.in:5: -1- m4_pattern_allow([^AUTOHEADER$]) m4trace:configure.in:5: -1- AC_SUBST([MAKEINFO]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([MAKEINFO]) m4trace:configure.in:5: -1- m4_pattern_allow([^MAKEINFO$]) m4trace:configure.in:5: -1- AC_SUBST([install_sh]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([install_sh]) m4trace:configure.in:5: -1- m4_pattern_allow([^install_sh$]) m4trace:configure.in:5: -1- AC_SUBST([STRIP]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([STRIP]) m4trace:configure.in:5: -1- m4_pattern_allow([^STRIP$]) m4trace:configure.in:5: -1- AC_SUBST([INSTALL_STRIP_PROGRAM]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([INSTALL_STRIP_PROGRAM]) m4trace:configure.in:5: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) m4trace:configure.in:5: -1- AC_REQUIRE_AUX_FILE([install-sh]) m4trace:configure.in:5: -1- AC_SUBST([MKDIR_P]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([MKDIR_P]) m4trace:configure.in:5: -1- m4_pattern_allow([^MKDIR_P$]) m4trace:configure.in:5: -1- AC_SUBST([mkdir_p], ["$MKDIR_P"]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([mkdir_p]) m4trace:configure.in:5: -1- m4_pattern_allow([^mkdir_p$]) m4trace:configure.in:5: -1- AC_SUBST([AWK]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([AWK]) m4trace:configure.in:5: -1- m4_pattern_allow([^AWK$]) m4trace:configure.in:5: -1- AC_SUBST([SET_MAKE]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([SET_MAKE]) m4trace:configure.in:5: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.in:5: -1- AC_SUBST([am__leading_dot]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([am__leading_dot]) m4trace:configure.in:5: -1- m4_pattern_allow([^am__leading_dot$]) m4trace:configure.in:5: -1- AC_SUBST([AMTAR]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([AMTAR]) m4trace:configure.in:5: -1- m4_pattern_allow([^AMTAR$]) m4trace:configure.in:5: -1- AC_SUBST([am__tar]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([am__tar]) m4trace:configure.in:5: -1- m4_pattern_allow([^am__tar$]) m4trace:configure.in:5: -1- AC_SUBST([am__untar]) m4trace:configure.in:5: -1- AC_SUBST_TRACE([am__untar]) m4trace:configure.in:5: -1- m4_pattern_allow([^am__untar$]) m4trace:configure.in:8: -1- AC_SUBST([CC]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([CC]) m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:8: -1- AC_SUBST([CFLAGS]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([CFLAGS]) m4trace:configure.in:8: -1- m4_pattern_allow([^CFLAGS$]) m4trace:configure.in:8: -1- AC_SUBST([LDFLAGS]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([LDFLAGS]) m4trace:configure.in:8: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.in:8: -1- AC_SUBST([LIBS]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([LIBS]) m4trace:configure.in:8: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:8: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.in:8: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:8: -1- AC_SUBST([CC]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([CC]) m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:8: -1- AC_SUBST([CC]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([CC]) m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:8: -1- AC_SUBST([CC]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([CC]) m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:8: -1- AC_SUBST([CC]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([CC]) m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:8: -1- AC_SUBST([ac_ct_CC]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([ac_ct_CC]) m4trace:configure.in:8: -1- m4_pattern_allow([^ac_ct_CC$]) m4trace:configure.in:8: -1- AC_SUBST([EXEEXT], [$ac_cv_exeext]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([EXEEXT]) m4trace:configure.in:8: -1- m4_pattern_allow([^EXEEXT$]) m4trace:configure.in:8: -1- AC_SUBST([OBJEXT], [$ac_cv_objext]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([OBJEXT]) m4trace:configure.in:8: -1- m4_pattern_allow([^OBJEXT$]) m4trace:configure.in:8: -1- AC_SUBST([DEPDIR], ["${am__leading_dot}deps"]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([DEPDIR]) m4trace:configure.in:8: -1- m4_pattern_allow([^DEPDIR$]) m4trace:configure.in:8: -1- AC_SUBST([am__include]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([am__include]) m4trace:configure.in:8: -1- m4_pattern_allow([^am__include$]) m4trace:configure.in:8: -1- AC_SUBST([am__quote]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([am__quote]) m4trace:configure.in:8: -1- m4_pattern_allow([^am__quote$]) m4trace:configure.in:8: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) m4trace:configure.in:8: -1- AC_SUBST([AMDEP_TRUE]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([AMDEP_TRUE]) m4trace:configure.in:8: -1- m4_pattern_allow([^AMDEP_TRUE$]) m4trace:configure.in:8: -1- AC_SUBST([AMDEP_FALSE]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([AMDEP_FALSE]) m4trace:configure.in:8: -1- m4_pattern_allow([^AMDEP_FALSE$]) m4trace:configure.in:8: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) m4trace:configure.in:8: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) m4trace:configure.in:8: -1- AC_SUBST([AMDEPBACKSLASH]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([AMDEPBACKSLASH]) m4trace:configure.in:8: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) m4trace:configure.in:8: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) m4trace:configure.in:8: -1- AC_SUBST([CCDEPMODE], [depmode=$am_cv_CC_dependencies_compiler_type]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([CCDEPMODE]) m4trace:configure.in:8: -1- m4_pattern_allow([^CCDEPMODE$]) m4trace:configure.in:8: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.in:8: -1- AC_SUBST([am__fastdepCC_TRUE]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([am__fastdepCC_TRUE]) m4trace:configure.in:8: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) m4trace:configure.in:8: -1- AC_SUBST([am__fastdepCC_FALSE]) m4trace:configure.in:8: -1- AC_SUBST_TRACE([am__fastdepCC_FALSE]) m4trace:configure.in:8: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) m4trace:configure.in:8: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) m4trace:configure.in:8: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) m4trace:configure.in:9: -1- AC_REQUIRE_AUX_FILE([install-sh]) m4trace:configure.in:9: -1- AC_SUBST([INSTALL_PROGRAM]) m4trace:configure.in:9: -1- AC_SUBST_TRACE([INSTALL_PROGRAM]) m4trace:configure.in:9: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) m4trace:configure.in:9: -1- AC_SUBST([INSTALL_SCRIPT]) m4trace:configure.in:9: -1- AC_SUBST_TRACE([INSTALL_SCRIPT]) m4trace:configure.in:9: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) m4trace:configure.in:9: -1- AC_SUBST([INSTALL_DATA]) m4trace:configure.in:9: -1- AC_SUBST_TRACE([INSTALL_DATA]) m4trace:configure.in:9: -1- m4_pattern_allow([^INSTALL_DATA$]) m4trace:configure.in:10: -1- LT_INIT m4trace:configure.in:10: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$]) m4trace:configure.in:10: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$]) m4trace:configure.in:10: -1- AC_REQUIRE_AUX_FILE([ltmain.sh]) m4trace:configure.in:10: -1- AC_SUBST([LIBTOOL]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([LIBTOOL]) m4trace:configure.in:10: -1- m4_pattern_allow([^LIBTOOL$]) m4trace:configure.in:10: -1- AC_CANONICAL_HOST m4trace:configure.in:10: -1- AC_CANONICAL_BUILD m4trace:configure.in:10: -1- AC_REQUIRE_AUX_FILE([config.sub]) m4trace:configure.in:10: -1- AC_REQUIRE_AUX_FILE([config.guess]) m4trace:configure.in:10: -1- AC_SUBST([build], [$ac_cv_build]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([build]) m4trace:configure.in:10: -1- m4_pattern_allow([^build$]) m4trace:configure.in:10: -1- AC_SUBST([build_cpu], [$[1]]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([build_cpu]) m4trace:configure.in:10: -1- m4_pattern_allow([^build_cpu$]) m4trace:configure.in:10: -1- AC_SUBST([build_vendor], [$[2]]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([build_vendor]) m4trace:configure.in:10: -1- m4_pattern_allow([^build_vendor$]) m4trace:configure.in:10: -1- AC_SUBST([build_os]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([build_os]) m4trace:configure.in:10: -1- m4_pattern_allow([^build_os$]) m4trace:configure.in:10: -1- AC_SUBST([host], [$ac_cv_host]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([host]) m4trace:configure.in:10: -1- m4_pattern_allow([^host$]) m4trace:configure.in:10: -1- AC_SUBST([host_cpu], [$[1]]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([host_cpu]) m4trace:configure.in:10: -1- m4_pattern_allow([^host_cpu$]) m4trace:configure.in:10: -1- AC_SUBST([host_vendor], [$[2]]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([host_vendor]) m4trace:configure.in:10: -1- m4_pattern_allow([^host_vendor$]) m4trace:configure.in:10: -1- AC_SUBST([host_os]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([host_os]) m4trace:configure.in:10: -1- m4_pattern_allow([^host_os$]) m4trace:configure.in:10: -1- AC_SUBST([SED]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([SED]) m4trace:configure.in:10: -1- m4_pattern_allow([^SED$]) m4trace:configure.in:10: -1- AC_SUBST([GREP]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([GREP]) m4trace:configure.in:10: -1- m4_pattern_allow([^GREP$]) m4trace:configure.in:10: -1- AC_SUBST([EGREP]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([EGREP]) m4trace:configure.in:10: -1- m4_pattern_allow([^EGREP$]) m4trace:configure.in:10: -1- AC_SUBST([FGREP]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([FGREP]) m4trace:configure.in:10: -1- m4_pattern_allow([^FGREP$]) m4trace:configure.in:10: -1- AC_SUBST([GREP]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([GREP]) m4trace:configure.in:10: -1- m4_pattern_allow([^GREP$]) m4trace:configure.in:10: -1- AC_SUBST([LD]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([LD]) m4trace:configure.in:10: -1- m4_pattern_allow([^LD$]) m4trace:configure.in:10: -1- AC_SUBST([DUMPBIN]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([DUMPBIN]) m4trace:configure.in:10: -1- m4_pattern_allow([^DUMPBIN$]) m4trace:configure.in:10: -1- AC_SUBST([ac_ct_DUMPBIN]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([ac_ct_DUMPBIN]) m4trace:configure.in:10: -1- m4_pattern_allow([^ac_ct_DUMPBIN$]) m4trace:configure.in:10: -1- AC_SUBST([DUMPBIN]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([DUMPBIN]) m4trace:configure.in:10: -1- m4_pattern_allow([^DUMPBIN$]) m4trace:configure.in:10: -1- AC_SUBST([NM]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([NM]) m4trace:configure.in:10: -1- m4_pattern_allow([^NM$]) m4trace:configure.in:10: -1- AC_SUBST([LN_S], [$as_ln_s]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([LN_S]) m4trace:configure.in:10: -1- m4_pattern_allow([^LN_S$]) m4trace:configure.in:10: -1- AC_SUBST([OBJDUMP]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([OBJDUMP]) m4trace:configure.in:10: -1- m4_pattern_allow([^OBJDUMP$]) m4trace:configure.in:10: -1- AC_SUBST([OBJDUMP]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([OBJDUMP]) m4trace:configure.in:10: -1- m4_pattern_allow([^OBJDUMP$]) m4trace:configure.in:10: -1- AC_SUBST([AR]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([AR]) m4trace:configure.in:10: -1- m4_pattern_allow([^AR$]) m4trace:configure.in:10: -1- AC_SUBST([STRIP]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([STRIP]) m4trace:configure.in:10: -1- m4_pattern_allow([^STRIP$]) m4trace:configure.in:10: -1- AC_SUBST([RANLIB]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([RANLIB]) m4trace:configure.in:10: -1- m4_pattern_allow([^RANLIB$]) m4trace:configure.in:10: -1- m4_pattern_allow([LT_OBJDIR]) m4trace:configure.in:10: -1- AC_DEFINE_TRACE_LITERAL([LT_OBJDIR]) m4trace:configure.in:10: -1- m4_pattern_allow([^LT_OBJDIR$]) m4trace:configure.in:10: -1- AH_OUTPUT([LT_OBJDIR], [/* Define to the sub-directory in which libtool stores uninstalled libraries. */ #undef LT_OBJDIR]) m4trace:configure.in:10: -1- AC_SUBST([lt_ECHO]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([lt_ECHO]) m4trace:configure.in:10: -1- m4_pattern_allow([^lt_ECHO$]) m4trace:configure.in:10: -1- LT_SUPPORTED_TAG([CC]) m4trace:configure.in:10: -1- AC_SUBST([DSYMUTIL]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([DSYMUTIL]) m4trace:configure.in:10: -1- m4_pattern_allow([^DSYMUTIL$]) m4trace:configure.in:10: -1- AC_SUBST([NMEDIT]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([NMEDIT]) m4trace:configure.in:10: -1- m4_pattern_allow([^NMEDIT$]) m4trace:configure.in:10: -1- AC_SUBST([LIPO]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([LIPO]) m4trace:configure.in:10: -1- m4_pattern_allow([^LIPO$]) m4trace:configure.in:10: -1- AC_SUBST([OTOOL]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([OTOOL]) m4trace:configure.in:10: -1- m4_pattern_allow([^OTOOL$]) m4trace:configure.in:10: -1- AC_SUBST([OTOOL64]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([OTOOL64]) m4trace:configure.in:10: -1- m4_pattern_allow([^OTOOL64$]) m4trace:configure.in:10: -1- AH_OUTPUT([HAVE_DLFCN_H], [/* Define to 1 if you have the header file. */ #undef HAVE_DLFCN_H]) m4trace:configure.in:10: -1- AC_SUBST([CPP]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([CPP]) m4trace:configure.in:10: -1- m4_pattern_allow([^CPP$]) m4trace:configure.in:10: -1- AC_SUBST([CPPFLAGS]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([CPPFLAGS]) m4trace:configure.in:10: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:10: -1- AC_SUBST([CPP]) m4trace:configure.in:10: -1- AC_SUBST_TRACE([CPP]) m4trace:configure.in:10: -1- m4_pattern_allow([^CPP$]) m4trace:configure.in:10: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) m4trace:configure.in:10: -1- m4_pattern_allow([^STDC_HEADERS$]) m4trace:configure.in:10: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS]) m4trace:configure.in:10: -1- AH_OUTPUT([HAVE_SYS_TYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_TYPES_H]) m4trace:configure.in:10: -1- AH_OUTPUT([HAVE_SYS_STAT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_SYS_STAT_H]) m4trace:configure.in:10: -1- AH_OUTPUT([HAVE_STDLIB_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDLIB_H]) m4trace:configure.in:10: -1- AH_OUTPUT([HAVE_STRING_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRING_H]) m4trace:configure.in:10: -1- AH_OUTPUT([HAVE_MEMORY_H], [/* Define to 1 if you have the header file. */ #undef HAVE_MEMORY_H]) m4trace:configure.in:10: -1- AH_OUTPUT([HAVE_STRINGS_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STRINGS_H]) m4trace:configure.in:10: -1- AH_OUTPUT([HAVE_INTTYPES_H], [/* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H]) m4trace:configure.in:10: -1- AH_OUTPUT([HAVE_STDINT_H], [/* Define to 1 if you have the header file. */ #undef HAVE_STDINT_H]) m4trace:configure.in:10: -1- AH_OUTPUT([HAVE_UNISTD_H], [/* Define to 1 if you have the header file. */ #undef HAVE_UNISTD_H]) m4trace:configure.in:18: -1- AH_OUTPUT([HAVE_LIBGMP], [/* Define to 1 if you have the `gmp\' library (-lgmp). */ #undef HAVE_LIBGMP]) m4trace:configure.in:18: -1- AC_DEFINE_TRACE_LITERAL([HAVE_LIBGMP]) m4trace:configure.in:18: -1- m4_pattern_allow([^HAVE_LIBGMP$]) m4trace:configure.in:21: -1- AC_DEFINE_TRACE_LITERAL([STDC_HEADERS]) m4trace:configure.in:21: -1- m4_pattern_allow([^STDC_HEADERS$]) m4trace:configure.in:21: -1- AH_OUTPUT([STDC_HEADERS], [/* Define to 1 if you have the ANSI C header files. */ #undef STDC_HEADERS]) m4trace:configure.in:24: -1- AC_DEFINE_TRACE_LITERAL([const]) m4trace:configure.in:24: -1- m4_pattern_allow([^const$]) m4trace:configure.in:24: -1- AH_OUTPUT([const], [/* Define to empty if `const\' does not conform to ANSI C. */ #undef const]) m4trace:configure.in:28: -1- AC_CONFIG_FILES([lib-src/Makefile src/Makefile lib-src-gmp/Makefile src-gmp/Makefile Makefile]) m4trace:configure.in:29: -1- AC_SUBST([LIB@&t@OBJS], [$ac_libobjs]) m4trace:configure.in:29: -1- AC_SUBST_TRACE([LIB@&t@OBJS]) m4trace:configure.in:29: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.in:29: -1- AC_SUBST([LTLIBOBJS], [$ac_ltlibobjs]) m4trace:configure.in:29: -1- AC_SUBST_TRACE([LTLIBOBJS]) m4trace:configure.in:29: -1- m4_pattern_allow([^LTLIBOBJS$]) m4trace:configure.in:29: -1- AC_SUBST_TRACE([top_builddir]) m4trace:configure.in:29: -1- AC_SUBST_TRACE([top_build_prefix]) m4trace:configure.in:29: -1- AC_SUBST_TRACE([srcdir]) m4trace:configure.in:29: -1- AC_SUBST_TRACE([abs_srcdir]) m4trace:configure.in:29: -1- AC_SUBST_TRACE([top_srcdir]) m4trace:configure.in:29: -1- AC_SUBST_TRACE([abs_top_srcdir]) m4trace:configure.in:29: -1- AC_SUBST_TRACE([builddir]) m4trace:configure.in:29: -1- AC_SUBST_TRACE([abs_builddir]) m4trace:configure.in:29: -1- AC_SUBST_TRACE([abs_top_builddir]) m4trace:configure.in:29: -1- AC_SUBST_TRACE([INSTALL]) m4trace:configure.in:29: -1- AC_SUBST_TRACE([MKDIR_P]) m4trace:configure.in:29: -1- AC_REQUIRE_AUX_FILE([ltmain.sh]) cddlib-094g/autom4te.cache/traces.1000066400000000000000000002740451206770251100171440ustar00rootroot00000000000000m4trace:/sw/share/aclocal/argz.m4:12: -1- AC_DEFUN([gl_FUNC_ARGZ], [gl_PREREQ_ARGZ AC_CHECK_HEADERS([argz.h], [], [], [AC_INCLUDES_DEFAULT]) AC_CHECK_TYPES([error_t], [], [AC_DEFINE([error_t], [int], [Define to a type to use for `error_t' if it is not otherwise available.]) AC_DEFINE([__error_t_defined], [1], [Define so that glibc/gnulib argp.h does not typedef error_t.])], [#if defined(HAVE_ARGZ_H) # include #endif]) ARGZ_H= AC_CHECK_FUNCS([argz_add argz_append argz_count argz_create_sep argz_insert \ argz_next argz_stringify], [], [ARGZ_H=argz.h; AC_LIBOBJ([argz])]) dnl if have system argz functions, allow forced use of dnl libltdl-supplied implementation (and default to do so dnl on "known bad" systems). Could use a runtime check, but dnl (a) detecting malloc issues is notoriously unreliable dnl (b) only known system that declares argz functions, dnl provides them, yet they are broken, is cygwin dnl releases prior to 16-Mar-2007 (1.5.24 and earlier) dnl So, it's more straightforward simply to special case dnl this for known bad systems. AS_IF([test -z "$ARGZ_H"], [AC_CACHE_CHECK( [if argz actually works], [lt_cv_sys_argz_works], [[case $host_os in #( *cygwin*) lt_cv_sys_argz_works=no if test "$cross_compiling" != no; then lt_cv_sys_argz_works="guessing no" else lt_sed_extract_leading_digits='s/^\([0-9\.]*\).*/\1/' save_IFS=$IFS IFS=-. set x `uname -r | sed -e "$lt_sed_extract_leading_digits"` IFS=$save_IFS lt_os_major=${2-0} lt_os_minor=${3-0} lt_os_micro=${4-0} if test "$lt_os_major" -gt 1 \ || { test "$lt_os_major" -eq 1 \ && { test "$lt_os_minor" -gt 5 \ || { test "$lt_os_minor" -eq 5 \ && test "$lt_os_micro" -gt 24; }; }; }; then lt_cv_sys_argz_works=yes fi fi ;; #( *) lt_cv_sys_argz_works=yes ;; esac]]) AS_IF([test $lt_cv_sys_argz_works = yes], [AC_DEFINE([HAVE_WORKING_ARGZ], 1, [This value is set to 1 to indicate that the system argz facility works])], [ARGZ_H=argz.h AC_LIBOBJ([argz])])]) AC_SUBST([ARGZ_H]) ]) m4trace:/sw/share/aclocal/argz.m4:79: -1- AC_DEFUN([gl_PREREQ_ARGZ], [:]) m4trace:/sw/share/aclocal/libtool.m4:67: -1- AC_DEFUN([LT_INIT], [AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT 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 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]) ]) m4trace:/sw/share/aclocal/libtool.m4:102: -1- AU_DEFUN([AC_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) m4trace:/sw/share/aclocal/libtool.m4:102: -1- AC_DEFUN([AC_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_LIBTOOL' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) m4trace:/sw/share/aclocal/libtool.m4:103: -1- AU_DEFUN([AM_PROG_LIBTOOL], [m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) m4trace:/sw/share/aclocal/libtool.m4:103: -1- AC_DEFUN([AM_PROG_LIBTOOL], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_LIBTOOL' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_INIT], [LT_INIT($@)])]) m4trace:/sw/share/aclocal/libtool.m4:562: -1- AC_DEFUN([LT_OUTPUT], [: ${CONFIG_LT=./config.lt} AC_MSG_NOTICE([creating $CONFIG_LT]) cat >"$CONFIG_LT" <<_LTEOF #! $SHELL # Generated by $as_me. # Run this file to recreate a libtool stub with the current configuration. lt_cl_silent=false SHELL=\${CONFIG_SHELL-$SHELL} _LTEOF cat >>"$CONFIG_LT" <<\_LTEOF AS_SHELL_SANITIZE _AS_PREPARE exec AS_MESSAGE_FD>&1 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) 2008 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. if test "$no_create" != yes; then lt_cl_success=: test "$silent" = yes && 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) fi ]) m4trace:/sw/share/aclocal/libtool.m4:757: -1- AC_DEFUN([LT_SUPPORTED_TAG], []) m4trace:/sw/share/aclocal/libtool.m4:768: -1- AC_DEFUN([LT_LANG], [AC_BEFORE([$0], [LT_OUTPUT])dnl m4_case([$1], [C], [_LT_LANG(C)], [C++], [_LT_LANG(CXX)], [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 ]) m4trace:/sw/share/aclocal/libtool.m4:830: -1- AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) m4trace:/sw/share/aclocal/libtool.m4:830: -1- AC_DEFUN([AC_LIBTOOL_CXX], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_CXX' is obsolete. You should run autoupdate.])dnl LT_LANG(C++)]) m4trace:/sw/share/aclocal/libtool.m4:831: -1- AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) m4trace:/sw/share/aclocal/libtool.m4:831: -1- AC_DEFUN([AC_LIBTOOL_F77], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_F77' is obsolete. You should run autoupdate.])dnl LT_LANG(Fortran 77)]) m4trace:/sw/share/aclocal/libtool.m4:832: -1- AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) m4trace:/sw/share/aclocal/libtool.m4:832: -1- AC_DEFUN([AC_LIBTOOL_FC], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_FC' is obsolete. You should run autoupdate.])dnl LT_LANG(Fortran)]) m4trace:/sw/share/aclocal/libtool.m4:833: -1- AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) m4trace:/sw/share/aclocal/libtool.m4:833: -1- AC_DEFUN([AC_LIBTOOL_GCJ], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_GCJ' is obsolete. You should run autoupdate.])dnl LT_LANG(Java)]) m4trace:/sw/share/aclocal/libtool.m4:1402: -1- 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" # 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:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&AS_MESSAGE_LOG_FD echo "$as_me:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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 x"[$]$2" = xyes; then m4_if([$5], , :, [$5]) else m4_if([$6], , :, [$6]) fi ]) m4trace:/sw/share/aclocal/libtool.m4:1444: -1- AU_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])]) m4trace:/sw/share/aclocal/libtool.m4:1444: -1- AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_COMPILER_OPTION' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [_LT_COMPILER_OPTION], [_LT_COMPILER_OPTION($@)])]) m4trace:/sw/share/aclocal/libtool.m4:1453: -1- 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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/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 x"[$]$2" = xyes; then m4_if([$4], , :, [$4]) else m4_if([$5], , :, [$5]) fi ]) m4trace:/sw/share/aclocal/libtool.m4:1488: -1- AU_DEFUN([AC_LIBTOOL_LINKER_OPTION], [m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])]) m4trace:/sw/share/aclocal/libtool.m4:1488: -1- AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_LINKER_OPTION' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [_LT_LINKER_OPTION], [_LT_LINKER_OPTION($@)])]) m4trace:/sw/share/aclocal/libtool.m4:1495: -1- 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; ;; 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; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # 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 ;; 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"; 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"`$SHELL [$]0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 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?]) ]) m4trace:/sw/share/aclocal/libtool.m4:1623: -1- AU_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])]) m4trace:/sw/share/aclocal/libtool.m4:1623: -1- AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_SYS_MAX_CMD_LEN' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_CMD_MAX_LEN], [LT_CMD_MAX_LEN($@)])]) m4trace:/sw/share/aclocal/libtool.m4:1724: -1- AC_DEFUN([LT_SYS_DLOPEN_SELF], [m4_require([_LT_HEADER_DLFCN])dnl if test "x$enable_dlopen" != xyes; 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 ]) ;; *) 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 "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && 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 "x$lt_cv_dlopen_self" = xyes; 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]) ]) m4trace:/sw/share/aclocal/libtool.m4:1841: -1- AU_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])]) m4trace:/sw/share/aclocal/libtool.m4:1841: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN_SELF' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_SYS_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF($@)])]) m4trace:/sw/share/aclocal/libtool.m4:2729: -1- 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 ]) m4trace:/sw/share/aclocal/libtool.m4:2791: -1- AU_DEFUN([AC_PATH_TOOL_PREFIX], [m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])]) m4trace:/sw/share/aclocal/libtool.m4:2791: -1- AC_DEFUN([AC_PATH_TOOL_PREFIX], [AC_DIAGNOSE([obsolete], [The macro `AC_PATH_TOOL_PREFIX' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [_LT_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX($@)])]) m4trace:/sw/share/aclocal/libtool.m4:2814: -1- 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 AC_ARG_WITH([gnu-ld], [AS_HELP_STRING([--with-gnu-ld], [assume the C compiler uses GNU ld @<:@default=no@:>@])], [test "$withval" = no || with_gnu_ld=yes], [with_gnu_ld=no])dnl ac_prog=ld if test "$GCC" = yes; 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 "$with_gnu_ld" = yes; 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 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) 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 "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. AC_CHECK_TOOLS(DUMPBIN, ["dumpbin -symbols" "link -dump -symbols"], :) 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:__oline__: $ac_compile\"" >&AS_MESSAGE_LOG_FD) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&AS_MESSAGE_LOG_FD (eval echo "\"\$as_me:__oline__: $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:__oline__: 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*]) ]) m4trace:/sw/share/aclocal/libtool.m4:3245: -1- AU_DEFUN([AM_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) m4trace:/sw/share/aclocal/libtool.m4:3245: -1- AC_DEFUN([AM_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AM_PROG_NM' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) m4trace:/sw/share/aclocal/libtool.m4:3246: -1- AU_DEFUN([AC_PROG_NM], [m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) m4trace:/sw/share/aclocal/libtool.m4:3246: -1- AC_DEFUN([AC_PROG_NM], [AC_DIAGNOSE([obsolete], [The macro `AC_PROG_NM' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_PATH_NM], [LT_PATH_NM($@)])]) m4trace:/sw/share/aclocal/libtool.m4:3255: -1- AC_DEFUN([LT_LIB_M], [AC_REQUIRE([AC_CANONICAL_HOST])dnl LIBM= case $host in *-*-beos* | *-*-cygwin* | *-*-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]) ]) m4trace:/sw/share/aclocal/libtool.m4:3274: -1- AU_DEFUN([AC_CHECK_LIBM], [m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])]) m4trace:/sw/share/aclocal/libtool.m4:3274: -1- AC_DEFUN([AC_CHECK_LIBM], [AC_DIAGNOSE([obsolete], [The macro `AC_CHECK_LIBM' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_LIB_M], [LT_LIB_M($@)])]) m4trace:/sw/share/aclocal/libtool.m4:6967: -1- 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 "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" AC_SUBST(GCJFLAGS)])])[]dnl ]) m4trace:/sw/share/aclocal/libtool.m4:6976: -1- AU_DEFUN([LT_AC_PROG_GCJ], [m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])]) m4trace:/sw/share/aclocal/libtool.m4:6976: -1- AC_DEFUN([LT_AC_PROG_GCJ], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_GCJ' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_PROG_GCJ], [LT_PROG_GCJ($@)])]) m4trace:/sw/share/aclocal/libtool.m4:6983: -1- AC_DEFUN([LT_PROG_RC], [AC_CHECK_TOOL(RC, windres,) ]) m4trace:/sw/share/aclocal/libtool.m4:6988: -1- AU_DEFUN([LT_AC_PROG_RC], [m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])]) m4trace:/sw/share/aclocal/libtool.m4:6988: -1- AC_DEFUN([LT_AC_PROG_RC], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_RC' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_PROG_RC], [LT_PROG_RC($@)])]) m4trace:/sw/share/aclocal/libtool.m4:7099: -1- AU_DEFUN([LT_AC_PROG_SED], [m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])]) m4trace:/sw/share/aclocal/libtool.m4:7099: -1- AC_DEFUN([LT_AC_PROG_SED], [AC_DIAGNOSE([obsolete], [The macro `LT_AC_PROG_SED' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [AC_PROG_SED], [AC_PROG_SED($@)])]) m4trace:/sw/share/aclocal/ltdl.m4:16: -1- AC_DEFUN([LT_CONFIG_LTDL_DIR], [AC_BEFORE([$0], [LTDL_INIT]) _$0($*) ]) m4trace:/sw/share/aclocal/ltdl.m4:68: -1- AC_DEFUN([LTDL_CONVENIENCE], [AC_BEFORE([$0], [LTDL_INIT])dnl dnl Although the argument is deprecated and no longer documented, dnl LTDL_CONVENIENCE used to take a DIRECTORY orgument, if we have one dnl here make sure it is the same as any other declaration of libltdl's dnl location! This also ensures lt_ltdl_dir is set when configure.ac is dnl not yet using an explicit LT_CONFIG_LTDL_DIR. m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl _$0() ]) m4trace:/sw/share/aclocal/ltdl.m4:81: -1- AU_DEFUN([AC_LIBLTDL_CONVENIENCE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) _LTDL_CONVENIENCE]) m4trace:/sw/share/aclocal/ltdl.m4:81: -1- AC_DEFUN([AC_LIBLTDL_CONVENIENCE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_CONVENIENCE' is obsolete. You should run autoupdate.])dnl _LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) _LTDL_CONVENIENCE]) m4trace:/sw/share/aclocal/ltdl.m4:124: -1- AC_DEFUN([LTDL_INSTALLABLE], [AC_BEFORE([$0], [LTDL_INIT])dnl dnl Although the argument is deprecated and no longer documented, dnl LTDL_INSTALLABLE used to take a DIRECTORY orgument, if we have one dnl here make sure it is the same as any other declaration of libltdl's dnl location! This also ensures lt_ltdl_dir is set when configure.ac is dnl not yet using an explicit LT_CONFIG_LTDL_DIR. m4_ifval([$1], [_LT_CONFIG_LTDL_DIR([$1])])dnl _$0() ]) m4trace:/sw/share/aclocal/ltdl.m4:137: -1- AU_DEFUN([AC_LIBLTDL_INSTALLABLE], [_LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) _LTDL_INSTALLABLE]) m4trace:/sw/share/aclocal/ltdl.m4:137: -1- AC_DEFUN([AC_LIBLTDL_INSTALLABLE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBLTDL_INSTALLABLE' is obsolete. You should run autoupdate.])dnl _LT_CONFIG_LTDL_DIR([m4_default([$1], [libltdl])]) _LTDL_INSTALLABLE]) m4trace:/sw/share/aclocal/ltdl.m4:213: -1- AC_DEFUN([_LT_LIBOBJ], [ m4_pattern_allow([^_LT_LIBOBJS$]) _LT_LIBOBJS="$_LT_LIBOBJS $1.$ac_objext" ]) m4trace:/sw/share/aclocal/ltdl.m4:226: -1- AC_DEFUN([LTDL_INIT], [dnl Parse OPTIONS _LT_SET_OPTIONS([$0], [$1]) dnl We need to keep our own list of libobjs separate from our parent project, dnl and the easiest way to do that is redefine the AC_LIBOBJs macro while dnl we look for our own LIBOBJs. m4_pushdef([AC_LIBOBJ], m4_defn([_LT_LIBOBJ])) m4_pushdef([AC_LIBSOURCES]) dnl If not otherwise defined, default to the 1.5.x compatible subproject mode: m4_if(_LTDL_MODE, [], [m4_define([_LTDL_MODE], m4_default([$2], [subproject])) m4_if([-1], [m4_bregexp(_LTDL_MODE, [\(subproject\|\(non\)?recursive\)])], [m4_fatal([unknown libltdl mode: ]_LTDL_MODE)])]) AC_ARG_WITH([included_ltdl], [AS_HELP_STRING([--with-included-ltdl], [use the GNU ltdl sources included here])]) if test "x$with_included_ltdl" != xyes; then # We are not being forced to use the included libltdl sources, so # decide whether there is a useful installed version we can use. AC_CHECK_HEADER([ltdl.h], [AC_CHECK_DECL([lt_dlinterface_register], [AC_CHECK_LIB([ltdl], [lt_dladvise_preload], [with_included_ltdl=no], [with_included_ltdl=yes])], [with_included_ltdl=yes], [AC_INCLUDES_DEFAULT #include ])], [with_included_ltdl=yes], [AC_INCLUDES_DEFAULT] ) fi dnl If neither LT_CONFIG_LTDL_DIR, LTDL_CONVENIENCE nor LTDL_INSTALLABLE dnl was called yet, then for old times' sake, we assume libltdl is in an dnl eponymous directory: AC_PROVIDE_IFELSE([LT_CONFIG_LTDL_DIR], [], [_LT_CONFIG_LTDL_DIR([libltdl])]) AC_ARG_WITH([ltdl_include], [AS_HELP_STRING([--with-ltdl-include=DIR], [use the ltdl headers installed in DIR])]) if test -n "$with_ltdl_include"; then if test -f "$with_ltdl_include/ltdl.h"; then : else AC_MSG_ERROR([invalid ltdl include directory: `$with_ltdl_include']) fi else with_ltdl_include=no fi AC_ARG_WITH([ltdl_lib], [AS_HELP_STRING([--with-ltdl-lib=DIR], [use the libltdl.la installed in DIR])]) if test -n "$with_ltdl_lib"; then if test -f "$with_ltdl_lib/libltdl.la"; then : else AC_MSG_ERROR([invalid ltdl library directory: `$with_ltdl_lib']) fi else with_ltdl_lib=no fi case ,$with_included_ltdl,$with_ltdl_include,$with_ltdl_lib, in ,yes,no,no,) m4_case(m4_default(_LTDL_TYPE, [convenience]), [convenience], [_LTDL_CONVENIENCE], [installable], [_LTDL_INSTALLABLE], [m4_fatal([unknown libltdl build type: ]_LTDL_TYPE)]) ;; ,no,no,no,) # If the included ltdl is not to be used, then use the # preinstalled libltdl we found. AC_DEFINE([HAVE_LTDL], [1], [Define this if a modern libltdl is already installed]) LIBLTDL=-lltdl LTDLDEPS= LTDLINCL= ;; ,no*,no,*) AC_MSG_ERROR([`--with-ltdl-include' and `--with-ltdl-lib' options must be used together]) ;; *) with_included_ltdl=no LIBLTDL="-L$with_ltdl_lib -lltdl" LTDLDEPS= LTDLINCL="-I$with_ltdl_include" ;; esac INCLTDL="$LTDLINCL" # Report our decision... AC_MSG_CHECKING([where to find libltdl headers]) AC_MSG_RESULT([$LTDLINCL]) AC_MSG_CHECKING([where to find libltdl library]) AC_MSG_RESULT([$LIBLTDL]) _LTDL_SETUP dnl restore autoconf definition. m4_popdef([AC_LIBOBJ]) m4_popdef([AC_LIBSOURCES]) AC_CONFIG_COMMANDS_PRE([ _ltdl_libobjs= _ltdl_ltlibobjs= if test -n "$_LT_LIBOBJS"; then # Remove the extension. _lt_sed_drop_objext='s/\.o$//;s/\.obj$//' for i in `for i in $_LT_LIBOBJS; do echo "$i"; done | sed "$_lt_sed_drop_objext" | sort -u`; do _ltdl_libobjs="$_ltdl_libobjs $lt_libobj_prefix$i.$ac_objext" _ltdl_ltlibobjs="$_ltdl_ltlibobjs $lt_libobj_prefix$i.lo" done fi AC_SUBST([ltdl_LIBOBJS], [$_ltdl_libobjs]) AC_SUBST([ltdl_LTLIBOBJS], [$_ltdl_ltlibobjs]) ]) # Only expand once: m4_define([LTDL_INIT]) ]) m4trace:/sw/share/aclocal/ltdl.m4:352: -1- AU_DEFUN([AC_LIB_LTDL], [LTDL_INIT($@)]) m4trace:/sw/share/aclocal/ltdl.m4:352: -1- AC_DEFUN([AC_LIB_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIB_LTDL' is obsolete. You should run autoupdate.])dnl LTDL_INIT($@)]) m4trace:/sw/share/aclocal/ltdl.m4:353: -1- AU_DEFUN([AC_WITH_LTDL], [LTDL_INIT($@)]) m4trace:/sw/share/aclocal/ltdl.m4:353: -1- AC_DEFUN([AC_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `AC_WITH_LTDL' is obsolete. You should run autoupdate.])dnl LTDL_INIT($@)]) m4trace:/sw/share/aclocal/ltdl.m4:354: -1- AU_DEFUN([LT_WITH_LTDL], [LTDL_INIT($@)]) m4trace:/sw/share/aclocal/ltdl.m4:354: -1- AC_DEFUN([LT_WITH_LTDL], [AC_DIAGNOSE([obsolete], [The macro `LT_WITH_LTDL' is obsolete. You should run autoupdate.])dnl LTDL_INIT($@)]) m4trace:/sw/share/aclocal/ltdl.m4:367: -1- AC_DEFUN([_LTDL_SETUP], [AC_REQUIRE([AC_PROG_CC])dnl AC_REQUIRE([LT_SYS_MODULE_EXT])dnl AC_REQUIRE([LT_SYS_MODULE_PATH])dnl AC_REQUIRE([LT_SYS_DLSEARCH_PATH])dnl AC_REQUIRE([LT_LIB_DLLOAD])dnl AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl AC_REQUIRE([LT_FUNC_DLSYM_USCORE])dnl AC_REQUIRE([LT_SYS_DLOPEN_DEPLIBS])dnl AC_REQUIRE([gl_FUNC_ARGZ])dnl m4_require([_LT_CHECK_OBJDIR])dnl m4_require([_LT_HEADER_DLFCN])dnl m4_require([_LT_CHECK_DLPREOPEN])dnl m4_require([_LT_DECL_SED])dnl dnl Don't require this, or it will be expanded earlier than the code dnl that sets the variables it relies on: _LT_ENABLE_INSTALL dnl _LTDL_MODE specific code must be called at least once: _LTDL_MODE_DISPATCH # In order that ltdl.c can compile, find out the first AC_CONFIG_HEADERS # the user used. This is so that ltdl.h can pick up the parent projects # config.h file, The first file in AC_CONFIG_HEADERS must contain the # definitions required by ltdl.c. # FIXME: Remove use of undocumented AC_LIST_HEADERS (2.59 compatibility). AC_CONFIG_COMMANDS_PRE([dnl m4_pattern_allow([^LT_CONFIG_H$])dnl m4_ifset([AH_HEADER], [LT_CONFIG_H=AH_HEADER], [m4_ifset([AC_LIST_HEADERS], [LT_CONFIG_H=`echo "AC_LIST_HEADERS" | $SED 's,^[[ ]]*,,;s,[[ :]].*$,,'`], [])])]) AC_SUBST([LT_CONFIG_H]) AC_CHECK_HEADERS([unistd.h dl.h sys/dl.h dld.h mach-o/dyld.h dirent.h], [], [], [AC_INCLUDES_DEFAULT]) AC_CHECK_FUNCS([closedir opendir readdir], [], [AC_LIBOBJ([lt__dirent])]) AC_CHECK_FUNCS([strlcat strlcpy], [], [AC_LIBOBJ([lt__strl])]) AC_DEFINE_UNQUOTED([LT_LIBEXT],["$libext"],[The archive extension]) name=ltdl LTDLOPEN=`eval "\\$ECHO \"$libname_spec\""` AC_SUBST([LTDLOPEN]) ]) m4trace:/sw/share/aclocal/ltdl.m4:437: -1- AC_DEFUN([LT_SYS_DLOPEN_DEPLIBS], [AC_REQUIRE([AC_CANONICAL_HOST])dnl AC_CACHE_CHECK([whether deplibs are loaded by dlopen], [lt_cv_sys_dlopen_deplibs], [# PORTME does your system automatically load deplibs for dlopen? # or its logical equivalent (e.g. shl_load for HP-UX < 11) # For now, we just catch OSes we know something about -- in the # future, we'll try test this programmatically. lt_cv_sys_dlopen_deplibs=unknown case $host_os in aix3*|aix4.1.*|aix4.2.*) # Unknown whether this is true for these versions of AIX, but # we want this `case' here to explicitly catch those versions. lt_cv_sys_dlopen_deplibs=unknown ;; aix[[4-9]]*) lt_cv_sys_dlopen_deplibs=yes ;; amigaos*) case $host_cpu in powerpc) lt_cv_sys_dlopen_deplibs=no ;; esac ;; darwin*) # Assuming the user has installed a libdl from somewhere, this is true # If you are looking for one http://www.opendarwin.org/projects/dlcompat lt_cv_sys_dlopen_deplibs=yes ;; freebsd* | dragonfly*) lt_cv_sys_dlopen_deplibs=yes ;; gnu* | linux* | k*bsd*-gnu) # GNU and its variants, using gnu ld.so (Glibc) lt_cv_sys_dlopen_deplibs=yes ;; hpux10*|hpux11*) lt_cv_sys_dlopen_deplibs=yes ;; interix*) lt_cv_sys_dlopen_deplibs=yes ;; irix[[12345]]*|irix6.[[01]]*) # Catch all versions of IRIX before 6.2, and indicate that we don't # know how it worked for any of those versions. lt_cv_sys_dlopen_deplibs=unknown ;; irix*) # The case above catches anything before 6.2, and it's known that # at 6.2 and later dlopen does load deplibs. lt_cv_sys_dlopen_deplibs=yes ;; netbsd*) lt_cv_sys_dlopen_deplibs=yes ;; openbsd*) lt_cv_sys_dlopen_deplibs=yes ;; osf[[1234]]*) # dlopen did load deplibs (at least at 4.x), but until the 5.x series, # it did *not* use an RPATH in a shared library to find objects the # library depends on, so we explicitly say `no'. lt_cv_sys_dlopen_deplibs=no ;; osf5.0|osf5.0a|osf5.1) # dlopen *does* load deplibs and with the right loader patch applied # it even uses RPATH in a shared library to search for shared objects # that the library depends on, but there's no easy way to know if that # patch is installed. Since this is the case, all we can really # say is unknown -- it depends on the patch being installed. If # it is, this changes to `yes'. Without it, it would be `no'. lt_cv_sys_dlopen_deplibs=unknown ;; osf*) # the two cases above should catch all versions of osf <= 5.1. Read # the comments above for what we know about them. # At > 5.1, deplibs are loaded *and* any RPATH in a shared library # is used to find them so we can finally say `yes'. lt_cv_sys_dlopen_deplibs=yes ;; qnx*) lt_cv_sys_dlopen_deplibs=yes ;; solaris*) lt_cv_sys_dlopen_deplibs=yes ;; sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) libltdl_cv_sys_dlopen_deplibs=yes ;; esac ]) if test "$lt_cv_sys_dlopen_deplibs" != yes; then AC_DEFINE([LTDL_DLOPEN_DEPLIBS], [1], [Define if the OS needs help to load dependent libraries for dlopen().]) fi ]) m4trace:/sw/share/aclocal/ltdl.m4:536: -1- AU_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])]) m4trace:/sw/share/aclocal/ltdl.m4:536: -1- AC_DEFUN([AC_LTDL_SYS_DLOPEN_DEPLIBS], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYS_DLOPEN_DEPLIBS' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_SYS_DLOPEN_DEPLIBS], [LT_SYS_DLOPEN_DEPLIBS($@)])]) m4trace:/sw/share/aclocal/ltdl.m4:543: -1- AC_DEFUN([LT_SYS_MODULE_EXT], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl AC_CACHE_CHECK([which extension is used for runtime loadable modules], [libltdl_cv_shlibext], [ module=yes eval libltdl_cv_shlibext=$shrext_cmds ]) if test -n "$libltdl_cv_shlibext"; then m4_pattern_allow([LT_MODULE_EXT])dnl AC_DEFINE_UNQUOTED([LT_MODULE_EXT], ["$libltdl_cv_shlibext"], [Define to the extension used for runtime loadable modules, say, ".so".]) fi ]) m4trace:/sw/share/aclocal/ltdl.m4:559: -1- AU_DEFUN([AC_LTDL_SHLIBEXT], [m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])]) m4trace:/sw/share/aclocal/ltdl.m4:559: -1- AC_DEFUN([AC_LTDL_SHLIBEXT], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBEXT' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_SYS_MODULE_EXT], [LT_SYS_MODULE_EXT($@)])]) m4trace:/sw/share/aclocal/ltdl.m4:566: -1- AC_DEFUN([LT_SYS_MODULE_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl AC_CACHE_CHECK([which variable specifies run-time module search path], [lt_cv_module_path_var], [lt_cv_module_path_var="$shlibpath_var"]) if test -n "$lt_cv_module_path_var"; then m4_pattern_allow([LT_MODULE_PATH_VAR])dnl AC_DEFINE_UNQUOTED([LT_MODULE_PATH_VAR], ["$lt_cv_module_path_var"], [Define to the name of the environment variable that determines the run-time module search path.]) fi ]) m4trace:/sw/share/aclocal/ltdl.m4:578: -1- AU_DEFUN([AC_LTDL_SHLIBPATH], [m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])]) m4trace:/sw/share/aclocal/ltdl.m4:578: -1- AC_DEFUN([AC_LTDL_SHLIBPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SHLIBPATH' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_SYS_MODULE_PATH], [LT_SYS_MODULE_PATH($@)])]) m4trace:/sw/share/aclocal/ltdl.m4:585: -1- AC_DEFUN([LT_SYS_DLSEARCH_PATH], [m4_require([_LT_SYS_DYNAMIC_LINKER])dnl AC_CACHE_CHECK([for the default library search path], [lt_cv_sys_dlsearch_path], [lt_cv_sys_dlsearch_path="$sys_lib_dlsearch_path_spec"]) if test -n "$lt_cv_sys_dlsearch_path"; then sys_dlsearch_path= for dir in $lt_cv_sys_dlsearch_path; do if test -z "$sys_dlsearch_path"; then sys_dlsearch_path="$dir" else sys_dlsearch_path="$sys_dlsearch_path$PATH_SEPARATOR$dir" fi done m4_pattern_allow([LT_DLSEARCH_PATH])dnl AC_DEFINE_UNQUOTED([LT_DLSEARCH_PATH], ["$sys_dlsearch_path"], [Define to the system default library search path.]) fi ]) m4trace:/sw/share/aclocal/ltdl.m4:606: -1- AU_DEFUN([AC_LTDL_SYSSEARCHPATH], [m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])]) m4trace:/sw/share/aclocal/ltdl.m4:606: -1- AC_DEFUN([AC_LTDL_SYSSEARCHPATH], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYSSEARCHPATH' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_SYS_DLSEARCH_PATH], [LT_SYS_DLSEARCH_PATH($@)])]) m4trace:/sw/share/aclocal/ltdl.m4:632: -1- AC_DEFUN([LT_LIB_DLLOAD], [m4_pattern_allow([^LT_DLLOADERS$]) LT_DLLOADERS= AC_SUBST([LT_DLLOADERS]) AC_LANG_PUSH([C]) LIBADD_DLOPEN= AC_SEARCH_LIBS([dlopen], [dl], [AC_DEFINE([HAVE_LIBDL], [1], [Define if you have the libdl library or equivalent.]) if test "$ac_cv_search_dlopen" != "none required" ; then LIBADD_DLOPEN="-ldl" fi libltdl_cv_lib_dl_dlopen="yes" LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#if HAVE_DLFCN_H # include #endif ]], [[dlopen(0, 0);]])], [AC_DEFINE([HAVE_LIBDL], [1], [Define if you have the libdl library or equivalent.]) libltdl_cv_func_dlopen="yes" LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"], [AC_CHECK_LIB([svld], [dlopen], [AC_DEFINE([HAVE_LIBDL], [1], [Define if you have the libdl library or equivalent.]) LIBADD_DLOPEN="-lsvld" libltdl_cv_func_dlopen="yes" LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dlopen.la"])])]) if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes then lt_save_LIBS="$LIBS" LIBS="$LIBS $LIBADD_DLOPEN" AC_CHECK_FUNCS([dlerror]) LIBS="$lt_save_LIBS" fi AC_SUBST([LIBADD_DLOPEN]) LIBADD_SHL_LOAD= AC_CHECK_FUNC([shl_load], [AC_DEFINE([HAVE_SHL_LOAD], [1], [Define if you have the shl_load function.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la"], [AC_CHECK_LIB([dld], [shl_load], [AC_DEFINE([HAVE_SHL_LOAD], [1], [Define if you have the shl_load function.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}shl_load.la" LIBADD_SHL_LOAD="-ldld"])]) AC_SUBST([LIBADD_SHL_LOAD]) case $host_os in darwin[[1567]].*) # We only want this for pre-Mac OS X 10.4. AC_CHECK_FUNC([_dyld_func_lookup], [AC_DEFINE([HAVE_DYLD], [1], [Define if you have the _dyld_func_lookup function.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dyld.la"]) ;; beos*) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}load_add_on.la" ;; cygwin* | mingw* | os2* | pw32*) AC_CHECK_DECLS([cygwin_conv_path], [], [], [[#include ]]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}loadlibrary.la" ;; esac AC_CHECK_LIB([dld], [dld_link], [AC_DEFINE([HAVE_DLD], [1], [Define if you have the GNU dld library.]) LT_DLLOADERS="$LT_DLLOADERS ${lt_dlopen_dir+$lt_dlopen_dir/}dld_link.la"]) AC_SUBST([LIBADD_DLD_LINK]) m4_pattern_allow([^LT_DLPREOPEN$]) LT_DLPREOPEN= if test -n "$LT_DLLOADERS" then for lt_loader in $LT_DLLOADERS; do LT_DLPREOPEN="$LT_DLPREOPEN-dlpreopen $lt_loader " done AC_DEFINE([HAVE_LIBDLLOADER], [1], [Define if libdlloader will be built on this platform]) fi AC_SUBST([LT_DLPREOPEN]) dnl This isn't used anymore, but set it for backwards compatibility LIBADD_DL="$LIBADD_DLOPEN $LIBADD_SHL_LOAD" AC_SUBST([LIBADD_DL]) AC_LANG_POP ]) m4trace:/sw/share/aclocal/ltdl.m4:725: -1- AU_DEFUN([AC_LTDL_DLLIB], [m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])]) m4trace:/sw/share/aclocal/ltdl.m4:725: -1- AC_DEFUN([AC_LTDL_DLLIB], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLLIB' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_LIB_DLLOAD], [LT_LIB_DLLOAD($@)])]) m4trace:/sw/share/aclocal/ltdl.m4:733: -1- AC_DEFUN([LT_SYS_SYMBOL_USCORE], [m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl AC_CACHE_CHECK([for _ prefix in compiled symbols], [lt_cv_sys_symbol_underscore], [lt_cv_sys_symbol_underscore=no cat > conftest.$ac_ext <<_LT_EOF void nm_test_func(){} int main(){nm_test_func;return 0;} _LT_EOF if AC_TRY_EVAL(ac_compile); then # Now try to grab the symbols. ac_nlist=conftest.nm if AC_TRY_EVAL(NM conftest.$ac_objext \| $lt_cv_sys_global_symbol_pipe \> $ac_nlist) && test -s "$ac_nlist"; then # See whether the symbols have a leading underscore. if grep '^. _nm_test_func' "$ac_nlist" >/dev/null; then lt_cv_sys_symbol_underscore=yes else if grep '^. nm_test_func ' "$ac_nlist" >/dev/null; then : else echo "configure: cannot find nm_test_func in $ac_nlist" >&AS_MESSAGE_LOG_FD fi fi else echo "configure: cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD fi else echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD cat conftest.c >&AS_MESSAGE_LOG_FD fi rm -rf conftest* ]) sys_symbol_underscore=$lt_cv_sys_symbol_underscore AC_SUBST([sys_symbol_underscore]) ]) m4trace:/sw/share/aclocal/ltdl.m4:770: -1- AU_DEFUN([AC_LTDL_SYMBOL_USCORE], [m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])]) m4trace:/sw/share/aclocal/ltdl.m4:770: -1- AC_DEFUN([AC_LTDL_SYMBOL_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_SYMBOL_USCORE' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_SYS_SYMBOL_USCORE], [LT_SYS_SYMBOL_USCORE($@)])]) m4trace:/sw/share/aclocal/ltdl.m4:777: -1- AC_DEFUN([LT_FUNC_DLSYM_USCORE], [AC_REQUIRE([LT_SYS_SYMBOL_USCORE])dnl if test x"$lt_cv_sys_symbol_underscore" = xyes; then if test x"$libltdl_cv_func_dlopen" = xyes || test x"$libltdl_cv_lib_dl_dlopen" = xyes ; then AC_CACHE_CHECK([whether we have to add an underscore for dlsym], [libltdl_cv_need_uscore], [libltdl_cv_need_uscore=unknown save_LIBS="$LIBS" LIBS="$LIBS $LIBADD_DLOPEN" _LT_TRY_DLOPEN_SELF( [libltdl_cv_need_uscore=no], [libltdl_cv_need_uscore=yes], [], [libltdl_cv_need_uscore=cross]) LIBS="$save_LIBS" ]) fi fi if test x"$libltdl_cv_need_uscore" = xyes; then AC_DEFINE([NEED_USCORE], [1], [Define if dlsym() requires a leading underscore in symbol names.]) fi ]) m4trace:/sw/share/aclocal/ltdl.m4:802: -1- AU_DEFUN([AC_LTDL_DLSYM_USCORE], [m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])]) m4trace:/sw/share/aclocal/ltdl.m4:802: -1- AC_DEFUN([AC_LTDL_DLSYM_USCORE], [AC_DIAGNOSE([obsolete], [The macro `AC_LTDL_DLSYM_USCORE' is obsolete. You should run autoupdate.])dnl m4_if($#, 0, [LT_FUNC_DLSYM_USCORE], [LT_FUNC_DLSYM_USCORE($@)])]) m4trace:/sw/share/aclocal/ltoptions.m4:13: -1- AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) m4trace:/sw/share/aclocal/ltoptions.m4:110: -1- 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.]) ]) m4trace:/sw/share/aclocal/ltoptions.m4:110: -1- AC_DEFUN([AC_LIBTOOL_DLOPEN], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_DLOPEN' is obsolete. You should run autoupdate.])dnl _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.]) ]) m4trace:/sw/share/aclocal/ltoptions.m4:145: -1- 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.]) ]) m4trace:/sw/share/aclocal/ltoptions.m4:145: -1- AC_DEFUN([AC_LIBTOOL_WIN32_DLL], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_WIN32_DLL' is obsolete. You should run autoupdate.])dnl 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.]) ]) m4trace:/sw/share/aclocal/ltoptions.m4:194: -1- AC_DEFUN([AC_ENABLE_SHARED], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) ]) m4trace:/sw/share/aclocal/ltoptions.m4:198: -1- AC_DEFUN([AC_DISABLE_SHARED], [_LT_SET_OPTION([LT_INIT], [disable-shared]) ]) m4trace:/sw/share/aclocal/ltoptions.m4:202: -1- AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) m4trace:/sw/share/aclocal/ltoptions.m4:202: -1- AC_DEFUN([AM_ENABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_SHARED' is obsolete. You should run autoupdate.])dnl AC_ENABLE_SHARED($@)]) m4trace:/sw/share/aclocal/ltoptions.m4:203: -1- AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) m4trace:/sw/share/aclocal/ltoptions.m4:203: -1- AC_DEFUN([AM_DISABLE_SHARED], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_SHARED' is obsolete. You should run autoupdate.])dnl AC_DISABLE_SHARED($@)]) m4trace:/sw/share/aclocal/ltoptions.m4:248: -1- AC_DEFUN([AC_ENABLE_STATIC], [_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) ]) m4trace:/sw/share/aclocal/ltoptions.m4:252: -1- AC_DEFUN([AC_DISABLE_STATIC], [_LT_SET_OPTION([LT_INIT], [disable-static]) ]) m4trace:/sw/share/aclocal/ltoptions.m4:256: -1- AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) m4trace:/sw/share/aclocal/ltoptions.m4:256: -1- AC_DEFUN([AM_ENABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_ENABLE_STATIC' is obsolete. You should run autoupdate.])dnl AC_ENABLE_STATIC($@)]) m4trace:/sw/share/aclocal/ltoptions.m4:257: -1- AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) m4trace:/sw/share/aclocal/ltoptions.m4:257: -1- AC_DEFUN([AM_DISABLE_STATIC], [AC_DIAGNOSE([obsolete], [The macro `AM_DISABLE_STATIC' is obsolete. You should run autoupdate.])dnl AC_DISABLE_STATIC($@)]) m4trace:/sw/share/aclocal/ltoptions.m4:302: -1- 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.]) ]) m4trace:/sw/share/aclocal/ltoptions.m4:302: -1- AC_DEFUN([AC_ENABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_ENABLE_FAST_INSTALL' is obsolete. You should run autoupdate.])dnl _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.]) ]) m4trace:/sw/share/aclocal/ltoptions.m4:309: -1- 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.]) ]) m4trace:/sw/share/aclocal/ltoptions.m4:309: -1- AC_DEFUN([AC_DISABLE_FAST_INSTALL], [AC_DIAGNOSE([obsolete], [The macro `AC_DISABLE_FAST_INSTALL' is obsolete. You should run autoupdate.])dnl _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.]) ]) m4trace:/sw/share/aclocal/ltoptions.m4:342: -1- 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.]) ]) m4trace:/sw/share/aclocal/ltoptions.m4:342: -1- AC_DEFUN([AC_LIBTOOL_PICMODE], [AC_DIAGNOSE([obsolete], [The macro `AC_LIBTOOL_PICMODE' is obsolete. You should run autoupdate.])dnl _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.]) ]) m4trace:/sw/share/aclocal/ltsugar.m4:13: -1- AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) m4trace:/sw/share/aclocal/ltversion.m4:18: -1- AC_DEFUN([LTVERSION_VERSION], [macro_version='2.2.6b' macro_revision='1.3017' _LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) _LT_DECL(, macro_revision, 0) ]) m4trace:/sw/share/aclocal/lt~obsolete.m4:36: -1- AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) m4trace:/sw/share/aclocal/lt~obsolete.m4:40: -1- AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH]) m4trace:/sw/share/aclocal/lt~obsolete.m4:41: -1- AC_DEFUN([_LT_AC_SHELL_INIT]) m4trace:/sw/share/aclocal/lt~obsolete.m4:42: -1- AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX]) m4trace:/sw/share/aclocal/lt~obsolete.m4:44: -1- AC_DEFUN([_LT_AC_TAGVAR]) m4trace:/sw/share/aclocal/lt~obsolete.m4:45: -1- AC_DEFUN([AC_LTDL_ENABLE_INSTALL]) m4trace:/sw/share/aclocal/lt~obsolete.m4:46: -1- AC_DEFUN([AC_LTDL_PREOPEN]) m4trace:/sw/share/aclocal/lt~obsolete.m4:47: -1- AC_DEFUN([_LT_AC_SYS_COMPILER]) m4trace:/sw/share/aclocal/lt~obsolete.m4:48: -1- AC_DEFUN([_LT_AC_LOCK]) m4trace:/sw/share/aclocal/lt~obsolete.m4:49: -1- AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE]) m4trace:/sw/share/aclocal/lt~obsolete.m4:50: -1- AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF]) m4trace:/sw/share/aclocal/lt~obsolete.m4:51: -1- AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O]) m4trace:/sw/share/aclocal/lt~obsolete.m4:52: -1- AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS]) m4trace:/sw/share/aclocal/lt~obsolete.m4:53: -1- AC_DEFUN([AC_LIBTOOL_OBJDIR]) m4trace:/sw/share/aclocal/lt~obsolete.m4:54: -1- AC_DEFUN([AC_LTDL_OBJDIR]) m4trace:/sw/share/aclocal/lt~obsolete.m4:55: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH]) m4trace:/sw/share/aclocal/lt~obsolete.m4:56: -1- AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP]) m4trace:/sw/share/aclocal/lt~obsolete.m4:57: -1- AC_DEFUN([AC_PATH_MAGIC]) m4trace:/sw/share/aclocal/lt~obsolete.m4:58: -1- AC_DEFUN([AC_PROG_LD_GNU]) m4trace:/sw/share/aclocal/lt~obsolete.m4:59: -1- AC_DEFUN([AC_PROG_LD_RELOAD_FLAG]) m4trace:/sw/share/aclocal/lt~obsolete.m4:60: -1- AC_DEFUN([AC_DEPLIBS_CHECK_METHOD]) m4trace:/sw/share/aclocal/lt~obsolete.m4:61: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI]) m4trace:/sw/share/aclocal/lt~obsolete.m4:62: -1- AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE]) m4trace:/sw/share/aclocal/lt~obsolete.m4:63: -1- AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC]) m4trace:/sw/share/aclocal/lt~obsolete.m4:64: -1- AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS]) m4trace:/sw/share/aclocal/lt~obsolete.m4:65: -1- AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP]) m4trace:/sw/share/aclocal/lt~obsolete.m4:66: -1- AC_DEFUN([LT_AC_PROG_EGREP]) m4trace:/sw/share/aclocal/lt~obsolete.m4:71: -1- AC_DEFUN([_AC_PROG_LIBTOOL]) m4trace:/sw/share/aclocal/lt~obsolete.m4:72: -1- AC_DEFUN([AC_LIBTOOL_SETUP]) m4trace:/sw/share/aclocal/lt~obsolete.m4:73: -1- AC_DEFUN([_LT_AC_CHECK_DLFCN]) m4trace:/sw/share/aclocal/lt~obsolete.m4:74: -1- AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER]) m4trace:/sw/share/aclocal/lt~obsolete.m4:75: -1- AC_DEFUN([_LT_AC_TAGCONFIG]) m4trace:/sw/share/aclocal/lt~obsolete.m4:77: -1- AC_DEFUN([_LT_AC_LANG_CXX]) m4trace:/sw/share/aclocal/lt~obsolete.m4:78: -1- AC_DEFUN([_LT_AC_LANG_F77]) m4trace:/sw/share/aclocal/lt~obsolete.m4:79: -1- AC_DEFUN([_LT_AC_LANG_GCJ]) m4trace:/sw/share/aclocal/lt~obsolete.m4:80: -1- AC_DEFUN([AC_LIBTOOL_RC]) m4trace:/sw/share/aclocal/lt~obsolete.m4:81: -1- AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG]) m4trace:/sw/share/aclocal/lt~obsolete.m4:82: -1- AC_DEFUN([_LT_AC_LANG_C_CONFIG]) m4trace:/sw/share/aclocal/lt~obsolete.m4:83: -1- AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG]) m4trace:/sw/share/aclocal/lt~obsolete.m4:84: -1- AC_DEFUN([_LT_AC_LANG_CXX_CONFIG]) m4trace:/sw/share/aclocal/lt~obsolete.m4:85: -1- AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG]) m4trace:/sw/share/aclocal/lt~obsolete.m4:86: -1- AC_DEFUN([_LT_AC_LANG_F77_CONFIG]) m4trace:/sw/share/aclocal/lt~obsolete.m4:87: -1- AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG]) m4trace:/sw/share/aclocal/lt~obsolete.m4:88: -1- AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG]) m4trace:/sw/share/aclocal/lt~obsolete.m4:89: -1- AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG]) m4trace:/sw/share/aclocal/lt~obsolete.m4:90: -1- AC_DEFUN([_LT_AC_LANG_RC_CONFIG]) m4trace:/sw/share/aclocal/lt~obsolete.m4:91: -1- AC_DEFUN([AC_LIBTOOL_CONFIG]) m4trace:/sw/share/aclocal/lt~obsolete.m4:92: -1- AC_DEFUN([_LT_AC_FILE_LTDLL_C]) m4trace:/sw/share/aclocal-1.10/amversion.m4:14: -1- AC_DEFUN([AM_AUTOMAKE_VERSION], [am__api_version='1.10' 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.10.2], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) m4trace:/sw/share/aclocal-1.10/amversion.m4:33: -1- AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], [AM_AUTOMAKE_VERSION([1.10.2])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) m4trace:/sw/share/aclocal-1.10/auxdir.m4:47: -1- AC_DEFUN([AM_AUX_DIR_EXPAND], [dnl Rely on autoconf to set up CDPATH properly. AC_PREREQ([2.50])dnl # expand $ac_aux_dir to an absolute path am_aux_dir=`cd $ac_aux_dir && pwd` ]) m4trace:/sw/share/aclocal-1.10/cond.m4:15: -1- AC_DEFUN([AM_CONDITIONAL], [AC_PREREQ(2.52)dnl ifelse([$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 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])]) m4trace:/sw/share/aclocal-1.10/depend.m4:28: -1- 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 ifelse([$1], CC, [depcc="$CC" am_compiler_list=], [$1], CXX, [depcc="$CXX" am_compiler_list=], [$1], OBJC, [depcc="$OBJC" 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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} 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 sub/conftest.${OBJEXT-o} 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]) ]) m4trace:/sw/share/aclocal-1.10/depend.m4:139: -1- AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl ]) m4trace:/sw/share/aclocal-1.10/depend.m4:147: -1- AC_DEFUN([AM_DEP_TRACK], [AC_ARG_ENABLE(dependency-tracking, [ --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl ]) m4trace:/sw/share/aclocal-1.10/depout.m4:14: -1- AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [# Autoconf 2.62 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"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //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' -e 's/\$U/'"$U"'/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 ]) m4trace:/sw/share/aclocal-1.10/depout.m4:73: -1- 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"]) ]) m4trace:/sw/share/aclocal-1.10/init.m4:26: -1- AC_DEFUN([AM_INIT_AUTOMAKE], [AC_PREREQ([2.60])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], [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], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, [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) AM_PROG_INSTALL_SH AM_PROG_INSTALL_STRIP AC_REQUIRE([AM_PROG_MKDIR_P])dnl # We need awk for the "check" target. 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)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) ]) m4trace:/sw/share/aclocal-1.10/init.m4:113: -1- 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]) m4trace:/sw/share/aclocal-1.10/install-sh.m4:11: -1- AC_DEFUN([AM_PROG_INSTALL_SH], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} AC_SUBST(install_sh)]) m4trace:/sw/share/aclocal-1.10/lead-dot.m4:12: -1- 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])]) m4trace:/sw/share/aclocal-1.10/make.m4:14: -1- AC_DEFUN([AM_MAKE_INCLUDE], [am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .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 # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi AC_SUBST([am__include]) AC_SUBST([am__quote]) AC_MSG_RESULT([$_am_result]) rm -f confinc confmf ]) m4trace:/sw/share/aclocal-1.10/missing.m4:14: -1- AC_DEFUN([AM_MISSING_PROG], [AC_REQUIRE([AM_MISSING_HAS_RUN]) $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) m4trace:/sw/share/aclocal-1.10/missing.m4:24: -1- AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= AC_MSG_WARN([`missing' script is too old or missing]) fi ]) m4trace:/sw/share/aclocal-1.10/mkdirp.m4:11: -1- AC_DEFUN([AM_PROG_MKDIR_P], [AC_PREREQ([2.60])dnl AC_REQUIRE([AC_PROG_MKDIR_P])dnl dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, dnl while keeping a definition of mkdir_p for backward compatibility. dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of dnl Makefile.ins that do not define MKDIR_P, so we do our own dnl adjustment using top_builddir (which is defined more often than dnl MKDIR_P). AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl case $mkdir_p in [[\\/$]]* | ?:[[\\/]]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac ]) m4trace:/sw/share/aclocal-1.10/options.m4:13: -1- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) m4trace:/sw/share/aclocal-1.10/options.m4:19: -1- AC_DEFUN([_AM_SET_OPTION], [m4_define(_AM_MANGLE_OPTION([$1]), 1)]) m4trace:/sw/share/aclocal-1.10/options.m4:25: -1- AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) m4trace:/sw/share/aclocal-1.10/options.m4:31: -1- AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) m4trace:/sw/share/aclocal-1.10/runlog.m4:12: -1- 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); }]) m4trace:/sw/share/aclocal-1.10/sanity.m4:14: -1- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) # Just in case sleep 1 echo timestamp > conftest.file # 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 ( 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 rm -f conftest.file 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 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)]) m4trace:/sw/share/aclocal-1.10/strip.m4:17: -1- 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])]) m4trace:/sw/share/aclocal-1.10/substnot.m4:12: -1- AC_DEFUN([_AM_SUBST_NOTMAKE]) m4trace:/sw/share/aclocal-1.10/tar.m4:24: -1- AC_DEFUN([_AM_PROG_TAR], [# Always define AMTAR for backward compatibility. AM_MISSING_PROG([AMTAR], [tar]) m4_if([$1], [v7], [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], [m4_case([$1], [ustar],, [pax],, [m4_fatal([Unknown tar format])]) AC_MSG_CHECKING([how to create a $1 tar archive]) # Loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' _am_tools=${am_cv_prog_tar_$1-$_am_tools} # Do not fold the above two line into one, because Tru64 sh and # Solaris sh will not grok spaces in the rhs of `-'. 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]) ]) m4trace:configure.in:2: -1- m4_pattern_forbid([^_?A[CHUM]_]) m4trace:configure.in:2: -1- m4_pattern_forbid([_AC_]) m4trace:configure.in:2: -1- m4_pattern_forbid([^LIBOBJS$], [do not use LIBOBJS directly, use AC_LIBOBJ (see section `AC_LIBOBJ vs LIBOBJS']) m4trace:configure.in:2: -1- m4_pattern_allow([^AS_FLAGS$]) m4trace:configure.in:2: -1- m4_pattern_forbid([^_?m4_]) m4trace:configure.in:2: -1- m4_pattern_forbid([^dnl$]) m4trace:configure.in:2: -1- m4_pattern_forbid([^_?AS_]) m4trace:configure.in:2: -1- m4_pattern_allow([^SHELL$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PATH_SEPARATOR$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.in:2: -1- m4_pattern_allow([^exec_prefix$]) m4trace:configure.in:2: -1- m4_pattern_allow([^prefix$]) m4trace:configure.in:2: -1- m4_pattern_allow([^program_transform_name$]) m4trace:configure.in:2: -1- m4_pattern_allow([^bindir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^sbindir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^libexecdir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^datarootdir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^datadir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^sysconfdir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^sharedstatedir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^localstatedir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^includedir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^oldincludedir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^docdir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^infodir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^htmldir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^dvidir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^pdfdir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^psdir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^libdir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^localedir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^mandir$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_NAME$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_TARNAME$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_VERSION$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_STRING$]) m4trace:configure.in:2: -1- m4_pattern_allow([^PACKAGE_BUGREPORT$]) m4trace:configure.in:2: -1- m4_pattern_allow([^DEFS$]) m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_C$]) m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_N$]) m4trace:configure.in:2: -1- m4_pattern_allow([^ECHO_T$]) m4trace:configure.in:2: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:2: -1- m4_pattern_allow([^build_alias$]) m4trace:configure.in:2: -1- m4_pattern_allow([^host_alias$]) m4trace:configure.in:2: -1- m4_pattern_allow([^target_alias$]) m4trace:configure.in:5: -1- AM_INIT_AUTOMAKE([cddlib], [0.94]) m4trace:configure.in:5: -1- m4_pattern_allow([^AM_[A-Z]+FLAGS$]) m4trace:configure.in:5: -1- AM_SET_CURRENT_AUTOMAKE_VERSION m4trace:configure.in:5: -1- AM_AUTOMAKE_VERSION([1.10.2]) m4trace:configure.in:5: -1- _AM_AUTOCONF_VERSION([2.63]) m4trace:configure.in:5: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) m4trace:configure.in:5: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) m4trace:configure.in:5: -1- m4_pattern_allow([^INSTALL_DATA$]) m4trace:configure.in:5: -1- m4_pattern_allow([^am__isrc$]) m4trace:configure.in:5: -1- _AM_SUBST_NOTMAKE([am__isrc]) m4trace:configure.in:5: -1- m4_pattern_allow([^CYGPATH_W$]) m4trace:configure.in:5: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.in:5: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.in:5: -1- _AM_IF_OPTION([no-define], [], [AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])]) m4trace:configure.in:5: -2- _AM_MANGLE_OPTION([no-define]) m4trace:configure.in:5: -1- m4_pattern_allow([^PACKAGE$]) m4trace:configure.in:5: -1- m4_pattern_allow([^VERSION$]) m4trace:configure.in:5: -1- AM_SANITY_CHECK m4trace:configure.in:5: -1- AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) m4trace:configure.in:5: -1- AM_MISSING_HAS_RUN m4trace:configure.in:5: -1- AM_AUX_DIR_EXPAND m4trace:configure.in:5: -1- m4_pattern_allow([^ACLOCAL$]) m4trace:configure.in:5: -1- AM_MISSING_PROG([AUTOCONF], [autoconf]) m4trace:configure.in:5: -1- m4_pattern_allow([^AUTOCONF$]) m4trace:configure.in:5: -1- AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) m4trace:configure.in:5: -1- m4_pattern_allow([^AUTOMAKE$]) m4trace:configure.in:5: -1- AM_MISSING_PROG([AUTOHEADER], [autoheader]) m4trace:configure.in:5: -1- m4_pattern_allow([^AUTOHEADER$]) m4trace:configure.in:5: -1- AM_MISSING_PROG([MAKEINFO], [makeinfo]) m4trace:configure.in:5: -1- m4_pattern_allow([^MAKEINFO$]) m4trace:configure.in:5: -1- AM_PROG_INSTALL_SH m4trace:configure.in:5: -1- m4_pattern_allow([^install_sh$]) m4trace:configure.in:5: -1- AM_PROG_INSTALL_STRIP m4trace:configure.in:5: -1- m4_pattern_allow([^STRIP$]) m4trace:configure.in:5: -1- m4_pattern_allow([^INSTALL_STRIP_PROGRAM$]) m4trace:configure.in:5: -1- AM_PROG_MKDIR_P m4trace:configure.in:5: -1- m4_pattern_allow([^MKDIR_P$]) m4trace:configure.in:5: -1- m4_pattern_allow([^mkdir_p$]) m4trace:configure.in:5: -1- m4_pattern_allow([^AWK$]) m4trace:configure.in:5: -1- m4_pattern_allow([^SET_MAKE$]) m4trace:configure.in:5: -1- AM_SET_LEADING_DOT m4trace:configure.in:5: -1- m4_pattern_allow([^am__leading_dot$]) m4trace:configure.in:5: -1- _AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])])]) m4trace:configure.in:5: -2- _AM_MANGLE_OPTION([tar-ustar]) m4trace:configure.in:5: -1- _AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], [_AM_PROG_TAR([v7])]) m4trace:configure.in:5: -2- _AM_MANGLE_OPTION([tar-pax]) m4trace:configure.in:5: -1- _AM_PROG_TAR([v7]) m4trace:configure.in:5: -1- AM_MISSING_PROG([AMTAR], [tar]) m4trace:configure.in:5: -1- m4_pattern_allow([^AMTAR$]) m4trace:configure.in:5: -1- m4_pattern_allow([^am__tar$]) m4trace:configure.in:5: -1- m4_pattern_allow([^am__untar$]) m4trace:configure.in:5: -1- _AM_IF_OPTION([no-dependencies], [], [AC_PROVIDE_IFELSE([AC_PROG_CC], [_AM_DEPENDENCIES(CC)], [define([AC_PROG_CC], defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], [_AM_DEPENDENCIES(CXX)], [define([AC_PROG_CXX], defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], [_AM_DEPENDENCIES(OBJC)], [define([AC_PROG_OBJC], defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl ]) m4trace:configure.in:5: -2- _AM_MANGLE_OPTION([no-dependencies]) m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:8: -1- m4_pattern_allow([^CFLAGS$]) m4trace:configure.in:8: -1- m4_pattern_allow([^LDFLAGS$]) m4trace:configure.in:8: -1- m4_pattern_allow([^LIBS$]) m4trace:configure.in:8: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:8: -1- m4_pattern_allow([^CC$]) m4trace:configure.in:8: -1- m4_pattern_allow([^ac_ct_CC$]) m4trace:configure.in:8: -1- m4_pattern_allow([^EXEEXT$]) m4trace:configure.in:8: -1- m4_pattern_allow([^OBJEXT$]) m4trace:configure.in:8: -1- _AM_DEPENDENCIES([CC]) m4trace:configure.in:8: -1- AM_SET_DEPDIR m4trace:configure.in:8: -1- m4_pattern_allow([^DEPDIR$]) m4trace:configure.in:8: -1- AM_OUTPUT_DEPENDENCY_COMMANDS m4trace:configure.in:8: -1- AM_MAKE_INCLUDE m4trace:configure.in:8: -1- m4_pattern_allow([^am__include$]) m4trace:configure.in:8: -1- m4_pattern_allow([^am__quote$]) m4trace:configure.in:8: -1- AM_DEP_TRACK m4trace:configure.in:8: -1- AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) m4trace:configure.in:8: -1- m4_pattern_allow([^AMDEP_TRUE$]) m4trace:configure.in:8: -1- m4_pattern_allow([^AMDEP_FALSE$]) m4trace:configure.in:8: -1- _AM_SUBST_NOTMAKE([AMDEP_TRUE]) m4trace:configure.in:8: -1- _AM_SUBST_NOTMAKE([AMDEP_FALSE]) m4trace:configure.in:8: -1- m4_pattern_allow([^AMDEPBACKSLASH$]) m4trace:configure.in:8: -1- _AM_SUBST_NOTMAKE([AMDEPBACKSLASH]) m4trace:configure.in:8: -1- m4_pattern_allow([^CCDEPMODE$]) m4trace:configure.in:8: -1- AM_CONDITIONAL([am__fastdepCC], [ test "x$enable_dependency_tracking" != xno \ && test "$am_cv_CC_dependencies_compiler_type" = gcc3]) m4trace:configure.in:8: -1- m4_pattern_allow([^am__fastdepCC_TRUE$]) m4trace:configure.in:8: -1- m4_pattern_allow([^am__fastdepCC_FALSE$]) m4trace:configure.in:8: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_TRUE]) m4trace:configure.in:8: -1- _AM_SUBST_NOTMAKE([am__fastdepCC_FALSE]) m4trace:configure.in:9: -1- m4_pattern_allow([^INSTALL_PROGRAM$]) m4trace:configure.in:9: -1- m4_pattern_allow([^INSTALL_SCRIPT$]) m4trace:configure.in:9: -1- m4_pattern_allow([^INSTALL_DATA$]) m4trace:configure.in:10: -1- LT_INIT m4trace:configure.in:10: -1- m4_pattern_forbid([^_?LT_[A-Z_]+$]) m4trace:configure.in:10: -1- m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$]) m4trace:configure.in:10: -1- LTOPTIONS_VERSION m4trace:configure.in:10: -1- LTSUGAR_VERSION m4trace:configure.in:10: -1- LTVERSION_VERSION m4trace:configure.in:10: -1- LTOBSOLETE_VERSION m4trace:configure.in:10: -1- _LT_PROG_LTMAIN m4trace:configure.in:10: -1- m4_pattern_allow([^LIBTOOL$]) m4trace:configure.in:10: -1- m4_pattern_allow([^build$]) m4trace:configure.in:10: -1- m4_pattern_allow([^build_cpu$]) m4trace:configure.in:10: -1- m4_pattern_allow([^build_vendor$]) m4trace:configure.in:10: -1- m4_pattern_allow([^build_os$]) m4trace:configure.in:10: -1- m4_pattern_allow([^host$]) m4trace:configure.in:10: -1- m4_pattern_allow([^host_cpu$]) m4trace:configure.in:10: -1- m4_pattern_allow([^host_vendor$]) m4trace:configure.in:10: -1- m4_pattern_allow([^host_os$]) m4trace:configure.in:10: -1- LT_PATH_LD m4trace:configure.in:10: -1- m4_pattern_allow([^SED$]) m4trace:configure.in:10: -1- AC_PROG_EGREP m4trace:configure.in:10: -1- m4_pattern_allow([^GREP$]) m4trace:configure.in:10: -1- m4_pattern_allow([^EGREP$]) m4trace:configure.in:10: -1- m4_pattern_allow([^FGREP$]) m4trace:configure.in:10: -1- m4_pattern_allow([^GREP$]) m4trace:configure.in:10: -1- m4_pattern_allow([^LD$]) m4trace:configure.in:10: -1- LT_PATH_NM m4trace:configure.in:10: -1- m4_pattern_allow([^DUMPBIN$]) m4trace:configure.in:10: -1- m4_pattern_allow([^ac_ct_DUMPBIN$]) m4trace:configure.in:10: -1- m4_pattern_allow([^DUMPBIN$]) m4trace:configure.in:10: -1- m4_pattern_allow([^NM$]) m4trace:configure.in:10: -1- m4_pattern_allow([^LN_S$]) m4trace:configure.in:10: -1- LT_CMD_MAX_LEN m4trace:configure.in:10: -1- m4_pattern_allow([^OBJDUMP$]) m4trace:configure.in:10: -1- m4_pattern_allow([^OBJDUMP$]) m4trace:configure.in:10: -1- m4_pattern_allow([^AR$]) m4trace:configure.in:10: -1- m4_pattern_allow([^STRIP$]) m4trace:configure.in:10: -1- m4_pattern_allow([^RANLIB$]) m4trace:configure.in:10: -1- m4_pattern_allow([LT_OBJDIR]) m4trace:configure.in:10: -1- m4_pattern_allow([^LT_OBJDIR$]) m4trace:configure.in:10: -1- m4_pattern_allow([^lt_ECHO$]) m4trace:configure.in:10: -1- _LT_CC_BASENAME([$compiler]) m4trace:configure.in:10: -1- _LT_PATH_TOOL_PREFIX([${ac_tool_prefix}file], [/usr/bin$PATH_SEPARATOR$PATH]) m4trace:configure.in:10: -1- _LT_PATH_TOOL_PREFIX([file], [/usr/bin$PATH_SEPARATOR$PATH]) m4trace:configure.in:10: -1- LT_SUPPORTED_TAG([CC]) m4trace:configure.in:10: -1- _LT_COMPILER_BOILERPLATE m4trace:configure.in:10: -1- _LT_LINKER_BOILERPLATE m4trace:configure.in:10: -1- _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, )="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, ) -fno-rtti -fno-exceptions"]) m4trace:configure.in:10: -1- _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, ) works], [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, )], [$_LT_TAGVAR(lt_prog_compiler_pic, )@&t@m4_if([],[],[ -DPIC],[m4_if([],[CXX],[ -DPIC],[])])], [], [case $_LT_TAGVAR(lt_prog_compiler_pic, ) in "" | " "*) ;; *) _LT_TAGVAR(lt_prog_compiler_pic, )=" $_LT_TAGVAR(lt_prog_compiler_pic, )" ;; esac], [_LT_TAGVAR(lt_prog_compiler_pic, )= _LT_TAGVAR(lt_prog_compiler_can_build_shared, )=no]) m4trace:configure.in:10: -1- _LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], [lt_cv_prog_compiler_static_works], [$lt_tmp_static_flag], [], [_LT_TAGVAR(lt_prog_compiler_static, )=]) m4trace:configure.in:10: -1- m4_pattern_allow([^DSYMUTIL$]) m4trace:configure.in:10: -1- m4_pattern_allow([^NMEDIT$]) m4trace:configure.in:10: -1- m4_pattern_allow([^LIPO$]) m4trace:configure.in:10: -1- m4_pattern_allow([^OTOOL$]) m4trace:configure.in:10: -1- m4_pattern_allow([^OTOOL64$]) m4trace:configure.in:10: -1- LT_SYS_DLOPEN_SELF m4trace:configure.in:10: -1- m4_pattern_allow([^CPP$]) m4trace:configure.in:10: -1- m4_pattern_allow([^CPPFLAGS$]) m4trace:configure.in:10: -1- m4_pattern_allow([^CPP$]) m4trace:configure.in:10: -1- m4_pattern_allow([^STDC_HEADERS$]) m4trace:configure.in:18: -1- m4_pattern_allow([^HAVE_LIBGMP$]) m4trace:configure.in:21: -1- m4_pattern_allow([^STDC_HEADERS$]) m4trace:configure.in:24: -1- m4_pattern_allow([^const$]) m4trace:configure.in:29: -1- m4_pattern_allow([^LIB@&t@OBJS$]) m4trace:configure.in:29: -1- m4_pattern_allow([^LTLIBOBJS$]) m4trace:configure.in:29: -1- _AM_OUTPUT_DEPENDENCY_COMMANDS m4trace:configure.in:29: -1- _LT_PROG_LTMAIN cddlib-094g/config.guess000077500000000000000000001306111206770251100153030ustar00rootroot00000000000000#! /bin/sh # Attempt to guess a canonical system name. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. timestamp='2008-11-15' # 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 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., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # 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 Per Bothner . # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # This script attempts to guess a canonical system name similar to # config.sub. If it succeeds, it prints the system name on stdout, and # exits with 0. Otherwise, it exits with 1. # # The plan is that this can be called by configure scripts if you # don't specify an explicit build system type. 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 (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 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 # 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 tupples: *-*-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=`(/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 ;; *) machine=${UNAME_MACHINE_ARCH}-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently, or will in the future. case "${UNAME_MACHINE_ARCH}" in arm*|i386|m68k|ns32k|sh3*|sparc|vax) eval $set_cc_for_build if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep __ELF__ >/dev/null 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 # 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/[-_].*/\./'` ;; 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}" exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${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 ;; 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'` exit ;; 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 ;; 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: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 '\n#ifdef __amd64\nIS_64BIT_ARCH\n#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:*:[456]) 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/oslevel ] ; then IBM_REV=`/usr/bin/oslevel` 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 __LP64__ >/dev/null 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:*:*) case ${UNAME_MACHINE} in pc98) echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 exit ;; i*:PW*:*) echo ${UNAME_MACHINE}-pc-pw32 exit ;; *:Interix*:[3456]*) case ${UNAME_MACHINE} in x86) echo i586-pc-interix${UNAME_RELEASE} exit ;; EM64T | authenticamd | genuineintel) 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 ;; 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-gnu`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 '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu exit ;; i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix 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-gnu else echo ${UNAME_MACHINE}-unknown-linux-gnueabi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; cris:Linux:*:*) echo cris-axis-linux-gnu exit ;; crisv32:Linux:*:*) echo crisv32-axis-linux-gnu exit ;; frv:Linux:*:*) echo frv-unknown-linux-gnu exit ;; ia64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m32r*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; m68*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; mips:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips #undef mipsel #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mipsel #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; mips64:Linux:*:*) eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #undef CPU #undef mips64 #undef mips64el #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) CPU=mips64el #else #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) CPU=mips64 #else CPU= #endif #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^CPU/{ s: ::g p }'`" test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } ;; or32:Linux:*:*) echo or32-unknown-linux-gnu exit ;; ppc:Linux:*:*) echo powerpc-unknown-linux-gnu exit ;; ppc64:Linux:*:*) echo powerpc64-unknown-linux-gnu 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 ld.so.1 >/dev/null if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-gnu 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-gnu ;; PA8*) echo hppa2.0-unknown-linux-gnu ;; *) echo hppa-unknown-linux-gnu ;; esac exit ;; parisc64:Linux:*:* | hppa64:Linux:*:*) echo hppa64-unknown-linux-gnu exit ;; s390:Linux:*:* | s390x:Linux:*:*) echo ${UNAME_MACHINE}-ibm-linux exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sh*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; sparc:Linux:*:* | sparc64:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-gnu exit ;; x86_64:Linux:*:*) echo x86_64-unknown-linux-gnu exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-gnu exit ;; i*86:Linux:*:*) # The BFD linker knows what the default object file format is, so # first see if it will tell us. cd to the root directory to prevent # problems with other programs or directories called `ld' in the path. # Set LC_ALL=C to ensure ld outputs messages in English. ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ | sed -ne '/supported targets:/!d s/[ ][ ]*/ /g s/.*supported targets: *// s/ .*// p'` case "$ld_supported_targets" in elf32-i386) TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" ;; a.out-i386-linux) echo "${UNAME_MACHINE}-pc-linux-gnuaout" exit ;; "") # Either a pre-BFD a.out linker (linux-gnuoldld) or # one that does not give us useful --help. echo "${UNAME_MACHINE}-pc-linux-gnuoldld" exit ;; esac # Determine whether the default compiler is a.out or elf eval $set_cc_for_build sed 's/^ //' << EOF >$dummy.c #include #ifdef __ELF__ # ifdef __GLIBC__ # if __GLIBC__ >= 2 LIBC=gnu # else LIBC=gnulibc1 # endif # else LIBC=gnulibc1 # endif #else #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC) LIBC=gnu #else LIBC=gnuaout #endif #endif #ifdef __dietlibc__ LIBC=dietlibc #endif EOF eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' /^LIBC/{ s: ::g p }'`" test x"${LIBC}" != x && { echo "${UNAME_MACHINE}-pc-linux-${LIBC}" exit } test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; 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.0*:*) 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 i386. echo i386-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; } ;; 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.0*:*) 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 ;; 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 ;; 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 case $UNAME_PROCESSOR in unknown) UNAME_PROCESSOR=powerpc ;; esac 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 ;; NSE-?:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) echo nsr-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 ;; esac #echo '(No uname command or uname output not recognized.)' 1>&2 #echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 eval $set_cc_for_build cat >$dummy.c < # include #endif main () { #if defined (sony) #if defined (MIPSEB) /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, I don't know.... */ printf ("mips-sony-bsd\n"); exit (0); #else #include printf ("m68k-sony-newsos%s\n", #ifdef NEWSOS4 "4" #else "" #endif ); exit (0); #endif #endif #if defined (__arm) && defined (__acorn) && defined (__unix) printf ("arm-acorn-riscix\n"); exit (0); #endif #if defined (hp300) && !defined (hpux) printf ("m68k-hp-bsd\n"); exit (0); #endif #if defined (NeXT) #if !defined (__ARCHITECTURE__) #define __ARCHITECTURE__ "m68k" #endif int version; version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; if (version < 4) printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); else printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); exit (0); #endif #if defined (MULTIMAX) || defined (n16) #if defined (UMAXV) printf ("ns32k-encore-sysv\n"); exit (0); #else #if defined (CMU) printf ("ns32k-encore-mach\n"); exit (0); #else printf ("ns32k-encore-bsd\n"); exit (0); #endif #endif #endif #if defined (__386BSD__) printf ("i386-pc-bsd\n"); exit (0); #endif #if defined (sequent) #if defined (i386) printf ("i386-sequent-dynix\n"); exit (0); #endif #if defined (ns32000) printf ("ns32k-sequent-dynix\n"); exit (0); #endif #endif #if defined (_SEQUENT_) struct utsname un; uname(&un); if (strncmp(un.version, "V2", 2) == 0) { printf ("i386-sequent-ptx2\n"); exit (0); } if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ printf ("i386-sequent-ptx1\n"); exit (0); } printf ("i386-sequent-ptx\n"); exit (0); #endif #if defined (vax) # if !defined (ultrix) # include # if defined (BSD) # if BSD == 43 printf ("vax-dec-bsd4.3\n"); exit (0); # else # if BSD == 199006 printf ("vax-dec-bsd4.3reno\n"); exit (0); # else printf ("vax-dec-bsd\n"); exit (0); # endif # endif # else printf ("vax-dec-bsd\n"); exit (0); # endif # else printf ("vax-dec-ultrix\n"); exit (0); # endif #endif #if defined (alliant) && defined (i860) printf ("i860-alliant-bsd\n"); exit (0); #endif exit (1); } EOF $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && { echo "$SYSTEM_NAME"; exit; } # Apollos put the system type in the environment. test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } # Convex versions that predate uname can use getsysinfo(1) if [ -x /usr/convex/getsysinfo ] then case `getsysinfo -f cpu_type` in c1*) echo c1-convex-bsd exit ;; c2*) if getsysinfo -f scalar_acc then echo c32-convex-bsd else echo c2-convex-bsd fi exit ;; c34*) echo c34-convex-bsd exit ;; c38*) echo c38-convex-bsd exit ;; c4*) echo c4-convex-bsd exit ;; esac fi cat >&2 < in order to provide the needed information to handle your system. config.guess timestamp = $timestamp 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` /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-094g/config.sub000077500000000000000000001017561206770251100147560ustar00rootroot00000000000000#! /bin/sh # Configuration validation subroutine script. # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, # 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 # Free Software Foundation, Inc. timestamp='2008-09-08' # This file is (in principle) common to ALL GNU software. # The presence of a machine in this file suggests that SOME GNU software # can handle that machine. It does not imply ALL GNU software can. # # 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 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., 51 Franklin Street - Fifth Floor, Boston, MA # 02110-1301, USA. # # 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. # Please send patches to . Submit a context # diff and a properly formatted ChangeLog entry. # # 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. # 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 $0 [OPTION] 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 (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 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-dietlibc | linux-newlib* | linux-uclibc* | \ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; *) 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) os= basic_machine=$1 ;; -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*) 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 \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ | bfin \ | c4x | clipper \ | d10v | d30v | dlx | dsp16xx \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ | maxq | mb | microblaze | 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 \ | mipsisa64 | mipsisa64el \ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | mt \ | msp430 \ | nios | nios2 \ | ns16k | ns32k \ | or32 \ | pdp10 | pdp11 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ | pyramid \ | score \ | sh | sh[1234] | sh[24]a | 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 \ | spu | strongarm \ | tahoe | thumb | tic4x | tic80 | tron \ | v850 | v850e \ | we32k \ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; m6811 | m68hc11 | m6812 | m68hc12) # Motorola 68HC11/12. basic_machine=$basic_machine-unknown os=-none ;; m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) ;; ms1) basic_machine=mt-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-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ | clipper-* | craynv-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ | m88110-* | m88k-* | maxq-* | mcore-* | 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-* \ | mipsisa64-* | mipsisa64el-* \ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nios-* | nios2-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ | pyramid-* \ | romp-* | rs6000-* \ | sh-* | sh[1234]-* | sh[24]a-* | 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-* | strongarm-* | sv1-* | sx?-* \ | tahoe-* | thumb-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ | tron-* \ | v850-* | v850e-* | vax-* \ | we32k-* \ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ | 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 ;; 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 ;; 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) 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 ;; 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'm not sure what "Sysv32" means. Should this be sysv3.2? 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 ;; 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 ;; mingw32) basic_machine=i386-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 ;; msdos) basic_machine=i386-pc os=-msdos ;; ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; mvs) basic_machine=i370-ibm os=-mvs ;; 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 ;; nsr-tandem) basic_machine=nsr-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) basic_machine=powerpc-unknown ;; ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) 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 | ppc64-le | powerpc64-little) 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) 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 ;; 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 ;; tic54x | c54x*) basic_machine=tic54x-unknown os=-coff ;; tic55x | c55x*) basic_machine=tic55x-unknown os=-coff ;; tic6x | c6x*) basic_machine=tic6x-unknown os=-coff ;; tile*) basic_machine=tile-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 ;; 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 ;; 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[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. -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* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ | -openbsd* | -solidbsd* \ | -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* \ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -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*) # 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 ;; -kaos*) os=-kaos ;; -zvmoe) os=-zvmoe ;; -dicos*) os=-dicos ;; -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 ;; # 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 # This also exists in the configure program, but was not the # default. # os=-sunos4 ;; 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 ;; *-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 ;; -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-094g/configure000077500000000000000000014020731206770251100146770ustar00rootroot00000000000000#! /bin/sh # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.63. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006, 2007, 2008 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 # PATH needs CR # 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_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 if (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 # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false 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. 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); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. 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 # Name of the executable. 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'` # CDPATH. $as_unset CDPATH if test "x$CONFIG_SHELL" = x; then if (eval ":") 2>/dev/null; then as_have_required=yes else as_have_required=no fi if test $as_have_required = yes && (eval ": (as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=\$LINENO as_lineno_2=\$LINENO test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" && test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; } ") 2> /dev/null; then : else as_candidate_shells= as_save_IFS=$IFS; IFS=$PATH_SEPARATOR for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH do IFS=$as_save_IFS test -z "$as_dir" && as_dir=. case $as_dir in /*) for as_base in sh bash ksh sh5; do as_candidate_shells="$as_candidate_shells $as_dir/$as_base" done;; esac done IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do # Try only shells that exist, to save several forks. if { test -f "$as_shell" || test -f "$as_shell.exe"; } && { ("$as_shell") 2> /dev/null <<\_ASEOF 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 : _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes if { "$as_shell" 2> /dev/null <<\_ASEOF 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_func_return () { (exit $1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = "$1" ); then : else exitcode=1 echo positional parameters were not saved. fi test $exitcode = 0) || { (exit 1); exit 1; } ( as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; } _ASEOF }; then break fi fi done if test "x$CONFIG_SHELL" != x; then for as_var in BASH_ENV ENV do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done export CONFIG_SHELL exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"} fi if test $as_have_required = no; then echo This script requires a shell more modern than all the echo shells that I found on your system. Please install a echo modern shell, or manually run the script under such a echo shell if you do have one. { (exit 1); exit 1; } fi fi fi (eval "as_func_return () { (exit \$1) } as_func_success () { as_func_return 0 } as_func_failure () { as_func_return 1 } as_func_ret_success () { return 0 } as_func_ret_failure () { return 1 } exitcode=0 if as_func_success; then : else exitcode=1 echo as_func_success failed. fi if as_func_failure; then exitcode=1 echo as_func_failure succeeded. fi if as_func_ret_success; then : else exitcode=1 echo as_func_ret_success failed. fi if as_func_ret_failure; then exitcode=1 echo as_func_ret_failure succeeded. fi if ( set x; as_func_ret_success y && test x = \"\$1\" ); then : else exitcode=1 echo positional parameters were not saved. fi test \$exitcode = 0") || { echo No shell found that supports shell functions. echo Please tell bug-autoconf@gnu.org about your system, echo including any error possibly output before this message. echo This can help us improve future autoconf versions. echo Configuration will now proceed without shell functions. } as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. 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 { (exit 1); exit 1; }; } # 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 } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi 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 -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' 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=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # 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'" # Check that we are running under the correct shell. SHELL=${CONFIG_SHELL-/bin/sh} case X$lt_ECHO in X*--fallback-echo) # Remove one level of quotation (which was required for Make). ECHO=`echo "$lt_ECHO" | sed 's,\\\\\$\\$0,'$0','` ;; esac ECHO=${lt_ECHO-echo} if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' ; then # Yippee, $ECHO works! : else # Restart under the correct shell. exec $SHELL "$0" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat <<_LT_EOF $* _LT_EOF exit 0 fi # 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 if test -z "$lt_ECHO"; then if test "X${echo_test_string+set}" != Xset; then # find a string as large as possible, as long as the shell can cope with it for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ... if { echo_test_string=`eval $cmd`; } 2>/dev/null && { test "X$echo_test_string" = "X$echo_test_string"; } 2>/dev/null then break fi done fi if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then : else # The Solaris, AIX, and Digital Unix default echo programs unquote # backslashes. This makes it impossible to quote backslashes using # echo "$something" | sed 's/\\/\\\\/g' # # So, first we look for a working echo in the user's PATH. lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR for dir in $PATH /usr/ucb; do IFS="$lt_save_ifs" if (test -f $dir/echo || test -f $dir/echo$ac_exeext) && test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' && echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$dir/echo" break fi done IFS="$lt_save_ifs" if test "X$ECHO" = Xecho; then # We didn't find a better echo, so look for alternatives. if test "X`{ print -r '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ print -r "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # This shell has a builtin print -r that does the trick. ECHO='print -r' elif { test -f /bin/ksh || test -f /bin/ksh$ac_exeext; } && test "X$CONFIG_SHELL" != X/bin/ksh; then # If we have ksh, try running configure again with it. ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} export ORIGINAL_CONFIG_SHELL CONFIG_SHELL=/bin/ksh export CONFIG_SHELL exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"} else # Try using printf. ECHO='printf %s\n' if test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t' && echo_testing_string=`{ $ECHO "$echo_test_string"; } 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then # Cool, printf works : elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL export CONFIG_SHELL SHELL="$CONFIG_SHELL" export SHELL ECHO="$CONFIG_SHELL $0 --fallback-echo" elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` && test "X$echo_testing_string" = 'X\t' && echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` && test "X$echo_testing_string" = "X$echo_test_string"; then ECHO="$CONFIG_SHELL $0 --fallback-echo" else # maybe with a smaller string... prev=: for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do if { test "X$echo_test_string" = "X`eval $cmd`"; } 2>/dev/null then break fi prev="$cmd" done if test "$prev" != 'sed 50q "$0"'; then echo_test_string=`eval $prev` export echo_test_string exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"} else # Oops. We lost completely, so just stick with echo. ECHO=echo fi fi fi fi fi fi # Copy echo and quote the copy suitably for passing to libtool from # the Makefile, instead of quoting the original, which is used later. lt_ECHO=$ECHO if test "X$lt_ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then lt_ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo" fi exec 7<&0 &1 # Name of the host. # hostname on some systems (SVR3.2, 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= SHELL=${CONFIG_SHELL-/bin/sh} # Identity of this package. PACKAGE_NAME= PACKAGE_TARNAME= PACKAGE_VERSION= PACKAGE_STRING= PACKAGE_BUGREPORT= # 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='LTLIBOBJS LIBOBJS CPP OTOOL64 OTOOL LIPO NMEDIT DSYMUTIL lt_ECHO RANLIB AR OBJDUMP LN_S NM ac_ct_DUMPBIN DUMPBIN LD FGREP EGREP GREP SED host_os host_vendor host_cpu host build_os build_vendor build_cpu build LIBTOOL am__fastdepCC_FALSE am__fastdepCC_TRUE CCDEPMODE AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE am__quote am__include DEPDIR OBJEXT EXEEXT ac_ct_CC CPPFLAGS LDFLAGS CFLAGS CC 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 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_BUGREPORT PACKAGE_STRING PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR SHELL' ac_subst_files='' ac_user_opts=' enable_option_checking enable_dependency_tracking enable_shared enable_static with_pic enable_fast_install with_gnu_ld enable_libtool_lock ' ac_precious_vars='build_alias host_alias target_alias CC CFLAGS LDFLAGS LIBS CPPFLAGS 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}' 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=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_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: invalid feature name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: invalid package name: $ac_useropt" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: unrecognized option: $ac_option Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *=*) ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` # Reject names that are not valid shell variable names. expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && { $as_echo "$as_me: error: invalid variable name: $ac_envvar" >&2 { (exit 1); exit 1; }; } 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_echo "$as_me: error: missing argument to $ac_option" >&2 { (exit 1); exit 1; }; } fi if test -n "$ac_unrecognized_opts"; then case $enable_option_checking in no) ;; fatal) { $as_echo "$as_me: error: unrecognized options: $ac_unrecognized_opts" >&2 { (exit 1); exit 1; }; } ;; *) $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_echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2 { (exit 1); exit 1; }; } 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 $as_echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. If a cross compiler is detected then cross compile mode will be used." >&2 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_echo "$as_me: error: working directory cannot be determined" >&2 { (exit 1); exit 1; }; } test "X$ac_ls_di" = "X$ac_pwd_ls_di" || { $as_echo "$as_me: error: pwd does not report name of working directory" >&2 { (exit 1); exit 1; }; } # 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_echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2 { (exit 1); exit 1; }; } fi ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" ac_abs_confdir=`( cd "$srcdir" && test -r "./$ac_unique_file" || { $as_echo "$as_me: error: $ac_msg" >&2 { (exit 1); exit 1; }; } 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 this package 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/PACKAGE] --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 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] --disable-dependency-tracking speeds up one-time build --enable-dependency-tracking do not reject slow dependency extractors --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 try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] 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 C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory 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. _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 configure generated by GNU Autoconf 2.63 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 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 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 $as_me, which was generated by GNU Autoconf 2.63. 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) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;; 2) ac_configure_args1="$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 ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done done $as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; } $as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export 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 cat <<\_ASBOX ## ---------------- ## ## Cache variables. ## ## ---------------- ## _ASBOX 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:$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= ;; #( *) $as_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 cat <<\_ASBOX ## ----------------- ## ## Output variables. ## ## ----------------- ## _ASBOX 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 cat <<\_ASBOX ## ------------------- ## ## File substitutions. ## ## ------------------- ## _ASBOX 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 cat <<\_ASBOX ## ----------- ## ## confdefs.h. ## ## ----------- ## _ASBOX 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'; { (exit 1); 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 # 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 # 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 ac_site_file1=$CONFIG_SITE 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 -r "$ac_site_file"; then { $as_echo "$as_me:$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" 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. if test -f "$cache_file"; then { $as_echo "$as_me:$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:$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:$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:$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:$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:$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:$LINENO: former value: \`$ac_old_val'" >&5 $as_echo "$as_me: former value: \`$ac_old_val'" >&2;} { $as_echo "$as_me:$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. *) ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac fi done if $ac_cache_corrupted; then { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { $as_echo "$as_me:$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_echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5 $as_echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;} { (exit 1); exit 1; }; } 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 am__api_version='1.10' 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_echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&5 $as_echo "$as_me: error: cannot find install-sh or install.sh in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" >&2;} { (exit 1); exit 1; }; } 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:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; 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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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:$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:$LINENO: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } # Just in case sleep 1 echo timestamp > conftest.file # 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 ( 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 rm -f conftest.file 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_echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&5 $as_echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken alias in your environment" >&2;} { (exit 1); exit 1; }; } fi test "$2" = conftest.file ) then # Ok. : else { { $as_echo "$as_me:$LINENO: error: newly created file is older than distributed files! Check your system clock" >&5 $as_echo "$as_me: error: newly created file is older than distributed files! Check your system clock" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } 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` test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing" # Use eval to expand $SHELL if eval "$MISSING --run true"; then am_missing_run="$MISSING --run " else am_missing_run= { $as_echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5 $as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} fi { $as_echo "$as_me:$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 test "${ac_cv_path_mkdir+set}" = set; 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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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 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. test -d ./--version && rmdir ./--version MKDIR_P="$ac_install_sh -d" fi fi { $as_echo "$as_me:$LINENO: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } mkdir_p="$MKDIR_P" case $mkdir_p in [\\/$]* | ?:[\\/]*) ;; */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; esac 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AWK+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:$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:$LINENO: result: $AWK" >&5 $as_echo "$AWK" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -n "$AWK" && break done { $as_echo "$as_me:$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 { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; 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:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } SET_MAKE= else { $as_echo "$as_me:$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 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_echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5 $as_echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;} { (exit 1); exit 1; }; } 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.94 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"} install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"} # 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$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:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$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:$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" # We need awk for the "check" target. The system "awk" is bad on # some platforms. # Always define AMTAR for backward compatibility. AMTAR=${AMTAR-"${am_missing_run}tar"} am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$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:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$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:$LINENO: result: $CC" >&5 $as_echo "$CC" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_CC+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_CC" >&5 $as_echo "$ac_ct_CC" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&5 $as_echo "$as_me: error: no acceptable C compiler found in \$PATH See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } # Provide some information about the compiler. $as_echo "$as_me:$LINENO: checking for C compiler version" >&5 set X $ac_compile ac_compiler=$2 { (ac_try="$ac_compiler --version >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -v >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } { (ac_try="$ac_compiler -V >&5" case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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:$LINENO: checking for C compiler default output file name" >&5 $as_echo_n "checking for C compiler default output file name... " >&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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link_default") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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 { $as_echo "$as_me:$LINENO: result: $ac_file" >&5 $as_echo "$ac_file" >&6; } if test -z "$ac_file"; then $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C compiler cannot create executables See \`config.log' for more details." >&5 $as_echo "$as_me: error: C compiler cannot create executables See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; }; } fi ac_exeext=$ac_cv_exeext # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether the C compiler works" >&5 $as_echo_n "checking whether the C compiler works... " >&6; } # FIXME: These cross compiler hacks should be removed for Autoconf 3.0 # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' { (case "(($ac_try" in *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; *) ac_try_echo=$ac_try;; esac eval ac_try_echo="\"\$as_me:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then cross_compiling=no else if test "$cross_compiling" = maybe; then cross_compiling=yes else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot run C compiled programs. If you meant to cross compile, use \`--host'. See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi fi fi { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out ac_clean_files=$ac_clean_files_save # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { $as_echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 $as_echo_n "checking whether we are cross compiling... " >&6; } { $as_echo "$as_me:$LINENO: result: $cross_compiling" >&5 $as_echo "$cross_compiling" >&6; } { $as_echo "$as_me:$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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest$ac_cv_exeext { $as_echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 $as_echo "$ac_cv_exeext" >&6; } rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT { $as_echo "$as_me:$LINENO: checking for suffix of object files" >&5 $as_echo_n "checking for suffix of object files... " >&6; } if test "${ac_cv_objext+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&5 $as_echo "$as_me: error: cannot compute suffix of object files: cannot compile See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } fi rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 $as_echo "$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT { $as_echo "$as_me:$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 test "${ac_cv_c_compiler_gnu+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { #ifndef __GNUC__ choke me #endif ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_compiler_gnu=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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:$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:$LINENO: checking whether $CC accepts -g" >&5 $as_echo_n "checking whether $CC accepts -g... " >&6; } if test "${ac_cv_prog_cc_g+set}" = set; 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 CFLAGS="" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_c_werror_flag=$ac_save_c_werror_flag CFLAGS="-g" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_g=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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:$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:$LINENO: checking for $CC option to accept ISO C89" >&5 $as_echo_n "checking for $CC option to accept ISO C89... " >&6; } if test "${ac_cv_prog_cc_c89+set}" = set; then $as_echo_n "(cached) " >&6 else ac_cv_prog_cc_c89=no ac_save_CC=$CC cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include /* 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" 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_prog_cc_c89=$ac_arg else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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:$LINENO: result: none needed" >&5 $as_echo "none needed" >&6; } ;; xno) { $as_echo "$as_me:$LINENO: result: unsupported" >&5 $as_echo "unsupported" >&6; } ;; *) CC="$CC $ac_cv_prog_cc_c89" { $as_echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5 $as_echo "$ac_cv_prog_cc_c89" >&6; } ;; 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 DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" am_make=${MAKE-make} cat > confinc << 'END' am__doit: @echo done .PHONY: am__doit END # If we don't find an include directive, just comment out the code. { $as_echo "$as_me:$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 # We grep out `Entering directory' and `Leaving directory' # messages which can occur if `w' ends up in MAKEFLAGS. # In particular we don't look at `^make:' because GNU make might # be invoked under some other name (usually "gmake"), in which # case it prints its new name instead of `make'. if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then am__include=include am__quote= _am_result=GNU fi # Now try BSD make style include. if test "$am__include" = "#"; then echo '.include "confinc"' > confmf if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then am__include=.include am__quote="\"" _am_result=BSD fi fi { $as_echo "$as_me:$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='\' 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:$LINENO: checking dependency style of $depcc" >&5 $as_echo_n "checking dependency style of $depcc... " >&6; } if test "${am_cv_CC_dependencies_compiler_type+set}" = set; 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'. 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 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 8's {/usr,}/bin/sh. touch sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf case $depmode in 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 ;; none) break ;; esac # 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. if depmode=$depmode \ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} 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 sub/conftest.${OBJEXT-o} 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:$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 # 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:$LINENO: checking for a BSD-compatible install" >&5 $as_echo_n "checking for a BSD-compatible install... " >&6; } if test -z "$INSTALL"; then if test "${ac_cv_path_install+set}" = set; 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 { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$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:$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' case `pwd` in *\ * | *\ *) { $as_echo "$as_me:$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.2.6b' macro_revision='1.3017' 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_echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5 $as_echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking build system type" >&5 $as_echo_n "checking build system type... " >&6; } if test "${ac_cv_build+set}" = set; 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_echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5 $as_echo "$as_me: error: cannot guess build type; you must specify one" >&2;} { (exit 1); exit 1; }; } ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || { { $as_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;} { (exit 1); exit 1; }; } fi { $as_echo "$as_me:$LINENO: result: $ac_cv_build" >&5 $as_echo "$ac_cv_build" >&6; } case $ac_cv_build in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical build" >&5 $as_echo "$as_me: error: invalid value of canonical build" >&2;} { (exit 1); exit 1; }; };; 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:$LINENO: checking host system type" >&5 $as_echo_n "checking host system type... " >&6; } if test "${ac_cv_host+set}" = set; 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_echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5 $as_echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;} { (exit 1); exit 1; }; } fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_host" >&5 $as_echo "$ac_cv_host" >&6; } case $ac_cv_host in *-*-*) ;; *) { { $as_echo "$as_me:$LINENO: error: invalid value of canonical host" >&5 $as_echo "$as_me: error: invalid value of canonical host" >&2;} { (exit 1); exit 1; }; };; 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 { $as_echo "$as_me:$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 test "${ac_cv_path_SED+set}" = set; 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 $as_unset ac_script || 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" { test -f "$ac_path_SED" && $as_test_x "$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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable sed could be found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable sed could be found in \$PATH" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_SED=$SED fi fi { $as_echo "$as_me:$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:$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 test "${ac_cv_path_GREP+set}" = set; 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" { test -f "$ac_path_GREP" && $as_test_x "$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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_GREP=$GREP fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5 $as_echo "$ac_cv_path_GREP" >&6; } GREP="$ac_cv_path_GREP" { $as_echo "$as_me:$LINENO: checking for egrep" >&5 $as_echo_n "checking for egrep... " >&6; } if test "${ac_cv_path_EGREP+set}" = set; 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" { test -f "$ac_path_EGREP" && $as_test_x "$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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_EGREP=$EGREP fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5 $as_echo "$ac_cv_path_EGREP" >&6; } EGREP="$ac_cv_path_EGREP" { $as_echo "$as_me:$LINENO: checking for fgrep" >&5 $as_echo_n "checking for fgrep... " >&6; } if test "${ac_cv_path_FGREP+set}" = set; 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" { test -f "$ac_path_FGREP" && $as_test_x "$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 ac_count=`expr $ac_count + 1` 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_echo "$as_me:$LINENO: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5 $as_echo "$as_me: error: no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;} { (exit 1); exit 1; }; } fi else ac_cv_path_FGREP=$FGREP fi fi fi { $as_echo "$as_me:$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 "$withval" = no || with_gnu_ld=yes else with_gnu_ld=no fi ac_prog=ld if test "$GCC" = yes; then # Check if gcc -print-prog-name=ld gives a path. { $as_echo "$as_me:$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 "$with_gnu_ld" = yes; then { $as_echo "$as_me:$LINENO: checking for GNU ld" >&5 $as_echo_n "checking for GNU ld... " >&6; } else { $as_echo "$as_me:$LINENO: checking for non-GNU ld" >&5 $as_echo_n "checking for non-GNU ld... " >&6; } fi if test "${lt_cv_path_LD+set}" = set; 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:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi test -z "$LD" && { { $as_echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5 $as_echo "$as_me: error: no acceptable ld found in \$PATH" >&2;} { (exit 1); exit 1; }; } { $as_echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5 $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } if test "${lt_cv_prog_gnu_ld+set}" = set; 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:$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 test "${lt_cv_path_NM+set}" = set; 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 case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in */dev/null* | *'Invalid file or object type'*) lt_cv_path_NM="$tmp_nm -B" break ;; *) case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in */dev/null*) lt_cv_path_NM="$tmp_nm -p" break ;; *) 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:$LINENO: result: $lt_cv_path_NM" >&5 $as_echo "$lt_cv_path_NM" >&6; } if test "$lt_cv_path_NM" != "no"; then NM="$lt_cv_path_NM" else # Didn't find any BSD compatible name lister, look for dumpbin. if test -n "$ac_tool_prefix"; then for ac_prog in "dumpbin -symbols" "link -dump -symbols" 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DUMPBIN+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" $as_echo "$as_me:$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:$LINENO: result: $DUMPBIN" >&5 $as_echo "$DUMPBIN" >&6; } else { $as_echo "$as_me:$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 -symbols" "link -dump -symbols" 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DUMPBIN+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_DUMPBIN" >&5 $as_echo "$ac_ct_DUMPBIN" >&6; } else { $as_echo "$as_me:$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:$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 if test "$DUMPBIN" != ":"; then NM="$DUMPBIN" fi fi test -z "$NM" && NM=nm { $as_echo "$as_me:$LINENO: checking the name lister ($NM) interface" >&5 $as_echo_n "checking the name lister ($NM) interface... " >&6; } if test "${lt_cv_nm_interface+set}" = set; 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:4394: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 (eval echo "\"\$as_me:4397: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 (eval echo "\"\$as_me:4400: 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:$LINENO: result: $lt_cv_nm_interface" >&5 $as_echo "$lt_cv_nm_interface" >&6; } { $as_echo "$as_me:$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:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking the maximum length of command line arguments" >&5 $as_echo_n "checking the maximum length of command line arguments... " >&6; } if test "${lt_cv_sys_max_cmd_len+set}" = set; 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; ;; 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; ;; netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) # 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 ;; 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"; 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"`$SHELL $0 --fallback-echo "X$teststring$teststring" 2>/dev/null` \ = "XX$teststring$teststring"; } >/dev/null 2>&1 && test $i != 17 # 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:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5 $as_echo "$lt_cv_sys_max_cmd_len" >&6; } else { $as_echo "$as_me:$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"} { $as_echo "$as_me:$LINENO: checking whether the shell understands some XSI constructs" >&5 $as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } # Try some XSI features xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ = c,a/b,, \ && eval 'test $(( 1 + 1 )) -eq 2 \ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes { $as_echo "$as_me:$LINENO: result: $xsi_shell" >&5 $as_echo "$xsi_shell" >&6; } { $as_echo "$as_me:$LINENO: checking whether the shell understands \"+=\"" >&5 $as_echo_n "checking whether the shell understands \"+=\"... " >&6; } lt_shell_append=no ( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ >/dev/null 2>&1 \ && lt_shell_append=yes { $as_echo "$as_me:$LINENO: result: $lt_shell_append" >&5 $as_echo "$lt_shell_append" >&6; } 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:$LINENO: checking for $LD option to reload object files" >&5 $as_echo_n "checking for $LD option to reload object files... " >&6; } if test "${lt_cv_ld_reload_flag+set}" = set; then $as_echo_n "(cached) " >&6 else lt_cv_ld_reload_flag='-r' fi { $as_echo "$as_me:$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 darwin*) if test "$GCC" = yes; 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OBJDUMP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" $as_echo "$as_me:$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:$LINENO: result: $OBJDUMP" >&5 $as_echo "$OBJDUMP" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OBJDUMP="objdump" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_OBJDUMP" >&5 $as_echo "$ac_ct_OBJDUMP" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking how to recognize dependent libraries" >&5 $as_echo_n "checking how to recognize dependent libraries... " >&6; } if test "${lt_cv_deplibs_check_method+set}" = set; 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 # which 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 lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' 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 ;; gnu*) 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]) 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 Linux ELF. linux* | k*bsd*-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*) if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; 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 ;; esac fi { $as_echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5 $as_echo "$lt_cv_deplibs_check_method" >&6; } 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}ar", so it can be a program name with args. set dummy ${ac_tool_prefix}ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_AR+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_AR="${ac_tool_prefix}ar" $as_echo "$as_me:$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:$LINENO: result: $AR" >&5 $as_echo "$AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi fi if test -z "$ac_cv_prog_AR"; then ac_ct_AR=$AR # Extract the first word of "ar", so it can be a program name with args. set dummy ar; ac_word=$2 { $as_echo "$as_me:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_AR+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_AR="ar" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_AR" >&5 $as_echo "$ac_ct_AR" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi if test "x$ac_ct_AR" = x; then AR="false" else case $cross_compiling:$ac_tool_warned in yes:) { $as_echo "$as_me:$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 else AR="$ac_cv_prog_AR" fi test -z "$AR" && AR=ar test -z "$AR_FLAGS" && AR_FLAGS=cru 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:$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:$LINENO: result: $STRIP" >&5 $as_echo "$STRIP" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_STRIP" >&5 $as_echo "$ac_ct_STRIP" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_RANLIB+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:$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:$LINENO: result: $RANLIB" >&5 $as_echo "$RANLIB" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_RANLIB" >&5 $as_echo "$ac_ct_RANLIB" >&6; } else { $as_echo "$as_me:$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:$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 openbsd*) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" ;; *) old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" ;; esac old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" fi # 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:$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 test "${lt_cv_sys_global_symbol_pipe+set}" = set; 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 "$host_cpu" = ia64; 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 # 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 -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$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 -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/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 # and D for any global 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};"\ " /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ " \$ 0!~/External *\|/{next};"\ " / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ " {if(hide[section]) next};"\ " {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ " {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ " s[1]~/^[@?]/{print s[1], s[1]; next};"\ " s[1]~prfx {split(s[1],t,\"@\"); print 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 # 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:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then # Now try to grab the symbols. nlist=conftest.nm if { (eval echo "$as_me:$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:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && 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 #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. */ const struct { const char *name; void *address; } lt__PROGRAM__LTX_preloaded_symbols[] = { { "@PROGRAM@", (void *) 0 }, _LT_EOF $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$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_save_LIBS="$LIBS" lt_save_CFLAGS="$CFLAGS" LIBS="conftstm.$ac_objext" CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && test -s conftest${ac_exeext}; then pipe_works=yes fi LIBS="$lt_save_LIBS" CFLAGS="$lt_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 "$pipe_works" = yes; 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:$LINENO: result: failed" >&5 $as_echo "failed" >&6; } else { $as_echo "$as_me:$LINENO: result: ok" >&5 $as_echo "ok" >&6; } fi # Check whether --enable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval=$enable_libtool_lock; fi test "x$enable_libtool_lock" != xno && 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 which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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 which ABI we are using. echo '#line 5606 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then if test "$lt_cv_prog_gnu_ld" = yes; 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* ;; x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ s390*-*linux*|s390*-*tpf*|sparc*-*linux*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; 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*) LD="${LD-ld} -m elf_i386" ;; ppc64-*linux*|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" ;; ppc*-*linux*|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:$LINENO: checking whether the C compiler needs -belf" >&5 $as_echo_n "checking whether the C compiler needs -belf... " >&6; } if test "${lt_cv_cc_needs_belf+set}" = set; 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_cc_needs_belf=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_cc_needs_belf=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ 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:$LINENO: result: $lt_cv_cc_needs_belf" >&5 $as_echo "$lt_cv_cc_needs_belf" >&6; } if test x"$lt_cv_cc_needs_belf" != x"yes"; then # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf CFLAGS="$SAVE_CFLAGS" fi ;; sparc*-*solaris*) # Find out which ABI we are using. echo 'int i;' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then case `/usr/bin/file conftest.o` in *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; *) 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" 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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_DSYMUTIL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" $as_echo "$as_me:$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:$LINENO: result: $DSYMUTIL" >&5 $as_echo "$DSYMUTIL" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_DSYMUTIL" >&5 $as_echo "$ac_ct_DSYMUTIL" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_NMEDIT+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" $as_echo "$as_me:$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:$LINENO: result: $NMEDIT" >&5 $as_echo "$NMEDIT" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_NMEDIT="nmedit" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_NMEDIT" >&5 $as_echo "$ac_ct_NMEDIT" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_LIPO+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_LIPO="${ac_tool_prefix}lipo" $as_echo "$as_me:$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:$LINENO: result: $LIPO" >&5 $as_echo "$LIPO" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_LIPO="lipo" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_LIPO" >&5 $as_echo "$ac_ct_LIPO" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL="${ac_tool_prefix}otool" $as_echo "$as_me:$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:$LINENO: result: $OTOOL" >&5 $as_echo "$OTOOL" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL="otool" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_OTOOL" >&5 $as_echo "$ac_ct_OTOOL" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_OTOOL64+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" $as_echo "$as_me:$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:$LINENO: result: $OTOOL64" >&5 $as_echo "$OTOOL64" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for $ac_word" >&5 $as_echo_n "checking for $ac_word... " >&6; } if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; 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 { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then ac_cv_prog_ac_ct_OTOOL64="otool64" $as_echo "$as_me:$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:$LINENO: result: $ac_ct_OTOOL64" >&5 $as_echo "$ac_ct_OTOOL64" >&6; } else { $as_echo "$as_me:$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:$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:$LINENO: checking for -single_module linker flag" >&5 $as_echo_n "checking for -single_module linker flag... " >&6; } if test "${lt_cv_apple_cc_single_mod+set}" = set; 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 test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; 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:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 $as_echo "$lt_cv_apple_cc_single_mod" >&6; } { $as_echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } if test "${lt_cv_ld_exported_symbols_list+set}" = set; 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_cv_ld_exported_symbols_list=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 lt_cv_ld_exported_symbols_list=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" fi { $as_echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 $as_echo "$lt_cv_ld_exported_symbols_list" >&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 "$lt_cv_apple_cc_single_mod" = "yes"; then _lt_dar_single_mod='$single_module' fi if test "$lt_cv_ld_exported_symbols_list" = "yes"; 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" != ":"; then _lt_dsymutil='~$DSYMUTIL $lib || :' else _lt_dsymutil= fi ;; 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:$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 test "${ac_cv_prog_CPP+set}" = set; 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f 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:$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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #ifdef __STDC__ # include #else # include #endif Syntax error _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then : else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Broken: fails on valid input. continue fi rm -f conftest.err conftest.$ac_ext # OK, works on sane cases. Now check whether nonexistent headers # can be detected and how. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } >/dev/null && { test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || test ! -s conftest.err }; then # Broken: success on invalid input. continue else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 # Passes both tests. ac_preproc_ok=: break fi rm -f conftest.err conftest.$ac_ext done # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. rm -f conftest.err conftest.$ac_ext if $ac_preproc_ok; then : else { { $as_echo "$as_me:$LINENO: error: in \`$ac_pwd':" >&5 $as_echo "$as_me: error: in \`$ac_pwd':" >&2;} { { $as_echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&5 $as_echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; }; } 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:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 rm -f 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : 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 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF 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` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = 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 as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` { $as_echo "$as_me:$LINENO: checking for $ac_header" >&5 $as_echo_n "checking for $ac_header... " >&6; } if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ $ac_includes_default #include <$ac_header> _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then eval "$as_ac_Header=yes" else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` { $as_echo "$as_me:$LINENO: result: $ac_res" >&5 $as_echo "$ac_res" >&6; } as_val=`eval 'as_val=${'$as_ac_Header'} $as_echo "$as_val"'` if test "x$as_val" = x""yes; then cat >>confdefs.h <<_ACEOF #define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 _ACEOF fi done # Set options enable_dlopen=no enable_win32_dll=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; pic_mode="$withval" else pic_mode=default fi test -z "$pic_mode" && pic_mode=default # 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 # 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:$LINENO: checking for objdir" >&5 $as_echo_n "checking for objdir... " >&6; } if test "${lt_cv_objdir+set}" = set; 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:$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 "X${COLLECT_NAMES+set}" != Xset; then COLLECT_NAMES= export COLLECT_NAMES fi ;; esac # 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. 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' # 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 for cc_temp in $compiler""; do case $cc_temp in compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; \-*) ;; *) break;; esac done cc_basename=`$ECHO "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"` # 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:$LINENO: checking for ${ac_tool_prefix}file" >&5 $as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; 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:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$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:$LINENO: checking for file" >&5 $as_echo_n "checking for file... " >&6; } if test "${lt_cv_path_MAGIC_CMD+set}" = set; 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:$LINENO: result: $MAGIC_CMD" >&5 $as_echo "$MAGIC_CMD" >&6; } else { $as_echo "$as_me:$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* if test -n "$compiler"; then lt_prog_compiler_no_builtin_flag= if test "$GCC" = yes; then lt_prog_compiler_no_builtin_flag=' -fno-builtin' { $as_echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 $as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; 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" # 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:7459: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:7463: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 $as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; 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= { $as_echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5 $as_echo_n "checking for $compiler option to produce PIC... " >&6; } if test "$GCC" = yes; then lt_prog_compiler_wl='-Wl,' lt_prog_compiler_static='-static' case $host_os in aix*) # All AIX code is PIC. if test "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' fi ;; 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' ;; darwin* | rhapsody*) # PIC is the default on this platform # Common symbols not allowed in MH_DYLIB files lt_prog_compiler_pic='-fno-common' ;; 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 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 "$host_cpu" = ia64; then # AIX 5 now supports IA64 processor lt_prog_compiler_static='-Bstatic' else lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; 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' ;; 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) 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' ;; pgcc* | pgf77* | pgf90* | pgf95*) # 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*) # IBM XL C 8.0/Fortran 10.1 on PPC lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-qpic' lt_prog_compiler_static='-qstaticlink' ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-Bstatic' lt_prog_compiler_wl='-Wl,' ;; *Sun\ F*) # 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='' ;; 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*) 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 which 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:$LINENO: result: $lt_prog_compiler_pic" >&5 $as_echo "$lt_prog_compiler_pic" >&6; } # # Check to make sure the PIC flag actually works. # if test -n "$lt_prog_compiler_pic"; then { $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_pic_works+set}" = set; 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" # 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:7798: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 echo "$as_me:7802: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 $as_echo "$lt_cv_prog_compiler_pic_works" >&6; } if test x"$lt_cv_prog_compiler_pic_works" = xyes; 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:$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 test "${lt_cv_prog_compiler_static_works+set}" = set; 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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/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:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 $as_echo "$lt_cv_prog_compiler_static_works" >&6; } if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= fi { $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_c_o+set}" = set; 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:7903: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:7907: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } { $as_echo "$as_me:$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 test "${lt_cv_prog_compiler_c_o+set}" = set; 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:7958: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 echo "$as_me:7962: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5 $as_echo "$lt_cv_prog_compiler_c_o" >&6; } hard_links="nottested" if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then # do not overwrite the value of need_locks provided by the user { $as_echo "$as_me:$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:$LINENO: result: $hard_links" >&5 $as_echo "$hard_links" >&6; } if test "$hard_links" = no; then { $as_echo "$as_me:$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:$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_flag_spec_ld= 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 "$GCC" != yes; then with_gnu_ld=no fi ;; interix*) # we just hope/assume this is gcc and not c89 (= MSVC++) with_gnu_ld=yes ;; openbsd*) with_gnu_ld=no ;; esac ld_shlibs=yes if test "$with_gnu_ld" = yes; 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 2>&1` in *\ [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 "$host_cpu" != ia64; then ld_shlibs=no cat <<_LT_EOF 1>&2 *** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH *** so that a non-GNU linker is found, and then restart. _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' 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/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' 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 (1st line # is EXPORTS), use it as is; otherwise, prepend... archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; 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 ;; 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) tmp_diet=no if test "$host_os" = linux-dietlibc; 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 "$tmp_diet" = no then tmp_addflag= 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; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' tmp_addflag=' $pic_flag' ;; pgf77* | pgf90* | pgf95*) # 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; $ECHO \"$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' ;; xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) tmp_sharedflag='-qmkshrobj' tmp_addflag= ;; 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; $ECHO \"$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 "x$supports_anon_versioning" = xyes; 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 xlf*) # 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= hardcode_libdir_flag_spec_ld='-rpath $libdir' archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' if test "x$supports_anon_versioning" = xyes; 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 $compiler_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 $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' 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 $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 ;; 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 can not *** 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 $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 if test "$ld_shlibs" = no; 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 "$GCC" = yes && 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 "$host_cpu" = ia64; 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 AIX nm, but means don't demangle with GNU 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")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | 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 # need to do runtime linking. case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) for ld_flag in $LDFLAGS; do if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then aix_use_runtimelinking=yes break fi done ;; 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,' if test "$GCC" = yes; 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 "$aix_use_runtimelinking" = yes; then shared_flag="$shared_flag "'${wl}-G' fi else # not using gcc if test "$host_cpu" = ia64; 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 "$aix_use_runtimelinking" = yes; then shared_flag='${wl}-G' else shared_flag='${wl}-bM:SRE' fi 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_use_runtimelinking" = yes; 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. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' 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 "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; 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 "x${allow_undefined_flag}" != "x"; then $ECHO "X${wl}${allow_undefined_flag}" | $Xsed; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" else if test "$host_cpu" = ia64; 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. cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then lt_aix_libpath_sed=' /Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/ p } }' 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 "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; 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' # Exported symbols can be pulled into shared objects from archives whole_archive_flag_spec='$convenience' archive_cmds_need_lc=yes # This is similar to how AIX traditionally builds its shared libraries. archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' 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. 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 `$ECHO "X$deplibs" | $Xsed -e '\''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' fix_srcfile_path='`cygpath -w "$srcfile"`' enable_shared_with_static_runtimes=yes ;; darwin* | rhapsody*) archive_cmds_need_lc=no hardcode_direct=no hardcode_automatic=yes hardcode_shlibpath_var=unsupported whole_archive_flag_spec='' link_all_deplibs=yes allow_undefined_flag="$_lt_dar_allow_undefined" case $cc_basename in ifort*) _lt_dar_can_shared=yes ;; *) _lt_dar_can_shared=$GCC ;; esac if test "$_lt_dar_can_shared" = "yes"; then output_verbose_link_cmd=echo 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 ;; freebsd1*) ld_shlibs=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 -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='-R$libdir' hardcode_direct=yes hardcode_shlibpath_var=no ;; hpux9*) if test "$GCC" = yes; then archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $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 $output_objdir/$soname = $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 "$GCC" = yes -a "$with_gnu_ld" = no; then archive_cmds='$CC -shared -fPIC ${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 "$with_gnu_ld" = no; then hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' hardcode_libdir_flag_spec_ld='+b $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 "$GCC" = yes -a "$with_gnu_ld" = no; 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 -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${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' ;; *) archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' ;; esac fi if test "$with_gnu_ld" = no; 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 "$GCC" = yes; then archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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. save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" cat >conftest.$ac_ext <<_ACEOF int foo(void) {} _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS="$save_LDFLAGS" else archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -update_registry ${output_objdir}/so_locations -o $lib' archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && $ECHO "X-set_version $verstring" | $Xsed` -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 ;; 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*) 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__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; 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 case $host_os in openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' hardcode_libdir_flag_spec='-R$libdir' ;; *) archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' ;; esac fi else ld_shlibs=no fi ;; os2*) hardcode_libdir_flag_spec='-L$libdir' hardcode_minus_L=yes allow_undefined_flag=unsupported archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~$ECHO DATA >> $output_objdir/$libname.def~$ECHO " SINGLE NONSHARED" >> $output_objdir/$libname.def~$ECHO EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' ;; osf3*) if test "$GCC" = yes; 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" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "$GCC" = yes; then allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && $ECHO "X${wl}-set_version ${wl}$verstring" | $Xsed` ${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" && $ECHO "X-set_version $verstring" | $Xsed` -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 "X-set_version $verstring" | $Xsed` -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 "$GCC" = yes; then wlarc='${wl}' archive_cmds='$CC -shared ${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 ${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 "$GCC" = yes; 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 "x$host_vendor" = xsequent; 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 "$GCC" = yes; 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 can NOT 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 "$GCC" = yes; 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 x$host_vendor = xsni; then case $host in sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) export_dynamic_flag_spec='${wl}-Blargedynsym' ;; esac fi fi { $as_echo "$as_me:$LINENO: result: $ld_shlibs" >&5 $as_echo "$ld_shlibs" >&6; } test "$ld_shlibs" = no && 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 "$enable_shared" = yes && test "$GCC" = yes; 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:$LINENO: checking whether -lc should be explicitly linked in" >&5 $as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } $RM conftest* echo "$lt_simple_compile_test_code" > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } 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:$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:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } then archive_cmds_need_lc=no else archive_cmds_need_lc=yes fi allow_undefined_flag=$lt_save_allow_undefined_flag else cat conftest.err 1>&5 fi $RM conftest* { $as_echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5 $as_echo "$archive_cmds_need_lc" >&6; } ;; esac fi ;; esac { $as_echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 $as_echo_n "checking dynamic linker characteristics... " >&6; } if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; esac lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$lt_search_path_spec" | $GREP ';' >/dev/null ; then # 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 -e 's/;/ /g'` else lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` fi # 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` 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" else 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; } }'` sys_lib_search_path_spec=`$ECHO $lt_search_path_spec` 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 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 need_lib_prefix=no need_version=no hardcode_into_libs=yes if test "$host_cpu" = ia64; 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 # AIX (on Power*) has no versioning support, so currently we can not hardcode correct # soname into executable. Probably we can add versioning support to # collect2, so additional links can be useful in future. if test "$aix_use_runtimelinking" = yes; then # 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}' else # 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' fi 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=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $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 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,$host_os in yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) 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="/usr/lib /lib/w32api /lib /usr/local/lib" ;; mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then # It is most probably a Windows format PATH printed by # mingw gcc, but we are running on Cygwin. Gcc prints its search # path with ; separators, and with drive letters. We can handle the # drive letters (cygwin fileutils understands them), so leave them, # especially as we might pass files found there to a mingw objdump, # which wouldn't understand a cygwinified path. Ahh. 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 ;; 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 ;; *) library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' ;; esac dynamic_linker='Win32 ld.exe' # 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 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 ;; freebsd1*) dynamic_linker=no ;; 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[123]*) 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} $libname${shared_ext}' 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 ;; gnu*) version_type=linux 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 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 "X$HPUX_IA64_MODE" = X32; then sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" else sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" fi sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec ;; 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' ;; interix[3-9]*) version_type=linux 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 "$lt_cv_prog_gnu_ld" = yes; then version_type=linux 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 ;; # This must be Linux ELF. linux* | k*bsd*-gnu) version_type=linux 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 save_LDFLAGS=$LDFLAGS save_libdir=$libdir eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then shlibpath_overrides_runpath=yes fi else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LDFLAGS=$save_LDFLAGS libdir=$save_libdir # 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 # Append ld.so.conf contents 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;/^$/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 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*) version_type=sunos sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. case $host_os in openbsd3.3 | openbsd3.3.*) need_version=yes ;; *) need_version=no ;; esac 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 if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then case $host_os in openbsd2.[89] | openbsd2.[89].*) shlibpath_overrides_runpath=no ;; *) shlibpath_overrides_runpath=yes ;; esac else shlibpath_overrides_runpath=yes fi ;; os2*) libname_spec='$name' shrext_cmds=".dll" need_lib_prefix=no library_names_spec='$libname${shared_ext} $libname.a' dynamic_linker='OS/2 ld.exe' shlibpath_var=LIBPATH ;; 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 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 "$with_gnu_ld" = yes; then need_lib_prefix=no fi need_version=yes ;; sysv4 | sysv4.3*) version_type=linux 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 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=freebsd-elf 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 "$with_gnu_ld" = yes; 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 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 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:$LINENO: result: $dynamic_linker" >&5 $as_echo "$dynamic_linker" >&6; } test "$dynamic_linker" = no && can_build_shared=no variables_saved_for_relink="PATH $shlibpath_var $runpath_var" if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" fi if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" fi { $as_echo "$as_me:$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 "X$hardcode_automatic" = "Xyes" ; then # We can hardcode non-existent directories. if test "$hardcode_direct" != no && # 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 "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && test "$hardcode_minus_L" != no; 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:$LINENO: result: $hardcode_action" >&5 $as_echo "$hardcode_action" >&6; } if test "$hardcode_action" = relink || test "$inherit_rpath" = yes; then # Fast installation is not supported enable_fast_install=no elif test "$shlibpath_overrides_runpath" = yes || test "$enable_shared" = no; then # Fast installation is not necessary enable_fast_install=needless fi if test "x$enable_dlopen" != xyes; 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:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; 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 ;; *) { $as_echo "$as_me:$LINENO: checking for shl_load" >&5 $as_echo_n "checking for shl_load... " >&6; } if test "${ac_cv_func_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define shl_load to an innocuous variant, in case declares shl_load. For example, HP-UX 11i declares gettimeofday. */ #define shl_load innocuous_shl_load /* System header to define __stub macros and hopefully few prototypes, which can conflict with char shl_load (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef shl_load /* 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 (); /* 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_shl_load || defined __stub___shl_load choke me #endif int main () { return shl_load (); ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5 $as_echo "$ac_cv_func_shl_load" >&6; } if test "x$ac_cv_func_shl_load" = x""yes; then lt_cv_dlopen="shl_load" else { $as_echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5 $as_echo_n "checking for shl_load in -ldld... " >&6; } if test "${ac_cv_lib_dld_shl_load+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_shl_load=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_shl_load=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$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" = x""yes; then lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else { $as_echo "$as_me:$LINENO: checking for dlopen" >&5 $as_echo_n "checking for dlopen... " >&6; } if test "${ac_cv_func_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ /* Define dlopen to an innocuous variant, in case declares dlopen. For example, HP-UX 11i declares gettimeofday. */ #define dlopen innocuous_dlopen /* System header to define __stub macros and hopefully few prototypes, which can conflict with char dlopen (); below. Prefer to if __STDC__ is defined, since exists even on freestanding compilers. */ #ifdef __STDC__ # include #else # include #endif #undef dlopen /* 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 (); /* 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_dlopen || defined __stub___dlopen choke me #endif int main () { return dlopen (); ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_func_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_func_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5 $as_echo "$ac_cv_func_dlopen" >&6; } if test "x$ac_cv_func_dlopen" = x""yes; then lt_cv_dlopen="dlopen" else { $as_echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5 $as_echo_n "checking for dlopen in -ldl... " >&6; } if test "${ac_cv_lib_dl_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldl $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dl_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dl_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5 $as_echo "$ac_cv_lib_dl_dlopen" >&6; } if test "x$ac_cv_lib_dl_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" else { $as_echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5 $as_echo_n "checking for dlopen in -lsvld... " >&6; } if test "${ac_cv_lib_svld_dlopen+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lsvld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_svld_dlopen=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_svld_dlopen=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5 $as_echo "$ac_cv_lib_svld_dlopen" >&6; } if test "x$ac_cv_lib_svld_dlopen" = x""yes; then lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" else { $as_echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5 $as_echo_n "checking for dld_link in -ldld... " >&6; } if test "${ac_cv_lib_dld_dld_link+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-ldld $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_dld_dld_link=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_dld_dld_link=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$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" = x""yes; then lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi fi fi fi fi fi ;; esac if test "x$lt_cv_dlopen" != xno; then enable_dlopen=yes else enable_dlopen=no fi case $lt_cv_dlopen in dlopen) save_CPPFLAGS="$CPPFLAGS" test "x$ac_cv_header_dlfcn_h" = xyes && 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:$LINENO: checking whether a program can dlopen itself" >&5 $as_echo_n "checking whether a program can dlopen itself... " >&6; } if test "${lt_cv_dlopen_self+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; 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 10758 "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 void fnord() { int i=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; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && 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:$LINENO: result: $lt_cv_dlopen_self" >&5 $as_echo "$lt_cv_dlopen_self" >&6; } if test "x$lt_cv_dlopen_self" = xyes; then wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" { $as_echo "$as_me:$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 test "${lt_cv_dlopen_self_static+set}" = set; then $as_echo_n "(cached) " >&6 else if test "$cross_compiling" = yes; 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 10854 "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 void fnord() { int i=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; /* dlclose (self); */ } else puts (dlerror ()); return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 (eval $ac_link) 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && 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:$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:$LINENO: checking whether stripping libraries is possible" >&5 $as_echo_n "checking whether stripping libraries is possible... " >&6; } if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" test -z "$striplib" && striplib="$STRIP --strip-unneeded" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else # FIXME - insert some real tests, host_os isn't really good enough case $host_os in darwin*) if test -n "$STRIP" ; then striplib="$STRIP -x" old_striplib="$STRIP -S" { $as_echo "$as_me:$LINENO: result: yes" >&5 $as_echo "yes" >&6; } else { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } fi ;; *) { $as_echo "$as_me:$LINENO: result: no" >&5 $as_echo "no" >&6; } ;; esac fi # Report which library types will actually be built { $as_echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5 $as_echo_n "checking if libtool supports shared libraries... " >&6; } { $as_echo "$as_me:$LINENO: result: $can_build_shared" >&5 $as_echo "$can_build_shared" >&6; } { $as_echo "$as_me:$LINENO: checking whether to build shared libraries" >&5 $as_echo_n "checking whether to build shared libraries... " >&6; } test "$can_build_shared" = "no" && 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 "$enable_shared" = yes && enable_static=no if test -n "$RANLIB"; then archive_cmds="$archive_cmds~\$RANLIB \$lib" postinstall_cmds='$RANLIB $lib' fi ;; aix[4-9]*) if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then test "$enable_shared" = yes && enable_static=no fi ;; esac { $as_echo "$as_me:$LINENO: result: $enable_shared" >&5 $as_echo "$enable_shared" >&6; } { $as_echo "$as_me:$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 "$enable_shared" = yes || enable_static=yes { $as_echo "$as_me:$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: { $as_echo "$as_me:$LINENO: checking for main in -lgmp" >&5 $as_echo_n "checking for main in -lgmp... " >&6; } if test "${ac_cv_lib_gmp_main+set}" = set; then $as_echo_n "(cached) " >&6 else ac_check_lib_save_LIBS=$LIBS LIBS="-lgmp $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { return main (); ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || $as_test_x conftest$ac_exeext }; then ac_cv_lib_gmp_main=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_gmp_main=no fi rm -rf conftest.dSYM rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi { $as_echo "$as_me:$LINENO: result: $ac_cv_lib_gmp_main" >&5 $as_echo "$ac_cv_lib_gmp_main" >&6; } if test "x$ac_cv_lib_gmp_main" = x""yes; then cat >>confdefs.h <<_ACEOF #define HAVE_LIBGMP 1 _ACEOF LIBS="-lgmp $LIBS" fi { $as_echo "$as_me:$LINENO: checking for ANSI C header files" >&5 $as_echo_n "checking for ANSI C header files... " >&6; } if test "${ac_cv_header_stdc+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include #include #include #include int main () { ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_header_stdc=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* 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 rm -f 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_link") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_try") 2>&5 ac_status=$? $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then : 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 ( exit $ac_status ) ac_cv_header_stdc=no fi rm -rf conftest.dSYM rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext fi fi fi { $as_echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5 $as_echo "$ac_cv_header_stdc" >&6; } if test $ac_cv_header_stdc = yes; then cat >>confdefs.h <<\_ACEOF #define STDC_HEADERS 1 _ACEOF fi { $as_echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5 $as_echo_n "checking for an ANSI C-conforming const... " >&6; } if test "${ac_cv_c_const+set}" = set; then $as_echo_n "(cached) " >&6 else cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF cat confdefs.h >>conftest.$ac_ext cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ int main () { /* FIXME: Include the comments suggested by Paul. */ #ifndef __cplusplus /* Ultrix mips cc rejects this. */ typedef int charset[2]; const charset cs; /* SunOS 4.1.1 cc rejects this. */ char const *const *pcpcc; char **ppc; /* NEC SVR4.0.2 mips cc rejects this. */ struct point {int x, y;}; static struct point const zero = {0,0}; /* AIX XL C 1.02.0.0 rejects this. It does not let you subtract one const X* pointer from another in an arm of an if-expression whose if-part is not a constant expression */ const char *g = "string"; pcpcc = &g + (g ? g-g : 0); /* HPUX 7.0 cc rejects these. */ ++pcpcc; ppc = (char**) pcpcc; pcpcc = (char const *const *) ppc; { /* SCO 3.2v4 cc rejects this. */ char *t; char const *s = 0 ? (char *) 0 : (char const *) 0; *t++ = 0; if (s) return 0; } { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ int x[] = {25, 17}; const int *foo = &x[0]; ++foo; } { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ typedef const int *iptr; iptr p = 0; ++p; } { /* AIX XL C 1.02.0.0 rejects this saying "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ struct s { int j; const int *ap[3]; }; struct s *b; b->j = 5; } { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ const int foo = 10; if (!foo) return 0; } return !cs[0] && !zero.x; #endif ; return 0; } _ACEOF 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:$LINENO: $ac_try_echo\"" $as_echo "$ac_try_echo") >&5 (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 $as_echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { test -z "$ac_c_werror_flag" || test ! -s conftest.err } && test -s conftest.$ac_objext; then ac_cv_c_const=yes else $as_echo "$as_me: failed program was:" >&5 sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_c_const=no fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi { $as_echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5 $as_echo "$ac_cv_c_const" >&6; } if test $ac_cv_c_const = no; then cat >>confdefs.h <<\_ACEOF #define const /**/ _ACEOF fi ac_config_files="$ac_config_files lib-src/Makefile src/Makefile lib-src-gmp/Makefile src-gmp/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:$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= ;; #( *) $as_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 test "x$cache_file" != "x/dev/null" && { $as_echo "$as_me:$LINENO: updating cache $cache_file" >&5 $as_echo "$as_me: updating cache $cache_file" >&6;} cat confcache >$cache_file else { $as_echo "$as_me:$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= 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. ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext" ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo' done LIBOBJS=$ac_libobjs LTLIBOBJS=$ac_ltlibobjs if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"AMDEP\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } fi if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then { { $as_echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&5 $as_echo "$as_me: error: conditional \"am__fastdepCC\" was never defined. Usually this means the macro was only invoked conditionally." >&2;} { (exit 1); exit 1; }; } 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:$LINENO: creating $CONFIG_STATUS" >&5 $as_echo "$as_me: creating $CONFIG_STATUS" >&6;} cat >$CONFIG_STATUS <<_ACEOF || ac_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} _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF || ac_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 # PATH needs CR # 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_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 if (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 # Support unset when possible. if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then as_unset=unset else as_unset=false 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. 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); exit 1; } fi # Work around bugs in pre-3.0 UWIN ksh. for as_var in ENV MAIL MAILPATH do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var done PS1='$ ' PS2='> ' PS4='+ ' # NLS nuisances. LC_ALL=C export LC_ALL LANGUAGE=C export LANGUAGE # Required to use basename. 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 # Name of the executable. 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'` # CDPATH. $as_unset CDPATH as_lineno_1=$LINENO as_lineno_2=$LINENO test "x$as_lineno_1" != "x$as_lineno_2" && test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || { # Create $as_me.lineno as a copy of $as_myself, but with $LINENO # uniformly replaced by the line number. The first 'sed' inserts a # line-number line after each line using $LINENO; the second 'sed' # does the real work. The second script uses 'N' to pair each # line-number line with the line containing $LINENO, and appends # trailing '-' during substitution so that $LINENO is not a special # case at line end. # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the # scripts with optimization help from Paolo Bonzini. 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 { (exit 1); exit 1; }; } # 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 } if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false fi ECHO_C= ECHO_N= ECHO_T= case `echo -n x` in -n*) case `echo 'x\c'` in *c*) ECHO_T=' ';; # ECHO_T is single tab character. *) ECHO_C='\c';; esac;; *) ECHO_N='-n';; esac if expr a : '\(a\)' >/dev/null 2>&1 && test "X`expr 00001 : '.*\(...\)'`" = X001; then as_expr=expr else as_expr=false fi 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 -p'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || as_ln_s='cp -p' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else as_ln_s='cp -p' fi else as_ln_s='cp -p' 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=: else test -d ./-p && rmdir ./-p as_mkdir_p=false fi if test -x / >/dev/null 2>&1; then as_test_x='test -x' else if ls -dL / >/dev/null 2>&1; then as_ls_L_option=L else as_ls_L_option= fi as_test_x=' eval sh -c '\'' if test -d "$1"; then test -d "$1/."; else case $1 in -*)set "./$1";; esac; case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in ???[sx]*):;;*)false;;esac;fi '\'' sh ' fi as_executable_p=$as_test_x # 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 # 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 $as_me, which was generated by GNU Autoconf 2.63. 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 from templates according to the current configuration. Usage: $0 [OPTION]... [FILE]... -h, --help print this help, then exit -V, --version print version number and configuration settings, 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 ." _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_version="\\ config.status configured by $0, generated by GNU Autoconf 2.63, with options \\"`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2008 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=$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 ;; --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"` ;; esac CONFIG_FILES="$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_echo "$as_me: error: unrecognized option: $1 Try \`$0 --help' for more information." >&2 { (exit 1); exit 1; }; } ;; *) ac_config_targets="$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 "X$macro_version" | $Xsed -e "$delay_single_quote_subst"`' macro_revision='`$ECHO "X$macro_revision" | $Xsed -e "$delay_single_quote_subst"`' enable_shared='`$ECHO "X$enable_shared" | $Xsed -e "$delay_single_quote_subst"`' enable_static='`$ECHO "X$enable_static" | $Xsed -e "$delay_single_quote_subst"`' pic_mode='`$ECHO "X$pic_mode" | $Xsed -e "$delay_single_quote_subst"`' enable_fast_install='`$ECHO "X$enable_fast_install" | $Xsed -e "$delay_single_quote_subst"`' host_alias='`$ECHO "X$host_alias" | $Xsed -e "$delay_single_quote_subst"`' host='`$ECHO "X$host" | $Xsed -e "$delay_single_quote_subst"`' host_os='`$ECHO "X$host_os" | $Xsed -e "$delay_single_quote_subst"`' build_alias='`$ECHO "X$build_alias" | $Xsed -e "$delay_single_quote_subst"`' build='`$ECHO "X$build" | $Xsed -e "$delay_single_quote_subst"`' build_os='`$ECHO "X$build_os" | $Xsed -e "$delay_single_quote_subst"`' SED='`$ECHO "X$SED" | $Xsed -e "$delay_single_quote_subst"`' Xsed='`$ECHO "X$Xsed" | $Xsed -e "$delay_single_quote_subst"`' GREP='`$ECHO "X$GREP" | $Xsed -e "$delay_single_quote_subst"`' EGREP='`$ECHO "X$EGREP" | $Xsed -e "$delay_single_quote_subst"`' FGREP='`$ECHO "X$FGREP" | $Xsed -e "$delay_single_quote_subst"`' LD='`$ECHO "X$LD" | $Xsed -e "$delay_single_quote_subst"`' NM='`$ECHO "X$NM" | $Xsed -e "$delay_single_quote_subst"`' LN_S='`$ECHO "X$LN_S" | $Xsed -e "$delay_single_quote_subst"`' max_cmd_len='`$ECHO "X$max_cmd_len" | $Xsed -e "$delay_single_quote_subst"`' ac_objext='`$ECHO "X$ac_objext" | $Xsed -e "$delay_single_quote_subst"`' exeext='`$ECHO "X$exeext" | $Xsed -e "$delay_single_quote_subst"`' lt_unset='`$ECHO "X$lt_unset" | $Xsed -e "$delay_single_quote_subst"`' lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' AR_FLAGS='`$ECHO "X$AR_FLAGS" | $Xsed -e "$delay_single_quote_subst"`' STRIP='`$ECHO "X$STRIP" | $Xsed -e "$delay_single_quote_subst"`' RANLIB='`$ECHO "X$RANLIB" | $Xsed -e "$delay_single_quote_subst"`' old_postinstall_cmds='`$ECHO "X$old_postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_postuninstall_cmds='`$ECHO "X$old_postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_cmds='`$ECHO "X$old_archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' CC='`$ECHO "X$CC" | $Xsed -e "$delay_single_quote_subst"`' CFLAGS='`$ECHO "X$CFLAGS" | $Xsed -e "$delay_single_quote_subst"`' compiler='`$ECHO "X$compiler" | $Xsed -e "$delay_single_quote_subst"`' GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' MAGIC_CMD='`$ECHO "X$MAGIC_CMD" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_no_builtin_flag='`$ECHO "X$lt_prog_compiler_no_builtin_flag" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_wl='`$ECHO "X$lt_prog_compiler_wl" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_quote_subst"`' lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds_need_lc='`$ECHO "X$archive_cmds_need_lc" | $Xsed -e "$delay_single_quote_subst"`' enable_shared_with_static_runtimes='`$ECHO "X$enable_shared_with_static_runtimes" | $Xsed -e "$delay_single_quote_subst"`' export_dynamic_flag_spec='`$ECHO "X$export_dynamic_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' whole_archive_flag_spec='`$ECHO "X$whole_archive_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' compiler_needs_object='`$ECHO "X$compiler_needs_object" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_new_cmds='`$ECHO "X$old_archive_from_new_cmds" | $Xsed -e "$delay_single_quote_subst"`' old_archive_from_expsyms_cmds='`$ECHO "X$old_archive_from_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_cmds='`$ECHO "X$archive_cmds" | $Xsed -e "$delay_single_quote_subst"`' archive_expsym_cmds='`$ECHO "X$archive_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_cmds='`$ECHO "X$module_cmds" | $Xsed -e "$delay_single_quote_subst"`' module_expsym_cmds='`$ECHO "X$module_expsym_cmds" | $Xsed -e "$delay_single_quote_subst"`' with_gnu_ld='`$ECHO "X$with_gnu_ld" | $Xsed -e "$delay_single_quote_subst"`' allow_undefined_flag='`$ECHO "X$allow_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' no_undefined_flag='`$ECHO "X$no_undefined_flag" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec='`$ECHO "X$hardcode_libdir_flag_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_flag_spec_ld='`$ECHO "X$hardcode_libdir_flag_spec_ld" | $Xsed -e "$delay_single_quote_subst"`' hardcode_libdir_separator='`$ECHO "X$hardcode_libdir_separator" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct='`$ECHO "X$hardcode_direct" | $Xsed -e "$delay_single_quote_subst"`' hardcode_direct_absolute='`$ECHO "X$hardcode_direct_absolute" | $Xsed -e "$delay_single_quote_subst"`' hardcode_minus_L='`$ECHO "X$hardcode_minus_L" | $Xsed -e "$delay_single_quote_subst"`' hardcode_shlibpath_var='`$ECHO "X$hardcode_shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' hardcode_automatic='`$ECHO "X$hardcode_automatic" | $Xsed -e "$delay_single_quote_subst"`' inherit_rpath='`$ECHO "X$inherit_rpath" | $Xsed -e "$delay_single_quote_subst"`' link_all_deplibs='`$ECHO "X$link_all_deplibs" | $Xsed -e "$delay_single_quote_subst"`' fix_srcfile_path='`$ECHO "X$fix_srcfile_path" | $Xsed -e "$delay_single_quote_subst"`' always_export_symbols='`$ECHO "X$always_export_symbols" | $Xsed -e "$delay_single_quote_subst"`' export_symbols_cmds='`$ECHO "X$export_symbols_cmds" | $Xsed -e "$delay_single_quote_subst"`' exclude_expsyms='`$ECHO "X$exclude_expsyms" | $Xsed -e "$delay_single_quote_subst"`' include_expsyms='`$ECHO "X$include_expsyms" | $Xsed -e "$delay_single_quote_subst"`' prelink_cmds='`$ECHO "X$prelink_cmds" | $Xsed -e "$delay_single_quote_subst"`' file_list_spec='`$ECHO "X$file_list_spec" | $Xsed -e "$delay_single_quote_subst"`' variables_saved_for_relink='`$ECHO "X$variables_saved_for_relink" | $Xsed -e "$delay_single_quote_subst"`' need_lib_prefix='`$ECHO "X$need_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' need_version='`$ECHO "X$need_version" | $Xsed -e "$delay_single_quote_subst"`' version_type='`$ECHO "X$version_type" | $Xsed -e "$delay_single_quote_subst"`' runpath_var='`$ECHO "X$runpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_var='`$ECHO "X$shlibpath_var" | $Xsed -e "$delay_single_quote_subst"`' shlibpath_overrides_runpath='`$ECHO "X$shlibpath_overrides_runpath" | $Xsed -e "$delay_single_quote_subst"`' libname_spec='`$ECHO "X$libname_spec" | $Xsed -e "$delay_single_quote_subst"`' library_names_spec='`$ECHO "X$library_names_spec" | $Xsed -e "$delay_single_quote_subst"`' soname_spec='`$ECHO "X$soname_spec" | $Xsed -e "$delay_single_quote_subst"`' postinstall_cmds='`$ECHO "X$postinstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' postuninstall_cmds='`$ECHO "X$postuninstall_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_cmds='`$ECHO "X$finish_cmds" | $Xsed -e "$delay_single_quote_subst"`' finish_eval='`$ECHO "X$finish_eval" | $Xsed -e "$delay_single_quote_subst"`' hardcode_into_libs='`$ECHO "X$hardcode_into_libs" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_search_path_spec='`$ECHO "X$sys_lib_search_path_spec" | $Xsed -e "$delay_single_quote_subst"`' sys_lib_dlsearch_path_spec='`$ECHO "X$sys_lib_dlsearch_path_spec" | $Xsed -e "$delay_single_quote_subst"`' hardcode_action='`$ECHO "X$hardcode_action" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen='`$ECHO "X$enable_dlopen" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self='`$ECHO "X$enable_dlopen_self" | $Xsed -e "$delay_single_quote_subst"`' enable_dlopen_self_static='`$ECHO "X$enable_dlopen_self_static" | $Xsed -e "$delay_single_quote_subst"`' old_striplib='`$ECHO "X$old_striplib" | $Xsed -e "$delay_single_quote_subst"`' striplib='`$ECHO "X$striplib" | $Xsed -e "$delay_single_quote_subst"`' LTCC='$LTCC' LTCFLAGS='$LTCFLAGS' compiler='$compiler_DEFAULT' # Quote evaled strings. for var in SED \ GREP \ EGREP \ FGREP \ LD \ NM \ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ OBJDUMP \ deplibs_check_method \ file_magic_cmd \ AR \ AR_FLAGS \ STRIP \ RANLIB \ CC \ CFLAGS \ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ SHELL \ ECHO \ lt_prog_compiler_no_builtin_flag \ lt_prog_compiler_wl \ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ 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_flag_spec_ld \ hardcode_libdir_separator \ fix_srcfile_path \ exclude_expsyms \ include_expsyms \ file_list_spec \ variables_saved_for_relink \ libname_spec \ library_names_spec \ soname_spec \ finish_eval \ old_striplib \ striplib; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" ;; *) 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 \ postinstall_cmds \ postuninstall_cmds \ finish_cmds \ sys_lib_search_path_spec \ sys_lib_dlsearch_path_spec; do case \`eval \\\\\$ECHO "X\\\\\$\$var"\` in *[\\\\\\\`\\"\\\$]*) eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"X\\\$\$var\\" | \\\$Xsed -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" ;; *) eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" ;; esac done # Fix-up fallback echo if it was mangled by the above quoting rules. case \$lt_ECHO in *'\\\$0 --fallback-echo"') lt_ECHO=\`\$ECHO "X\$lt_ECHO" | \$Xsed -e 's/\\\\\\\\\\\\\\\$0 --fallback-echo"\$/\$0 --fallback-echo"/'\` ;; esac ac_aux_dir='$ac_aux_dir' xsi_shell='$xsi_shell' lt_shell_append='$lt_shell_append' # See if we are running on zsh, and set the options which 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' TIMESTAMP='$TIMESTAMP' 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" ;; "lib-src/Makefile") CONFIG_FILES="$CONFIG_FILES lib-src/Makefile" ;; "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; "lib-src-gmp/Makefile") CONFIG_FILES="$CONFIG_FILES lib-src-gmp/Makefile" ;; "src-gmp/Makefile") CONFIG_FILES="$CONFIG_FILES src-gmp/Makefile" ;; "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; *) { { $as_echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5 $as_echo "$as_me: error: invalid argument: $ac_config_target" >&2;} { (exit 1); exit 1; }; };; 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= trap 'exit_status=$? { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status ' 0 trap '{ (exit 1); exit 1; }' 1 2 13 15 } # Create a (secure) tmp directory for tmp files. { tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" } || { tmp=./conf$$-$RANDOM (umask 077 && mkdir "$tmp") } || { $as_echo "$as_me: cannot create a temporary directory in ." >&2 { (exit 1); exit 1; } } # 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=' ' 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 {' >"$tmp/subs1.awk" && _ACEOF { echo "cat >conf$$subs.awk <<_ACEOF" && echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && echo "_ACEOF" } >conf$$subs.sh || { { $as_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } 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_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } 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_echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 $as_echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } 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 >>"\$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 >>"\$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 < "$tmp/subs1.awk" > "$tmp/subs.awk" \ || { { $as_echo "$as_me:$LINENO: error: could not setup config files machinery" >&5 $as_echo "$as_me: error: could not setup config files machinery" >&2;} { (exit 1); exit 1; }; } _ACEOF # VPATH may cause trouble with some makes, so we remove $(srcdir), # ${srcdir} and @srcdir@ 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[ ]*=/{ s/:*\$(srcdir):*/:/ s/:*\${srcdir}:*/:/ s/:*@srcdir@:*/:/ s/^\([^=]*=[ ]*\):*/\1/ s/:*$// 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_echo "$as_me:$LINENO: error: invalid tag $ac_tag" >&5 $as_echo "$as_me: error: invalid tag $ac_tag" >&2;} { (exit 1); exit 1; }; };; :[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="$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_echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5 $as_echo "$as_me: error: cannot find input file: $ac_f" >&2;} { (exit 1); exit 1; }; };; esac case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac ac_file_inputs="$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:$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 >"$tmp/stdin" \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; 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" case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { 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_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } 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:$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 "$tmp/subs.awk" >$tmp/out \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && { $as_echo "$as_me:$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 "$tmp/stdin" case $ac_file in -) cat "$tmp/out" && rm -f "$tmp/out";; *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";; esac \ || { { $as_echo "$as_me:$LINENO: error: could not create $ac_file" >&5 $as_echo "$as_me: error: could not create $ac_file" >&2;} { (exit 1); exit 1; }; } ;; :C) { $as_echo "$as_me:$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"" || # Autoconf 2.62 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"` # When using ansi2knr, U may be empty or an underscore; expand it U=`sed -n 's/^U = //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' -e 's/\$U/'"$U"'/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 case $as_dir in #( -*) as_dir=./$as_dir;; esac test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || { 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_echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5 $as_echo "$as_me: error: cannot create directory $as_dir" >&2;} { (exit 1); exit 1; }; }; } # echo "creating $dirpart/$file" echo '# dummy' > "$dirpart/$file" done done ;; "libtool":C) # See if we are running on zsh, and set the options which 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 # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. # Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $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. # # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, # 2006, 2007, 2008 Free Software Foundation, Inc. # Written by Gordon Matzigkeit, 1996 # # This file is part of GNU Libtool. # # 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 GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, or # obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. available_tags="" # ### BEGIN LIBTOOL CONFIG # Which release of libtool.m4 was used? macro_version=$macro_version macro_revision=$macro_revision # 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 # 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 # How to create reloadable object files. reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds # An object symbol dumper. OBJDUMP=$lt_OBJDUMP # 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 # The archiver. AR=$lt_AR AR_FLAGS=$lt_AR_FLAGS # 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 # 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 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 of the directory that contains temporary libtool files. objdir=$objdir # Shell to use when invoking shell scripts. SHELL=$lt_SHELL # An echo program that does not interpret backslashes. ECHO=$lt_ECHO # 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 # 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 # 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 # Run-time system search path for libraries. sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec # 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 # 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 # How to pass a linker flag through the compiler. wl=$lt_lt_prog_compiler_wl # Additional compiler flags for building library objects. pic_flag=$lt_lt_prog_compiler_pic # 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 # If ld is used when linking, flag to hardcode \$libdir into a binary # during linking. This must work even if \$libdir does not exist. hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld # 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 # Fix the shell variable \$srcfile for the compiler. fix_srcfile_path=$lt_fix_srcfile_path # 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 # 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 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 "X${COLLECT_NAMES+set}" != Xset; 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 '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ || (rm -f "$cfgfile"; exit 1) case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac } # func_basename file func_basename () { func_basename_result="${1##*/}" } # 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" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { case ${1} in */*) func_dirname_result="${1%/*}${2}" ;; * ) func_dirname_result="${3}" ;; esac func_basename_result="${1##*/}" } # func_stripname 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). func_stripname () { # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are # positional parameters, so assign one to ordinary parameter first. func_stripname_result=${3} func_stripname_result=${func_stripname_result#"${1}"} func_stripname_result=${func_stripname_result%"${2}"} } # func_opt_split func_opt_split () { func_opt_split_opt=${1%%=*} func_opt_split_arg=${1#*=} } # func_lo2o object func_lo2o () { case ${1} in *.lo) func_lo2o_result=${1%.lo}.${objext} ;; *) func_lo2o_result=${1} ;; esac } # func_xform libobj-or-source func_xform () { func_xform_result=${1%.*}.lo } # func_arith arithmetic-term... func_arith () { func_arith_result=$(( $* )) } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=${#1} } _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. func_dirname () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi } # func_basename file func_basename () { func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # func_stripname 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). # func_strip_suffix prefix name func_stripname () { case ${2} in .*) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%\\\\${2}\$%%"`;; *) func_stripname_result=`$ECHO "X${3}" \ | $Xsed -e "s%^${1}%%" -e "s%${2}\$%%"`;; esac } # sed scripts: my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' my_sed_long_arg='1s/^-[^=]*=//' # func_opt_split func_opt_split () { func_opt_split_opt=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_opt"` func_opt_split_arg=`$ECHO "X${1}" | $Xsed -e "$my_sed_long_arg"` } # func_lo2o object func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } # func_xform libobj-or-source func_xform () { func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` } # func_arith arithmetic-term... func_arith () { func_arith_result=`expr "$@"` } # func_len string # STRING may not start with a hyphen. func_len () { func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` } _LT_EOF esac case $lt_shell_append in yes) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1+=\$2" } _LT_EOF ;; *) cat << \_LT_EOF >> "$cfgfile" # func_append var value # Append VALUE to the end of shell variable VAR. func_append () { eval "$1=\$$1\$2" } _LT_EOF ;; esac sed -n '/^# Generated shell functions inserted here/,$p' "$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 { (exit 0); exit 0; } _ACEOF chmod +x $CONFIG_STATUS ac_clean_files=$ac_clean_files_save test $ac_write_fail = 0 || { { $as_echo "$as_me:$LINENO: error: write failure creating $CONFIG_STATUS" >&5 $as_echo "$as_me: error: write failure creating $CONFIG_STATUS" >&2;} { (exit 1); exit 1; }; } # 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 || { (exit 1); exit 1; } fi if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then { $as_echo "$as_me:$LINENO: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} fi cddlib-094g/configure.in000066400000000000000000000012321206770251100152700ustar00rootroot00000000000000dnl Process this file with autoconf to produce a configure script. AC_INIT dnl Init automake. AM_INIT_AUTOMAKE(cddlib, 0.94) dnl Checks for programs. AC_PROG_CC AC_PROG_INSTALL LT_INIT dnl Checks for libraries. dnl Replace `main' with a function in -lg: dnl AC_CHECK_LIB(g, main) dnl Replace `main' with a function in -lstdc: dnl AC_CHECK_LIB(stdc, main) dnl look for gmp: AC_CHECK_LIB(gmp, main) dnl Checks for header files. AC_HEADER_STDC dnl Checks for typedefs, structures, and compiler characteristics. AC_C_CONST dnl Checks for library functions. AC_CONFIG_FILES([lib-src/Makefile src/Makefile lib-src-gmp/Makefile src-gmp/Makefile Makefile]) AC_OUTPUT cddlib-094g/depcomp000077500000000000000000000427131206770251100143450ustar00rootroot00000000000000#! /bin/sh # depcomp - compile a program generating dependencies as side-effects scriptversion=2007-03-29.01 # Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 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, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # 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 outputing dependencies. libtool Whether libtool is used (yes/no). Report bugs to . EOF exit $? ;; -v | --v*) echo "depcomp $scriptversion" exit $? ;; esac 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" # 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 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 -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi mv "$tmpdepfile" "$depfile" ;; gcc) ## 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). ## - 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 -eq 0; then : else rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz ## 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. tr ' ' ' ' < "$tmpdepfile" | ## 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. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. sed -e 's/^\\$//' -e '/^$/d' -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 -eq 0; then : else 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 ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ tr ' ' ' ' >> $depfile echo >> $depfile # The second pass generates a dummy entry for each header file. tr ' ' ' ' < "$tmpdepfile" \ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ >> $depfile else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; 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. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 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 -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then # Each line is of the form `foo.o: dependent.h'. # Do two passes, one to just change these to # `$object: dependent.h' and one to simply `dependent.h:'. sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else # The sourcefile does not contain any dependencies, so just # store a dummy comment line, to avoid errors with the Makefile # "include basename.Plo" scheme. echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; icc) # Intel's C compiler understands `-MD -MF file'. However on # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c # ICC 7.0 will fill foo.d with something like # foo.o: sub/foo.c # foo.o: sub/foo.h # which is wrong. We want: # sub/foo.o: sub/foo.c # sub/foo.o: sub/foo.h # sub/foo.c: # sub/foo.h: # ICC 7.1 will output # foo.o: sub/foo.c sub/foo.h # and will wrap long lines using \ : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... "$@" -MD -MF "$tmpdepfile" stat=$? if test $stat -eq 0; then : else 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. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` 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 -eq 0; then : else 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,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" # Add `dependent.h:' lines. sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile" else echo "#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. dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` test "x$dir" = "x$object" && dir= base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` if test "$libtool" = yes; then # With Tru64 cc, shared objects can also be used to make a # static library. This mechanism is used in libtool 1.4 series to # handle both shared and static libraries in a single compilation. # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. # # With libtool 1.5 this exception was removed, and libtool now # 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.libs/$base.lo.d # libtool 1.4 tmpdepfile2=$dir$base.o.d # libtool 1.5 tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 "$@" -Wc,-MD else tmpdepfile1=$dir$base.o.d tmpdepfile2=$dir$base.d tmpdepfile3=$dir$base.d tmpdepfile4=$dir$base.d "$@" -MD fi stat=$? if test $stat -eq 0; then : else rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" exit $stat fi for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" do test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" # That's a tab and a space in the []. sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" else echo "#dummy" > "$depfile" fi rm -f "$tmpdepfile" ;; #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 $1 != '--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:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" tr ' ' ' ' < "$tmpdepfile" | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. 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 $1 != '--mode=compile'; do shift done shift fi # X makedepend shift cleared=no for arg in "$@"; do case $cleared in no) set ""; shift cleared=yes ;; esac 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. -*|$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" cat < "$tmpdepfile" > "$depfile" sed '1,2d' "$tmpdepfile" | tr ' ' ' ' | \ ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. 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 $1 != '--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, regardless of -o, # because we must use -o when running libtool. "$@" || exit $? IFS=" " for arg do case "$arg" in "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") set fnord "$@" shift shift ;; *) set fnord "$@" "$arg" shift shift ;; esac done "$@" -E | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" echo " " >> "$depfile" . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; 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-end: "$" # End: cddlib-094g/doc/000077500000000000000000000000001206770251100135265ustar00rootroot00000000000000cddlib-094g/doc/.DS_Store.1000066400000000000000000000140041206770251100153470ustar00rootroot00000000000000Bud1‡ibman.?C&A cddlibman.pdfIlocblobÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(Ip€^¾(€‚À›^ñÐ_0InitialKeyRepeatÿÿÿÿÿÿ€ÿ^Ä«^ñÐÿÿÿÿÿ€ù` ^Îp^›ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‰Ïd­ d˜pbman.pdfÿ]ÿ^ÿ`ÿkÿÿG ³O@€L¸€E 0€P #¾$D.ò/Q5’€6==S@ÑAGH^€HIOìP…/^®{^›,í}%strk!strklhØNsclrtruefont tran @HH@‰®d­ d˜p?D‚àCxD‚àCxD‚àCxD@CL€nullunknÿÿÿÿÿÿÿÿÁ`Á.BÁ Á¦  B^óà>½p¤Á`Áoœ¤KZùg$‰›d­ d˜p  @€ @€ @€ @@ÿÿÿÿÿL cp950rm.pdfIlocblobÿÿÿÿÿÿÿÿÿÿÿÿÿÿ cp950rm.pdfdilcblob õÐÿÿÿ(Ò=bmöÿÿÿÿÿÿLcutzono_solutionsIlocblobð›ÿÿÿÿÿÿcutzono_solutionsdilcblob Äÿÿþ $ÜgÙÿÿÿÿÿÿLcutzono_solutions.1Ilocblob›ÿÿÿÿÿÿcutzono_solutions.1dilcblob ÄJÿÿÿ±Üg™òÿÿÿÿÿÿLcutzono_solutions.tar.gzIlocblobðŸÿÿÿÿÿÿcutzono_solutions.tar.gzdilcblob ÄÙ³ ä! ÿÿÿÿÿÿL f017232.PDFIlocblobÿÿÿÿÿÿÿÿÿÿÿÿÿÿ f017232.PDFdilcblob õÐÿÿÿ·mߎmÿÿÿÿÿÿLfinschi-1053.ps.gz E‡DSDB ` @€ @€ @ÿÿÿÿÿL cp950rm.pdfIlocblobÿÿÿÿÿÿÿÿÿÿÿÿÿÿ cp950rm.pdfdilcblob õÐÿÿÿ(Ò=bmöÿÿÿÿÿÿLcutzono_solutionsIlocblobð›ÿÿÿÿÿÿcutzono_solutionsdilcblob Äÿÿþ $ÜgÙÿÿÿÿÿÿLcutzono_solutions.1Ilocblob›ÿÿÿÿÿÿcutzono_solutions.1dilcblob ÄJÿÿÿ±Üg™òÿÿÿÿÿÿLcutzono_solutions.tar.gzIlocblobðŸÿÿÿÿÿÿcutzono_solutions.tar.gzdilcblob ÄÙ³ ä! ÿÿÿÿÿÿL f017232.PDFIlocblobÿÿÿÿÿÿÿÿÿÿÿÿÿÿ f017232.PDFdilcblob õÐÿÿÿ·mߎmÿÿÿÿÿÿLfinschi-1053.ps.gzcddlib-094g/doc/cddlibman.aux000066400000000000000000000072411206770251100161660ustar00rootroot00000000000000\relax \citation{fp-ddmr-96} \citation{mrtt-ddm-53} \citation{a-lrshome-01} \citation{af-pachv-92} \@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{2}} \newlabel{INTRODUCTION}{{1}{2}} \citation{abs-hgach-97} \@writefile{toc}{\contentsline {section}{\numberline {2}Polyhedra H- and V-Formats (Version 1999)}{3}} \newlabel{FORMAT}{{2}{3}} \@writefile{toc}{\contentsline {section}{\numberline {3}Basic Object Types (Structures) in cddlib}{4}} \newlabel{DATASTR}{{3}{4}} \@writefile{toc}{\contentsline {section}{\numberline {4}Library Functions}{7}} \newlabel{LIBRARY}{{4}{7}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Library Initialization}{7}} \newlabel{Initialization}{{4.1}{7}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Core Functions}{7}} \newlabel{CoreLibrary}{{4.2}{7}} \citation{abs-hgach-97} \citation{fp-ddmr-96} \@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Data Manipulations}{11}} \newlabel{DataLibrary}{{4.3}{11}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.1}Number Assignments}{11}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.2}Arithmetic Operations for {\tt mytype} Numbers}{11}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.3}Predefined Constants}{12}} \newlabel{constants}{{4.3.3}{12}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.4}Sign Evaluation and Comparison for {\tt mytype} Numbers}{12}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.5}Polyhedra Data Manipulation}{12}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.6}LP Data Manipulation}{13}} \@writefile{toc}{\contentsline {subsubsection}{\numberline {4.3.7}Matrix Manipulation}{13}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.4}Input/Output Functions}{14}} \newlabel{IOLibrary}{{4.4}{14}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.5}Obsolete Functions}{15}} \newlabel{ObsoleteFunctions}{{4.5}{15}} \@writefile{toc}{\contentsline {subsection}{\numberline {4.6}Set Functions in {\tt setoper} library}{15}} \newlabel{SetFunctions}{{4.6}{15}} \citation{a-lrshome-01} \citation{af-pachv-92} \citation{bdh-qach-03} \citation{e-acg-87} \citation{m-cg-94} \@writefile{toc}{\contentsline {section}{\numberline {5}An Extension of the CDD Library in GMP mode}{16}} \newlabel{GMPLIB}{{5}{16}} \@writefile{toc}{\contentsline {section}{\numberline {6}Examples}{16}} \newlabel{EXAMPLES}{{6}{16}} \@writefile{toc}{\contentsline {section}{\numberline {7}Numerical Accuracy}{16}} \newlabel{accuracy}{{7}{16}} \@writefile{toc}{\contentsline {section}{\numberline {8}Other Useful Codes}{16}} \newlabel{CODES}{{8}{16}} \citation{cl-porta-97} \citation{w-ldpo-93b} \citation{b-pplhome} \citation{m-pdcip-97} \citation{bfm-pdmvf-97} \citation{a-dcg} \citation{e-cgp} \citation{fg-lpfaq} \citation{f-pcfaq-98} \citation{dhhhty-latte-05} \citation{w-msv-05} \citation{f-fzctmacp-04} \citation{j-gvum-05} \citation{fjt-cgf-05} \citation{r-topcom-05} \bibstyle{plain} \bibdata{fukuda1,fukuda2} \bibcite{a-dcg}{1} \@writefile{toc}{\contentsline {section}{\numberline {9}Codes Using Cddlib}{17}} \newlabel{USERCODES}{{9}{17}} \bibcite{a-lrshome-01}{2} \bibcite{abs-hgach-97}{3} \bibcite{af-pachv-92}{4} \bibcite{b-pplhome}{5} \bibcite{bdh-qach-03}{6} \bibcite{bfm-pdmvf-97}{7} \bibcite{cl-porta-97}{8} \bibcite{dhhhty-latte-05}{9} \bibcite{e-acg-87}{10} \bibcite{e-cgp}{11} \bibcite{fg-lpfaq}{12} \bibcite{f-pcfaq-98}{13} \bibcite{f-fzctmacp-04}{14} \bibcite{fjt-cgf-05}{15} \bibcite{fp-ddmr-96}{16} \bibcite{j-gvum-05}{17} \bibcite{m-pdcip-97}{18} \bibcite{mrtt-ddm-53}{19} \bibcite{m-cg-94}{20} \bibcite{r-topcom-05}{21} \bibcite{w-msv-05}{22} \bibcite{w-ldpo-93b}{23} cddlib-094g/doc/cddlibman.bbl000066400000000000000000000134571206770251100161360ustar00rootroot00000000000000\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-094g/doc/cddlibman.blg000066400000000000000000000017011206770251100161300ustar00rootroot00000000000000This is BibTeX, Version 0.99c (Web2C 7.4.5) The top-level auxiliary file: cddlibman.aux The style file: plain.bst Database file #1: fukuda1.bib Database file #2: fukuda2.bib Warning--empty institution in fjt-cgf-05 Warning--empty year in fjt-cgf-05 You've used 23 entries, 2118 wiz_defined-function locations, 629 strings with 8653 characters, and the built_in function-call counts, 6251 in all, are: = -- 603 > -- 290 < -- 3 + -- 117 - -- 91 * -- 344 := -- 1076 add.period$ -- 79 call.type$ -- 23 change.case$ -- 104 chr.to.int$ -- 0 cite$ -- 25 duplicate$ -- 236 empty$ -- 521 format.name$ -- 91 if$ -- 1302 int.to.chr$ -- 0 int.to.str$ -- 23 missing$ -- 10 newline$ -- 126 num.names$ -- 50 pop$ -- 155 preamble$ -- 1 purify$ -- 89 quote$ -- 0 skip$ -- 164 stack$ -- 0 substring$ -- 250 swap$ -- 46 text.length$ -- 3 text.prefix$ -- 0 top$ -- 0 type$ -- 88 warning$ -- 2 while$ -- 60 width$ -- 25 write$ -- 254 (There were 2 warnings) cddlib-094g/doc/cddlibman.dvi000066400000000000000000002170101206770251100161500ustar00rootroot00000000000000÷ƒ’À;è TeX output 2008.03.23:1543‹ÿÿÿÿ ¬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Ú2ŽŽ¡2Ž‘lÏP¦tolyhedra–2H-“and“V-F›þó\ormats“(V˜ersion“1999)’ÉG3ŽŽ¡3Ž‘lÏBasic–2Ob‘³ject“T¦typY‹es“(Structures)“in“cddlib’ÖÛm4ŽŽ¡4Ž‘lÏLibrary‘2F‘þó\unctions’\:7ŽŽ¤ ™š‘lÏóKñ`y ó3 cmr10¹4.1Ž‘)œ1Library‘¦fInitialization‘•P‘¼É.ŽŽ–„=‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ‘"r7ŽŽ¡‘lÏ4.2Ž‘)œ1Core‘¦fF‘ÿeunctions‘ü‘‘¼É.ŽŽ–„=‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ‘"r7ŽŽ¡‘lÏ4.3Ž‘)œ1Data‘¦fManipulations‘s/‘¼É.ŽŽ–„=‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ‘¨Ø11ŽŽ¡‘)œ14.3.1Ž‘L¦rNum•²!bMÞer‘¦fAssignmen“ts²‘¼É.ŽŽ–„=‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ“‘¼É.ŽŽ‘¨Ø11ŽŽ¡‘)œ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–°lcan“handle“anš²!y‘°kgeneral“input“and“is“more“general.‘ûîF‘ÿeurtthermore,‘²íadditional“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¹.‘™Let“ÐP‘]f¹bMÞe“represen˜ted“b˜y“Ðn“¹gerating“pMÞoin˜ts‘Øand“Ðs“¹generatingŽ¡directions–•ß(ra²!ys)“as‘•ÞÐP‘ý¹=‘ §Ðconvšd“¹(ÐvŸ¤z¼1Ž‘ÀÐ;–Ó1:“:“:Ž‘lÅ;‘Ó1vŸ¤z¿nŽ‘¨P¹)–MÞ+“Ðnonneg˜¹(ÐrŸ¤z¿n¼+1Ž‘„ÌÐ;–Ó1:“:“:Ž‘lÅ;‘Ó1rŸ¤z¿n¼+¿sŽ‘3¹).‘Ø[Then‘•Þthe–•ßP²!olyhedra“V-formatŽ¡for‘¦fÐ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ŽŽŒ‹M0 ¬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ŽŽŒ‹ •v ¬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Þccured.ަÕ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“formated“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ŽŽŒ‹Î, ¬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–Áuand›Áven²!umerates“all“triangulations“of˜a“pMÞoin²!t“set.‘/ It“detects“the˜regularlit²!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ŽŽŒ‹øW ¬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ùFßßßßßßcddlib-094g/doc/cddlibman.log000066400000000000000000000155161206770251100161560ustar00rootroot00000000000000This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6) (format=latex 2008.3.22) 23 MAR 2008 15:43 entering extended mode %&-line parsing enabled. **cddlibman.tex (./cddlibman.tex LaTeX2e <2005/12/01> Babel and hyphenation patterns for english, usenglishmax, dumylang, noh yphenation, arabic, basque, bulgarian, coptic, welsh, czech, slovak, german, ng erman, danish, esperanto, spanish, catalan, galician, estonian, farsi, finnish, french, greek, monogreek, ancientgreek, croatian, hungarian, interlingua, ibyc us, indonesian, icelandic, italian, latin, mongolian, dutch, norsk, polish, por tuguese, pinyin, romanian, russian, slovenian, uppersorbian, serbian, swedish, turkish, ukenglish, ukrainian, loaded. (/usr/local/texlive/2007/texmf-dist/tex/latex/base/article.cls Document Class: article 2005/09/16 v1.4f Standard LaTeX document class (/usr/local/texlive/2007/texmf-dist/tex/latex/base/size11.clo File: size11.clo 2005/09/16 v1.4f Standard LaTeX file (size option) ) \c@part=\count79 \c@section=\count80 \c@subsection=\count81 \c@subsubsection=\count82 \c@paragraph=\count83 \c@subparagraph=\count84 \c@figure=\count85 \c@table=\count86 \abovecaptionskip=\skip41 \belowcaptionskip=\skip42 \bibindent=\dimen102 ) (./html.sty Package: html 1996/02/01 v1.0 hypertext commands for latex2html (nd, hs) \c@lpart=\count87 \c@lchapter=\count88 \c@lsection=\count89 \c@lsubsection=\count90 \c@lsubsubsection=\count91 \c@lparagraph=\count92 \c@lsubparagraph=\count93 \c@lsubsubparagraph=\count94 \c@lequation=\count95 ) (/usr/local/texlive/2007/texmf-dist/tex/latex/amsmath/amsmath.sty Package: amsmath 2000/07/18 v2.13 AMS math features \@mathmargin=\skip43 For additional information on amsmath, use the `?' option. (/usr/local/texlive/2007/texmf-dist/tex/latex/amsmath/amstext.sty Package: amstext 2000/06/29 v2.01 (/usr/local/texlive/2007/texmf-dist/tex/latex/amsmath/amsgen.sty File: amsgen.sty 1999/11/30 v2.0 \@emptytoks=\toks14 \ex@=\dimen103 )) (/usr/local/texlive/2007/texmf-dist/tex/latex/amsmath/amsbsy.sty Package: amsbsy 1999/11/29 v1.2d \pmbraise@=\dimen104 ) (/usr/local/texlive/2007/texmf-dist/tex/latex/amsmath/amsopn.sty Package: amsopn 1999/12/14 v2.01 operator names ) \inf@bad=\count96 LaTeX Info: Redefining \frac on input line 211. \uproot@=\count97 \leftroot@=\count98 LaTeX Info: Redefining \overline on input line 307. \classnum@=\count99 \DOTSCASE@=\count100 LaTeX Info: Redefining \ldots on input line 379. LaTeX Info: Redefining \dots on input line 382. LaTeX Info: Redefining \cdots on input line 467. \Mathstrutbox@=\box26 \strutbox@=\box27 \big@size=\dimen105 LaTeX Font Info: Redeclaring font encoding OML on input line 567. LaTeX Font Info: Redeclaring font encoding OMS on input line 568. \macc@depth=\count101 \c@MaxMatrixCols=\count102 \dotsspace@=\muskip10 \c@parentequation=\count103 \dspbrk@lvl=\count104 \tag@help=\toks15 \row@=\count105 \column@=\count106 \maxfields@=\count107 \andhelp@=\toks16 \eqnshift@=\dimen106 \alignsep@=\dimen107 \tagshift@=\dimen108 \tagwidth@=\dimen109 \totwidth@=\dimen110 \lineht@=\dimen111 \@envbody=\toks17 \multlinegap=\skip44 \multlinetaggap=\skip45 \mathdisplay@stack=\toks18 LaTeX Info: Redefining \[ on input line 2666. LaTeX Info: Redefining \] on input line 2667. ) (/usr/local/texlive/2007/texmf-dist/tex/latex/amsfonts/amssymb.sty Package: amssymb 2002/01/22 v2.2d (/usr/local/texlive/2007/texmf-dist/tex/latex/amsfonts/amsfonts.sty Package: amsfonts 2001/10/25 v2.2f \symAMSa=\mathgroup4 \symAMSb=\mathgroup5 LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' (Font) U/euf/m/n --> U/euf/b/n on input line 132. )) (./cddlibman.aux) \openout1 = `cddlibman.aux'. LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 21. LaTeX Font Info: ... okay on input line 21. LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 21. LaTeX Font Info: ... okay on input line 21. LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 21. LaTeX Font Info: ... okay on input line 21. LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 21. LaTeX Font Info: ... okay on input line 21. LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 21. LaTeX Font Info: ... okay on input line 21. LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 21. LaTeX Font Info: ... okay on input line 21. LaTeX Font Info: Try loading font information for U+msa on input line 30. (/usr/local/texlive/2007/texmf-dist/tex/latex/amsfonts/umsa.fd File: umsa.fd 2002/01/19 v2.2g AMS font definitions ) LaTeX Font Info: Try loading font information for U+msb on input line 30. (/usr/local/texlive/2007/texmf-dist/tex/latex/amsfonts/umsb.fd File: umsb.fd 2002/01/19 v2.2g AMS font definitions ) (./cddlibman.toc) \tf@toc=\write3 \openout3 = `cddlibman.toc'. [1 ] [2] [3] [4] Overfull \hbox (19.168pt too wide) in paragraph at lines 395--395 []\OT1/cmtt/m/n/10.95 typedef mytype **dd_Amatrix; /* mytype is either GMP mpq _t or 1-dim double array. */[] [] [5] [6] Overfull \hbox (19.168pt too wide) in paragraph at lines 395--395 [] \OT1/cmtt/m/n/10.95 dd_colrange se; /* col index as a certificate in the c ase of dual inconsistency */[] [] [7] [8] [9] Overfull \hbox (0.39783pt too wide) in paragraph at lines 653--660 \OT1/cmr/m/n/10.95 Fourier's Elim-i-na-tion. If the in-put ma-trix is V-represe ntation, \OT1/cmtt/m/n/10.95 *err \OT1/cmr/m/n/10.95 re-turns \OT1/cmtt/m/n/10. 95 dd[]NotAvailForV\OT1/cmr/m/n/10.95 . [] [10] [11] [12] Overfull \hbox (7.43246pt too wide) in paragraph at lines 821--826 \OT1/cmr/m/n/10.95 Copy the in-ci-dence rep-re-sen-ta-tion of the com-puted rep -re-sen-ta-tion pointed by poly to \OT1/cmtt/m/n/10.95 setfamily [] Overfull \hbox (10.47415pt too wide) in paragraph at lines 827--832 \OT1/cmr/m/n/10.95 Copy the ad-ja-cency rep-re-sen-ta-tion of the com-puted rep -re-sen-ta-tion pointed by poly to \OT1/cmtt/m/n/10.95 setfamily [] [13] [14] [15] [16] Package amsfonts Warning: Obsolete command \Bbb; \mathbb should be used instead on input line 1139. (./cddlibman.bbl Overfull \hbox (2.6514pt too wide) in paragraph at lines 4--9 []\OT1/cmr/m/n/10.95 N. Amenta. Di-rec-tory of com-pu-ta-tional ge-om-e-try. http://www.geom.uiuc.edu/software/cglist/. [] [17] Underfull \hbox (badness 2302) in paragraph at lines 68--73 []\OT1/cmr/m/n/10.95 J. Er-ick-son. Com-pu-ta-tional ge-om-e-try pages, list o f soft-ware li-braries and codes. [] [18]) [19] (./cddlibman.aux) ) Here is how much of TeX's memory you used: 1274 strings out of 94074 14362 string characters out of 1163007 65424 words of memory out of 1500000 4583 multiletter control sequences out of 10000+50000 13141 words of font info for 50 fonts, out of 1200000 for 2000 645 hyphenation exceptions out of 8191 27i,9n,24p,239b,243s stack positions out of 5000i,500n,6000p,200000b,5000s Output written on cddlibman.dvi (19 pages, 73224 bytes). cddlib-094g/doc/cddlibman.pdf000066400000000000000000005017361206770251100161520ustar00rootroot00000000000000%PDF-1.3 %Çì¢ 5 0 obj <> stream xœí[É’·½Oø#úXíP—$Ö£DÉ’lm–Æ:Xòœ.6gñP‹©¯÷KduWϦah ƒ1Õ(,‰Ì—/èìÿ®Ô¨WŠÿÕ¿'gGï~VÏ^©ÕGøÿìè¿G:wXÕ?'g«÷Ñ)®tvvuüô¨ Ö+cÔèü*àO2«ã³£o‡“µUÔÑ[~ÒN§úD! /×=šäÑø¢?>YoHÙÑ'?|µÞ˜Ñ»¤h8Í3‘ñÃS¼• njäé¯x<ù”dãy[³ËqZg×vøl½Q#9—œóxKÉ•Ƥ\~h’Ö×Qˆü¯ã¿BЋÖ#f0¬ FO)®°Ähøáx %üÇx‚ÄÃoÈxãÓp†É“±Ä"ô¦md- føË:xHá#¤À6šá?k;FoÈô¦íôð¸L¬¼e¹62h“N©Èð w4Ú;l¯y…éB²ÐØ÷¬§Ä†€õ`BçgÍmÅÚ°¬K #¤}Ê[„òT[„QÈè1B¿_d½Eïìp‰qÔ!È_‰i÷H&ÖÛÙö£…µ3l´J!Ó e»&¦ÚFÎÈ•®ÄJ'k¢Ñ{ã†çuö¬T4’Wšµ£²xÈš­sPÐ]–-Ë’F ½aÅ M°_5¹á+8J>´ ˆM_,oºw8 ÕIS¥Pü,¼ú¨-ºˆòËI’;H ‹: _O=OšlE¥´ÍZ­kG''dÓÁovüáC¼Æ¶àÚ]W—½(ÌóO昢ÒB²ó5 ,5$‘Û¶Ö·ýNui/ôó1º™à‰†ÍzÙœÕnˆ]iª?¦þhŠ}-(Aˆ×–”r-U,G…w:Ë4 ÿÔ„;€ÃŸ›¶÷œ6¿Ù‡=^ðέt¤4ŽdXYéb’ﱃnñ22è(žÄbb«8@Ý&ÆáÇ5Ù,M(f„ÞI]}V¡vÛYqnÆjaàÙn >øn•WÉjOw¯‡Þó Oî”±3,-)ç|]ø‘¬Â|K f€â±"ÔÃi¾[—™iW¡YÉú7`_N° AD„SoÁPT°Šc4¡Q{ ´™ÑYùx«Ê{?½Tòå+XÉÂÆ6Ô…-’¨(i^ØØÑfD}ztüço½Þ$NGÀµŸdŸI6ÏŠ§è3ÀA‘û¦õ +D¦/¨D)pö­1²¬ßöx²v^Ä DkU ÌŸiäEàH°?÷‚Mž"¶Ì$‰í?¹…›1Çù/!‘†¢½M¹IP¢—”¸±–ÃlN€œØµC˜1À¢ hR+„Ní§Ì/¦O˜ÖZxç§*µ1°g_×@~ÂZ‰1%NwóPÈÛ§û~MyûÔ›x®—Ó‡Öú3œgL~¿0ìb]V03é0‚”„G§ˆ§‡oìûË;ü“Qï0odXCÚåÒ™›Ýï½¶ŠC> éÊ¡©.›Ñç¦L`†>ÓÑ÷¨¸B &3å#]Ή’fáä·ÁSÀí¤çàÔa Ä€¬g†ß Ù_ »t2—)„*—¡y+”M3\ÃqÔQö_¤Dïâ»p^d}ŽŸ­ùÔd½Ë]`.;à _J^»üA ²‹®CWf»™Aêö–43NóÿBc>Žžâu4F»U{Î*†Ï×fBƒå ‰Ÿ“B>¯ÆÑ:ÃéÝDY|ýÃ!™8¼·Î鱯‚1Øé1xŸŸÍát–ïK=Ÿ°ÊŒ†ò-(ærº8ás¤™˜ø-–îä2ÀbVßMátKuèµdµ+–"(.$VϯAÃÈ&!`ì Ž¿ÆàŸO@§uQ`©®ýÝžàgxÛOYö$c;¦ªIk”I«ö˜´{–¯ü9~Í“”Û÷K—­ñ´5.%ÅÊe`]às>8¥˜ùB=uGØ¥Óñ¡iüá÷^ h”½5h©ƒöËüå‰uÁHuHn;9öÆ?í¥vü8D|§T“Æ’^@ŸÎt=ò®r¢7;œˆ¼®éÜõ‡&B³D„·ª¶cêë…Œ¬Cœßó™ðû×Î.7…¯_Ïf伟vsÁÃÔ[óD¾¶~<£½¾Šˆìrñnœi4æóo3ã¨ø.÷Á8ÓSšRßãMð4N·ÒN‡<[ñÓàöšïÃ8¸† Ãô"Îm†C‚¥ÊÁÅYèàbêÁ…öÁº{pá¶»\,¢€Ý%È?éeRƒ!µþÅ—%‹¤W§¾-éùŽ«|7÷eɨàXz޽ø»Þ¿½ ˜o.`ÒBÀ´öfN ;s t‹.Å£ÿqă0ìÆO§“·gÐÛÞ–ñ7>ˆÃw¸-[‚R¹1»–†l¿1[¾×_6}·ö»k7(¹ˆj±Ïþ<3ç)š¿»åe/ç×F9ÿšŽio¯Õn€a™}¸ ÌîC;1Z]åš,ËuŠë‰';és£ž¥KÓz×áÒCà¬Ê׿&þØÛ–:Ý,ï='‚)O} ô|‡ž8pJ\å:<•MdM>µ.ýõâu™âï°&-ñxq–§¾‹ëO}ùö97.ÿ,R.O©«ìk»ÿmñtQX?Í5+›`ühÔ]=ÿ® ý Z¼[µÑ>ƒa^¡âz•Ã{­ˆç|*»H|[Â9¥#Nÿ¦*Q™ «HDÃnN.Kâ*¥ó©§|äâTø›7VNú¼•6œ–÷ ‹>Ê(rØ8“$Ô ÄîZ¤Q xMÒ°M«‘å¢G”µ"Y½EÓE>¦4¸œ³f¾Æ!ò±+$,aEI»S⓹Å*ØŠv\©™`¥É±¼¬ÐàÊ4ßí±§zŸœ¬/)ëi°ÁeW¼¨“_³‚k¤p@–Mí5/> ]ºÏùÐ)JXº4û•Y¹2fVâ4U*‰ípdrù²¼#±÷ìO?ìÞ›æ™z×Vøt¯}÷Z Ø÷=ÕdMxun¡È®îЀõð®ìÖJÔ{IÛ<-õ\¹<ù‡—¦7!ß„8!+á¶]^µyÞýL݈!õ-×õAÛ·Z¿îÅ…]Ïܪ~Æ;5r%Þén•×.º+±®Ûón1”]a#Þøü[ìò׆D ÿ{ìð)V±)%£0ó—Í?Cà“ÁpÅÁJ热å*\M†F§PºÙ\‹žreíâ'Ò0šæhǬQ‹•©üØÀF—¿×Sc@²PsäÈÖM­Æ™ÖhÊ]ÇŒ¥ØÑ(•]Ss›âŸËÀÚ&Q’Ë]Ï›'½‘™9ØÑ“ÍEÏÆ„Râí¸"íkuX*ÑËèò61-3º=ã‹ ¤r–>¾*Òëò-$/i"åBoù×Û6ç˼y›‚zxÒ^s +‰A\±\gOíÉv‰8²:âÜdR¾È»î§ýšpßýÿö²W;S¼Àã®'½U˜ãEN{MSLÐFZe ÆDÓL¬$žÉƒ»R9ùâ„‹§ù6¸¨×ºª:¥BÕ?Í¥ÔPcòqÛ‡håpélC„}óçm¦º!&‡"ÇÝÝnÅì aB zUêA¹´S,ß‘¸z–+yÎ!àBÕo·;&ˆ)Q]ÛcA4Zð=˜¿ðË‘‚‹ØAˆË=½Úrš´ÄÕÐ^­ Áן±HDšü‹ˆ6ºw¦*˜qQ ÙĘ-¯2A¬x^iß¼ì§üÚŽ‘Ü=gƒ<œÇ?KiN œèwÛMuf`| `¥Ÿ–œ¬Ïy²† ¢‹œ ÂZŠä7gºl ë….ª]ƒ­6ô&c²çD$ȓ牰ÏôúŒ×Ab“Ì ß…\†k¶:)¥¥«W¦HUpΉ‚w‹$²nAÇ0yHy?¹jE,€ò|—QØÕ¶‡2Ÿ¨:«gÛÄ–²¿ènÔɯ@ž¢TÈÌɪ:{[·Ÿ˜ð¼MÃÕG‰±­'>$_禸 “5gþ-F/‡±Ë%ì0gYsÏG™×;΄{ãÞÞrPØ@Sœ"Ho¼|–Ã\¤ªì bq!gnŸ9ç̘k¸âØÉ/ Ò ¶€•à)1ãùRpz\<È1 2 ™ŽŽËzíJx¶=Ø.‹^Ò±% ošýk®‘D¼:¯H WÃᮿt'ë ùîªÍ)zîY•É•„SÇÂŒT~XÁ««˜äœr8[Ú'Ó'_.ÊHC­8ÍŽ-¬Å6ýÿþy³endstream endobj 6 0 obj 3524 endobj 23 0 obj <> stream xœÕ=É’Çu '¾ù>7O[˜bî‹>H$%B!†H ¦”ƒÁj3 6‚úz¿—ëˬWÕ3 ¶ƒ¢Q•ËÛ×ìNÅ"OþWþ¾|qòÉ7þôÉëqúGøóä䇙œ–¿._œþþ> ’î4.Ñ)gNï?>ÉoËÓ¥c8õÎ,^ÞqòÝÙÅáÜ.!ĨϮr1Á söðpn¬[”<û#<óQyö%|RÆ„xö~+çíÙ«ô¶"ЉÞôbŒóòìÙA,Þ(«Î®¹uÈ;ÏaR­àîìÑá–RF¸³÷‡sµ(!ƒ¦c/óp©sc`ˆru@ðuWÊj²¼)ÍÙÓ¶þ‹¾êm[3O‰­‰åeá eI«ÂÙr8‡Y !á8¼°ÿº™*o)JiÏ^Îõ" ~|„{v°UEwºz Oò0CE³Ú¿²1ÍdÃa¯ý²U¨ë¾•tj-„<{Ùfê¯_þqÿO'*Àhî?ù)cA KArÕ^~‚»Œ‹…¿‡Ú)+Ï>ï°ùl]I¡ÌÙg»«³œ>/äÕÙ†™ç}vHIá9«1‹t‘ ®@SèP!¯]ÿOxžx.U>äË6aAŠÔ²R-€åI'?žè3-9mÒ‚¸G8 0“Ör±!éûz~i1ïDy°DÕ"ŒruPv±Îyä­õ¤Þ"­Ãbb$+Rìã<`ývâÒu‚–¥î )-RÂBfhÞ?œ x]Zm ¿5Êä?fTË`ÎÌbTÔ‘läªærf×#Âß´#\¬æá¼!œ¼ÒVˆdö«"Ed!LX¤.©ýÙ»ƒ’KZÒé ûw*%ï_SzÏ’ÐNwR÷LÒ‰æ-á‘ép o )Õ0Cez<ú}´†|Äw>¿òõɧ°“ô |Nµñ@s ZŒ„cTU¿¿wòɽ/Oß¼zûèä“¿Ê“O¾Àÿýþ«Oá¯{Ÿþêäó{§_o«°À©0m¬`±“Ø—}Ÿýã›üÑŽ^õ§ÏúÇ÷ýã§},™áª¼^=űy²ôÐgöð¼ ÿóàá½JIFm"•ŒDÞ^í$õ¶±ØCpƒQ… )1â1¹ûtZœÔÃâ¯PÄ‚N€5¿hÊ!¸‘ò?Ž´‡=ûv¹D캡W›š¾ïÜJÒãU±@dg¸TIðÖïRÁºâƒ`½>ˆGUQæ€GA¬þ’<ª¢_¬þeAÂKä ßôf^šyô ;ï»>–Ìpeí7ÈÖ;Ê£Ä@n5ÞS!ðj—q¥ð dF¾E¬£ ã"œÞâ[­4Øåé„i$˜NkòC“&‹x!üš¾ºÝŠ_ZG µhcÉ×™b£ö¼å´²£ñ"?ú÷YlŸÌ Ub]%%eHª½ˆÍb|X´ötäctvF…ȹ ÆÊ‰õ Có«v¥øSw)ž6ÁÅÊ5"÷f>E=6Œ$¥ì§•=Á²±Ñ‹3òùØ‚úSÀÇÒÿ²|l=XÕÖq“?g5è³Îq¯Yî|½âï‰;ù×^ÍÚ6=½dÇ>¢0D¦ÊSÁsA'¨L½¯‚%¨(Ý ¢¿Ÿ5VþÃ|gæÎï`Ä i¨aÝ5¡Õ7å«”®T)\¡_bâxãì'®mpdÅcL;;Ú7ÉÙÒ’ |:[¸+è€ì^X)³·å<ø{2» >ú Ó•U\”{å».,î̼Jìg´þ~(‘­G¯+ÛJˆtkp éWÇÁEó×V ö`EO&}„eâÝCÆ-—…©l/LÖ;ºìÄÛíB%¡Y—!È1bÆmÉVkp vºä¬’>.ya ×!PÎýxRà >|ÛaŸ¥ttƒ¹Dý,Ç\X·Ý¡+uÇжÕô,}g³§§êþ$¼mã%ÞÛÎXTCVýL(»p“‰ôÓÁ¥Ù{ Wÿ¡msdzî‹'ÿ/CŒN%™3X_X áwDývÍ'bôzø ¿¹Âüä‰çW¤Ö໇/[å0 ¢%x½2Qðb2‰Z_ª; ÐÑ$ëpePð¶I¶¯%3<ƒm ˜’B_Å`ˆ¿¾Ó| Έ2EnaïNÀNÿ|rÿ?’’|)ÐË@Ád‹U»¬¯PæáS Ôœ¼, oãj¨ßÖG&Ùs6Qlð)ãw‰è‚Wxœ:oùˆK$L‚¶|"Ô¯e†h WÇù‘~"Pz òÕùÿÏ ¬3eQ•bße†GíÑU’&g>¢Zd2Â˰}’—}¿Ï׳”1„ÕÔNe3(]ë´ßþ¯¶Ðu>†2ô»ú\Âs(v¨üÙ?ðàèå7gÀ‚¿AæœD‚ÓÃ$è1ÆÌU=Îñ¶?zè3ÎMÃ~Ï(RŠBÂü»¬Ï öÁï/çC§¹€O³4?Eòõ5A#àâKâœÔ}¡þÒÓ>p@8Ÿh¨ÒÀwmV„^ÄáfÓ¡‡€S0GÐ*­\v p‹D!”Î¥F=2°°;y]uèË<Ö„-<_uh£ñ ÄàÒàñç¨T-ˆt¬uzȬ¼ÅÌßù«¿ñ:ç­1Y¼N¯,#5ãIE€Ä”–Pó{K@y>:²2ÙΊmRàÀè“Ì@Kä^:Iâ@¡É´„®’–¤dev"70(i¬þ˜Û|•M"oº7yqÐHfÙl³¿ÎÖÆq*3ÊLy6! ¡š,oÖ‡„_2!dü+ÙY*³GÓL0à}ŽùbRqóóÆ tÚ„¿É–*g&@ËtžÎ¶ÌN®Ú,ÅZ2É«Ø&ý‚à|ÐN’4»H´~‘­…âd"òƒo{VŬ4ÑÛ‰öEv]‘&Å EÙ¸V*+<àY E£í‘±?X :0r›áÓŽ}rªß”o³‚V–*h R0§çð—ÉPüê`8MV©•±‰øÿDMŽteV¿3øñÁrkÛ>N#wï\°Üâ­éÈâʇ¤®ºäaOf"ÙÇjO½i´ëY( Tµ¸®Zµ¯€Ò‚ÒŽ[ßÃèߢRÍšôÈj#‘L¹á}µ¿Z¹µâo6?˜|ϽÝiIw§ÑÂè,¡f zLVrB»”áiLZ‚—qvä]ƒœ ³”èXÅ@¢,5ÅÅaŠ WMì²XO>Ãú7ÌK¥¸€Dw²{LxH9íf¿Í>€]H‡²;¢_DÂhü«™»æóEr¾ßìb `´¯)näJ?på¿M‹ìò»8°S~r`Y7‡’€QÍ«ýqØŒ—|¯òƒDÉ@0(öjÔÖ7"$ÍŒ±aÙÕj™I]j³ .¡ëbh°ˆP™¹Ê°ÙÇöˆˆ‡è*ÃÂ>6Û‚µLŠ`$ÚÔNÍJònæÕ$È\si$è'Ìl0Ëy™Ä‡,0C°dä"{3hÞî"«˜EFã?ì8¶™×ëÏŽËyËÅÏ€`€ñÏm¦{‹Ð×£S‹5œB&ñ|/ùßóÉx ¤í×ÞJvš"*Q2‹ÑɹiÕæàn‡5C±ŽÆøƒ!Æ¡ÜKH²âð`é,ãï¼í^ÎEñí;‹Ýmºé|Ft;¨×ÓSíÄ`EÝÊ[6nŒ DŸ`Pä!F¼ÀùS2Å”à“͇ËÓôgÏð­1>y¾ŽÊö—9. %ÎD5ˆ‘C‚èÄç"í[¸>FøÄŒ7r}:ÿà˜ò p@£ŽqH“b#q( ç0“·ómF• TåÒ÷ŒªïVI14$¹òÅ~Lª E\˜T+3€¢öäYÁK¥Â7ÂXë‘àg!B÷ Rl«ˆ^Ž6­ƒe4¢gÐÑaT93ç¨Áÿú´›]^³“U 212ùçOE'ªµÇ:…Tˆ7¶â\ÔP%`ô8W ìÞŒ2é8$nÈê¶w„4‡%ß®îªAà§®çÙy™ %B…LÕ¿Huʰ˜“ì>FIÀ~YŠú± §³î¹ î¼£Ø&¿¤ÓO6ê·O¶s9‰=!¿nWR¹2Åî&‹X±‘JeŒZñ´Óÿ ‘ ê|½M»„4œ0 íj#Sdçf´‹a“™vë2w1š+juo·´MKgu®A Yç(%OSÖˆC…&Ñm6ç6Õ°vIMo‰6È‘RëÄ×}Ž:±"ߢX‡Ûö¹½6±t ŽU•:ø—SlÒ‚5¬<=`a´Šù]-5b¤ñ²tX=ÎÛ×ÙóÞy>®Þ)¹šcq*õ[¤b0 .”䦇ˆ¹Ù§¬;whÐþ5Éô¸9¥Ü Q¸­[fÅ:•ž=ïQîÐ3›r&9„•‰Pp¥ÈiÄÅß_qîì{N?`tYÉk–†®ºR¢ù’=“42ØÈçrÓxFRh{ ž²¬š†“äÁJê?,à2ÍŠuµ­!sA±Éµ³‹Ë–ÜÛÒÎ#T7Ô[N&&Š`÷Ò‚)ÖMpU1èG8j‹¦aµfQo|Ú¹‚èˆüQ™ºì¬²‰Üÿë (#p$Ž ²!Éùcºévêën]+sCÊG°¤P†Jf•zŠL™¤¡LnæG¹ÌÇ]p5êQ i> ÆF…ª!† ƒ½£rÅ!&•aµo;ßä‚$©Üì••²‚û£È2fƒý³m”gn“•é‡hé²,HÖñ‚ëðèZ1eµ˜9Àc»¬ æᬞNVÝ;H!»»¹øG«§BNW¬¯õ=Н!Mú¶OH†7¸ÁÔ$ ù”.¨KwíÚ^Ià›3H“F3žW•D`MÀ¤f¸”Rg0ó¯»á´Ò)Oµ1á»ÌœÛF…’•ú&zJ_„X¹HÕ–å·™™rKð©j¬û}êóaÝÆ4GAõ—.×ÖÉÆ—׌ë‚J¼Cƒ?Ùó\¸„Æ)0æçúA×,WUâ,ÉI»\eŒ¢¸Iнž±D'1œoÛ´ÎTÈÎZãœN¯$œÒC'×ÚVu5y0XCÐóý\+5®UQ;Œoãµ÷)Y9 „É•ÓzäÖ ¡æX㘂^£:ï»qü´ •&•›Ç2YÑ$º~gå»9á8[ŸÄ'VTÛ*Qv›ùU oYY[ý &°¢Lê;¶¿ÍÖ«ÕǨƓf\mpaÆ‚“Ù3>ÕÞöÕîœS-åíñm ÙÈØýCþ[‘òÏ>·€ëås¯QBYKUI0TU„ÞÔýv”9s‰*ˆôAæÜª>µ¥6vÜ¥V¿:ºKVdD–]~‰¯¡[C+lº—„ œÙ‹Iõ8?âÌÚ§[<ª»”†<Ë)/´Lý¦¸LV'#³ƒÊÐòÇ奡8«/qSf!†2':uÄ {ЋŠZ›cöåúlm3,Mƒø+`ø+NDpšƒ™DSšµ;ù°Ö”q )™[(E¯<×@Ë7Ð1£ÃÍwS …½G+Ï5ºQyžj¨‡á\¤÷!ã¦3ÖÉhEUûÌÆ©’‡ÕÏRâ)”YftÍõ±ž–ô‘ýceû.nÆ¡¹%]ü£L [Û—êÿ9Ó›\f$…ç6ê †ËàÿÞ)NÖ[{g £4¾UçÄ>fkËn<£*˜P~(Pnu„‘„榋HIóÉQª=f%ð(}í"¡ßT Â{þxP¢1¡Õ³9&‰PŠ:r½[Â#)˜g74Í*FhÃýlMÉ[‘”»¥CS/@|Góx?1)Î\ˆ:¹®^©«WR¨Í)¸É¬ƒ6ÊöNY€ö^®@Á¾H×+PžN±oœ€Dg§ð`¦­†’ÒR`˜ BÝw\¦|NKáä5< {¹m‘J&ÊÍÔ-Z,ÇÃ!« _5“Ö±ºÁšÂ{°€òç—"¶îÙÞ®YºgÝЭÛÙ\õ"—»±ü‘i›öÊ" c0ÝÂC¼ž-â¹i(l*¡¶x—ô^ A‰Iä¢ö,ã{·kOð¼ä@¶×®º…;ËtÒk‰5¶lDƒFÓW"‰øn‰ Ju¬¶j£21»Í[O{uþØý'Æë[Q¾3¼· ‚Km1©æºNœ›²c€~ÌqIB lžë’as©rð) ì$'75È™”µÉmÞRy•Û™Dd3Ç´ YÔõ ´¶³ÏIUÊ’ûGíêŒè†BÆRLþâ Ñ–ñnã}D•JÎϬ ‹¿ ‘ódxا?J¤´X’*69â¸ÙjVÔ?aÐ Z²ˆ»Ò.Õl³S ùàv-B`LD Zº$‰¹[(m Eã|Róc9#ky¥ËÑu²Ì6- ±Ká6 ò!½^Ö!0GƒÏ*.‚^Ø#Ê|­W›c#ÏF„ÉN'¼È-@1ŒW®ÚÏ… ™üI /3И¦ºš?rïÄE6úb 4ŸÄ¥YŸHÛÀ+;¬AÆÍÔ¶4tŽ%Ñ%W="E¼Eµ*vϰµÂ^Ù¹EÉš0ÒøVÙÂm’›L-ÖGdž©U¬F6ðÞZºZÝHʶƒwG®EB7EäP6¦a‚8–zný™l^÷ÉèÀÌ ßlÔÃè´Ò+'R¯F/!ጞi¹kUÐ-¯Zºu‚ðMcì5ºënRÅZ:›e 팶K ¾ÿœ0°"˜$aŒvé1À=G»BºaŒxMZ-0oIãÃGæOW̨USõÂnÌÜî|»2¥Ðm/þU)1ì~÷Û!w‡Þž;HA£&Cdö”Ń0ÄT‹:ôcŸƒ–÷a;:ò(ï §È3ç—‰åî>VŠ‹¼·nתæÄŒÿ¢CÂq5%éCư%ý!S3—¨Qeƒÿ”RªÒGC|+Lò¨å±ÆÅàJòjåuº•Ñ ûM·µ_Fz&ÀU«(VˆÞ—9Åìl•Úñ›ÄLŽ R4ðÑk§êbC³¸r2ÿš_„sÛ''Oy…“zÓ]é¹Ü.».ò¦Æ_j¿Téù3æÇ¾ÊM½m GNRóÌWq2èd[D¦ÖvÂR¯®{!üN³¬ÊÚóƒ|çÚzuƒš¿¾EPçã^{_%/1Ôð!˜Ù“d(?Ÿd4 CNÊû+ ð¢ '»'õ‚™ŸS©%:ÎS‡™ i’¤Ùà•qˆcMò{cæË#âŸ4WPI¥œ6‰ú­sJîÉ„¡lŒG—ªŸðRo6Ûñ}³ÐB DûxCRmLìå‚\¹"È-ÜÊ‘”w '÷r^6]„^iz£®)¤L%¹)£]™y¯%Éh#—ÞŠ7ÕðG¦Æ\ß Åš £­\”¶E$›ªÞS½Ûx‡Ê;Ž'&f.äÅZÉŽ†’ºV•1³ý¿Ón_T ˆŒvíGûlòõ°’ ¦÷Û†")Á¨úoZnÝ2…º’¬&qAc¶_'Z»îÐSVøÛÓHú©Ó}ê?¬WÒ°mrˆ‘¯ ä{¹XK¢¶Ž1´í–%Òs³™d^Ý슭`›| ¾È +{·Õ‚n§ß±˜­ÿžÖÞ­lqL_ßw2ߨ;!°ºn¤ c¢üéõQ(HœÎ¥Ñ䦓z9µÚ0ÿÙ6¨_N] Rc® ¿¨ÝÇOjŽõÊE6 ÑŠ »µ³Ð:¸‡Æ±·]ËQ+Wð±—… j1w¹?…µW„oK[¯ÜluØÔ$¢^n‹ÎÂäfkÜèj¬.hfiYD,Z¸ 1‡UqŸRÙ½”Þú2C½…ÒCÁÈ|íán}Ï‹4÷7/R áææ³I#V1Ù£W#Núd®ªþ#V16Ÿ5XM¯;ö¥4l7\ô2Ýxq¤Q^µìvWØK^ÎIÆí ú1~j c¸¹ ß»Å…õ¼QÎÙÈÄTjà¯zYåŠvb"a6ÿ/YeaŽn²ÔØ[¹ÍÈM!_´ËµEñl^8ITжrú±§9Š; jî°ò*—ªàO»‘z±tÃ{Ol[ŸDZ Ýt=Çޛ݌r}_ï§ûé€bU§x_ýöQêÿ ©w¼7кr7›ÁÚQä ¬| ¥_OJƒÈ+­B©I„³ÊeŸéËV_Êr¼ïõÅ$ÝÃÞOt‰*ûnŸ°HyiçË z-W%ÉÔO¯ibUƒ™ëy¨^Þr¼Å¼ô }v@è¸t.×£½#Ù“F8^ð4„Åg옺YÇšGù†¬Í˜6ÑdøóL4™q(­KWú U*Å[Ë¿¤ÿèC¾H¬üÅæÖiPN³º¾c¬Ÿ!ë:5±ˆB½Júr­]‡0l56T¹¨\,DæéòŸüËDCH=à•¾€0“&Mjèä/Öª±ÀºÒJøÓs ÊþãA*[éç:¿>ù'Ì€ endstream endobj 24 0 obj 7825 endobj 38 0 obj <> stream xœÍ]IsÇ‘vÌ¡˜Ûܾ ÞXhuíUžðÁ’%‘²G -Ç„èEH Â@I¤eþûɬ¥+³*ûá´c&2÷ºkÉÊåË­ðÃùº¨óÿWÿ}þýÙ{Ÿ‡óëŸÎÖóá¿ë³ÎT~à¼þóüûó÷ŸÀCÊÃ'KZ“:òíYy[}¼]àŸ'ߟ}uñòpékS?.íbŒ_íÅíÁ]\Ãä£gðë÷ð«Õ‹îâùÁÂkJëüÅ_z !˜þÃ7Û÷Wð’‹õýË:¬Múâ'R-ΖnÊrlrù=ƒ˜´÷"¼æb°ýëïòÉÙ‹¯áAçëÌÅWí[ ãÿ§‹‹Vyü6UY¬6öâoOGÉgÛðH —‰0®öä \ª…Á൯:ÀnVsñ— m.~Æè€Ïðòº]®‹Ö&$_— \ÕU1~{PKJѦö¤‚½ö'‘lN/nÛtý I Gùìðç'ÿufàø}„Sr'ý¬©“ÔÅåÁµÑýe8Z8X¬ÑX"¨X·Ž-›]U{ШÐ?»É›öA]¼‚‘a«kʧÙë's[N¹²þömá*ë5yáE_Ä7ø½Ï,RÏ?(ß'¯GF>!OU. 0vû)sYIs© |›b¡a©o{×À÷ƒã áð3‹1@¹¹í/!¯nT.û Æ´ýùÕg©Ò°¯:¯ÚÊ««]ô‘D:ój؆Vj1:Î#~†7‘;4%@•àvÌøPÙ>áä›}_÷áØKíIBä~Ô¸Žï¨¸àI+X:ÐëeŒM†©¢eV_Žg}·ÒÆÔÎäpxÆ:¥T`åþWø¢YÖ«êÂÑnù•ÊØo8@B”²5·{­·…–«²Ÿ ª3_6Ñè øzTfcÚ«ÎðŒ´ù$W¥Ûê¢ÑtuÚGººry«jUù×BG¯×”9¿’%s¾_u¡ÎÏ€Ñl$Œ?ëô¥+ÏGMÕ¡QTãn}ÝÙ|ïÍ!øiÍÇj€ñ€<2CSgL1ÝÝrÆ~ÙçÜá̯;­»b¬H‘V¯z<;c³*¯ú 蜖v¥Ï(‹Š¤ŒV8ÈJa‡CÀë”»¡"A˜m0¾MÂ8ÐÎ;&ºÛ`Eýë¨Ûøÿëþí`£ñÝFÖÀä^”@®\Íšà0è©áöô&âHb6 ~‰â j†ô–™ŠH¾¢W_N2ì~œ>h˜6ú$AjÀî-@ç=[CŒD! —b#f}j"Lj »’3!\IH ²j$|úÎî !ã–‚«Æ}T| T2Nâ§×j­œs”?á;]QȤg/M*ÒõsG ’V3hÆ?£ô!¢åâ}ÞÕ]|G”ókJ©K@§(™³ò61ÁAë=!mGÀe^ NÜVe(µÂɦԤéžV‹|:¸/>:­Ht´ªÊ (F_`Äk&`h‰n6þNÌ YŠ„…¾›ÁÜM7DÏÛgÛ—ípínˆZY2Ê$@0LW•X]_B02]Sûú™TF²Iz¶]3`ã]Šz޶èÌ ·y;ûú§äº·)#æˆÕjË»=C€ëA”–8f^ê» Q)[›aïdzQÙÖ‘3jò—?«Ê_µ9É/Þª&'2>}(²ðÔ’9j%SÈG¹ñ«lý‘¥÷½—Nèî½è0x/Dt§m€{}ÛXø^Uº D»a©Ð«‡[”[Æù/º?ÞÙø ?¼™çã1ŘRÙ«Âã©ßÞ¼5®yõ¿7~^ïr+ìA’-³œˆ¹Cï+Æ“èQ¨–ÙÆz²&ôp™Èlâ=7‰í¸¾¦ XLµÿÚ™äùl&&g)dÄ °¦ƒôn…Šñ¢6‘¬)Òì…@d;|F#îÁÆlý¨¹*—”?wÇ7ßO}~Ó§ BDìOŸÈ!A#øÌUåDOX…0ÜLÜ7 …PR<4Ôœ„‘g™¸ê lƒÀz€Q«<ƒ(ÖQ«41 ~xÓð¦Ð#°‹±»ÜPÍ?Â>NSHöDEADøƒ„ZÜG½Ddl%š¡øYJ okƒF.ÆasGÄà[ççA´ïˆ:TŽ66P#/x Äï;Ùê>3(Üú`Qá!,k4øo„&bˆ‡9üµÊ{oZ·¯lË"z’²mG‰ÊøØGC”WÒ6!çå Ž¼»\Õ€—IR¤Ä¯êÿ‚a â1·‹Dº&Ã×ÉNß­á,·EoÇÅiA*Jž€ˆ®=‰$1RŠ)ÇÛÁoV?òTh¾SØÑã‰l_Oª>Á~_]ÎݨÕlñxᔫB®nŠí¡G­ôünº¦&Gü=I7êÂû~Ȉ<¬½—o½sÈX+çÞá¶@«55t¯,ú$Î.0VÜÛz˜ "»•SÕÛ~Ƙ@?%Ûg.zù-0\·åZ@3ìzÊ[0™9wøúb¾:$Š*X†‰Â®ë×dùóçžS+ÛJ»zçKi¡[Ew?°Øló^KÖâ¯ÜJrsðôbCóWš?êÓŠ9¦šF3>fÿ‰å˜Œ7‹V~÷ìŒ+;þ¾*±/qb “õÁÈ‘·Ét¢¹$ÙÌ@Œóô°}qߨóú'¥:Ê*ƒ“°Ú}ËRXCø¾‘¥:€òÛ²1ˆ:¼Þ/ª¡H‹ñ›×Ûßm«ŽüBÒ/CÉ”•àž¿ˆeè¿AMç¥Ê:·›r*à¾ñ ÅLbÂÌø-xÝ=Ý6õQP¿Ÿn«â‚B#ø£$õòD]!”È FX‹Eæ¹Ë D VSC»0f-‘ìcþ°UÈü—Œ~d$_ˆ¤]¦÷àŸ“_?G–‹i À¾½Ìæ“bɵÂÒ¨ª«>í/ýÆxÿаé'H™uuZµ(lö<¬„pùúUɪ€)'P†…}ÑõùfÁ¡²`ÑEA žá¬.p‘·§( åª ½"Ša8Œ Y·“ª¬A1Ý6‹¢óßE=ŠìãšF¯‘ ãë©bäBä¼½dÄ\aÐ÷L¦„aĈ»ñv',"ÛÖSËã’5±%Y3¡f7õÝšS+CLðj1ÁuÚ_Hà T xOÁÆÚÅTÃD×Á`4KÇ8ŽD„© ‚n„e {AE]G«¨Pkžlw½û.óÕcð{Ï:Åì+¼ÙhUCsM÷žä†dê£p”¨¦!uFÏÐkt¥Y§‡£iõ2¼[=ÇÔy!vhwR¶½t”{ï*‰¥¥/Ñl +Õ&äYœ-ÅÅT𞌧ºŽevCØ«Æu®i&ªê£V_'&qD6&“MìQO/XÆ¡Íi¡Ýyˆ+±‹3và r¼æºØ„Å«Ëåu5tJTPˇ&…_ ³Þ•¡îÓöêÐÁi!¢Ý³¾xPÅÖ JðOE›ƒŸ±W2Ñ¢R5žÖq]ÄM‘RL&tÛµ¾ß–¤õ¤Ì‘+)eÌk‰sJ‹úίE¡ã'ÑRdCÇ6Hu ݸ‘è˜øÞRØC²O¼€u®Æc¶±¸-¾ÔKѬScÌ&Øb*!~´‹C8˜Yf§sí„ä9-Å4Î.>ê±øªZšAñÅ‘ ™ªp`Ni%d P›Š'nKMö^žÛ¸ùhXÉO$Ý HÅÞŒXX–ÄXŸáÚ^­]çô  ´M¤ºxt@ ¿Â‡—øaX¢ÂP 8‚!¦\‹…(oKuv\xŽ_¢ð6æ—O®¨Ù?:D€ )y²Ò:©Ñ+CלKŒÿê}&Ul„ ,ÓŽíÓ/qPÓ÷DÇü ÆD"çJu$ j¦>=ò@2‚ªPÛ‡)ÿ¤Cû‰öôçÖÖÕãb­‡(ôyòÉÙ“ÿøj s)_å/1w(„ÁMÂŒ>>ñwÜ€k–òá˜|ÐSŒkˆv£% MD$GsgbãG\å€Ö]-êŒZ¸šì: Z:‚œ‚­H›ÕedtÔ*‹·„ÝêÐ A·¸©”û§´Ävs,O ~zx ¡ǦÅ*Ñðõ"U±ƒ<àÖnó‰E%¶þ%\.¥Ÿ»7¸ïYK„3ùxÎNupi7©Õ7;!["T¹BoãÖwñ{xÑ{ëå f‰)údæØ¢–'p'NÃäF±9ÖQ[ñ|¼ëîZÊbºÿ¯{›÷öô>z å4ý ©­‘EZkB[M 9ûGÝ„(B;çÖücåüŽsh-» CöbùüÜåÛd‰†‚3ÂõSe]-"޳Ʌ¨Þ„¨ó3-Ç™JLň çI¤YŒBîŽöï´*y) (t—ìkÅÖê¼³We0ÄÌi{Û܇B’'÷êœÏ–Æg¼QÒT=8w¢ÙMïË ö4;R—µ¿|ÛxêHdý´ô6Ú½Ò9v¡š¯“ˆB?Z¸#Ä%ipnz!n®ÊÐc²3c|;³W?µqH1¶#uŽæj.SÍÉ<<Á«‡@個¦ŒÑó:X0­c::¢Ý¿>$¯U'össòÀ¨F%ñ#H@<ÅÈÂŒ¹;¤Ä Åu»HÅÿI¢Žy‡9íÃBR$p¯À䪪q›¶äè#¬ãKàѲԵßTpJ—:‚{ ÄZ^ ä:·D&%ôá1„cªpÈuÒ²äL!ï­OZ¼çþ£#÷\† |3gÄ;I”3ÔݹE’ØkÎL³=`JøŽ´Eït˜ kÃNˆy¯^IÀ‚ u‰Ó ¹æ™qÂ#•Þ;=%ÍÊ(-I+•dl)Õ´9b.EßÀ»Ü|Bέ…$DNªçÚ#—ÖqK"C©6ªÇ°Wþ$Õïµ`î™ “ RØ}Ä]¨/žXã_Å¢É0Èà1m$Æë¶Ö£À#Uô†æ´Ê¶Í$µ}äönqÜ’È'Gª¶ ëæÅˆ“¸í€×åŒRb· Å-1ÇÒ¤ƒ‡ROe(Z*»U‰gœ¥VÝ>0™œ«: ™(I5_Äšæffe«ÈÕ'¤Ùo/ç/„„N2(o£)5Ïw}„uo!ÐTF®?óå0:èFÊ0ÄanC,`âÍå˜8ßoNhíÄÿßübÔ=0>*„Op䲯>ò6B {jGÞZ#n8o+5”B¤ X]Lü¶Dwµ¤éŒ*!£: ŠO}, 3ÙØÑç¿Zý®4¦"7È\Á^m”#¼¹Ì§ºõ¨ÔvECë§·®&'ØËÖX,ØY†&Ç]`|>®®Ó —ÙO";S.d‚ƒŒ¬‰† ~ ÅV}'Ò s›wðcQw?ÃaYº¼4¯3í3F? 2sƒÍk,¾ÛO‘7ß=µ*'oLVb¶HJá~³=p»]ãUÛ¬6á3†q¤‹$öô}—¸MŸ³*«´©Ã$«Æ¹ ذ”ƒ”¨S×”aø6¬%ó’¯â“Ž¥÷Ô==ôužà¬ïì Q/KUŽ{E]0LH ÍÕÚÃ.¿¸KAh"ø½œ: µ @s'j¡ˆeÚÛŠþm˜DÙ=å¸ÂÀ Ñ‹j‹¸gÝñЏ|3é-q\Sl.Ëj iSE?t4CTO#HAO¹œ Á9qNQ×MÛ#íés©DÔÆÖÙà³$òñ›r:ŸJ«³ z˜¯­ œ˜dTs¤fÛÎo°K ÄdGÙNÕ1æšY1˜qÎOû:Ë%6ͯkU½ vœåm,ñœ=ýŸ°k_"mw̳"ølú¡³ýz÷ÇPšÊŽ­Ì(º2³.-VM6þ¥ÒjEe·$½ÂÛÓ½­SöwR”5Kí¯Õ¼# òZÖ%{E¨R—?|röÙÙç +Y}¾åöIcBØ(“=ãçߟ½ÿøì½Ç¿?õãëoÎÞûÓ¹:{ïþßûŸ~ÿ<þÝù/Î>||þÙ=ïÓM¶è†Ò R.Õ‰]:\A.Ù½ÖPlÔ•âU£Ê´I|IÆ?ÂF•\C£[».~'8§|à- ‡Œ±Æ5ž+"Æ'ÀßšXÜê{íæ€É”ZrìyÎ^(iÀc‰~úÖ$€²Ë¯Òiâp¡ òåá„9&|8WM÷ú;le¾l k'ï½Ê~–u¼Aóeâ$1Dß–Üá=<›u#t¢¬WstÍ‚u.ôá#£çF§t/M2޾«=òSÊÕé“R’Hk¬f™TÙ«€I‘Ab>Pö4¥ÊÙwW˜?“}ˆÄ5†ü ;Øëƒ‘_Ú:²H`<¬ê?êÌ7xb¤~¢‹2Uyšvf·ä¢ÕVè5")–Ú"à—´gÈyºJpè+`çd¡;ïª@Pg·Ý3¸ë_‰oxÓàÈŒµa:Q`íU*öVÚYÕR6D*WùG¯E(‚gó6*s(Ô;îÖ×wO¶zµ¯ŠþgÙ2ÝvûÏ“v,S×.ñúç3ä š"Ç;— åÛl¦€ÊvãæYSšMO,â2d9p%]·{WÐ^˜§ö”—Ëïz~%ßs³ˆbqrð¡ªx÷OðD°½©2Ê€£6©ºiÝMé®åºzIS°õ†V›ø%Ó¬½¶;ôÍ­Bž]w%d¬%½i“A[]; zEÑÑ{+e¸>qP$WoqTTšõ°]ÓÄ´I4ðžÜÒ7ºÈ\vò©Ò¹¢*1"ðƒ¨á®Y¹fà>õœªYóe8C—xX³TÍu ýº‹ÊàwFÒ6pÏo›Ñ1×Sí1r¯ºØ“4\(Ñnqˆå>™‡ ¿YsC+ù¢pj¬XÊw¶‹ RiýªJA§5WÑíSeN{4ª©‚n×2y½˜e>·ëýÛ'Úãû%YÌÅŒ™qÍä¶þ›näŸ>=ˆ!h×c/QÔbÀùßò K °X_äxß%ï—‡ü·4Rê‘J¼ZN™ÌÊÀÁΜîîß ÜÔebùc_fZW9Ê-/s6Ù<Ý/%‹D?_@5-혇|T íd 4ßtª8™ˆ´¿Í1|CÂDBjhž¯´è)b_E]iýXl)ɱ`þy#ð|{àƒÚÓú'YjxÊm‚ÆM+!ÚžÊhʼnb>ôqïü½–2‡3r¸rïzœR”A/ÁxGžTh‚zD_tÿ¢‰Ë½E¶Aª±}N´ôä.1aQv¸ÿ4;rG·+B æOõ¿{vÙÖ} oÅ|ííÏ*YsœÓX·ÁvQ?©ÒaWüÍípíoy•æ?2µZx9᪳‡'YQ•†D{MI‰Mg^v`ýkKÅÅQ)îôÀbºÈ掠á"ñ†Œçwî\µðƒÓ´ª#ÕmL ‘†{ŸœìŠ¡N‘øü—·ÝÒp$?'X„ÎÝÙ¼9®Ý´àšåWÂΕ'ß54vkˆĹÁ÷µX» -“ÞV½i‰«íµ;}PE œæ&Eùo°-ô¶íš¥Ä[Ax–òWД#“kJ­Æ¯«¯5Þ"BÑg¯ÄÊoŽæÎ•õ±Ù‚£¥ˆÑÎ^ÌGXã¶\ŠÂÿ¹Áän1¦µ¢ÙkÕc®\¼7°1‚"]ö2 å.ÔsÕµ6Hê8ïÿà iŽ5˜qCÁY%·³~z³/Œmí ÊpoYûK?R›*¹OgpÞ˜T 0´pœõZ·ûpÈE ¬žI…ìüëT‚åy?¦ ý™ûììÖ0endstream endobj 39 0 obj 6628 endobj 43 0 obj <> stream xœå]YÇ‘öó@ØßÐÐËvÛšbÞ‡Œ}°ÖÆŠ iM­ ùaµÃ‰”LrxÊâ¿ßˆÈ+2+«»‡ Ab±++È8¾82õr'¹øOþóúÙŽÿö»Ç¯/Äî?àßÇ//$5Øå?®Ÿí¾x¤ƒ_–(¢Ü=üá"}-w!,QƸóÎ,^í>»øŸýýÃ¥\BVîŸ.µ¶‹±zÿæ —¼Öû'‡KøÉ˜h÷ßÃ{ãë 6m¿x’Jíÿ‰ßëÅ»°—»õßKmÃ"¤Ùÿp¸Tô™ßß›W‡K³hí„Ù?Ã7ÎÁÌöWð¦ÿ%ô¯ð¦‡3Ñn±–ß´ÉÜŒóRÚà´.'O¬Kí_Àc (G|ıÖ;Å<¨Å{¯÷R^†öÛÓòP1 Ôþ$¥©óðoãçØ ®ëSí5“Ò‰ˆÝŠE)i-›ÇóÃÿ>üÏ ÕbîÿÃØìÇ‹¿Îq‘JH_Z==èYï¡»úøaÆáÄ`À¨”Ð6¦ƒ ¶S,°—Ê„ü–·wM ó„–:ŸçÐñ¨±‹GÞÌsX€5<¬JÛýC ÈâtQ6My™­Aâi äóŽsQ"žÄ!ÏÛwØÚ QBf |Ò62q´ @_È´â«\À5\j$­äîRjؾÒÜ¿<¨ý%ô íà3ÆäMT^¤-H]~o¢bï3CÏ?z~PÀ¥ÖÆÆ½°ÔÝ¿m‹F!2ÚÃ.8ÎjØ(S,ñ`W@ʸʞ‘daSj¨¹Wœéêëíñm£.RXRÊÈ×}{€ÉÅ`“ Ámi£"J¥fìŸ7ÈâŒòW¤e8âÂÞG–>ÙÐÀ>8ÌU§ f¤€PQU1ãòñ²0=¡ Paㆰ½I=¶ÉôMtIQáyAf Âh=›\!Y›œò090^²X‘a\Bùƒ?féš*û%”fjÞ™m[úG§häÏ7£6ö¼í6!F;› @B¡¹¹1Hújn¤¨Úvœô‹²‹5fbá§hèª8#€Ÿ8Ñe;f@IEg¶n}ˆóÕÇÔ<~È'’µz{êA“q¨þ8ä(€eÃ"”;›V Ç(RÞäu±ÕÞb{³ÄÈ'ó2!í£+ÖÛ6ðî»õ #T4ð:Á"3¯Úæ3ÉIPq”¿VýÃíÚ¶Ý%Ê™Îd•‚Iª©+üSºÒrÜ[B¿Šc  ôµ3ܦ^Q¹4c˜fŽÃΙFr'8²ÖË8lËôŸÆ,‹2‘´õð]"‡Â §å s|˜™¿n¼÷‚8Bƒ©¯:iXóãÆ·^&8W«¥'Õa#©ŽìK­;g*9 ¸l’ÐÆ©×…Séš’Ïh@Ë0?畨ÐÒ¾P¨Þ´o*N,/IzËp3ÂT„CÚP•«™z{¯ÁœY¹É“—àPƒM8©-15.å,1ƒ™‘lœ/fð@›Þ Œ»FáÈ9llÿÛ{ƃíÇ$D.â °d nò-rÆ< ÈÅñ 9´XØh'ø ŒvuüfÜ>¡ÖÏ OD‰lQÄQ™'ÿ¶¤Ùl¶uϹ°é|ð4@<° ꇿ5~«ê·î²œ{_ìýUÇÐí ¿Fãgp#ŸLAVµŽ”ÞW@¬ýƒÄ›¶é“™P1ãP÷ó³Î&2õVq÷ÕTâ2êž7>¬?1þúýÁf;4a@Êç¥ά`®K-Bü4±ÿ:p_ò—d<•K~=ø_ºDS b ¿Uü;ø¤Í¢‡%àé“À>8 ÿm27Ôå½c¯`B¶N¥c&WjÝÁK…L\8õ[l~+¨£KìE)ë¡HRH¤)¢BQÒ‹³Q`xKI‡Ã[ð0<±PèdŠSuÐQÕ+‡Hë+ràïs!¬Ò1´ð]E´fê0?¦7÷Dh¯>’–š‚?å"™ÜG¼k l¶À`;Z¡z†ýŠbJظhî\ …¢Ç^ 4+É:‘¥Å¹ãM{Pƒ½Æõá|¹•[Æ•«lÁÜj´'‹²JªÙ=I¦Z/QH>býá‚«ÆÏr$ü:Ǩ›¦~Œ5†š6¸™ÆsÞoªögsvÿÝ~†;—¤J>Ó’ß° êGMƒ*+js†ÚŽ7÷¡Ï‹\£2°Z Ë!0öh…Î\ë%8Û?ã¯J85Ý]PFufóÀ@mH]À ÅGÏWÚeJ(½HòØ¥ [xVé´¥¨,ìA¨½“£´cª#©d¦ˆE–øHïš²£NUwé}SÁç LÃG)§J¬¤Y)õ70¼>È©öõ@ Í;ÛòK©Â"ÆP*:6 K„Óg‚­^'›»õ”@v+ßMÕUd†çÌ]ÊÅUDh‡`æ¹»´¼m <Á)Ið@*‹¨€÷)­Ì§/úƒé¦”"@1å6&{8Z0?.™›@ïldi`bŠáž3 ©ñÇe '¤”Y¹Œ‘(ßð yQø"é=þ ›ÞÏ^-a§üJÝ^"A’ p6}?êõ"6§^ÂM:LY eÃõÞÜTúFœ5›“Ð:õÙ0›s@š¸,à° ä Œ»°µÙʼn¾sÛú[#äyhØ*9U°¶êpÎ,Y­Jã·ª7ôèÔ4!;@‘AMgGïÙ·gCH,„ø˜Ò«¨UÐã—] µ«äIt*YaqTã¥ñXõ6å)0ÛÖ¥9©ÌÈØTf4-ÚÈzŽœK¥ùx3Ï®\õÃ¥Œ€¯ÞÊu›ìYËtEZ°ž­®DàÝÑð- ;qº”òÍ–4K£²˜æFü¸ùký|ÑSæUN"\©ŽPŸ¥lߎám*»_€i®;˜º“Ù)|‡ËUTãQs¥¨ÉùRmÄR†%¹©]ë¤PÊZJ­’û覨¿ŒZu) R7¶*&0‘©ÐëÍ¡˜áÑ„[‘5öK) Îmÿ†¥¦hšôèð¥zÎ.Éè”YÂ[à;ÐmÒk':e]óÛOÕ÷±˜üG©ï£,¹ûÀ\x'Ð¥ažigZˆÕ¾NEìM õÅ®}°ší´á`ª9p-{Û%=p–”É?W២uÓl¢üi òTý&0Ûz©¨XY7¹ù—&`µÝ¤¶$£þª@s¦‹D­óœûR‚¦– ¬Ò6B9ÿ i¦ý×\çÜæ¼þŽàgævLã¶úÖI/¥+îwL©Š0˜7õ•Äb™‡õ9š ªUšˆX ­B_Õó”Éýʧ,}çj¶0PšFWj'¥©·ªÙ| zþ¦ªÙ¢œOÕlX3ïÒêŽjM±°%|[úú¼LW>¤ñN&_ 4NPxDއŸ— úaæód-Š…Ò»! ÁÖ_j©îªìZãh°£ZÅyçÐñ¼‹»˜ò?¡Ðè Í唥ã®6ì锸}&ûì,Æ]g2×» FbáX‚yÝ`Â¥©Á¢xF·hyoƒ­i–zà?ã¦{Aügõœÿä<%hråò„ÿJIV2×ïŸ ÌåS=ìdOœlÞœ£pÖ Í¡Ýã*x bjadSN@e®Ô7µÑ É¥Þ¨´å¿ø”«s¬@rLO÷gcЏ‚S§»b VFä<Ûœ9ÚéøëS‡jÄSnÎTÑb9]ãÇ3D2)ijD²Djs´ æPGwe8r²9'Æ>D® ­>¿ÖDÂs«:ƒrI”{ÊY¹Q÷î{Ê­OÙÁ* ±™I¬¥¦]ʇ¦Y[÷%kÚÒº SE:ß2bBë…-‹  ë'9{jgÞ q'/4ŒF·•12 ÖðŽOXÛ&K(7;;.{®,Qô¸“%‘ Ú¤š‹‹b`ÄT"=¸øãʯè\´±XˤcA’Ê'¸–TÁOªèÑ’A顜gUsE›nô¥b]Ù*üòq-ÛÞðUsù©¤¨™–†*ˆXámca,O j‘š{i³J(~ì%íå4çâG‡ ënÜÉÇK‡0-U¡ÓIwODr÷Öùü$Uw=·ãÉHô<ów4út -‘v A99ãq0™ÇÙ'ÿÊM1zr€RKz·Qç]XTØ Õð €+éºJñY£×!Â)òJØ%€ð÷ëiŸ2c%ha KQØï<Ę]n”F¯Må?ˆÛ£àÂÕõ§8fåð)P®$–™Þ©±íl*‡EȑݡLØnSÔ!ZlÇI\íYö,.™±kלÐôœùÈ m4 £ÕkÂVßþ’{Uá×ÃÖ›µàH’à“q¥ðÆqMç/$·)"6øVÞ­ôšŸïAðÑ}f'×C—èøŒI;3þ€Kµ™¡èbž‡‚¤#ïPŒƉör3‚[µÚßX{éM˜W‹#Ðraé4Ä`]$5 ¹¾˜›Ÿ’íˤO„d}ª›žf(¶0ðÊ¿iVßvº‘zt’ËýƒlÊÓ>¤°Åw0“/¥†}Í>UaÞ¿?RaÞO?­?tÃâLóÅçåÓDOô° sâ´M è è˜dWig‰”Yu5ñjÖۼ˙“ aÓÅ!>=غCÂ Žƒ§zóéa̬"s÷uE9‹ß P¾åZV‡)P•àt "ÏÖòÉĨónäè0:©д™…~+©Î2xÛˆ½–żF>ƒ:¿Õƒ·›Š#ÓϧU»U¥¨}%§jª'!'¨}¥Æðœ`­Ç;„nŽ$N‹=¡c‹# ËqŽ5æK²SÏøžŠ- FeçÇbÃÀ£ˆ3Àñ8õ‡Þ c©·XVFž…ÈÐuᬫ™x¶ÁÓɋ䄿nÎiN{Âz2þ8y:˜ÆŽ6ò©B Øß»¦øüI”]n•jSÐ)³jw©$z¥`pŸ L£áe§ÇLu§Óì†Ä4CuÀÞ6Eן/=ɃYç}2e”!¸‰â3pCa&ÇsÔý麵DM ]æÆ,’RÝ<Ø›óOK%¹›ñv>!“šË±$™ç‘W—N‚1Wi ô§oF¡oì“®WV¢æv®j(h²–R/ëÛ¶ëš îu_Ï‹ˆê/†´rtoY–üDN¤ØåÁ+»ôëy-ÇȽ@ ÎëR‰}Š×a9Ú¯{Òpx½vVo¢svC‡Î¨µj—7ää3Õ›‚â²ké2·«C½û‹Y¯)^£ ^_ÖÏ*ÕfõÜ»:ØKªéîʼ©RwS¥nS‹(tû tg#fû>šQ`YaCaœP/JþºNôª©‡7õÇWíÇë¿´Öï®gœl@þˆ€ÚVø9—þ{½­ŠT-¿Ö­Ü@— £º:‚|í2åcf×Eó>½â¦·¥_•hmŸ‰«<ÚOá¸13ÊLð“oŸè£ä±)å jðÈœoV)@QV (åSʹõ‰èŽ×ðVVz† •xxþÄ£5Ó„J‡ÅU0L5¡pr¸-DAÆÁXDKNóUMmÏîD j7=WlºÂ`r6% Òì*´K§lçAèy¬–X4Ëä‡ßrÆ´ìôÆq6­ë™ÃÏo_£õ›áÓš6e­K~†y¬p &`ѨòkcÒN‹~CÛ4ã•jÎê~“Æçhu¢i ¾ßå…§¯?æ1)§Ë+e"ÌŽ#b¿ìpÊ:†Ì´ôCÊæ†[æIrêzt>­a)¦#—"$Ñ“¤Ro¸Y,•'#Ýù׃GD\¨û¼zgˆ°cƒA·•Ø E AIÿ{ÃØy)<Ä`&¦ûSÅ,m+§èyäÀiâ)½èv¥k P,^ß èˆÑèƒmîãéhÁõׯ‘‹;ŽOÊcPÊcPÊã»ôhR@Ša¶þ Há÷ȬN7æÝbѾ\)ímWñ£é +s)fNú È÷HÉ…ŽòPŸ_©‰Ið&QG¯FË5ù2^ãyn»a9Ø•‰éå~ÔÎ×¶N¯ë.¦ZÊ­B¼>©›/îíi®Äbuìw»¡”|»‘á?~s.»Fg–h-YÞ|ôð?-xÚo^É•Y’zÉ,Iw3@ƒ· õÎL“`Iõ7ÿÒ³ endstream endobj 44 0 obj 6029 endobj 50 0 obj <> stream xœÅ[msÉÎg%?BUù"QhÙyÙÙÙºOÀÁSpá8“|8RW²dË“Tþ{ºç­{fGB˜˜ÔÕ‰Õh^zzºŸ~ºgý~Ú6bÚâáßÕfòàe?=½š´ÓàÿÓÉû‰p¦áŸÕfúè: -ÍÐbzx2ñ£ÅÔÚfÃ0ínz9=ÜL~Ϊé­hÕìÍ|Ñ5Zë¡›ÏZuM§õìÃ\˜I˜ÙǹÙj9»€Ÿu× ƒš­iÐÛ¹lú¾W³Í|!clo`" ¿ )gçÔñj¾M×Ù^‡1ÖÍÙÅ>¦5³%|=C)úFJå¾^Â×F)=Hþ¸œC—ö5ûhd&„-4Öö §ñ‚[CÒžû6­,ëXÑE'¢à½‘¬+“åÚê…­ÜÆ¥Ò¬ç5MÊÇž;üåG'µn$ÞáÎjgÕ¶Bà“„M[kpГÃÉÏ“÷S¥ëNzJwªÑtb-Ï£ƒÉƒƒçÓ—×Ç“ŠÉƒñãÑ‹ÇðÏÁ÷ÓßMžLÞnT¶fTJÛÆd&õ<‰¹Lb‚bã%5¾M7Ôx˜?¥§wôóql êÊ,ÝÈF˜6)ÌŸñÐéprF¶CMˆ¡cžãj{(ŒC4íÝ+ ÔŸ'iú! º¡Ç uoЩ5W{|¼ÉöWªŒÏÚVD½|ôX!…Žþ!{á—Ô›Ü<Ëû@ë»Pñg ð¥ÚÖâš -D£Ìt!¸Ö`ýRpà¸ÝN èƒQdÕæb ˆz\d \­¹´›ñ;ºÂÁµ7Òô}”@ EKÖl&10SÔlS9ÃuŸ›0δKÝ`W³Þf¾0Ü¿µ¥{€¹™Ô œªG{Pý`ÒZÚ¾FxVm£DŸ÷u3XkåŽÜj è¯pR HÇ ú`ˆlÚa`G„Á£ƒè”ivžÖق˱ž2‘ÞÚÓÏ­u4ˆ^:0[‚ fohÞ1‰t"‚šÀ»¶«É}Í{ð]Âæ³ àÞ'÷Ý9C? Ôô0¼;ÈéàœT7à:€«s>ì4axlbdžÆÕý†"%W@Çj< /¸i~€qмø§¹œ½Beƒ ¶ƒP£S´éf/ ±‡);5{’í‚®i3pÀ¯è¦F5Rx¸¹ÄÉ,üÖm7(Û‚±ÊÙcìÚ#ƒâ¬'aÑþˆv{åÂ9:‹¿'·Q,PõI§½At⎗öü¯äIR10 ¥ƒ¯8MR¸k+ˆ4¸E”ïhÄÞª$(úÕ*ƒ Ö#M†QxØJš¦KhW àüûà}Ñ5Ϙ“BçV€Ç³ Á¿Wœ‰¥XfN/|pØ4–a ˆ2uh;n,‹y4€Çi&zfåa繑¿£Ç,Oût>²Ý7c·@ž7¯z`Ó«4—ÝÔÐ:Æ[ 0d ÜØ½ˆÜ'K)÷ˆ§¾+Tì쬎ç èòÛ=ͩݎ‘ÎÅ\‘Âo™Ð#"à\Bëjòòû9G%¤è‹SÒõÈ?Zê{ÈÒdéËo½¡ Ý´:zuŸA\€Õd)Õà”(óÂûP'ˆ‚‡…ž RÛ ‹]K:b ñˆ «üÉú9 ÿ™yLa¥Ø´9_•ä¤å…×ä +AÁ¥ƒg?yôkÓU1%¡ïHÏ ~£‰“±3sX“¡7qu¼K{¥Ó¤«™Vf>tÏA2m°u½”Iã6Þ©ÑzhˆÕõVÜ‹máéÑÚnk~i-³¼8h{7ýª§­C3˜D®jÉßjW"'ÓØ±*Âcu])R»çº‡¤ÆÓÔ˜“²íjå‹)-·]çy×¼ûäª'wf.”|s5öÿ‹ÜµÞŽ¢ŠÛi§\¸ŽüÀàrÛ(×Béžñv'7#-(;[pEX£ూCÎÃØš<—“ çØ"†`L°XD«‘µkr²¿Ôñ"·ŠhÈ(Pbw09¶l«sEŸ-2E0|›g:½›Â /æ’ˆRçsGTÒî®L 4­í•ËŸví þgÕΈ/¸ÕqÌCž·cãžÇü^2ã`TõrVaeÉA{•ò¤Ö–Ufç ZÆy ²rݼ² &zOœÙbHb>ðšŠÕ±+œ—Ð-U“Ø+@­tié/#dÄÇœNäa®¸ÌY|]mƒq„†xC‘*T90£V,^T©IIœÍ@Ù¡@ý8ª Û%ª\K¹EÆPH£¢Ñšl9…Éó²@ø1V‡Œo¡ŒïY0ŠY¨)²+Šê¡€DiÌq_¹Þ?_4 JC§ÑªB¦¹9ûDE¨²Œ@}nXt”àc´¦®Ì¦Òù eí–åKÜ«L5®"êèíü3e†[kõ­ŽA¦SsAÐB¶nt9ÍÒ Ð¶}¹cîV)~W+—ë‘û {ÈÍ¢›Ax8ˆðz€5¼»¸ð“qP§œ³”AáQrŠ™êØÏ1×?nEtó‚rö™€³`çä½pkvHE®³JºÈVIuY$,ŠŒ.ÝZQÜ0-åA…ˆ(Ë53+OÙØQ2\ÄÉ^;¶“¹d¹yV‚Æ„S8&w›ö0ÖlôâPØ)l²$k³­ˆU³~VGÃcaFú÷Ï»Nîƒ19Ï …·ãÌú|C.ñÆ_ÔöRϽ¼‰UÒÙëÛ*„öž]­de‹^6¸ÛãÏÁÍN€më¶gLÕГÂ.‹2µ;Kfø¯çé1s%rC«©"ú¥YÆÕ;ô¯qa2ó܉%#y5¾¾Úe‚. «­dÝj‰ÝH°¶öî¸:ð4ƒ‹4RSw'Ê/HŸÎÙµµòyÈɑއ+½üj:]é©=ø6€±´þ†Þ£À±B;ê1ÎÈ|ävàÕ–‰E³¶¯Ç;ÆÄ–chÍÙ§ÄûÙ lǸ)—1Ä/Sü5E¶ꦅä ð>2g#ÞY‹„Õ z`ÞJŽË:ÕDë¢RÁá=/w–uðj”Ê:xlƒ¿ƒÝYgc m™³BVþ©øî¨ÅúÛÖ;2o(åwIËy¥ô+‰®{"Œ‚ÂÏ]¢FŒ½¤.…ù”ñÔ`zžX(žÖŠ4ìí¬!5Áü<ÝCñÂL–6¡f”pµŽ}̱¸Û  ÝyÞhVÜks¼Í-ãèëKê‰sŠÁ½™´“Þf¤Ý×ðà‘årã`Šè©:w’Õe•_é—y…SÖÞ<*$V“5/›y^H+«RÜŸMïý:ûc„w¤' /ÏC[ 0øwhBÇßðƒpö!~}†Ÿ€²_k¨& ûº% ·_â×WaµØ[„ÕàüÜk@aµô}¾xïÄE’ã’+ºRŽ„<¾÷ÇØæ#N§ž/Èæ6\‡ì=½*ƺAË…ª°ª¡ê2ŠŒ¯c¥A‹ >#–±lÂé’¿›Ì°òš†QëY¶m¿ÙŽ¿”}9z ÷•‹¦†fØ­n··„Ö/³Üš·9£-€à+üýX¿U´jÍá/5XÍ+à"ùäilg·¥5Ç ’®ƒËGPû÷<°pÑèmµ/ÓÄËu÷‰O=Y•åCE‚UÂë8¶}õ˜©÷ ÆK>Ôü¾JI©÷ÃY ý¹%_Õ–üG­‘ïcågç9¤ãä7ÿq`Q*ð'~Rž{Í;³ßV¡rñÄ[ÉÿÅ@Òn¶÷i¶d/ŒÖ“dîìc“Å„ÙÇ|êñyVÿåb×ÉÆö¥'Ï(\¸ˆŒoúOjǕſÌFÈß%Ëp_ %^´]qFÖå°b*£”J¶êNM+í¹Øìó$ÿMnië|³7Ñ \zR‚4û«%âhÙ\c$a´äA ›?g;ÏkG~NSãu Çèd˜íPz¶¿ 39–µ}½¨—Âûw`»ü•&Q|ÌU3þ%”©Âxr©˜,Å#ö½_ð°¶ÑÍ`fqŽg9ÞÜ$Ë#kIº¥mmLf[ Þqp/kÇ ˆ†Ó±×Œ^òŸcãGîÌ Ñû¿¢Ûjˆlý9áMá}):íÄ‘oäá/’än7©´ÄÎí*}lKÓG^ÜÇÓšÛ\×bÈ:G”PHÙß 2–3†™ ÖãÏOjVB¬–™åÑÈ×"¶›Èã¤ÔM:UdžSäa¤ú:é87v ‘Ê|scù>ùû&-qžäÍÕÌçEú X&k;MSቛn`d·ššæuÆÑÏ™WÆÆnã1Õ ðt^ÁZ|÷;&a9ßÜ•²ü=ª;ο&è.“žü„éaÍendstream endobj 51 0 obj 3643 endobj 55 0 obj <> stream xœÕZÝOãFÏ_áÇcÇŽ?„úpÐRqBÊK[BBRN‰âäŽë©ÿ{÷Ã;³ëÛI8t­‹3ÞÝ™ß|í„gÇs}Çã?Åßñ¢ur;³¼å9?±ßYë¹å‹ Nñg¼p~²I~Â(n꥾3œ¶äjßI7tâ(tãž3\´~oO:Ý@øp͇G>Ìø0âÆO|øÄ×ó|_NyoNY«yrÊ ÿxkÿ†;Ý0껞 Ær6{ê¹iš$‘DÏ‘¸â ‰ ~§{|½ÖÅUÄÉ×9EÌ€¸AâH'OOøz Ä ‰ÇŠøçð—–¸ý~š8ëÖðÈBâ’ ¾9¨O@´4˜ËyœÖÞò!S[É)\áI\fpƒb]P˜`˧kê|šNnt”êôÈEŠûŒ4ÙÉò ‰ "ó|ý‘’c\Ý'jÀÒ¾¨F€Ü5l)âÖÌ¥,æ­•«hSV0,aÊÆÐóâCõwN9 >-‰×üØ]ßgá£Ë 7òX™°òO§ÛïyemœƒÌkóC> ·®@§là1-HLMñ-ëodŸº›!OšisÛ 4³ßAÛ‹µÄ³¡Ö*’áDŸ¢UÖ$¿}D)ý€Ä÷”MÎaz/@Ô¯9­3Êÿ¤â¾êH7gM¬Ò>ÃÇxÒL÷$•¹JKrSH¼î©z€ð_b ¹fƒ™_øàˆbÜÏ ý(ì˜}nÐü¤a¨Nz§0;ò½WküXܵrô¾ Œ¥B1ðEܰ…–¢†Z2ž ‚8éÜì åš ¦ÆeW±ü£Mm‘æ§Î(ž¤ ho¤+-)9s4=C šÛôس‚#] ßG·ÖS/“µs,ñ[Žõƒ‡Kjä†Y‰xï»ût l5¿y× Œ#FNµå™Õ‰P¤ç†tßÌÞÊìÊ‹§àš.査€ ²2hš“ú ö“M]T ¦Š“RaºaÀÌ­¶´Ã’m¾k,-9$b« JKˆF9Ý?)öÚ;ç«‚ò@«&‹¶«¶C Q‹T5T*»%C=jÇ-Š»Ì^¬™š™¬©OÈóv#Zž<)«ø·Cö®1‰7¸“‹K\áA¸¡e ÆÞ6ˆdW¬ Äw %•1U1TJ£¥ÖòX×REÌ:wD“%YRhUšÐ«:;—xF­£gª˜ö}¿`Ëh÷‚û‰Td½Ð9Ú]v²Œ¦UU/“vñæõò¡Ê¬(’«rÄl4¡rÄæ)Ép-éã®wæ÷ðQé^ í\&Õ -±6ì`÷Æd‰û…©EŒI Pò¶ qýU}åp›‰%KSÈ-l£ò¶V&îÛ5Z̶ÇÌí2p÷$= Ö|·{ñ7Pñž.–‡Õ—ù¥œ–´ˆê+‰E925–” ;2ïQ™üK~S*¿-õ»°Öù!ñÔi?·k¨í˜µ^ß0±«&äp™4lù]kèRÄý¶½L…mi›S^ïóœÀGªy£+—u‹EƒÞV|EÚÔÆ–‰0Ô’î’*¥¶TUuÛeñ÷.Cw*tVÝŽKV¾EÛ ó<½ÂÆt%ì—oÁȽ:p²%Ö×ÎFþ/ÇÍ/*dæˆMþµJ†®PX©Š“[?Òÿg¦Çl"î9Ý€ývÌóCÔéó¹çÃÖ¯ìç_âî’endstream endobj 56 0 obj 1612 endobj 60 0 obj <> stream xœí]YoIrö3±?‚lA,UÞ™6ü0ç®;^Í}˜-’’Æ+‘:ðwDž‘YYÅj‘-Ø€1˜V³Ž¼"2â‹+û·Ãq`‡#þÿ=}wðìoæðõÍÁxøGøÿõÁoÌ?pÿ9}wøõ <Ä,\ÜèØáÉ«ƒð6;´b‡FËÁðÓw?mŽEøøOüø ?®ñã?>lŽÕhgõÑM¾ø?þmsÌ”VÃÈŽžáßOàIÁ†q´GW¹_ñãÝæ˜ÎYhc Ã#ŒajtðÝø†ÃÅËòäÛ|ñ®\¼Í-/óŋͱtÖáI¾ø,?ùËÉŸ˜”röðä/'Ov˜¼¦^Ð<.Ã(Loü;wø±ïø3ù¨3†6ggÛ™âiMEO ‹üÈynèc\K­¿ý²z:<“_Á§GŒ\A÷~)Â3y=´ïz2Áë|ñº\<§$K!?¤L¸¿-÷ozKs@BCz:/÷¯–»¿™SüvÛ»}VV®ŒóŒƒy9'Ä'ó|I· RQ;0 »÷ä ö+™çib}A¯’VÏÂW)ló™]4Ï÷žÓÕšµŽã¨ŽqG鑇Á5ÌVm¥øç6sÜkJ´d×™§<;I[í,¿„*·›†ö!RÙ°ÎYôã,Ÿ¶”à‰N[äÜÑ7zÚ{ÿºÇ¥ûW½‹§=ƽí­C54¤ò䛊piòÝækN"ˆ¬Þ«´EeÍ;ž÷´MÁó.ê3oŸ;oÊk·]Ž»˜°$> ›FZã)¾À‡q„ÇY´w±‘zkñf #ž6Œøöÿñqñ¬\½ë1â¶p Ñ«}Ñ÷¿i³ô|›¹4±¥_o€HWYû¾OÏdŠG\ò3~(üø%2mxûSƒÑcÖyÔÌ,Ww2æNþ²kÜ-·õ\Å•(ô£x‹@˜Ä+¯zz»i¶þënÚ?^üǦ\}šÔ›!ꟼõ¾§ oéTÓÅŸóE–¿ýRn—åyQ.¾¡£_‚ÏaùŒòKDÆqèÅŽ¾‰è0OûâzÂÊÈ“7]^?._¿©:èì–~ Oó³«a`¦…k¹Šw¸êþù& ëÄd‰«žãßÏkÂF¦z4ŠeÂ~ÕcÙ.h/"ñSïâÛž”.M¾®f)½Ý¥o–rf–é뫘5™Õ~(Œò¢È¼«j/ËRòÀU5T0#ô"ô䃖žÏ¤HÒl^xÞæ;·‰•òšG|°‚IQ úÞdÃãÿS:þ‚ž…ªáÇ]K¦ù ~|J£Êú¸ŒL{~Èä ¤æhÚKŠ-’1næ»gƒ¬À¯ƒ»`\É¥Ã>¸hhˆëXuaô ¤:ú~cî[«‚íZ¸(_O±3k„V01¯px)t˽’çÃh¤Ôé¦aƒä†Ig¥©Ã‚É¥þ§ ‡Uƒ”Œs%Ü*dåeÐÈànà£äù¢FHÆc ’7~¹Á±*e4÷̨DZêêåF§…Ö֕𧿃x Ô·Èb°0k/¤ŒM:•‡¾c#FKÿfì™;uy)o¡=eý‹qºÒqÒån\l€ÖJz2 @ú΄_–Á‘–¶¥aÃ<±¹&ñˆˆ5:¤vzõ¢|=õ„àB’áäÞ.7Õ³d]Ÿm¼|(cAºs+‡Qf`‡2šUœôrž¿•×ï&³Âi”GIÇÜåÀA>ý}ãpœÚx:äõÔ’a–¾”é˜èŒž–7åÑ|_¥³"ðN €S’|»Ü€ìC+x0–{¨šîĵ‚ॼãÄG—Ò“xDÑ$ü³8É‘¥wq8Ç0F!@-z!•Vµ–SaÚ˜.µ”bGÿ¯ÇY¹¹F™åÿU-Ô>QÀ9ÙÌ E˜séUºA~ÀôdÚZB‚PWžÏ5¼s¶ä8ì¸/Eô† taÌ©Ô_Ìøìw'?üv(ä`½Oô¿0«ôÀí!Þ Ò¢›õëçÏžÿpx{}w~ðìï‡ìàÙŸðãëßÀ?Ï¿=ü—ƒïžþ¸£û•Y‡}`Þûú¢ZÄ >xC5ÀÔˆ,–AÂ/¨òšØˆ=êh‡«•©ót`‘@ãÊôè»Þnéø¦ æc¥ÌÛ±Ya²å±èÇGAï½Cj;˳oE u· óëõHÃäá"ˆï™qZ:ÈJ(fÒÓm¦Â6³èzˆÛL§ó6y5½Ù)5ˆz—5ÞÆHã–F{ßqÒª©z×ýPFZ"Ô©5d“-¾Ö#„D˜áiÒ½¥ˆ/¡%×ðwÙòÀ´ÄX>&¬ÙåŒéDö÷±£h¸AªGºÐ¦qf¡ zË ]‰¼»G¡ f4‡^ʉÚu$XüãŒ0nÓ'K‚N¯‘cv©L=ïu´(¿9€k"¡¨vªÒm\Š~Jèþ¶ç¢Ëœ‘+íš}5÷m{ÁAÛØýÓ ÚÕ¿[\ÙÆË/ž”‹áÔ†Ù£ò@_Ø©¼²ïÅ%þæ©c²«VEéŸh0Žgv5¯ôqí­í¸šv‘lÔj­±$¬™2¼–QÔXÇÅ)sïà´ö3y±údF˜r;Ø5”Ô8½1?úÕLsnÞ5ÛCÆM–U6  6胅´QE ­Ò: côþìØGÖÑ>_ë»J"ºyµ p‰l=®zÒ¡Ú¹]Ž?CRtþ¾'{бv¯M–¬;¸ t:;Ýì8Lj»)5Œ ZX¯D,ƒqÿ<)¬ì?aË –•þ°¸Ò\xU¿ 6òãl±aW›eŹňxTäRÄÖÄÛ ù“û§žt#2vE¾ÓŠhm?1 È>=Qp1ü1:ºBeŸ ÷{MÃWÞ‘%¨,î‘%|¨°ÅšÆkYà¨ÖY+sX[ïÕˆRMO-£5îX]Ü™Ìì×r0JèFgYç´LDÁ¶§ªƒ5Õã˜9œ¨¨šZÔ~” •mÀœ÷^ÞGÊÝÄú8è®ÇãSGUÒ‹=Lý@Q³HÛ{IÌx(åh+ úXëD=¢ý„×E.]ôpµßí>âYïi–¶ðú¾< âÈ8_’w$J47“S<ËV¢yxŸ#(ÜsXôáIë†hK”ü޽-yý`’£šÑks½™ùU°iiC›œ¿ðW’›Xðkö2•Gû&€Ï5Á&ùx?õ<<÷×bLß¹èµ^³Ã,ú4°0+‘¿öR´£ºÃ_I¯uî ½†»Š9)Kl´›^˜²ÑzG%òоyI8l 3Í»brÞ<šFµPÇ:éqËN‡ÝÔB…)¯»cÿP†v9píðéϨk躡S}­“j¦—`*$IõCñ\b“º•` ~‡Ñzü!6(Ãöæw`Ü‹HØ`\~û[åw8úk%XH)–ÿ3ç–xÕ¬Ò°ÌPËcœR>Óð ;~xÌmH‰ð/È XeÎiá]6aC>4Ì6 ì1H&$ªñ®Á 'جFñÀ%\h_äë«0]“\ÄÀŽs‚‡4_å¤Â,ÉøznKÃ&N×4©Ð"Œö_º–ßø=ä+JmIÏ“f n0%Ç‘+›ûírR4çc¶bÎ" e’þ‚Çú‘ƒ´Ý+i,à‚nÐÅåyljVöG(À†’_`„`eãÑ¢'¤úV¥áÆB ‹û„“½6- —Žº”]$7‰Öl{H¢›¶í‹)&ê½Ä :!² æñ‡c•c…f3m5(G3ËÆœúªi*kÊëÓª›ëW²FqÔR§úâ’z™}q0™›ÙdÛRÀªÚ¨@HÚëÖ߃¦0PbHfé|²j/ÑV : ‚«É{w4MÖ»‰dˆ-Ë–¶úx_–H´>? 1ôû Œ1Ô H•ß{þ‰^nÅê¸Ø½I»­Œ†FôX̰A¤HÖ¦¸’º…ÏdÁ´ŠÒUîÄÝÒ' öŒ^Ìú‡./ƽ‡™ñ=Ü$a¡ê9,â”k9_3ÚT²…Ú°ò”¶Fž¥´i+a%•÷'×pÎ {¨q*ð•=b¢q**à ê_eïÆyúXŽ(ù2c•›§c}™â {µeˆ‡é¨ÿ/˜©’Ø µ™2v5Sa3úäŽÉ5Åj]/e¨Å'j©RIi_£ØÊ‹9‹ÕßW|Å*Õ#[¬¤$Ò˜ êÃ"çØ¬ à&6yÿM­x‰Ë3: ‹†…%•‚÷×gV·Å/UÙ§TÁ~þ@G‹”#=‰–FúÞ5k0H¡£Š- <@IÉÒFæ…J_zmh_¿;[=ê;‘ºà£PELqŠ5h"ŒxWx{¢áƒe°öy¢RNAR ’šè¦*¹°ÿ¢û¸è#K6i×̳ù_‘.Ìh™÷ÆÂ£¸#ˆ›U ƾß8¡Î.G'qöçõä/V£–µ£76_¹/lûõv'Íò’»üÃX–¨Í@ì²qUÆKA>*K"i©Ùé²E9á=‡²ߣ„J$8«å±À^¶"שеz —¨,•ˆ©[ÐUég ,Ý„?AÕ§g¾Åh HˆôMƒR·£4 «U«êJ f$l‰è÷^§„@Ÿf=§ÈÈ=‹UÆböF×›A;ÂÄi£H'ÒMÅÜUéº{ŸÀù¢Å‚TÕ®…ø Ž2¯Zõ?w$@ãî äž´  ²T`!©•Ì›¼LŽ£è{¹í?Ð çÍ>Ë1v@¶‘ÄtI O·ÙDŒ6¡qÛà “ð˜‚vXËxä›ò:Æ',uòNßÖí‘­D6×6O©Ý¿ÄýrF»-{NŒ>(Ù³jCÛÁˆ 8wŒÃ›’ø_ÅY¢ëfŸ(Šàœ’²z!8¡L8–e}È)Àœc!ö>Sõ¥Dç0÷°`Ï|‹ƒósÅ|ÌT¹.$y³o9g^7\5 Ó“kVê5:%e’/š·IØ÷VÐýؤy]L•ŸÎBU˜ª=Ÿ¦q¢SÅ{ÑÛ˜qcm<[ïê^Åqfr”P©þi)•«'x»Y ÎýÀÇ|¢ßÙWAM3<Êab)dMXzIñÂè,Ýqk§©MÜ41ç8¦™ÖxþëßøŒGƒìqà­óõ²oŠ”í9/pïõuêbÓ õÖª*ó¼ÇQN ÈS.ØTWÇ¥æ{áˆ÷d¿ä‹ÉPŽçûLµ?ezÖOCª|øÍÖ&j5ÒUX ¬•‘6Û=yè*z?CîRÅy3:´o £¯z g6P¾Ò š¦H±™÷‰³¸ÿ ~l€W 'í#ãBçd`YfE°‚B´@µžû'Ié"%nx”’wW¢€pnÀܺÔÝFC‡Äç`Æ>Ã%k Ku@ÛÀS³9 ¤%Ù“ 䯮#UÉB¬ëe¦?PéëYzáü11}ü÷{ÇïßD °È K3¥Zãó£rØÉ¤Ý¢ì•‚E²¬½CdÖµ3ÉS* Ê4‚ÏðÕÅøÔl¤,}KQ"QAÅú˜¯¨ŽI˜ F ª€žâ!S•Hj²‘.h¦üq\šöØÌ/AUIp #xXçŸ1ê מäàŠ¡Úâ#Q')ŒÈºñeîÓêvúÀ 0€ˆUðvÚ5ñ<-mb<ætt®AXU,:שaßj‹’ø@vô9ø—uãÆ‹èFùI£â~)GGÌ׳9ðDâ2ÇÌLÑõáhS5YX½öÇlËf­ÝãÙ™ÍÓÝæËÖÀ-qn v¸E·[+ÛŸ{oœzó[;"†))*Ÿý<ñ(Iªš0IROYí¶Ov@Õð Q?QÌ!z6¥,aþÊMO¸ÑS5.·ö–8?ú¯¢ç—#¬DÊ?Maáùt¹Žn vHÐÛT*³Ôöèfi)qMK>ô.–'ë,ò5%jœ/S¨/ ÊvÀ›Âó]Òž„õIàÌI¹Ïâ wì&g‚/'êÿõ³õ¹ôÕìxÎĬ†è7Ð)Ck‘íF“û‡²]8T˜Ð0)K_<ÿká05Yå*NÜ.Ñy3ƒ?єɅwÛAz;ZòJ˜¥#dU:„©-ôœÌnÓ\ÄoVORâ`Lá`ŽÂ€ãq ¡`û8Xö8˜ã¢ùnPLÄØ’âØ"™ý‰2žQÂ9ãš{Ï/¾6Ẕ¤V ýzÖE¢k ® OÉÇ€ò‡»Â08gxë*JºcÊ%có1Ûä@ilÚ×µ†ˆúvËÔíËû‘Ø·Z"֦ż$Ÿôí )Å”O|}D÷¥€dÁYEäúPóé™3UŒ¬9h—,Vz¦ØuWâ‘_¹é>p[-j§<Ž5Y¶ÍI›‘SéÔ3΃èÃBÛÕ»-˜òóep‚à¶+Cê¤êqn¨¶eÚˆ½ž&±Ü–ÁNµ¶wòJ]?‚°•¼^éBÃ}ûtãäˆG'Éê»B¡{>âbÓÉé.p¨>0’F³bJ½3ãÄ>ÑÝåÓ 9»Ÿ} «Æ³[^¾Rþ$Ÿ}³îJ< ªe¨ :÷s$S º|ø\–¿ºB¾6£&¹}hìJ4«@èùsv+–g2x½×byèóV¦']œ—П¾xžFO~¡©>ÕËZ»*SÑ|™‰2Óδ„ò1³½ó¸‰flÙ³_ÈáKÞe1ߎœ>ñ9MÇoáFºãdÏŸÔéʧ›ªÇ…/Ö®I(®Në˜Q©YœNµÇ‹ŸµÇ°”öØÄ.¦‘z’ýò²M¸B©ÐÛ÷ Lm§3ÄÙÃì5¾©Rur [.Ú{ä8þ6xQmµ.@ºöOSl®ƒSeNqÅÕ?”ÐFê’›¸´ âæù!¹;þÚöçhAŠ÷ª†HÊMó[#@âÉ/ÜíÊÀuù=±<<íÄ"™Qýô HŒ³7? QÄÔ}‡¡€6žqEï ‹EÙ˜ÜWòmË”k?XÿAšÐ¤>°Ž17~>6’Öb^Rãk4ámg]o¦Êéê³öRB?³ß§‹½P,¸|Ê,<ýѰ 7Æ')gÓeeäðµ‰çÅ=¤²PK¯*³{­Ù–Úà/JA7¹fû?º^¶ïŠñxÝÕæÝC2º°pîp%Œ¾á©³ñ\â6Ã3n0é»PÒè›2¥ûýñà•ÈÎendstream endobj 61 0 obj 6205 endobj 65 0 obj <> stream xœÍ]I³E’›ã3~Ä»ŒYU*ÉØ#úÖlÚÀšEÓ}€>hCÈOBHú×{¬î‘‘YUO*ÃxY™›¯Ÿ/õÓõ<‰ëÿÉÿ}øãÕû_¹ë'?_Í×…Ÿ\ýt%â ×ù?¼þàÜ$,\™ÂÄõ½ï®ÒÓâ:„Iªà¯Õ““×÷~¼úf÷p¯'­…”»ç{³ûq“µpÃîÅþ`à;ÛÝëôQ³{µW“÷N©Ýý=ý¿§{99çT|ËÍþ ¥š´äŽÇu —ðõ¤”²Œçmo¸i£µ1Ìò¤Ò»Ÿá "LF³»qè廃÷ñ=ÏÊûë‡ßöÞMÎ*·›ökÜ$¥Úý}PðAZKæþ}¤M"å„Ýý‚9‚hË€9ŠÉg%yæNÜÀ)¸vã+¼¦'!}{¦MƒœœìŒ©¼…QqÉ=‹)x»{³ÿ×½¿]É &eî=‚cg;òš.““q2Þ’¨cíÙdüQzTº²ò`t™‘~÷'§+jù/ªiš\ü¾=D&ñ¸ŒKÆÌ¥õu6ó<)Äw߫ڄ0‚Róìqy0¼1À q3,wØÎšî£öý”w_ ç)äKœv° ;Ë4<­â|æã{W_^ýt­ôä#{ðƒ×r’À 2Ì“õÈðܽzÿîçׯ^¾~|õþ?¯ÅÕûŸâŸ¾øþs÷£ëÿºúøîõ—ë‚Àн…A<üBà œØsüó ™&ÏX` êyù7OwÙþ|Qoy•¿ÐÞ°Lá~Ÿu ×-ô#œZüóyYDY÷Ëöñiýþ×úI¶¯ÛòŸ·‹ÏêÅßFÏ|»«WlW×&’/²y”¯Q–XÔNï$ùet±Ýù¨]|\/¶¯ñíÁü0üë勾Ý׫™˜ò‘ÂMJ¹ógÂ5ÀŒO?2ce’{Q–z1W±‹*ˆŠUí40/µÚ›(öVd6씇1,•Ê÷›¾Cýƒ7¹_ü^ÅG]8"g„óB:?i“ôdu$-„F*›Œèh•¤Iüã„B¸I‹ûÃL³nœ”æùQ#ŠÏëÅûíâ«ù¼#΢õ³(Ú)Œ4£ŽwÁ’lß¿ fP˜]rÅ H†IºG¨å=E‹E‚òcÕ¸0¸–kš±=]HË ­°¡‹Ù 2 }Má!ëò$¬„a^ ñO)Û¯Z´=ÜéSäÞwúô½Þ\ʪvŒÂ°{°ýhô¬âAúd­q®‚=6†©æ¼sÞé±U 朧$ìÉXšàkmâõûÜh|ÿKF"6d£“›8}+Éœ‡lm¨à{÷"zDûfžf´;ò TB&Ã0pYÀÙ9Œ&.a3L{ÉY ¬0áf°Ïõå$’Ò¸š€ãà0Q$}µ½Å¿…¼72‡^°gð£V~(‰à;ÔkÄæ&ü_‚ò:ÞóÃ^Åc#lŒçgl‘DÊ$©'«ÀºÓV®šÖåö7{n •Ô=Z2¸’3ZjÈà0“¬£_œpåŸ7lc .¯8u1•U¨Ü,,æ’JN(‡©J®‰QKíîV¸©Æðãò툀Hg¢Šîll‹CÉèõéÛ"gó»l‹œ=šý¶Tô°ÂM½xwtqÈh¿nɲ·Û¼Óm(§5RøÅ÷ÔðYÛøa»øzä<¯¿£Ÿ6Lq#ë]jGA‘þ.”© èfVö”X ¿þQ÷´ {¦j©£b½ô¦‚ùˆÓì7•ØídW³îë¶•þd_ËÇïÚc·ØYPPï~kƒ¶Ê¥·ÖÌrR‚oíg [¢ÛÚñÞßlîœÒÉŸ>eçZ÷ ÎMøÔ²:*§/jéá0p²0L5ô>cŠ—óüº2îʧ‚æ™Ï±Q¬wQä]z3À¤LÃ0«7-¼%ÕVcbæqþôË9ˆn•ñàVTñð]³‹£ZðUô¨—´Ž™£§Åè­Ã°:2÷íTÑ<›(5/|.jV`ê/ˆ4ÍóñHq¾nfå[ûɈ†ÎÛ†¿ŠÍÿ ùøFÚ‹¦ ±—0‡{ 1‚ïyˆ¥A €} …x)tyŽÇÒk•Œ 2º?Úpd".ÅrÈD…yª Ck¯ºèNÛ‹I€/“§­5õzž3 ®¹UÍÊ`†š¤îðÈA\jèíKŽá‘RGàÎZv9yÚ„§…¯äq£&kôr“H\¿Kv!Anè7©œá·ûúƒ§&Lvn!7AfFG_O-èïËÁb| 8E̸Óß–£‰ì„Ê-mÏÓ!ÐÉ‘UÿÖ4ëŸÅ-£‘ ’Q£´¼dT_ ‹ûO¡>–Éd’ÿCÄF=Ölóê(TVÏÕ%!€¨ôóñ2¤A¢2 g7 W6ZÅÌ@h3€óR"xúxš«‹Ìµ³»™ÃÀ³³X 3ÕN¡OÄö»J ÞË]hg€×‡‚fa\àx¨@`{ Ø0ß”W¨½iö‰Ý ø_‹o Az½û×ù)?èp%³¹ÙΩÇn@l†„SƒÌ‘½`ÅE1…¡ÆáhÏp·Ø15­¸¤,vÁ?/ÊŸêý.  L‚)Ì×î\ õ÷ /@l?Žþx¢ySÚw÷–É-ÂûÉVØ‘'·øÞ™ü¨Ö‚bâb iA5t¥å¡;¸Ö}˜YEÕ»aœ,Ò8Òƒj—cuHZ|ÏÏ"*ôîÔÑè½u²‡mÙë?Q\ òQÛSS ˜ ËLˆ».Ó*^°yÆÑ®ÑqòŒH Õðªæ% /¡˜‹^1PE"]1;ûë²”ªßÔîM]TÌ*N›=…ö°.òçm#ëÍJÔ»·—À3 ãd`ÌÕ½ÿþ5=T‘ò&zÕ^ùF^C1áøS÷g<5 ƒúMK`[akŽý¢/ס¸¤æcð¢&Gkñ2%`åù½Ý‰M!Çâ£÷÷=‚/Úk,‡:Â:FæI@o2Hî@t cÑå´?\Ám„.7RË%P›åº€˜9o8öòrEáa u%W|«XE°§N°ž¼ŽÙ€üÈ‹ÂVõ×5æz [½.FßBŽ=r²ôbô ‹:m(S«À’¦ÉF Ô9D,rŸQF7i±]aŠg¡m¬½]F~ q=˧òKùîÔÀÙnÀr•Ϲ¢&†®…Yò¯Žb9$ééÐH|>ìèo`ØkÌC^!S#9«VéMê*¡ShtÎÿ"èSZX,ý‘üÀVþÊì:eÉ!Ó³Üá¢6ìE6ÛÊ’zÂÌüqQn³&ŶD„¯òJМô9ÒžC§ ™˜÷Œq8%W×4Û# 9¹¼Þ.­ƒ3h1fnÎaé—¼Ýá¿Ó¸dkÛ€Iš´¾½géÜ„Ç8J ï_ÔÌœ%ÂrIzÝM¸h¦@€‘òºäT‡ &z™»SÞ‡.•uhub“—µí¹«eq)§ãv¥%C‰°ìT`’é’øá%¶âê#U‰—ÏT,JK-–Ù)Vlô‹'j-ÌÙ\–¯Š¯§“ë²úÕ#¹¾ ƒåä¢!µmÉ™m“Eaüaö±’'’*=0Çx‘;ZÍkÎ߸„)ãaœvJ ŠQø-¾Ï®îýé›Ý?á ÎùY/Mê‡*®•ÁeÅ8Yħô’zºPP¼Ei•Ùxˆ¶Å_a¹Nís2…2ªn»b-”NÃÒ:xç¶{Þ`0d;¬’”$åpWßc2¦L‚È8¼“uƒ[ºjl¾kÓ§VGè‹¥ â¦c`‘°XcäÇÌ5¶2EÍD¬¾'–Úøšyú1$è‡øzwŠú½D⢔z0K,ÒŸ—ÚÎ/¹âX! ÌG=›*॒kȾ)¹Ÿd`b1ÀΠfᘠý÷-?"å¤`ÊH»I?G5Ùø^[ßµhË‘ @‘3{ÔÉ^érB†DˆóVã>^TÏuãY¯¸ð)•š‘Â1.æ …/¬\¡³­¦(_òŽxéËÆf,¹Ç†K H…þ·è¼ä³$Áef‘—ƒþ‹=êfå¢1RRb~bÐ!(î{æ,)4j5€òFÚ$n riMfØùì!¡Òdì‹£ñ;Ërœ ’²wÄ4I §²®IÂíÈ „Æ@' Ïde¬Zð„´ˆM£ºþ?Ó$pNr†ÀbC¬˜X¸ì|’>Ф `g…¹ Ñß^@–|“*úRª£&bתÁõà'ËB<•«ÈÍÍ¥5ƒÙ8ÎwYudå —UCÇ „;eM Ç}¼%YT«N­¢…3[œ <}ê©+-¢§¾ů€^§v*‡ Fhî1|óˆÚ‰â’ø‰£Âf#và_̺žZÉÄzÖš4U}ŒÜ®£S]šE½A“žÌSý†›$´Wûá,(ÕeŸ‰ƒ(MJ«Ü‹r;ÂŽè‰Ò>¢'·Å—=]¦~Êœy$NÏf§¼xSKS>Ö)¯7Ã<àLp#æYøì£‹|ª4ªÛNéåCëntÂ2,  ¬ÅC«hICƒ¤œaRr‹#’öš•æÎ,¼A0bŽWüE oT˜‚ 8Τû*÷/FÕÓs“æ­¤šEßF: ¼3ö³’düžÜzÜy}É$¿Øz‹’CNñc‰ŠËͺm΢6IáÒË ¸‚d Š )Z·ØVqÕê][»ŠX6rBOÔÓ ;4vâ˜iÏTÌ^”sl7<,6õ_ cÆäÇ„g¾}±ˆ«Æ/‰íNB¸”k&y)+ûaŸRÿ«•¹þІ½JаÀö…OîRF`ºó°õ]´¬Z¦'µÔ}<¢¾ÏPŠN/ªÜÓöÌÅË-j Î`Y„NÄ®)Ã8ù"‡µË›'ðSÉN‹ý×ác’;ÍŠ–K,£÷Ú+yøfr)'+ÿd°§F6$ ¤ó龄9:v"yñï7ÈË0„üä*Ï„ƒ¸áy0Fm)“ãÆ”’„o¡)VêËhRõª8ëÒTê_í±ä@—ôv%®Ý –Ò‘TÀD[…V™sÅÒÑ“uÎŒ{#£CBfœÓ³GÚ›cµýc9@Nú½Azd9–7Ï=+‰ºãJ–®„FÅêŸù»FØÀ º­&{Lr2}ªæ8-yÄš$ÜQ°}!WC«e¬°‚}[-Ü{]Cœb3èžFÚñ§5Ð%~=²â^(?$ ›/0¬tûŽ……K#>äýˆ æ;L3Ø€ñíä]Pdq%šC Í!º=ÿ2Åì:M[ºu?c²'äÕ¤ˆŠ m;h/œ#,œ%h3‰â*“ž59Є¡Vm|ôz¨~‰Ræ\µLb¾e¿F3ëèîJnï3ŠÑÛš]ÀqÐ…ŠÎÍ'm¦isGd§¯ÛÕ7-J ÒY´—-¬F»í‰H›:‡^Ô£•VÕŸzY=ÚÖ^Ô+=Î~_qªN)ÀKq¾üJöól-ç;³Gº·} Mné°B?û¶¿Ó!Àì\ùNFÏ¢òŠ f·â^ŽJg­ˆ%–”tÉ1¿.ÒK¢—iz XÕz—b hÔ¥*VÒRÊØbAý¸±^•ö~I¢,èdGXG˜ÇÝjcWÖ°Yu­û܎Πƒôd¶,›hH#ÙäÔÚ–¸¾„Ziõ~)§Š‹t]Î:8èØUí2²Ü†rn¸ï6Hý¯­ÎÑÈô²>:íEE%Yî]ª$Í)‘*o½Q‚áS“pËX”•f†ÁRÇN®o3–7ÛMçí²’ŠáÙì.žóÃÈ 9#èߟ¡•ûâ¾ÆžXd9(q· ðvSð(`?ÐLü-4Ê …2Gz5‘ò±%Þp"¦B^·m;` F÷µñ§›BÛ‹ƒá2åeÿ`ø¥—“Ápº ¯‹IÐŒˆ´”×ÕjG „sûZDÁ™¸[ï—óÛA££=„ıóÆ[!âF’âÜË!âŽá;·óÅSuÔ& Ž>ê‘! ŽÉpÄ=k2º(-Óz»+¢äÊrÝÏOݦ«å1\=öj¤R´‰5ñ'i2O:¬œ§¬çkTÛ“EBªO¤éSWê>§î¢7ºv›è`³¬+h¼N îïkæèÈl#“å?)„YT¦OØæµƒŒ´'0Â`±ùþ’»Ô¤È‚9Š¿°„ŸÎ„ƒuoGÖDüѤ®œèdøåüìFæ6ú¬Kð>el«/¼»ì/¼À9K»Ëf|RçÉñ—|‘Ã/ë¸> stream xœÍ]IsGvž3ð Þ×y1«³—0„Ik‡ á›VW¹I+­Îþ gZ5IaÏ~ÙsÑÍN‰8UÖÁŸa.zRÊÎ:M@:gÊ࿇Ûr³„Ç‹ê4»*#¶å):Hà˜DðFÆ‘39Ï÷yiDò%+ã>WÚMÆÉî’òó›öõ§ôÕ Iž)Dh½Ãç¨x£ïp qÕŒÍС^ÆU’JçõÂoWy€J"ƒ?ÍBG†÷“62ÑŽ²°¿À%ù±Ü Û½Ÿö¯'Ãìä]P‘Œx <¾ÝáÇÝù,çLåœÈfÊ]"1šeåc|º÷V?ÏVÇÑ?~Ú>€ $‚×íLBh §*¡äHBÀ•#x8„›e$îs÷k¦†ÅÒâMë³ µ„;@ˆz›s%-ðJÔ@ep¨»€¼gg ­‘™]ÓS Ϻã¤qÛ^$ÇY“Û ›)Ù¬/\üËNˆgƒZSEŽ‹LQ‰ª¦O9© º í§ö0B dmó~w*RÂ´í¾ªáªS¬öV^&í­üŒ¥½•7Q{+%Qyÿ¥óOM›}^~Ý~º©×€|™zÇoãPâft8—rš=ˆ‰ºZ‡Á5aÂñáš0¨¤ã½­pí—¶ïz¸vƒH-D¢=©©§&ÀyÁê\þ.Ú“vðu=øKýö®ýŒ˜.}µ‹aVû!]”JZ ˆÎš¨‹ïÞä ÖŠ=¼=A)ºÔ­ ¯¥¼AéÞË­f¸£_Å>Zj|"/âoðzݳB=ˆ<@"Õ7WŒdæðŽJÃܪw¡ryÓ¡8¢^©5?Ÿ¤Úë˜ðƒ³€Ú¥Žïî—µ`ŽP¤·T«mŒz¬§¿Çñ¡âзÃgõ(»Pö¨lcäã¹³.*ë;‚ŠØ1M\ú¼™Vvø&OU G‘TÃp8xÔ„² ÔyDyí[Ù£”zÙîJ–š‰ÏHNZO· õ&ÑÁ‰CÒõ°«a­Â hª¥¾dø¦.îë!pÚd õ ‹ aΓö§Ö{LM,À8± ™ôÝ„óRÜ>”ˆfíÖ9ºænÛ¨ê\É3’uj¬CÚ+~Z¢¾ž¡s¥H†%KFæ s"¶HüÙ>è¥ÜK„Àkz»ú¥â’A‡‡ðL¤íŽ ²tå –ìrG8‰ ß«fœµß+'S3I‹ÃÐŒY–w!;$(¼—ü]£×@’áGV ~ëYtÕêFCV›q½³"òNgd.`Âs¤9 ÒwѬ¶öÜëÀb®µ,ùùˆÜ 00¬…§ù̾8¸'øñ_øñé3=Î`öx9‰\ [ /»àn‰—­QñïQñ²ËÇÙáÞ<öt²{“Nè‹:â(yßörQfôÒÕI)k¯9‘{Ieór…ˆSòotÙXTÌÜéf[àÿÚ~‰XYï3B&g½jg½©8ÀEû>þ>¡ðQ=á±+xÝypåm´·Ü²6{ý§F‰žü¨®4nùš E­<.1vˆùHnàþAoðvñïµÏ³¬#`錓êó»ßrýbÅK|®¤‰}ÊgíŒ$fæwjö=Mž›´É¾PTYäèèÓ3…å 4œˆs´§óÄïÍr{@“½·7Ïði\@j˜<íü_œ7…@ )X§XxZ…=zXSLF¶f¥{P3BéäaótøÄÓwÕÐJ¿oƒ‚Ìf´[ÅJ‘ÊŒà O'–E{Y©g•d¸‚™  ‘ZFÄÙÝnÊ9Ž;ï£I@(ɕޜ¢qÀ¿Àšî š·œäí¡kgj‚¥!Õm}ÀÁ“`O¾âuæ89¸ï"êw¸©Á*u²‰®÷)ÀškiãYoLjƒ7Q>Â6ƨõ$µî=ÉFîM2á½&6rļcâˆÁÕ±Ïl¾5YW"Bàš;h-„hD)ËPˆƒ Yâçy’GÞ($Ÿ'ßëˆvÏ•Ml¶p¤#…^±ºaIj6»v¨ÌOḹ#Ç^nâ¿&Ô¼*ZyÚ ”Ø:,ÇGƒ÷ò+€|né º=å+‹><ÉÉ~m1ð¹¶ „UØÐF'ÅEDZw†Ä¡»`fy>ò“JDboOÎ%±UB[D_¬l¸_µ•‹[²v ß¸4ŒX‚¯{¯T»Ç‹Š?Žèœf‰7Òbõ¼±OÃw‘:Ô[€qÓHtþû…Z@ˆt<¯K/"°œ·p)#‹‘3¯¹, Ke%ëtL¬Ã9ù8zg yK*DL…4ËÁÇ: ûÐ ®BFð¼£yžcòÀ¾p唟'”©.Š”‹æ¨î§×~dúäó•SËr@ØïC|þsYîž6R"Ú ÁÕ¢¨®Æ*ÕãˆîCõ€ãí„lw[ŸÍy^‰0þûâ3zP*ŽöŸ„‡x¯xâ}Z%æàÉ^Ø€dç÷mgo惽A¸°8Ùd¤ã-:Ç"âTpu¯a‰ÃZâSfO4§é6œ°°Ä".»HNØL® ¦f[˜X^~öþ0É–ÉCÜ–ìFGg}Þâ†ùÃJêÙáÖgþö%ñòìêÑóvôÔ³åíØãÃà=ü, 6[ lù‹],ª¶S ³(&#fb°&#Aª$Õ§ž¸ÀùD4‚ÚŠRéuG6Èã.hVáqÍcÊ-f8öÍ—»b¥5¨ !\´‚°ÿrþ“–d%•¬úS¨>Œ‘§"­sËqpm9Îò fI·H)ù7Ü ÷¹'8åN ÔÂ6e 8*²Ð/t Uüç]E1ÿœ%Î"3rnЛ^.’@Mš²£z¶lzGÑ·ƒuEÕÙw¹ulâI˜D{*cì”z‡4ú¹¼¨V|MÑùÏR¹ ƒ™•”Òl„K/£kpBfé 4¡Ÿ±)ɦ°¢> ™èç’)ÔÞ¶œl÷YEôkº&ƒÅ“ˆ¥S‰­@iÝyV^÷Óð¼Ky—MnÅ$‘ÿ„Š£CÝâçèn쯞~Íð½ Q½Ÿ*Ñ/ÙçoÝýGK– f” T»ifìò~bù»ÂlÓsHÚRß[[¾ÇuO‰ˆk9]R ‰ Mc”32åû‰ €æ(sN5Ô2b7É[,ÿ°›á9BŠ!ì¹¼½=<'/{æVÅ,Xƒ® ÖÔòá6q‘HQÝ·F 䄎äLvÕ ø,,¯â$Ù4ZtÒÆDøœ]#fנêI˜ö—IrèbÛ颕àP“ÎæcyxÒË|„X°~$¤Oüׄž++m˜EL,Ÿ` à¢>G¢\–L»d¢S2ׄEòRác {„w%ôj€Ë¢$uõìY”Aøh°x¿8¹HºNñ1¹ÅGH…ÿ;f½já#GñµØòA¢øÇžNŽâÓ ý½Eñ?ï°¿µY¸tSƒøû‹¡JjìŠAZRlYƒ4–EÑ’¨;§xm0Òpl"P@Ô¡§ê[ÍÄz_ëïø5%fåîö!j«W¢ûcän‘rI*]0B8ÑéViGFÚ›¨£}Û…4=ú®7²•]ˆÿ÷,Ô'àGfCÌ Z¶‚{«knsVÖ¬çF»;ÕeHãc>™vJ3TZ‰dð˜&~Ó _wt´à2^PT¡ìnY†"Ri±§«¤Â<Ã:Ý/îæ5+?¡—/eéC ò”ϷyrV$‡t #ð¸óƒQÃƱ/æ.™x‡Î8Ò`t a¨‰ÿ|µ1ˆÙ:$ÍJ®xÊ’nÓ!ÅWƒå‰Â„:¾dZ8Èq³§Ž±fÙÃ(Æ3>­h¸[¦N´ûx‡š„ß{SAÜâ6¤±0©CÚù€eO‘bIÌcÜÑÀ‘Ô'„fýjËÓ2“# oZx²È|tɳ÷>wOÇ(Byö—]Àôm5×r„8.R¯iþJ|³„ñ1=ˆKKh–‚ÌyE§.<±-ì~5%lá_*q÷Á”Cûßv¼ÃÆWŠÙ޵ÒÙ@d —3¼h2ŒÉGßɪw"çš=´g¢M¦Å†%éx…,åg¿•?wY‚‰˜ñîÆ¨„¿GDɈà?ˆ-zäÙ[´ÍçS4Ö„ß±'ŒÉx茛¯ðîe;Ú[}ù÷3û¤ˆÀñîV_Ìœmoõ%è.ïgõÑä-ô˜Ï{Se²Q(õ—£¼åVDW 똕' …“¹¨&"‡SnŽŽAíÖê ¤¯O‰d&Þ®‘F µÛI‹Ùmð7¸X}4 a£SX…Ê\BAɸe$#†*mæiÏÛeŸ¿ £ÎÏ_¿¾¯W±RÛNÕÍ~ÙËžó±{„9ÁGN¤Èa0‹_f-yˆcÇÉ”æ˜z,š&ð\à`›{:Ù6¡Â~@ɹ.ÜJÛ–l’üÐÛ/ùX£á1§‰ov Hgm†×”ß·CX!QŒ¶3ÌCÔ¾¦–ÇÞ5l $ú]; ö‹$c)ËÖ™A;ÿA(Rv„I,¶ØáwÜ4z3.ud2T`¿Yœ‹RŒTß׿ .I­•"ÜP+¬¸¯Wƒ¬GºÍa› kKâ!e¶µ8Žº~K“Ž}sl‘ÇÔ~dðTJËóIG–Á>ˆTÙ{<#‘C‡£ 3KùÞgµ^l™IÛ¹à„[y?U÷cjbÊVCyŸœª¤„¡44¹_)¡ Ñ‚èï¬Sq©Ké}©jPEóU™:Ù4Ñ¥á€%õìD„î lÅàÁÇä¬õúó˜>{X­xtýÎÁï­ªŠ^ôEUUnÆyß¾€Kÿ6°P·â›õ#˜ ª«Ðhú #ïXÄ ‰H´”|,-þš"ÉÉÞ×Pu=›oÑÊ©z¡qL*oa}aR¾-¦o[K>}¿*’7$[·‚óVÑU®B¨ 0“• ¼‹*уû§†JÕ9! hbÊ¢(i¡c€‡OÞíËøzÖÜ´UÅ 8)„ÚšõPþjIW“:¾KU“RÔyþ°Ò3?Q0ÚöKüŠÑ¢ûk!#’5~/5”D¾ž\k û1…˜°13+Æ’<¥Ê8‡ò™žNHDš$f’ÎZ:5x’XZ°ŸI@0ÀsQ®á;tˆêR¡ËŒV¶‘0(Æâ´ÒîɇØîé¾5(±ך¥o*¨-û2¶á{Ъ³=çtHTÁEõGŠ»x^u[Ë-Ü<Ù¦Z6Æ‹ø…k!•<0D˜X^£ñóÐu°—´ŒÌÅ%y€KÃnW„ê¥Ï嶉ÂB4oC2Ïz…Á§ r¿¬Z/÷‡R¥}•©K‡eçå¤uP-âuPûKÅO‡Ð.6Z΢wOéØ=I §šEŸ'­×>¦<^Ô2a+¿lejp¹s§ø Mâ¢Ú•\™‚a`œ­Æj½ÛNW‰C¸€m>8Ä-ÖÛÅ'ŸdY?¢]Ä»ùò2õºåÕ»TPÛ^ áhR#ú=¦sZÈØmLºPÓϪì]ï{—{‹p0È^RÅÝ‘nð›'»:‰±ÀöÁrZbzOŃ¥Tu_uç±Kz6\ÆhZbCþ;ºŒ¥9nËõè2–¦6\?®ÇøØ³Éc2lt™’V¾/ÜPÓ32s4×ñ»â5Þá\Ò;,ýÉ-fEz×Ïàe·”Gt?¡£~ͼgÓql­?$ø—¦ãÎ×¾4Úu\z·-‘r߆Û÷~A­¨Y†L¦Oð¯wÉEü9ÿÒ¨Qÿug°^yÙ%ìŸv©oèÌ—½ÕÈ,›ƒÈÀ-)š#·ë~‚*™Z_àL°®LiÙƒáuÎ8¾WÕî$0…Ë\ IÇý‘«ýe–ŽÚVd(hŒxg¢(ƒýC68ÌŽùàóCú¦D+ÃÊmÒzôÈbzâ{&ìï퀥Fou/4o ™æ$‚¾IÍœ\¡·n9'Ì9øçg9ƒd¼çÕ ¿HsÃnM S[D;v5™««á¦Q~ƒ³¥¯­$´Î Ín°†¤ÝT±ÌÆg>aRØ_¶½Ý´•‘RîF´lè—ž³ìÔŸW×TŬ`¸ED _èÆb¶ãìRåÍ4Ì…½LxžÉøzñÀÌs{]ç¡ï—<›ˆ[$ÔY©4={q÷Ø»wî.O^Ý"*þì‹ú¬•éêhŸ«U?ø!Zyñi¦‘X %Rph™} þvÆtjã.¨\¡çDåd£u](€S˜¤Åç2nÃnE}ÍÝò}b¨X劤ÍõÉì´žH×·^Çæ‡¹õ:–Æ¥Y„QuD!Uòæ»C‚C¢×–}™X}™^ Ûig­go+B{½Òñ¤¾áƈ/ª †ë³¾eL:Y‰S77vHÆÉ1—0)ÞpXA=ËÀ­sŒ™Ã©Ý%¿Ciš™_·¹-GíÊÇã:·o<ÝÍ˺Köím}#þu9ºBf~Iálú¹éÌÛqq¥'?_ßøÞâVL7Ž»³GDÏrÈ \,¸"#~²ÃÒm«çîLwç›®Nj¼mèßù9Ò­ÖÆ¥ì4!Ñ©:˜7w¡?ŒsMFyÉ.Ȩøž¾ÛÑÝÀ}$×yÏÔË! ô΀ùã0ºÅ»ØhÊ ’…c &¦LRƒeËàLßx+Œï¥±ê]¢ Ž ZïB)7;7ó žP>,‰ŒcénØc€xÒ§ÄÊ<œÜ$ !’Kí7' ›ÚÀg‹qïB@;tZá||«•ë–"áp?`€}oØåbì.Šî…½ücvåÎäSZ{K\Ix nzlt%£¶[D‘éë0“.Ö÷{õíWKsDÉE¸6¨®ñ„ù.@(§ù\î ßT8c5,­Šñ$Í–ûz®Ø‚r˜ÀQ¶ Hªñ&ñ„³þ,ÚÔ;oò!™9C°Š ‹Ä­7¡)aXLA”ªOa²5ÅK`Ç(Å¢×A®|³)„BÂzßû;‡IGñ~—;'ý8;ÃJ‡L: çwuöñŸ qhõørÓ»…41ödÕ!Ðq NA¦¶áàéõÓ:7ªÛ/[¢Ë¦qâí ÂÝ;è`9fßÖ>¾$̶÷Õ.* Ù׫ÚHÃ7…¼×^N‰×‚-¦³zéxH/æ(`‘\°½{Ëž˜;úì4§œÇƅĹG\ Cº'‰;ö­ˆ4‡ÙåCî)ÎÝÕè¢%`Îÿõa+ns|ÿ*s’68Eš“9;ʱUÓXL†¸-g&¿&.ÇvUÛì8Š}€è˜q( /^'â­Ë{ n«ÃýgËÞ®}Úźg­ï¢ÁR;b ÌŒž÷ßíöÜ‚8É™p0·PË…s•w k •HÇç&5ÜW'ÿج¢endstream endobj 71 0 obj 6409 endobj 75 0 obj <> stream xœí]Y“ÇqÖó†^ý¾ožahšuWµv)“”D0Êˈ° €%AÿzeÖ™ÕÝ3³»CR«>ªëÈãË/³j¾;ƒ<øùßË—g>ôçÏÞž‰óßÃÿ?;ûîLÆÎó?—/Ï?~ IW†QŒòüñßÎÒÛò|¥Çpî¼:üòìëÍãíN>H¡7Ï·;;ã„Ûü}«ï½Þ¼…ÛVÖ†Íß¶;·Íè7×íÉWéO3ÚÍåÖÀ_R©Í»­BðZ·†®¶ŸÕ. Æ’ëÏÒõÒ>öf»3ƒÖN˜ÍÓÚ$tDB7¼Sÿ÷ø8ÂÐPØÁÁ?!½Ä! !åæ»<Ž!8èR¹ø¦]ü{½ø¾]ÜÕ‹ÿŽó´^|Ý.¾©Ûí·Ü;¯¸±Ýl}»j·_•‹yúeV—5ÏÂoàQ˜¥=´ßÍñ\S—¡-Ôó­òƒ5 ×íI\}\ý´J›Í÷[×N’k³•­AÑ›"×p|v¤ÉÅòçó2;%ÆÜºñ: K-ÜAaÁHœŸ2 OÚÔµ?ñ½OŸ}qöݹ6CˆÊ±Ã?L0šý°ÿ}ûøÁÙ‡þtþîÍõÓ³¿:—gþÿóñ翃ü÷ù¯Î>ypþŲNMƒt²ÓÃßwÒBÖÿ4:ЫD{Ñ)^µ×ÞtÞŠÌNCWF%Ïw•lCœ6¢…fäNMI›gÿ³8·R™q0·VºAnn¥Â¹ÅÏà?qjÿ;‡ Õ–è*X­ŽÊå5ýÕôµŒi:qN` 8e«– ÅVûLQ³6«D{P?Û#ØI£ë{õ¬J‰ÓtÕ ¥Sƒs G“6ÈgjÞc»rP2üŒF“*Û#8 ÜÆŽì0~Ø*ð ÂjÒ÷n@µcõíW´ßåï¶;1(˜¬ÑQkƒ½zQ^$߇6G!ÝæG´ _œO£ˆæ[R^–Û^ºv»9víU4zÎKbXÚDâÿjFêj‹r ¼A)ÎËžGçeØ åAN[vzÔàŸvJÂT˜2zâµ§Ô—à¡KÖÕfmù{v•ÿS Ê‹^g.²FYÖ#ÙÖ}êo¬Üé‡# Ú³n@Ÿ`çÞWÝ~[‡ò®š„‡EéÓÿ܃.i sO|Χœ‹¿Üα‚j·ÿº©W_vv~þÍ7Û0À¥x FÉ€à>¬÷à‚U^1›GÝEN“®26o»'Å_ÊÍPAÝ®zÖSU%ú-Õœ–ð¢Kþ l|äênãhãðA™ t Uà‚ÛE‹©F´¨†ZTôl@ƒwõ!çªy<°Í90ÆfÀ-ß20ÎÏ.a©(¦™IÚ¢Þ)«l„4°†;Þ)kaÙ$~§iÝL"›˜¾Ý2—\|È( ûÎO¤¡,Þ–žàíæÞÞ÷Ö–¾ÝÝ$Ç!À£ŒøœçÍ«$gŸ‘ª‡ÑQ ïëZ[׬S|ծ⤂°–úß Ê Go pl´Cø'Ø€ËòµúYò΃þº}u·5¸‚u*DyQé#ªŒÚÂÉÛàšaѼ Y ÚìCNve³@›È‘Á“à“ÀþƒÓ’Bg?Žrúi"®âŸ4Ń_sFc>|¬÷0c9\ º8jjë®(´º¦ò·¨7‰¯ZËûp)bŒ•‹ÍñVñIT£Å5Ÿkš¹(›Ï`•7Ÿã`Œ±^M†’vðvá \ -ý#¯¡SÕס¦À™hlRte©¢Ç¨°•ÿ­ x›²Sž#óOfæÆ‰!r'ß&ñu5ØÅqSg±ÓÒCXß­‚åºèØ aʧ¿ÙB¼ìPÓÃ,ó0z0dq<ƒƒ‘â”K%LïDKªPcþ€§ð{ñÑî•_¡(¥;mðguòm%W3rýˆÍŽÞïëO¿&ùÑî•¸ŽÆƒC·ÜâÑç?¡ub0!ø)…8u”c•ÌÿÈ ÂO>YÛÕ€³KH~ƒK¨Ãz®e f!ö)«ja&\“?Ü"ÔvÆ®eº:_¯6;žvø³ªRQÿÙ#ÔîÛ^ù‹kÖ¯÷[œ5«ƒb' <ƒ9RþèîÁ8Ï{º4A3ïÒL'³îÒ,‰CVžN|ow&í‚Àõo“v§À%6\^hñÔ²ÿå ªT¼ì‹8¿7‘ýGh<‚Á'!UÛ i´–ñw[?€Ý¼ŒžwÏžF:—ûÒ5|C÷ôÁD¶zÿ"ô.†#€Ÿ5›qz 롽a<ˆ“Fäß“¦rËN¬•-3ñ/©îSÆX€Z(1¸ŠÕ`³H,€®Y©¶Tò®†—$¶´CÃH ³7 ˜‘‚){ïƒÊ©U )j4¢Y†dùÍ‹Ž>ŸP™Á€F*IéèƒW[ ÊàC?´Ð‚ÐÁ¹73òTl‘Û%¸)צs_H{+AÔ<ÇÔ1ý2Ã;›5]ƒEväQ–?'õ,Æû³UN)«ÈýŽTHf’3 ÇIˆ³”¨â§ëV^do‹Ò(iæœÿ['–FZ»Eé+Jd§P ³~'ÈH2kuƒÎ WZ­Ù@Lûz’FšBË‘ÂÛ©¾Ï« Æá¨–Þ²–ÄGÓ_1¾…"Ë…ô8‰Áy"EmJ$äè_CÔq4QäÊ]8è‡Z¶YnŒ™Ø'œÉiQ#5ƒ¥+³àÞ€]£8É Å(µÈQ5zík/Sf×Ù ëmìáÿ,ƒ, .(Èmdœ§ÉÔï +’ËQãÓÆP‚´uù$4¢ð#LfŸtŽM.hRY:gAÚP`åá«wü< Ã85Éõ¢öAÒ5œ‚ôð¢ëtb¶xÌ©úáà^¯ò1„¢NèzXJë#abܲ)\ uøW Aò"zý÷[kªÐçë®™I–¡zÝ“Cœ˜2JUAÓJ„ÂÅU=]áâˆÖÌRŽð‹¾ø6ŒY"³â‹ õt®ž³5JÒÙ¨ÔHeÊja´Â[–®¾Á­yñtÎôV‘q=©KÙ^ÂóÉÏÔš!«ÁR:𲋄(wyø=,žOxˆTªcž{6 ­8ž-rʤ©ÍŸ·jó” pœjbC×\kŸ{ø 6ˆ~aRŒ¤Bˆ`lÉ/”^Üð»IòTÄT†™,0óXuä}®H1—ô9´úììñ÷%z÷%z÷%zÓ=péiˆS—èY+ðs¿˜½8ž¨DÏ‚=:eùc.уÏ@¸s_¢w_¢÷ +Ñ3~ôGVéY Ò&N\¥g¥‚I ó¨èµ)]1KŒá²²`×&†·¤ú WÐ̶Áÿ4•~:Ò?mKÁaéqó¾eà¨zÿ#j!Êío9ÎUä½ânÿxT™Þ`&•é BRr“²:éIªá·Oîаϊê~×`åU_ ÷š•ßM¢Ù ù ¨Ûš!4.Ô¢:Ž‘Ú¼Ó€ikœ­ û¿˜˜ó¹!"äJvB$™‹5HëèÀ¾ùˆSl +bœwKoœŽ½^ëˆAz†/A[ã2é—fÏ&f4qjŸ§OáP–ø Ž,y“Ù®^±É$Òy’úcÀßnš"ÃIà„†œÄæeÎ ö–ÂSOèò=R†Æòi8?†VÍb¶ä$ráhY/ã\Þ©,6†Fì}R F…qž.èú,ŽJL@“ìt½`ø)FŸ¤ÉVØÛæÏý@ý+hÂ{ˆžsÎüUãkYƒ\D‹Ê 7+ÄÅ„ÐÐ*œjý”f²€|ò¦¿¿’¼Ù­Fòþ~ éá=å¶"ù§:8£PN=ë¨Þé’%È’¸–ý´B΃VÄâÑòÉZÚlâw‰ú\4Εå9vPàjJpÚ j’æ§§è&Œl5#?&¨œ÷sÁÊD£IdŠñŠ©@:ð H¡¦ˆÊ¥\È—[5“ž\¸C1YSZ"‰Cê£t¤˜€kráçšœ»£¼‹aù¢Ê™dÚ M̵Ärt|±qÄY'“E@*”Z|2•(Iàá N¬’d-o(Š4Û”…be&gej‡ˆ›¨RNhÍ.+j©;(2£B®ýǺÂ÷Ì„²‰™àbŠÈÈQ+j¼ÚëÜ;OjG’ÊÄ ì »¨}µö¾m+¦Õ¦C^uÏþp•††“jĬMèMt#‡K-7i–ëÖ4-´2ø¨%\…Ç&æSZR›ý—=ŒÂ·™Ìˆ#zB³Ì¤3®®$wôÐÊOúe'n¹vŒú>Ú%Yš)G9Ï®eÎÂRïÁƒ©ËæFó7„ÒŽBà&‰ŠÜù¡™ÀXO\IšÞ—ôUûÕ•¬VÎ<ÛÆŠ~!öÚ̲ˆ†Ûtsª›¢‡IB›¬§V;ƒl0BÅ"I;’RO ;Óå†@nP-uŸÞªß8$”ê= ¡`µèmJòܤùˆW‚©`¤#[‚%DZ%óa§ÞÓh”«[.¶äÔMl éÙ’¯(2§3þÑ.v¼Jþë[îË=Ù•ŽW)ǦÝß›$Š63zÒåÝ·¤TÀ»µzºžSñ IòÓp*"¬#ÕÙ^C£W4°Z&ÞïÎVÔ÷Ò.2ټ(qÖEèƒY™ðèq¬‹Xa\âÜÎ9Æ2¥®€"*`C+*x1‰ñª8…;Zffä]¤º=ï‚7¼‹Í”JÛÈ—”Ôþ¬” æL§\&áÕ”KÀ­V~?å‹eÌòöáµDÌ¢f” a\EÁi(—TࡇVy³¨€8Ëatè:éÎÙ«pÝRÒÐû t÷R(¥˜‰¨¯2Ð=Wz躥¤¢_¦º‹$ñº"Šˆñ„_(a·”¨ho’ÂËe|ûÊüF^âØç9M;’|^K'^ÅfB–¢}C¸”mV¡¦=¹ô(SR¡L¥:ÈÊwa5¨¢îŠ4ø.‡fh{Jø à¢Ö5ºIL'­ÅjMØûœ&¥"âN\-áËëE朧ÊqQ+Ï©f%…±ºwm–†§“¨/ޱм[ÚÌmoñ‰ÙJ°ÏÑŠXnQ÷/’V<Œn^¡3{³ÉÖëCüe ™à©®¥Ä¦K¬Ñè7_ä-¥¨‘·y%°j0º’W|ÉÙ©½(Ë£Z$Ùó}Ægì9•`®G„™µ4ke/Ï8šÎFæ:Ø4k½k8ÎøÓô–³Ð‡7ɧFËRl(m;R"Ù95ް0†SYv&ÍÔpF¢Q:¶ÁE?%Ônæ2*Ú‚¹ìª§§e¨„À+…Ò“éµQÎݬy±ªzôy?î¤ bW‘êÀôn*Ú:ÆÖ×, ŸRå9—ÔSå9Yu*ªRö='ÂûZƒ7F „´`ß×ÛÈy„¾ý }2è…BB3L=ü'툥¹ñÚã/ù“½Ö¨Ì2¾ @°çŸË&éÞCpåÖxýΖ~€Õ'{™&.¸RFÎ-¹Eë ºÎAki*ûŸ8 ­‹‡ŸÝEi÷Û2®¡Çȸ $`/ƒ×XÚo*U€¼ –½/ 6Û&]kkž”Ës]w~¼§v畆è3„<¤Ò°‚ÜêË{âzæ:°ÉÒ!ÿNa§V1°¾;ÅâÜy)Í’iODŽ0€2¯@ê;~cÍÕ ¸kˆ‘0äØ-J§5î ¹J”ê—?W™¡ó`dŽ©3\F ¯V´ü—†}ÃØrö\UÛasû“!3Èuì0=æÈ]\ÎŒ˜„ Âòivì‚®–diÊ· l†8u¨ŒßtÞ2==.NŽí¸P‡bRjþȃùŒ‰ùá;‹“G‹ |`¨ç âßCBeÜþ†à² o žc¬⨵`9¾¨Ì¤µ\ÖwT´\Îû‰ã>°>Ì&½Iæ{²½ˆÍÏ´GÉPKS¾‹/jy Ý´TÊ…L#Vœ]ÝW€ÜúqQ<–ÁãÝ´»¹ì—ÐvÙU„‘GÑŸ74Ï<¦ù\‹vkÁ•í™):‹ª 7„vЬ'B2ˆdr*Ûå§æ¼{§ú1‡V-Zó0’s25ˆŠž-2‹#“³‰´™òlQÂÒ©oÓßIÈЯôy2zªhÐNäK`f WÑËU 4SÉ€¶¢à¥SDº"¯T4‰D=­îe-:Wá2ƒøàìd¸6ûIJ£v-Ÿ¬ÑΠÓj_Éds5ýyxq ñ ˆ‰ý}¹ÕXÙ"8ËÆ±E#kjõy9]ò(éqÂ-IžîØU:]Åß­Äã ˜þ Ïøa+û´Ú…§$üÚÙ€aÂêFçgåž¹çqÑrE2’Âöh$)ÇC'f¨héà›`#8éÏœÂE)äÏ¥Ù·pàÉ2ÍÝ­Ÿ,3©c&†~oÉ‘ùA‹)æÇCpú“ÁÃà&>„-¡oL¸ò$¡ý×jÓ¾c‘ùm·Ï‹’ÎË“°œqvœÃù-dnŽ]cÜݶ&}_ƒö¶¥«f€gÑÞ—åâAÌìNÙÀùCGç¾|¤±ÑÍ",á W ØI‘蜀µ(ÊóÞëV$f÷.ØY-(½’ãô‘rÊ¥ Su$N™up5Å¿úÛYËlB³|†ì-9Ø‚Q1`¤÷l‹…=)n }=9Kaé÷’ê,} vö#dCZ^à™s,§ÅJw7R»Î¿ºz²rîÞgþÕÌÎÕÒ5.£´ôT”S°åÜÓféeb‹äæ-6xvSpŽ6Õ‡Z˦jíRWò¼çD4€ÞáÆµKËfOø‹ƒ‘§•:þ¢êËä³+ø£ñÊO–ê˜ëäÙˆ–3ÄÐÊxèÙ©‡$müF2¨‡ÕÅýÈêpž×Ñ6ïGxÖVôìÖeF <+ k!9ªñŠ{é×|ù!QᣟžÑ´ìÏ7²ŽÉÙeϽÆÍZ;ƒUŸnÑ›;kYÜ[›˜át+A"² µËÄwdX<9QTnSÛTÇ~‘¸Ñ‚­ IŒ)±Y¯û§/;û§èÏóÍ9hNKA•T\LÔYñú`_Œ“σÜǸ-‘yå}–›xÆ MŠ|l:n­ãªS°‚sO’¬Ôܳ(?VTÒ÷u'¨“J„ù½"¬ýÄŠê~­‡¢ŽÂ¿ô°…Ä;äW·Gæ…'NhVáßEVG”K§ŸÚ22ž5¨°Â£x Ïåߊö‹³óƒ´Èendstream endobj 76 0 obj 6038 endobj 80 0 obj <> stream xœí\Yo¹Îó ?bgO›÷ ëõf£ÅÚ±7 òäA—@²|H»kýúT‘M²ÈfF‚FÀ Ããv7Y¬ó«b?-ÙÀ— ÿŒÿž\,žþd—o¿,Øò{øûvñiÁÃËñŸ“‹å³Cxˆ;<ó|yøfßæKï!½[Z£+–‡‹¯~^oäê ?Nðã >Æ8_]â×ÏðñßÃpFCg”jІ ˜õð&Ö% L¾:Xoøàœ÷:LÅÔÀ™ÁiÔ ¥ò–RƒR\ˆÕ|Tkg¬¥Wçk1Xk%P$áÊsS?+%>ÍaZ X)WïÓH>GŠôêx-ì “«¯¸¼Ìsï3fË*qn!Õê×õ† BHëM™ò$ßFÚÞÂ_²‡#øúq½Ñð„‚¾+—äý: OJ7(- Y”ÌV6t]&ï[ þ¸ŒâÂý#‰ÊSE‡(Mk½ç”H||d¾w:pIøR&$“­QþÂÚÁgq ã^ŠD²å.Ùëµç«H°fžŒEF0^‹roå€O^V³à|y–SœE#kHó*\ƒ4Œ§=”Äà½s5?]¾—J:äI½Ê—=ÛØ(& –.‡ãü¿Q8ΈÜÎËк {:¦Ú2êOâ²F”·/ cœ5Tóœ¨ÿ’ýϯ¼­岨µaŠ˜Ûi|Æ€é‰÷ãVÅvçµa«ÀëàQ6\‹n†½ª5¤÷V9xÃìü‰„-p¢[=GÁx0|‡¦¤%Xæ•7"Ø«5`Ï~õ„ÍAœŽ<ùH2V#+pò°ÿqä:]œ§[ñ5œ hfTyñ(UŒ íÆY%GÛó^òqËŠJW°Asï—‡?.ÿ„[•°G†|SÒÂ&«¯÷¬a6¾z ÒòX°]åAzàC¥PÁ¾Ááq¦-JV‚¾¡ëuðˆs«opF‰ÛBÒ@*¼\¼«1g-H-—¬€›”NTÓ~XËà?xtõÖ¡nÇÙ”w=}†¾~Üñ_מãk6©T6"£å?Ûd¸MY+vR4|‹AªèT‰š“è0§¾£@4#3F*Œ“ÄQ’iŸKk¼æYñØÅùÕÏ4¶ƒ”vàÂÑ-“ÕR`ÒœŽ’gOÖð¾’Àžw£ iôCÓÇIp(áŸò®òd·è¬Ñï¢*ƒÔŒï¹JÏÞÿ× þR\âVyô¢Œ~̓W½AâsÏÈTër}´ÕÓ‰.¼B!\ƒCÒcàs‚«ø„å$ª¤íƒOÍTWYR ùu]q’ŠUŒú„„¦ôäi¡¤'ó“¸×Ôz`®‰"ãºD¡Ð@*œ¾‡“êÂð Løv<ÑQ|¹˜IƒpNò¬è9yDr÷4rð±ð@oÄÇ Î !IX¾V¨R#e=ä…ŸD‘uêk¦§ƒóàÙVÝj.*¥ôÁMS‰_"gp>Gøø®l°%ˆbÂkL…±‰³%V#Pâëˆ# jX–?‹4žû¥À?²2!3, —†ŒÀˆ¨5{Ö8ìº(pR4ˆ@•@rF•€àÕ³¥V# _PóQ bXÒ& ôΩљŠ$€dIÜð, E:z=iPÎfõí:l5™irò× w`Ú¼²¤5ÁA©qøêê{`ºåðâc$ðüU\1kcx·#üµ-â"Ðû'„|Ðhåk¯D’©M`ûD멚æEM@ž¢VtäV¿jsZo]Û0b9í©:ئUPGAd|gß’¶ðjJ;d&Ãúy7ƒTi«šŒB 2’˜ÀYãÉQÓòØ‹ÆèÅq߯¸rÞÈJjC¢Öæ0ÞÍ©RȉÑcd*½’)|\ÆÄµï¢Ç,àv DS@ÓQ"¤Ü4kLæ¤M%T1,|½ïΆ4‚!$Üôl*,A5xºA‡àß»K”×ÓPùèÑeDìŠ%¡0ò?p5 ˜“œŽßÃ,ß.^/>-!„¸PyÙà$?ºd0‹9ÏO^,¯>_Ÿ-žþkÉOÿ†Ï^} ÿ<_þañÝÁòõ‹<œ›B™ðbb‰'Ðú!S]ÂbmÏÅøÖ‹ƒ`\9Êþ™pjc@úQ4å°¤¹ïЏ³Š Úx[«MS‹``eàÌœéV%:á,UÎ1ÞdLñÑíêb fPRûÃn0h“ãÝè‹Á ÚR?øŒJÜÛ…â1oka{"¸d®C¦V‡ÂP¦/ n¬¹Šx òèõbÞõ'ºÉow eè‚ ØeУï„ñ x¡ë·W¨æªY74 è½8:JHêÀM‚E2ä@eϪ«C&šYÐAKÃx_ S¼l¥ózŒ^8äÎxû ª+ÊÚNkB1¥1zTЦº&Œµ=åÃÊ…ašÚPˆ¯A/îe3€á°îò6!Ä ŒJ˜‚s¯7Ÿß71ż-žl¸òà6—!HX~ˆ° ùâžÃ ,30ãJ808ÏçGY’ŸCDÙ!¸h^%ðu|qXQÔÊï_ùX1«ÎˆÀ‰òw‹¡IaôLŽ—µ¤*¼|,Ô•d:º¶¬}«Åòs̲Aé4Å#z—{wss£ßgöüpÖº-ÂaU È.r;ø)µ¢-F*¼\°Ñ¢xb£Â£ˆön£ >~<Þû’Íój+…Ђz A1ÀýM(|_{Œ¨bO€ÇðG5¾Å‚§*7âü=aê]ÝÈ$,Œ•3¬# š±D É«ön>P–Z©¼V²G€•w0ºxÄ–®Ë·YŸŠNr‚z™ÆëŽæ½¼ÁÔT†ÂJ¯|Ñ"Ô®sKé/®N9|•$HÔúg‰¸XUõŠ)×%Cduª ðm’î:³rFW{32µ=¸3å¥x„LT½7Û;Ñ›µŽŠìÑ¢ý <šl>Jß‘í<Ø¡¤G=±[ü˜KK¹ª-øÜîç„Ñ¡Ú>ÓM’`l«Ÿƒäkà|qÀ]ûP~ÎòQÀÅn¹sLæU×É%¦Í99¡}àôNNNXöd¨*'ïÏ}Ïê2Ð.Cm÷îÇ‘ŒÓ ýÄ “,™”é'Ff=pdêWOËåqnÏè5lìI§x‚,@êÅh*?]åà-xnAÂívÝ(IU¥¡×APž•û$\UDžVÌ Ç)`öM¶´C›–zF/ѵ ð®ÖÛ´‹ã<Ö„ý„"š]W•w‹×©¦!ÃièÅkTñ°›â!mkîà ò ‹B¸Õ™á+…Hrÿá°“P÷‹·û¦pŒ·„ÂÓ¦Ô"*s%¢Þ­®íP)îSw0±Ñc2ft|MD³ øm.fã(p˜Tu·ÅÑioÅLÖ@½äþŠÑt•[² á]tjbÞlÖ€§zÀñݲãi@•&^õ€ñkiÑØqÛО6Ô_î^ ˆ§ºsMœ•šiNâëÚwÐ=šr¬&Õ<)×í•“=Æ~Íô<äcM#Qy&Ÿ‚tn °x¥)x!'ž8gUùÏ1ø\dË|8ž’tšI”¸×™Ž2•"õ~ÏEeó3eöЇê»ýž]¥%*VõqtÕIÊJ7ÙÖŸ[ÿ>¾(ƒ¯òàOeð›sIªx2¬ÏW½sŠ®ý@þõðøÏËý(îíc,ÓvÇßj<ó H¶k'VÆV™ß¼tÿÿ†R,mã‚Àº± >ˆ”'âv‰2ø¿8¨Œf‹k7ÊàOù¥:‡Õy> stream xœí\Ys·Î3+?bwSÞî#o–í8JIŠl1•ª8y D]eI´(Q¶ôëÓ €Æ fv–â0IU¬2¹œÅàhôõu7ðnÃ:¾aø¯ÿýôÍÉíæÅû¶ùþqò›þ×Ó7›»§Ðˆ+xÒyæùæôùI|›o¬ØX£:øuúæä§­ÚÉm·cR\I»•Ã?÷œkÑ1¾}´ÓgB«í%|o˜ÊmŸíö0‚Lºí9ìdØføv',|ìQž¿Ç…xŠ|0 ž ¸ ?쇰ܑïá%aÏóYžgäc|8=cé4ö±úŒï¬öÕ”_ä)¿.S¾ÈŸ”‡g–ÓK² >â–ä`[/éižèE™ýÛüð}ckpq¤%ù?F”Ÿþs[>¬ˆ–¿*OÏÉ{»ŠnCyv.00ü« <<(é$ ½QÂ'ê[”OÏRƒó"šh%ÐÖø¸pzsɹ!é¹@‚šU—¸;/êwD‚=P(I2¼Ç‡úù0]‡dM$ê— L4f#%^ÙCbêYC}~¤Df&G{»*ÂÌTǹòXè7„CB€Q¢Oæz~Ÿ¨2edÏ ÐXËš©›˜C™NjŒ^†P2o²¯Ô-ñ@30h?ç­iåné€Pœ5N9@)”Â0¹ðcÒüq¡$z{Ð!êɵÌy28 Èš‰æ/Lö \&lØçôgüâb´iØv¤G/ $¤Ûƒ'c܈'Æúw¶Ò—`-´5~%Uz§ù}r߬ª65‰ñjàºá@™¾Ve=´›Í“âè[ƒý´n«&$·C½¬êHéÓ×# §‚…–àÒò`ng¹\í¸={!ÈÜ0×Âñ÷Ú\«‚{¸¶Áœ“^ØBêeUª ØcvØ¢8Ô#;é[àPH©IU`´µ%Æj÷y±£œYyø{ÅQ÷gÛŽõ+i”—Üàa1ŠÓPrÊbƒ» 6 › gKpË%¸EÇxÀ`à3oŠ$ªpÐyÿ"´š rƒZÛ¢iÂ$ìkD´Ìĥ̶“XI dãøµûŒÏ<À…ñò8ìõ㣮ÑÊ_°7:bâ{8;çA³cêöF{9žh„~ñ(Ѿ! ¾‡×,÷€xÀ'ð7`2p ŸÙþˆ¾óÌ£½ƒ- þž~.´É_ñ)¸Z`Šî4Ûû±ø·æ×Â-_!…,ÕPXÇE•wßg†ðgt¡=š2;¼H`f —œn½Îõð.à[Ãõª*}yЂ$<©Ì_ò<¯ <½lÅ÷>·––³Êœ7æŠs Œ©Á†ŠŠ$“b£îÒ˜€Úáôb'<å½Ô. ®sMlæ-N$;3—¨ƒX½Ì$HÆW¸€dMëiTÃpÕ2ìØû+H¡ç¸lüƶxX±èš&>`ìµAhÀØvÍø'×°ýà  òÝ–Ê}Ÿ˜ÊXzmi “Î8P\ñU'mAɯñê'm]ά…¼Âo“óOºÔï·M‡Ê!7.t¨p ¨¨*’P\"ô]&èÊù‚ÞÈy®·¨|âz°¤Èíàë™U™¸=0 ªí†‹; F6]hE Ø¶† 1ër¶’!¦»6g+Ðî‘d™§§RŒ°\ªöj,ÀAÉ39pþV¡ÕADÀøª tê:-|>ó¯JæÿqÉ¿ ˜³ÔFdÌÜ »ý7P)-QkÛy¡R~Þzea%ùÍ«ÒiЧíµîyš¾̼„A\ïÇNŒˆRâTǼKåÜà›%ÉÀÀã.IïŽb5ƒQÎÐÕ•rƒÒYístqÁ»Ä¤]iPºj†´@‚rÚ¦d>>µÒŠäaq(Ÿ ÕRµËh4Áßà ½"_åeDÙ1R ª3m«b BŒÙÚ à$|8 3< ÍaÌ»»Ä8•¼ìBÁVÀÑ£Oõ•`V‚¨Žß¦ì"xö-¾šQÂ$Åñé&z¤æ3,ù<Ñ#mÚã¸L$˜d-’5´¤Nv}Š(J`ð¶H. e[“§ŽYo7ƒúëòW]6¢¢ [döÀŒsäM¼“Ã&Í)ÜüÒjU/À¡S ƒdàIòÀhò5¥‹Œî1ê_æ–^` PÁ¬¿®Š"]У¼ ÷É ÍÕÞ'ý˜ý,KAÐb›å¦Ö3•mçÜub€¨hø¢¨…bÿêŒM*±jæËoaÁ<Öõ›tHb*œ`Üôqrû7üñÝpÉ¡ËÊN¼ãí å4¥<ãŠQçX3¢Uˆ¸.©^xE¢}㊮‘V•y‰‡’X•p2ĪÎêÉ–hF3À$Pï_+À$1²"Ög" ÜSñПò,¿.ªê~~ø¸<œe/É£ïݯýâ°ÿJ¶³7à‚«ŠuêjGÆC ‘0!ØW‡KÁ)a©Q|f/@¡!ư¨†žbXTƒ%ŒaQÍD+,juÂ8·8&ü''¢"Æ€,ºe5^(EE†Ì§†Þ¦ð‚àÑÒ_—á‹@Û$§ †­¦m«åøE-sãöb/”E\Uë)î(£Ðô5Š`µôœ¸ÙARM‚ç ú‰s¾Á˜·QÊ™¢¬°–×’Q ÑÍP8 §AÌz”7ÑÌdÚÔu"Yˆr€*¶¶ƒ`«/Åž.åaÞÕiERÏû±Zjïi“‚àåþ7Á³¿î`ù‚õU­DÒ~& 9‡´9ÕZSåg-Æ$()êe ¨Äyh1òŸE;,ÆÒJ½fö.à@ -1u8píåô8.èa^ÐÛd.ÉÅ‚ °p”” 1>]̦NO‡€9BšÏu8ñ`趺›I5s¤„¼b†ùö)”„9.q-\TÍÚ¯ªÏÊ &ë³Gô©Å&ªìCëáÍé7‰¡³Eq&ŒÞ“ Û‘§}”» JK ‰¨ŠÒ[”.çLÈ9’BÊ­ó4‡7â‹$XÆ¢­9[ƒF!ÚîeH³HÐÝZkêo×’ÔÓ–‡Å¹lZ›èuÖæ¦/Ù)Ù ×¶ÜØ Þ\1A wÅ­›•—“Œ Y°ö§¯s­|Èü ËýGåáÆØÌ%«²¥CñHU¾nÕ010zãõë5’6bŒã’ð‘& ¦’¾?TÒH¦c_ë$CñžÒ‡Ë5†S!p\¤‘_ï¼è3àÍʼ+ì‡É¼qSFQ•‚¬hij2X˜É0 懅™6ž)ž °à1Pä®[ 5š\üYUƒk”LÏÆ}¬Sþœßiž3G=ÌpÓ\»\¢>´ù¢ŠÄT5{“ž2=’ƒBQ<>cèV/ ‚­![›Â†>ÖOúúxbË„+ð8¢5æaC$§¶ÇÎÎìÑ«¾Z—3»¤ó.ŸY5 ­ù4S÷+_5 ,3¬º {E½´Rr>ª.¡B H{EÜÄüeþ0r©RêåÑ,á]^Çh ƒþü Vøér_AÛ¨L„?E}$è0¥‹ˆµ)%˜AדRêp­ó\Á©2ÎÃH©¢9Z%»½ÍðNo‰D„EvçcY†cžèz¡,a±|net!Ðå¿ p±öjzpAÖs?Oø2E\ÉJ³RÆ€:8ÔQrMîD9!ð0ö$„xêù–!·Óƒ#xnÃÖÕƒÀà$Â0YºÂ¦Z×r±D¨pD½"TÌX6¯^ P£³´«N4këœ;t ù©6u£VûíõcÝaZÚ§9jÙöÁñÅèä êj–Ã-ClmmVÄx,ð eÅ›ƒ-±À,õ ´déªfq^u.8/‹£WûcÈÀU–6sµÇ×Ðü¥ô4}°½r4ûrhAÎ4n†é±±T4‘ÌÙ®ŠÁŸOù1‰edÈcåjvâUBÅK˜n€eLS{_` YøÆ«¼\³ u?X Ô®à/4;üŪáRùZŸÏ ´x©@¯;1ËÃÂzè[Ä t:‹ê¡Ã]`‚s¶vþµ¸-Ü0H,LC9™èäŠù‡Þ.>@î|Å2Sè™!µ·À¶ @ë AÅ8ÞÊ|ˆ ÁÕ|xs A,Ïu|nP‘–à LÇó¥v·Žœ”‹&àЃô£CjrooʤLkpjR0Áów¤J{$±½R8Ýá­S<ÜQ 1 ÓwÞË1@…m¦poÊ]Š'`N]}¤m©k}œè«þÁ ª¬n Q¸Í—Éút¯ä¦;îl¯¦·zã©L×ß·ýºœ¼ý´ã—ŽYØÅ‰[»óãxjTKcƒ_…޼Û~›;hòņΠØ>Ø%Ç»y¾7žÊ•0cr€7žiuÊ8z²˜¼On 'Ðü©ƒæF±èEõ×Ï-öÓÁñ\›?+›¡Ùƒìˆ¨ðV© ëÝÚG»TçyÙc-·è–mCµüÚ ã÷¨ZZ9Ä\ô⣹Ž+{Rlñ QHð ?$74—z¹ŠB¤DQ1+NŠžW(5·Æ ´¥Çx§e[ÁÁ^Yr~Õ!n\¸D!ŒÇ|8¢°:œEƒÖÙB5ï·/¶¶V»¹R༶kôªÇÜf^1:r~0_ì×YQ¨@ͦåŠÅÎE-ϨðÔjìцR‚‰‰ ëSz]{Œ÷{ ÛÊM6C@ ƒë:ÍèÍAf% Jm¹*¼¼>>„p6G;Wß²Jî`K×Õj>ö%ªBäž(ÒTiœƒk•4I”/ÆËi¡t×2§×¼MÝõ„wÁsx3,]_©wn£d†¼@x/ÝwÅùÃÉ¿ïjèÍendstream endobj 86 0 obj 4808 endobj 92 0 obj <> stream xœí\IwÇö/ÇäŽ#£Þß$Û²•HïIßË!É"µÙ$E-”¥ŸªÞ{¦1BRJøü ³ôR]UßWÕÕx»$]ü/ü{tº¸ó½|ù~A–?Ãÿ/oÔ=° ÿ.ïÀCÔÀ•ÎK—/þmºÔl©•èàŸƒÓÅ¿VÇë wÿ9øÛ⧃œÅÛ%qOoð‹¬c^’´3û¿÷`qçÁ£å‡wÏwþ¹¤‹;¿àǽÇ?À?~\~·øéÁòÉ%Çet§ª‘=‘âLJõ†uÖ£VïàïŽJW¯ñÎ'üxžáxWXÝY£'Ì‹JM:5ÿĨ"ÕÔ~ÀÁ½Ásüøœ&õÿ<Ãçøñ6ݸÈ"8LOòÅ×éâ‡RBñöótñ}¾øïUºzž¯¾)›ß>/­ãU,ÌYUsæ´0ëƒc˜å÷kÖi­Ý l¨e°¾Ê;)­ñ :m(AaHÓÚugTÇpU9,æ|õj½‘ Fa%N†ÁÒA;0EßÊ,ßð2†â#c\[…ŒB_'ñÅÔt¥`T¹îA‹àE§Pç²¢ÙóÜT¸¯© ÷(b £ÓŠÏÜä”Åœp ù¯4”êaPNCL'$SîF1c'-R )wwŒ"D½“«géAœ˜–01Ño5‰£x$7 O„Å®œI3¢q¹O“ºfuÉÚø®¥¬ŸòÅãòõ¬Ë…Ö‡¯-½㊰8”C/A\%MM.¡a¢’ب$LÓòÁ³tµ%ɳÆWÓ)ÆÛt@ÂPŽGKªÐÃÎ倄‘…u‚~àßä\‡’òÜô–+~-ÖëñŽ×ZË„Ž–[ÅÕ9­³R´äºJ.7ŒŠÁÂFñNÄ*fkŸ«˜éÔ5CÕÌóŠP•g¶©~N •àj`çMC~S>¹(Å‹y0;@‰‘6$Ú1IIÅÆ )`ÂVL„“Z¬^®K jSp.Šˆ`Ÿ(Æ;ÎèÍÂÈEHþøc pÚß Ä1üÈyˆùJàGBGàe!Í<ð£ äÛ¨”(ÊÙˆB7â›C Á#cŒ@ÊòùH9Ní¤ù4¹ãBiïW:í,ÄcÑIôårÜàÔn"éë™'Õ½‰Ž…NqÞgùëQÂþ[a#¶šïäÛKñþyºú&_Ü'X¢¢c;£¥IÐa×2ÙIÉšÑÒQ•t÷ØßUDµq,¿‚m3 ÔBƒÈ ‘ÿ|"r±â aØ%¾xŠË¦„éå°/²ßsLºÞÀû{ u€iƒl=hÇdQ½5h77@m„„Dq6àEkÐfFsÝmlµx&7»µ)5ËXù¾2Ɔ?ÑĉÓ&8œä×>ÂÀ†[#í%$ àÆ%yÀ‚ )´Õ;/ÃE6™âɳtµ‰Ü`8ÔÚ¹wù\¥-¢µRÒߘÑçR vƒ½ á…7€eÈ­š±‚›A Ô¤V¶£…”ºõ¥ÀˆY8¨­¥=û„9—t5ö-`„´Wjß—upn ¢ ߹ݦ‰Ðx¢„m`|žMåm¾zÑ4¶“±ákÅ Ž›¢]"\Ù½Àia„Pº¢Wy9p!þÕî+Ý?Ïd¹ZDxKt”èâ-/-ňmÒ<®ê{¶cñmŽõyÌvÛü+&õ¤s“COùt ¶ µ \‡,W}R“)­³>dUO‚š,ÒŸ Íqcè Ö1 ÑVû,Œ¼<fÖÌ™×ò˜Y\¼›%Á3O4àb¦[YðÝVü·úµÜMfÁEžå£Úç;¿â@¤­»S’Û÷EtÏ·s‡·Ô÷ª©¯¡·ÔwFêkõÍ™o„ú6³§õÔ—°6¨ÜRß[ê{K}o©ï.ê 6¨çL¨;ê sºQê;÷D=õ-gzÉp¦©-ü`œúî™4nof^ ]¹[֤ˌQ\’É|™ó’·4ÌŽÍ—6ö†z³ic.*îÌ9sh7.ÚÇ6XÝpÜñ²úZ 4fMrŠsOq÷æÈ±Š#G=ãÈœ"s±S82Á-Â¦ÈÆ ‘Õ–´·æ`È¢S%=aÆ„£–ÜÊy«9îóA7e™q6sÐáøÆB³ïÞ­Ä(`ÆüºoªPž7 Þ3O4€w1Ó«ï»-tþâ\×7Þaª¶£á`¯.Û]øMFƒ±()B6ÈÖÇccB—ƒlf98š«ÍjB¶!EÓ`ÆÌÇ¿ûCvÙô2¬Ù•†A6“ð[ícòä^$‡ä\N• «b‘fuÿë– åšþû­'ÏZŒ½º/¾\ƒ ¡”<¼ÈÆg FÏ7b­TA\ÜÞ_fD`0[o„=mì‡L¥¼Ê~„ÏÀ'ÓV<^‹Â?Ù7ãgÀË äñÓå;¸‰Grâ;´lÜiUMYÃ×"ª»»fC¨›‡©|ãRÍïi[–ˆék)… kI kNÀÝ£y9ÿÔ›B?Þª \ˆÏ; aÚdøÚ’DJ\Ú¾V_·—HBT^æã‹YKâï`üx[ai±f€ù<ÕïëvÁK÷T¹¸¦@ñLE>-7>LžäÑ”eœS·x˜×µÙ-ÂÓHk~\søf¸I{¢òÎ5潕U ÚøÉ6ceû7p,N™{„ #ç ÇæžDÇÊiT§Äyó|8Ã<Ý"ô9 /7§?Œ¤Šc’`Fà3à²mÇqy»"©í?ú›ŽÜ¡ ×[Mb®«ó³§;Õ¼„Ý¡õá€OµÇî/y ¸7€KäžÑعçÞCŒt¤q;ÓÃDš^d*§ÍȦR(8®yzíÆ“¼Bì»-ˉ¼·CDÃí<Í*Pÿ<ŽÛ—ôZú:%Sr’£þ¹è€P9iÖºj×¹gL Ǭp9çámœøÃrVñâÓ24LÒ4wm_7Þ)?_šî$¦í¥Ç úNÊ¥“…Ün!í]`qõûžÑö]Ìйä΢Šä…°º½Ë&öI^`ÍevrSœ¢,R«7ì‘äùE ¤šÉÂd([JgI;í½)–o5*Ȧ:S|]çLƒÛÛß™JÕq9æK‡¾^“Xô¥x5ûRöç;¤6À®‰ˆÉFElãǪҗ Ü;kÿÊDQ3œwys ¡ùѨ–ŠNHQ+RÊ(QÉÊ$âRqZ.àa®KÇm¢”j)%HŠa1îôãÒ £X2×¼¬’C7e0 >Û Âù¥âdNr|…þÒíOÚ µ|– Z&¥º† Zè¦c;¶hóêýXsÐ,z¿'›Ù¢ÛxmIÖÈ*~¬¡ˆ  ï›Ûs)Zô:B¤‹P"ê¶/Aí„uÅØA²1æè9íÞn¸p3U©K<ÐŒ;\|YH­3£&à ð²Ê3^q¥6CíµØ Ö|M¶™äñ²³+Êk‚œíhè²ÊŸûÿ.kØÇÄvPS4½5ñ’mvªmAêÇIiSO´ÏÞN©Ø€ {z¹†ÎåÍr‹P,á—Št :¥ËÊ Lf@F@¥®¨^Ã=0Â5×kP<²3w½tÒ]óÏ=¯ð ŒÅ̶–L¥£>U´¥(µ0Êmbk´´^¤ “O~>Ô^yGó›Kˆ+¦’3!ZÈweçYD‡c(ÂÆ% Ÿ„ïm"fTücò\~‹‘Q¬e˜×¶ÎÑŒy@Š E¿uø­å.EBºJ–ºÈ!4º5Üfå/:Ð0ôNë“ Ž‘c#Ã' ïrŸ@qÞâÉâ¿ý¹þendstream endobj 93 0 obj 3644 endobj 97 0 obj <> stream xœí\IoÇΙðäp O«ö%@Þ£Àrl‰Q)Ér$Q ©Å¿>ïÕúª»ºgHÎð†‡­^jyõ–ï-UoVlà+†ÿ¥¿§/îÜ·«gïŽØê{øÿÙÑ›#^X¥?§/W_ÀKÜÁÁ3ÏW'Oâ×|eÅÊ5ÀŸ“—Gÿ>>[odøùÏÉ?޾=9úùèÍJªÁ…·7xᔄƒ4œÃþ¿º{tçî½ÕÅÛË'Gw~Yñ£;ÇŸ¯~úþÜýfõ§£oï®~¾â¸œL3²{8²Gøs±ÞˆÁ{çÌñ[ø÷ÀçÇÏñÉGüù)½#ñ©òvðÎî0/®-Ìá'Æ ”j¦ö%îuùyR&õ*ºÎ>>˜#A¾ù±Ü|x\._Öç×i‰—«/€®Fc{鯣úþE¹ù¶Þ|^n~¬7Eã:_âêáLC8k¡€v'g@«¿®Å`­ ë¸Ò!-7\Z{߸·–ƒ18ÀGk}üßµ„Œ0¬ÊZ©0}¡#AŒ¥¯^À‡ÎYgÒ0CýáÈÙ „06p“†Ž•×£±a©ãÌñãµÀΘ<þ7¹óǧkß ©ŽÏá»×ôl\Zoj¯j/ÏÖ:‘¦å)Í2]>ßû2÷ÖBù¦âs§8y2JäT”>›¡=PÖuh$*´7y¦–›DlÆ .ã7Ârúâ«r7–t~0ÒGÉ2Lä.7 ú`ÌæÕ WÈÉdÑ2K×…ŠƒàB„¥„.é:žãÍù…ÅA¸—dNëut|‚ü éù¸¡¨%F2ø"üÝzÃá9¨Š:›ßË«ø½2Ay¼\ÇHnM&%¶O¾¾À®ÔÀ¹P¨”gb4‘€7Dì/Ûù½À÷M˜•%ñÛmÔB¶“8VöÃZ îÑ…Ð={]™âr ÑðÌlyN°òW°ÓÌ€…#¥ jüjÜßÅ»ÎKT•aæ7äcìH1Kæp =QÞäY¶lþ#ÚÚáÏùgV!·;"”× 3®~ñîi‰Mͯu`Èé‚&…›//ë2'Ò2?³ŒÄö)Oäà”ÈA¾Bòš(QØùŒÈ ÑyèžXè¿g ò%YÍóuïI3´vðuxÈ[ÖoéÌ[ȼõÍ*°=ÎÆZäU­ó¼*ëõò]W±ÿ^/Ÿ”Ë®b×¹£*7H]…”T`ˆw¸ K$å[øð’Üüµ®>YÒ&‘£—¨ ø`€çòOqÔJ9)¢Mà/µ¡­Yæ4 zÆÐ5;_KãÐú‡ £geœUcµ‹’Qe âÀÄ+IÇð¾·|€cE{½¤®ƒœ@ùriÐÉ]+Üâ˜.WƵüÜ&k€HƒƒÞÁÔ,ØGmʽ¢w³8}ÖÌ]Ms|$n 5+뻆é×Ê…ù‰‚¨S9¾(&Q?y¼;ÓJDßÜKÑœ4DLª@ÁÀZÔ6_Pù­B›„A£3–›¯m媴SnÁã΀¤ŒTµ(8Dh"@FäAíLZ €œyòѯIæ °6ùê D–6ðN£äóó¤  3ýçDÂëÍ8|ãÕÈÕn8oE ‡PQeÏúY5UÁ«ÃYQ¦Â”¨¢+‘ŸÝ¼k!£Òü¬k‰Òô¢onÊ5Ì+’ø·¼‚Ë€Êgƒ²œMÆFÆ8ô®ÁÍDõ¿C´ƒY>(·2öÀѸ†ÔØ™@ÎH§ÎTchñdŒpÿÅŸº©^mâ(ª·çŒ p§çà|çxЪÓÄqΚ³ -C°êŠ¥]eÒÖ1Ü`$ð`¬öH ìÉrå@Ùî!ÞbXÀ:¨kUª¦¡²ÚƒÅ®"‹(ôOWµDÅÊÔ;3ûQ?Ø–0WV?m$zÈ÷¢¿[ÚBøëÐÿ7݈Ígc䦬Ä%D‹TC˜¬Aª5ZítŠÖ™Y0› Óó‰?NüŸ¸ÐØÚ‰ÆE&4{U¸Ò«ƒJMR¸`ǽÙYáÞ/ÚôCþg|Éñsxú>‹+ÕkàÚÜTU…ëBÀ¾>G­¹à=q€¥®ÆÈñ8ÝGvžYF¡QÃäÒ5€±„g$4µ'4œö²¼­þŒ„u£{€É¯…Ót…²‚±ÄY_Ju5–:F€tºÊÞj?îGw*Ò¹8 P†ƒ†rü”mOJ>†9pò :˜»ÝäÓ¡'–’O³Sëk‡øsYõ|U|g+¦uü{P+¦5¦8¢ªPбbßQ‘NX/¨þøó)µ’FŽ«²›U³·3QÄyíL—ŒZ?ñšžY®ÎêãßzZï´ÁÈÅ >þToîPŒ±;Rƒ70nH÷o{Ød›Ñ·d&è <º» ç*A—'‹(.Ž-&.…oÓFAÄú·¸Ã'§Ì1¹õ1Ýaú´&x©oKrµÂËGÉvйŤ›pœ:­Mêg±šœYî™–A\5*ÐÄ`QH}4Žp§‹ôêζE€mñbO)Š|„âš$îàªúƒŽ«lj*ù|Ý”î4¹k’ê¤q…‹NܳdÙSì^¸z8« ’0t²‚ÕóÄ…¶éß1e–E€€:õÊJ†®íD‹*¤hàH˜ˆÜÐ4êpœþ›paSYÈI7g7J¹€gsH‘$DÁmJÇ´y#ædøÒ$"dƒ!£¬ãª0¥¹ Œ맓"ÁõN’f‘§ŸMÖGEøŒpà¦y@]hË(>ÌÈPz³èaš6î&ºP|ÌàÖ40|½l“2ÓvdÑØDRµÆ¦ªóG”OËEeSBFdS€ìXëÁ‡Gñ ‚6+ˆª™9¸ñT Ð?íXÀ™¼UÈsP”…?Î:ÐcZ ¡°Ã•æ‡  ãkvSsÕéfëT`£»â 1‘ƒO1²bÿ̳©ƒ¿¬7_õðâ# §˜÷·p!/aÞ÷Ü’ã)0ħå'Õ_ÈøÏÖ’Ïí*5í(ÈÃoÈwŸ€<Öê­ŽÖsOM —‡ã ¾Xq>x­EtÚã¡Ïæ&³UVk6Hï­rð5øÇÒÁZ(ÐR\%±ˆ´»GÒ‚IŒÕ˜ùÆ #P1¦[X˜3pÍ—ÜcæûOhÐj¤hïÅ×ùÞeiï"?´“àŸy…ˆÛ×oËNCe“UÆ¥ö”å‹8|‹þnAùä\0ï%ï¢?8…Ú÷‡£“ϯàÉ*L7˜{²XÔ¡n7{èy¥p,™Yðyã~Ç9}×úåUµŠJ{׋¡‚3·õNŸŽr2þ¦^¦¢–®u3™*Iš‘ûnfRàI& ƒ¹TH¿c°³fí•uÞ¨§¨ _å”®ÙEïÊùW‡MƒIô.Wò}ƒƒ ?EÓF¦ªóÍÓð€$ÉcRýîi_ôÀqØN¥BÁùõ>Gl}Ó0àü&+R|T\³¯×¥‚—„c0ù4­<µ04ç¥](\ŸMÃèIíð­—††Ò£Ý"UZ{ñ¶iYN³›„¶ Î41IßJmÀ±ApŒïí³[¶Ú'–mX%‚2b Yø¡SõDÒfè¹Õ-,*¥dŠ›à*ºÎˆ›ØÄÙÄ—°¤a¦suÑĉÜBuêÌ›©#, µ<„K¦šŸn‚Š´h ©\ïmlÙ<Õà-våK¥%9$îá{Šk†Ö´­QœdLµ)y磗™œÞ Ë’-•¤¾ŒÄ€ÊÖ?ì­ÿJÝ2oÝ0òÍè¾¾iàmGÅvÓ«¦ÉiwaÞ$e²¸‘‰„ÊÆã–¶ÙTpÖ@¤m1‹†V:{Ъ4ÜÞ _:SªÒ~¬%aoKÞzdÆ:ï./ÆÇjÝUÖˆ–%†"gJýIYá\¾a”¾vÁCl­ãÔš¦Às‹”¡vnRPÝx<±¹½"„ÞÆ¨¤ Be§vôíâ¯ÈLè5F_Œ´!Þªq‡!†9@>ÐÝš-gYJË -«èeèê7dBã…¤ÿݤl”| @º, Ñeï×këĈq“¤°¡ºXËÂ:5Š…ƒh!é½Ú›Ù-&Ø"cf„ÿ'µ³}îíuÅé²aÑ<÷r%+뗋ˉuÆzÆ{¹žV2ƒH¹Äûâ9ï–ɼ_Ñ XÝ´±\ñªúâ{æ|®ÃßCs>GñÞ…õÃæi¬Ký8{Ï59Ãú¤,t‹«ÊÄlÁ7÷XÔã½°±À†+Ï1ªkù¡aT̼îQÛ®Og†5aÓt¶@Úí¼ßZêèÔgåÁá©uq¨A%ªÔÙX,F0¤ˆ6žÛ"µ,µ rTæ‘yÓ–Yd‘¡)g=© É„ÜS(ÉôDxX7¶ÑÁ0¤cP²ÛîFŠ2z `ÁYð×Hhˆö7øò v§=xËýúæªÕ¾ÀФ ¨m6Sˆe7ÚÑŠ‰6’3{Æšsê‘]˜vRÆQÀIÁ4ɤàß}£F&•ùZ8zžDa6Zß07Ê\øÓp©Ãp—°++Æ%AÄ{{¼%ì@÷ôâ– 3ªõ`moG©K ˆuÇ쾯&åQ}vM›%°÷¬õ ÈòO&I|p Á÷í—y›Œ§>ôÀ~g« Ï'4u+©+ž.mŒæ¡Ù°G˜_©ü÷Áï}Øpð—Ô- WèfÞÉ@’á6Ù3å)Ù1)p¨áòOû¬J^°Æ-]M ‘¹… kØ()íá!(h&’1]Nò!®ֽ;XHnÄ…¦ªh H¸ä2Éì-eü±Pþ¶<}[¦WÝ¡{EÄÞ•Ÿà6=륀HÍU›Ä§&}Ó‘F®èK£Å %ׯÝE»q."@4b¡> stream xœÝ\KsGÞ³Â?bŽ3^¦ézWímmì58ÛŠå`ïA ¬ÂXØÆ¿~3ë™Õ=3R«»ºY™_>«YƒXø/ÿ~öúäþ÷nuñëɸúü¿8ùåDÄ«üëÙëÕ§ÐHX¸3„1ˆÕé‹“ô¶X…0HüÊY=8¹:}}òãúÙFZ )×W³~½ÙÊÁZh°~»ÙxbG»¾ÜÈÁ9§ÖÏkcÒ°Ý|³‘n0V˜õõF Þ;¥Ö¿n¶ðp0F¬ßlÕà¼ÕúeëüUéüÙF¹A+]Ÿê`Hç¿m4ôÊç{Réõ;ì\JúÖ ¨FÐã%Žìl7ß3Xg]Ñdi¥ÓA)'ìzØlÒƒ„áŸÀsç ÓÙäð7ÜÍ4cçÄž_ãŒí „Š{ð¾õÕÈø¶ÝÌÏð2‹0­ÈÍnª[-u¤Ê³ÍNÿy¢F= lqz\Àd©'Söyó½‡{yë¥ËÛ1dò[ —÷`x7!-yþ²-¤›^î÷‰ìÅy›Ó«:§7­‹¶­ø 5ñ, h×6[œrÁ"¶™[¡`\ŠHˆŽŒ‚2›‹ìxÃáÚíLU[àe£( ^an;ñ [”zƒ6~•޳mœp©2OÛÁÀ¬÷L§ Í€gqÇAP”pvý´µ©]\ô¼HØ ê‚Šz—ÅK‰Ô]ŸF)w!:ñnbˆpù{kùj&—ØÎÈ<09åšÀ“l —<.22¸å„Á Éš˜R šâ;ó l‰ÒEhýÓºòìç°¢¡tF žˆHé °<ò¾Õ†c[ÿ´Áñ’ˆœõ;ŽO`Ës“wþ›oó¾5Öa¼=ÄP&qõÞ¥M†œ,j˜«™É t]çSP(CŸá„ü0ލ=p¥³C°¢0ò›L%È*Î; •ËËÙ ž62\ ¹þbS8¹cÀ4W“8ÏRÔIVâë ×þŠ7¦,3¢è›Dõ°¬ÕéŒ(…D72èøvi?¦´ënNᄜLä,«€À–ZE´aÃ~¥ Ùщ8ËûkD"mþ Ý!NwЉò×T æÚÕE+xPxEõ/î’Bhv6o%ð«ÐŠÎ¢ ™EÜ40`=5`a“庅É7eý ‰C å¶i9Â̢ſco_ž|wòË 9 á-^!Ã0‚-<‚Ù¤=ÚÖ_<<¹ÿðÛÕõ»÷ÏOî?Y‰“ûßà/ ¿>Xýå䫇«ï–mnÏÙÜB€egq%šÜOprïê´Q˜œ"’pý¸>+»(¦&ˆÈšjýÄ7Pˆ€æÀ®! ¡ÓZ¿j7ßÖ›×Üã«zóM»  Wî¾ w7ånÞªÞ×0¸·þF6u+•‚àñÉ&Ä&žZ4Œ pzÑÀì§ÍNAéÜ*¾ ÌO”²©ÑŽÝ™e†õN··;qˆøk 0/š"@…ÝNÜa²•“\kp•"„‘îìDª{ò°¥œÄI”¸j ½Øµãfpv„[¹ín9¶#v{÷bl­ùb Ã(ÆêÓÚäuß$Êm”±Hàè$AÚ½IëU¼ËzóÃÁÒ(qwxi½k§Öá¤qÆ€(Q$¸À>'b6 /=ÑX{¤¥3†ÒìGƒÂ]òÐ{aï\‰Ò3xrºÄÚ¢s3ôÑð ½ÄJ´ƒ7M(¼p0‡ql%aM"Ô¾v ÑÄmâ<-F°^nê: ’@ÑŽ‰±X6bn+Aއ`ŒŒ`¤<èd *é øÄ!8f0(,h%Ö#$¬bý/¸çŒ'þ)t3ŽÜ*‡ÖŒ´=ŽÒx %¾l ®®‚Œ²Ë:Øä6y@90÷¿Þ€2X˜ØØ¥‰¬ž.ž!´Öæ—Ím_ìÛÙ8LV*×^©³a¹`lÔ½NN?ÿ1*¾½ñÇeµ)¢ >$† @b5Ž(€%ÝΣ!±Bó‡_)!ñƒº€÷øãiåâ¶ž¹µ”›4ï,¤"¯81ySo"zÏ-¬+:òøC½‰8o8Ô9Ìm7öœ.@9Ù=EK€-‰§Êê~-Wq AÏ3ÊÙ»àøõ¿7a¼9jfãh¬.1úoþ«ó2Æ¥gÀHš*„y î” &#M…ŽÑf6j‡Î@€ó²€¯®x¶Øë.Ãï¼õ®lβ¼FÙ1€hKv$x!^Ã0¹ÉNb¸ ¿¥þF¹yÍñk“?ê•lïÕ2Œ ½þ¨ÑQº¬ùXé2ÀeÿˆDÞ~N¢H™éüúÎÉmÖÇ=.h*r“CÓ]8¼ªO6VFÅ©6Eè`´+kš„2s´ ùB¶ï¥)ñ÷\XGmW)Ö.‚’)cÌÄМÆZv¢ßp±H²5t&_m&ö¸,½}§j¥D´ÙøpÈ‚¼ L¿H*ó‰ÓÎ;FcÅ_ª1 Ê4ÎD8šøÃ°à€Ã0Iöo)æå¦¬7÷‹9R¸¥˜—›1¥dá¶üXY%hõê÷Lœè»jUÔÐ~l÷àg¤£Ž íà8ÂÎbÊ'ûcjÕÍ—Õ :¯~l4úÚ^^çà”¢ÃܧY¨pÓ•~[ç^fÊ”RĸQ§Cfʶ¤£räá»Ó*‡¢ébsк³³3®4fçìr„|“`àà$ŠÁÆçþ¿B„ÖL—;6tPz¢¿E4ýp(6ÆÜŽ e“¯IÀ\Â-ŸG¬/«çw]¹«ì¿I§x³ð‡`ZHŠùÈ+¾ˆŠyiÍŠ¨÷íñXqC¥7Ç'bqõqê 4! yLçží÷Mar\â]Ó™éîÈ-‹ž Ð;Á 2¼IN°FР™º}UQ{Œ_TYm¨›¿æ²eF ìÑøÕy‰eìKNTƒýÿˆ"I¹ùÃî€Ï{jH±ñ¤·ÛÉœBÿ7eûà§t31öY9—}Úûü¡„»ˆ¦ò ¹û0æV¹€ÁâÖ®<Ì+5]’»³®ƒ #V”«ëxåF”œrï-Óî]¹â\dQwæq.ËÔêSXX%oSíV tiÌ;¯7?À+Fµ ê¶r+`ƒ@l1b«–£^Ô¹uî3BiX®íÜneìnP¸p¶áR”\¾äm‹,J&šÕ|ô9$$#ê톋1 à ôêbq RsÒ‰Éä C&{Çê?Ý8”$çjœE¤çŒŸÀ1ÆhJËÏ`9´Ãbq^å½þy⌂VAå– i1e!¹›õm&5w¹«ÏZ¬ê 󸄞 -lky$Vñ0 IhZèÓ/AG.*!X‚È úßS 0œ8*£¨…ˆvøÐmzž4Y ›‹ƒž u)¯­ÆJo&Êßq—B̰³‰ÖRÞ%]oTèTPzÜŒnWF[üϧ5e‹Ü¨ò2•Ï/ÿA“qe=gÛ+éb4Lˆ°#.Y ÕFA„Ù[”1í âbÓ½WªñFßËo$‰£5ºä%,@D?¯¦_ÓzbÑ`@+óKÍäϒΔ’¬1R«­£Q` ‰h°<œ_3åâ“…uƒÉæö~_¤^´1qká &I¹öH ?GŽCWžØÑ<6í#Ã¥£ZˆÔè“K»Ð‚æÊQ+ ‘m7Ú3¬›­m.QEŠjKí=g=V9dTpW›:Wi’˜ S+J­GðKê“Fri¨ bNj1Ú2ºd'H<º!–#)c2)ÈÆQÓ˜nÞ¿$ÄÉ/rJ"ˆfžeOåÀ½ñ ¾:iúôÎ{¬Ùi®[°×a+d[ϤÄ&ÓT™‚w÷¢î£°Ëº;s7C£SÈè ãeÙ×ó6ê=`ÔD‡†a]•ìܫ㠫ƒTì^sJyL†v"9m„§§Þ)2F–¬¯uÐ2†È4g‰F¡©%S£õÖE7,§ßjWˆ=ºº0ö}°½dÃæ™«!ØÑܵwd6ŒÖž>¼CcïÞÜØ›Uº“$&ê³Ýq‰º#µ§?Úmz½Ðch ƒh¹Ô° š©yÜѤu®ò’ ¦$‹hf ^< ÇšëEüeÀÀG{ôpçaãtX³Ž'®ÃøxBY!>±7sÁó!ËWª¹O’e ¦"{àeo¡KµBÜBAÿg³š‡730¶°zضÀ—MìB̉vîeL¼i¦-ÉÀ íµ—»‹ MJÓÊÄîx—2 Øã9¥jÎÖ8òN\Îq6ð ` H11^ç–ñ½RO('œy±1;3G2¯8W.nÇ"»ç%é²£zÛ[`ÀuÔü ° ˜LÊ,Š@üªJû¤z;þ³É—õéŸe9­X‰dËSá¶Ež!†ÑÞP­Ä¹°•Ù‹‘3Ÿ]2ñyäkLvǃ¦ÇRc¡)žÏ;Û° o°|¤ÂtÐÞÙsb*u=f¾_aå= l“ˆ`ß6f¡TÙ÷‹+;9ÕEO&ì4a µ·òqô­Á¨ò$åBÔÀùrˆaé|s=S6?Þ<#'(`WSû×Ånêa°§,'Ôø™ЇÕ&{’žÃÞ¢ü niY¶zÔ.´sÑ™F´•ÐÂÄ]Â)ºúö×ã€Q›ðìã— ²É Å¥xE\úbXèaçÇñóK|¤ê¹P¡ÄØO<à^æ·Q“HÜB\¾ÌïNOöÝT³ˆÑµ)kx$r9R<Ëó®N“U±d‘Ü›?®c=,c“Ós_oV3kÁ]÷ÓÙa ãù ›êØ@¤¶ à¡ó ž…QlýŒÉ U•î¹J@>?«;½bPéC |ºœwía~ÞîëëϱN0Öà4'øl×Jot4O˜ä=G¥ÓŸBa˜*ˆÏêÜßî˜ â½vÄåiÌeñ)¤¬ÓI(HâÔhc+Ô*/°ËžøKÑJ<ë8޵{kð^sàØªëŒe¢ë ­e$¸s9£8S{i€ˆ%Âa>!D+$ç³"Ȫ þ˜9è¿*’jù<5 Ùâ¤-L\)©øÄÍaʹ³ßþd>FÈ`1†!Ùo¤°IöÝÇ0»m8›G2ª±ö-VñÃe_è˜ßï)y賜NJžQQùSì7) —Ú­–Saâ>g“?×eñ9gd:qc™Ù¾ø…˜¨Ý|+|ÜøJ}ÜÓÑ|1•}´³M)-?ï­ v&/~Æ Çb0i”KÏ÷`±7ÛڻЀéåSµx]hR Sjs¥0©¤cÒY}ùL»ÝÀæB0ZŽ…ª>dÊ€;_SÃXßÜŸåR‹gÒûoL±PIа–¾¦V`¿ú 7úŽê¼+çLjñ$‘ œ|ûCÙ$DZO€pŸ¿% ï?Â0ŸU|{WÐw—‘Έ.ùÚ!S\jþ{dwFו4Áx?3sì¨+îJ*ä3}´qÅê*ž'…2KFò®+6ëjBä-ÐDè‘ÔÛÝ™£„É¡仅9Áz-È|s¦o˜#ýQ]¤ô <Ûª²‹ôºWÆíäüóʰ‰M¯«³âÙ‰CØÖá±íQñÎì7F1î˜mES‹‡wsƦ¸ÊÍt2WkOT2k#$ÃYjÆ3Ë©ÂxúG¶j(%c-äÍ9\QZÿyÖǺ1åã—ɘÀo,T ë±-uvÊvžÈ#è‹¡0|:ÍNõË£ˆ´Zç‘:h£š”͈"õÝÉÿå‘_endstream endobj 103 0 obj 4574 endobj 109 0 obj <> stream xœµ\Yo]GrÎ31?‚˜¼Ü;Ð=î}™7o˜h`gìXÁ °EJ²2’(Ë–må×§ª×ª>}Î¥ ‚ÈóôR]ËWK÷—b‘—ÿ•ßׯ.>ùùü§ qùøÿüâÇ ™^¸,¿®_]~ö^’î,QDyùèÙEþZ^zuéYà×£Wß~9žôá¼À7Ç“UbÂ~¿ŸâŸáÇ?ýõâËGß^üx©ÍRc'¼2¸ÅhÔÊ%ßg/>yøõåÏoß=½øäï—òâ“ß}ó9üzøÅå¿\|ùðòÛ·Tr‰|ì¿âàÞ¶±ã0aäRæQ?>àÏ«tyl?qÐ…£]X=<ºÿ|T‹÷>½uòæ%äåIêÅÚò+ßOr1Æz…]›Ek xx}T~±NÚ4a©<Ð×Þeá;ɸÒ@3¯õá‡þG/ KçàÒÀM©Ôáeí ßzu<©Å9 ¹™û7ž4 kjmHyÂäøDÂ}ïTiAiÓ?,¤â«¡ÃL%×U¥øŒª±¾ÕGÝÏ]º¼ÿS[ÇŸq†1†à1ËÍÛ~óÝäÍÙP€c­ªv°ÀºI»(í°ïc”à ¨¨Ò <Æq"Ò|Ý/¯×„ëÜ€ôîïÎæîðÐuh¿Ì¦ù¢Ýijq{}““a*¯Fj ä¾ôVºE}ë#ýµ_¾Í—È/fS¡D¡®×Ïúw`E£_b°È“íåãúÞžqˆ÷‹G/Ë@ÖËPVÖ¼É7•—üyháÉ«…ÙO:Z¤sÒ"È„•Ç«äu¶)úÄ *ÐW0”.é3‚õ D|žmi9X·štU¯ªK }§ðÕ“ ¹ÉðŽ–1æO, ÔÙ"õáSä>g…–ÈßÚ‹EûpøÚÔFøxøíxƒ¥ía~ IF£æ†uÖ'‘À•‰@PE*ÐX/ð9¨y¤S‹ð u©ñ=JMnâ ½]œ¬ƒ4£øb›2iCx®måáó#pŸÐÑБ—Æ —é{/äá+\'´¨Ý ñ“ÞÔ[œ‡uZ+¡„Sìî{lÌÁ ,™@¢IX¤››j6듘꫋Gúþð]æIkea+ç}â ÂZÖò€­¦Îž#ÁAÃÀ$ŠêÁ¢œy›ùQ;X€°cÁZ M§N$aib7‹oVJSGà þŒð_Ãÿx[/*™×½Ž%лŒ0á¯áÊ9mu¢ºOï®Æ… |=.”Ï鸜l¶Ø‡ÙíÀM¹l¼µ÷¤+\™x«”®Rû²i}¢*Ÿ´›×3ƒyÓo>o7_µ«7ýñÒ/¯v ªÓ™íʨpYœƒZÍ¡…Z ŒMÔ"rc&A´¦rÒ Z@A2é—íœsP 0Nkü¦†ó¤f´#Ÿô‘Ëò*¨HxéP†aô€¢Ë*Û„%ºùyx×åìu¿¼n>‘1p¶F„1¨Â×À\ø½bK´“*.J…Ê4f²ýdø |®d 7‡‰¬ÒG_˜­)p„~W"€Ê—È J+¿,@JÚ{ÅI”8¿v€6Ÿf¢˜Ì½è“ì®[Ü+Þ/a««#r‚¹7T@H~S:Ö²Büž¼ÐµÊz£¿e>“ ðf’nÛæŒÜ0a>‹ë`p¬ÎÙpO¸ÎMq ‹3Ø ¨€ ëi"DgÚ€0〉Jâ)ôLg_8! yíâÝ?i¬ ùÍÚxm2 ¸u8 ŽÉ²ÅK],† |“9£àe-–%¤¹ ´™Ö6·:4ú¤CÑ(àÀ•#¼H¤ôö¸Á¯(òÀ‰»Þ‘Ž K^S¡â851Øs¡>PÔiý.}€kZ«²Uç` í§»‰q«¼:XÆ¡kñ®fdo—IØoâÔlKº“r1 éV)Œ¼|4IwÉ×OqMAÇ5öŠÚñÛ£FO `~%¢Ë²Àv•ÿ§k›^Ü&‡½sív¡2(:! ¹ùC·ÅOósä¿MäET6"ÛA@ (PÐðt5A¸„0˜å0 ÊeG_:ÿ@ð•p²”F9+¯\mxl( ;ÃL-\VE0׈ñ¤«Q¨ ,rQëÈŽÒ¢”¸†uñO·µO«ÿ9¾i“´Ä;D½#Á¬Ü†õ‡Çoù—:–¹*öp‚7@ µJ4…%©NŸSˆÙAhòT%WÆÈÉ¥òèJ jdúÇÍÜ-§A`¤ŠMfë‡<X˜wE%á`XÜ˨¤Ww-ØzñŠU3mòG‡­2¦Xâš×²Õ§QË» ÕÎѺµÖ9Zl##ü,ÆÉÏIYÐt3ž0ÙÜ“ËÄÅt3ÚiÁ)$˜{ÅÂu±1ʺU5€„-£CÚíÏ ÊO¯™‰¨x.s‰S+¿­7‹žtížàÓì5Ù,Ú PÁ¶R¯é ¡˜€¥Q9¿6yIÒdÀ7ãTªz„&Å6iϹÇÀC~èÏÛ7Bd¢Øšœ§l Ð])í=¥l¦BZX?ìØ©îoUšlšckS`8š°‹·ÔFòj·z—€w§jEX„]…Ö=€òž­×7ßL"õÓ,À²˜mbh´LA­)`3™4c¦ âî ?iªõýÜYŠb:ñgíæË~ó–ªÎ‰f$0"‡›'1ê“–®É\3nQ;†(²ESÚ%ô2e&JOe²¥ZYÒlsš¡š>ß ÖÆ—dw@…KÍRNéXœm5¯iMÂóHj\ŽX¸SaüX±Dà±md ¡ Ϋ -–aF™˜òꞬòù@æŠó¦Û.ŽˆÜZ=)ã“°Pü™¸l3ð3"U¤^Ã…Ý`½Ù0V …@g;ÚÉúÄ“ hm¢£ÞÕm~YHÝMÚïr•Q«9ôœlŸ—— qó[gmáNJx’º=ųâñk’þnŒ Ä£ à„Q¢PŠ£ 7q¶Æ$GwÓŽ¥ïåv´!5¦’#=fò°iê•Ó)F`Œï~bÓl¯r) ÝdCÿUä7]*¿›%·»"ø…e|wŒ„Îu3;iÔ%Ú¹õ«¾¯ *q’ sF*áî‰8ª†Œ|¼›U ­µÒ¯®§_§‰Ö”Ÿôä+¥]€ë¬sªõeJOJ[F‘d_?,¹ÈD#•J0¯­¢V)= ï¦`¥¶a ñE‘E’YÓ”¸½41ŒVœ8™×(žF›$‰îPI–ÐGúЫéêOó{kŽëû§£¥kœëwrºRd½rç®FöÁž†æë÷Ø<qH7†d¬Œk”+XŸ`¼äˆ·àM7qãÝ;‚9¤á=løº¸D§ãûcðÙH ³kU'[<š¬W€­H·‚X<æK÷  4 ¢w4ñ­_:ÅÂ=…­µôTÖ©9/ýŽyK´ú7£v ¤lW á9⩤h•iÍHNðÑÐS®¤»Þ°˜J0ø6OœØM º&Ùêìpj€›ñ;¨þ¹à—̇v‘òd£ÛTTfA‹ÛY°Áœ<3gZ5ŒÐزˆÈȇ0)é‘ÊMöa™Ni¯šˆ øÇ¬ñ\j×X–_”Œ•ïÆêßrÑVèT¯WQ6QÑ™@ê‚J]Âdþ‹f­®“çµ³ÄÄ¥¢ ƒ¢¥HäMrùn§œÇ‡È>{ŸÍ©òó214ƒŸbÖcVÏÑ¥°_Q—âPÎw5Ö…n­hnôÞØŠ§ ¹çG)r{]:çE8˜ñsƒ{½T檕o8•ŠœŒ ÉÒ¼™å‹9³ì5CÄâŒ8S¯$‡}¨Sד0wnÃe–~'Ï­G ¥WýÜfʇEº5ºìÂHóºÒNÜ@™Ä†Q Ö£æ7‹ß÷ ©ñË­Š—µëÈ*^GSæ$›ÑF€ #$É–î¦Ì ]¸ŸW³6¨ÓxÖ†d‚£é†ç™±ºä÷‡ehEXF ‚ͱ™5NCöŸ¦k[L¸Rø—IçVʬ[ñ“º#ê¥2Ø”•S,•<–è»d§(Œ¨að8±²Ì ˜²÷šCË I¹÷Pä^³2`˜°>óšiƒ(öè£äÙ´ºÔÆ&“JZìïàø{Z­%8†„tO}H>é p xÊ&XX^·tÃ_ÔCañ{RbÙ¹¹È¯ËõÌQ×ÄÊ:Áƒ\žYD?—‡Ø„Iîóƒ*[–å3v=¼b‘rÂt壹!q ÞL½ :‘ôSAEÉEˆÌïÍ s”’iåÄ"ÀE½¡–2ìUö …‚·Xn s>´fIäñW—š¦¿âÒ²;hŠkW­29e~Ûv"0ÄÏä¾ ¬–ßy3AJ=’B#áÆ¤ºü¦Ñ¥@ý?ïsþ|åžVÙÉ‘ðÝ'åû´gäY ;K—/8;à QùžÃ#+ƒDYçè%—X•qÎç±4̸ÊÁ2ö Ç•æVÔ`Õ bBV T“ìNÞ¡„6½ >÷óU_y<ŽZ™;˜–jÐ]×!™¶É©LM#1IÄÈ RËá`­D̪IÙ9fCÖŸ–_Ðz¨Ì| §ïÉê`ŒÄ0­ÌJŒ#NÅ=­ê]šß0šîn[ßÜ@QP7ÚÇs¬‰.æUÀõÅY9sm²\XRo_…ŽVŒ LYàîªã¾ÅkâÔû5v­˜ §¡VS¼sÕÓÝ:XÑÒk¾01!YÙÁ('…ê&2W$¨ÉdášÎ×ïUY4Ùå#ï#¡QC "ŽÁÁÍò žª´³àMeÉ"Õh­8ëº4ÚEãÎzES¤†[ù$& ãŒÇ6>Áwèa{{‡ZöjI>JmìèÇWûvg¦ ´QÅu s˜Ûq´Å&€¹Ù\ñ»9ýUl)V¶³ÙÙµX>~|´svÕ Ù‘1´HŽ÷yZÍÞ‰uSÛ…ìCͺv«<èV´`ÜÆ„³í<76ð;Å6:·ŠbAÀo!ÀÝ|¾ƒ¸¡(ÕQ´jÁ“Îå))ÔËÉR ƒzHÅ[öÊ´è.I k•U&›µHIk„Öú¹bŠOm@ÃËÄ¡gNŒÄ9àîù“²îÿk]4RPH*ðR­ÌëòØŠâ½Xæ¿¥à¬Õëú¤%ÇiTúJðó K@éõ1Ù5*ÚÍ/ûÍžàó»ÅX' P gÛ3I¦@o¬µ´Xœ…úAraÍô¡¦S))Å›4¡¬ã¿ÖDƒ¦6à6Eç.‡óϹpOü]ŒJš\½JÌÅÞ­4gÝ:ÓT2ˆãûPrÑFFré|¾÷$˜€SþsÙ^–àÇj bX/8ØQ Š•ͳ·GK‘[½K †PvËÂr;s´¸mbp«Â„wtòÛVrhYF•íD™ö¦T«hV¥ù,/M™ZŹÕ&žôFÊÞ™ ×>ÀLÄ´)MP8±Ð kÊ­ºL1Èc%ä2-Á®éV.Àó/ˆç6ÄY­NÎXÆ»Éù¬£"uäkÉŸ;=äÜej#–Î6\ÀÉÐVàh @¡%»ÊÿëE}5e;V¸öûX¥„ðˆ(82÷,&{>2ÛJhY¬ûPÖñ TÀÒ ®K—ÆR©&Z&ƒ¹»dûÂÈ`Ó´7Ýê´)ÕÞS¸ÁH™Ê»kqJLMÞ1KÚ³Êü¬ \< .niþ®7öí¸kÖö¯à»×½û$žQ¥ðÞý–ȋۧ”j„)ø#[›†ÊŒ—…y$ñhÈÐ÷ÏÑ:몥Q †°CÚñ¼p›¥g* ŒfŽ ‹ŽT)¤XÇ®+YI¹¥©¦Ýʆâõ$Zqcö¦ËÇ™È[¯Ø+H'lﺷ0FÖV@º5eÛ몹 >u¡æ•gÏñ QÝLÿ»Ž™©U³A ÙÈ›µ¸°ªöÛ\§ƒÉž© eh’ÏÎðÆÝyãþ äg1){ÁÂ$‘·D®T‚¨Ö §.§ò2®Zdm˜¿sUhÁsÃæÅI” gr yÆ}ù¸ÒD!ù')©n1ÉI<˜sóXu\Àá:¸Kò&« BîÀÔ;n0‰‰õÃéë,4³~šêqZ’ N’ÇÚ!=Õäp‰›¤hÎtkÜÌŠ¼J}÷Ç´-]B"ÖwÀf[QÏî¿zd›Ì:Æ ÆR½Â½Ý Èv¿F»b}Â%ÃôªOiì:?hÝM”±c*Á‰+:csÅ>¡ëX"7j¢!> z5(•<ÁÆô°šË"µ¶m¸Ék=ó»´ÓR©’ÆX#×*XƒÃª™"—é·l.Æ Ü÷S}ýfæ^c]Råî¢16 ˆs²œèRs˜hÆa×vv¼Ú‰ì¤2º‘°dz*.,NƒÌË×k¹øøôHœÚaáï&¼Ö.t!#u¡C) +›­6a»dj¶j³ë´$’)PoÕm»Çm-%p©ÔÎárÅ‚sf­»$խбG­ùZð³•6ž) ˜l˜]4ØT{_¡VõɾrâhmH]°ê¡\ÌWÍRá@¢°W)"2Cq+ò¹ºœœ t¬ 95¤Hø0O,›bƒë¨ääLc“¤±ïë=…s‰QsøGav¥k%® ž0–vØ“†æUC:WgZ¤Ð77Ý¥xƒ†Vƒ©Z%ý¹pÍF´æõÎO&§×L£ŒƒI纪ÁÞ‰¤¶ª‘éy×ò´õah¸ËÑùº~Èw†.`½ùøØ¾gÀípC´ÀˆXZ dgD—Cî)ÅôíÅÿ‹endstream endobj 110 0 obj 5878 endobj 114 0 obj <> stream xœÅ\[—Å‘~Ÿã1]^uQyÏò›Œ ¾ÀÚ†YûxÁ£iiÄáeÿúFä5"+ª§Ç6öá µª«2³"#¾øâ’ýõå2«Ëÿ+ß¼¾xï“py÷׋åòCøÿîâë •n¸,ݼ¾üùܤ<\™×eU—W_^ä§Õet³Qëz¼ƒ¾¼z}ñÙAOî0OG·˜Y+wøz:.³ÖÚ‡px9é0;WßÁ ³µvu‡ûIÏ!ŽÚÁ½æð"Ýgsø¯á@þðþt4sˆ ®Îõ‘ŸOv6F93懹x Kùßéˆÿ´«†a&ÎÖiøî±VißkëgãŸÕQ=.n]u´‡¿ôa??LfŽ1ƒKÑÖÍVÿª>ô®ÍÞƒ$o…—ËjcëkŒäâ›,ß´Ypõý_m¢¸üƈ <ëÒ?¿ÄU”&’^öU|ë0¾ÛÊ ÏNn­ùôd´ãô—«ß\èUÍ~AE¸º…]/ãšU‘!¾ŸLZ´ª‹®CÜâ‚,CQ¹åU¦uËZ§Õixg|/Ïà‚W ëá¯ÓQ¡øà‰6yé¼³«³ëXúö>«Ûë’Ú.tãë#xOР‡ï²jeéº^µ;o&ïdtý‰’‚ÇÃ죺<*3;·Æ,±¶¡°xc5è»ÝÝ=£<©ëÛãÕbA~Éj~7…Y/±j„±÷ù)cÂGcP„mÁý‡bû‚>ŸÚmÕP“àíW‹£VY†#ÅÛ®šÜp©M€4— ‚ƒÝ1‡+ eÏ …—]ddpº D.ú¢Õ¼¼GåN¢ôدé›ç“Õ‰v¥“„Cæ«ÿ7¹e™•‡Íð¾?ذ(r,*_X"¼á¿Š Pg²¬28à¬v1)ª¤õL0@ˆ.ø®[xÙ%í#±²fàåÛ¾á3³€ò Ÿ¼/Rî8òC}è«äŽÔj4ÞÁ,ÞÁôÑïÛ·ý>"Xöp…‚k6g¿… ¾V1¼g®÷d Èbkb¹üµ)Ƥ÷ ¾F\—ºL.Ú5ü9HÇ® pv4¬¦ß3×<¸ô·¢Á¸±®¸m¸¦/úXÃcdË`r€ÿXÌš­Ï*þ XÈÈúî틦ŒëMîÞº5=ý'¸1Gô¿­è–©›u0 qóˆø†™W’›—u0Ìù£Úî¿„\º5›Ñàl\©ï·‘Þ!8Zçç5ú÷SZ4ó ö®”(«Pksx\غfTè*Ü ©¾m†Q”{•[³ô‹Î/yMònr#ô·W߀j%Ù‰³½ŽãFõ{´&¬|$Àý3Ð:Ÿhé®'~ž7hÁŒÄ³,3ôÕp{„¡ ¹ý|«DºÝ1¯£qqF $‹m’ ê`“øÏïqq™m7+Aqi€òl˜y½—‚Ñ\¤¥mááÞ8Í÷œÃ̸ú°&±pã3¨•@*ÿ£Û>~t.M!›d²%³T;ºßº‰tŽv‰:þˆ˜uI¤»2®à“©[ÐûÛ!5!£ü¼ÄÁ‚þ)tï_o†>™a¿BÌÈBÌò@ÙDôaiÁå^ŽºY‘{¹’š¾=ŸtRNð„ Ç™&XÏÑ/¶t~Ý öwΟ¢uyCÂÚf*\p¾–(ù†¯û/p(§®Üú¦9¤çÛ×ãM{+âÎø¸6¦M™›i#E/ M¬lÔ~éú.’5¾Î–áÔ÷(0HqÞ.+3ÚÎJ£æf-K«Ü‹|ϵÚHÔJ_Ò§{NªJB–þPÞeK7™%1Œu³ÑªRÀ™åØ%YiÚ_0 ^á»I#ÑqGEv[r"%BZ#*ÜP ²¹ý' ‡’Ñi#‰áeQäÕò€1 ±³aû„˜.®~úX#Û%"ØasÞŠªy®=¸Í4òl¥à±5'ÉÆf’\ØBtÍ›ög1ƒ‰‹¸¿Á÷V*ÅÅ9K°~™ÉޱqkMðf9—ÉŒ1Á0«¯ ­A‰õÉ2|lƒpkV¾5 nK6 )]ÑÕ¤èÆS¶F4ø¡g 9Dä› ®Ï‡{x7%ƒGÿ`™Í˜¾z>wøCFnž(å‘%OåèvѾ•ø‚.;%䪷–ö³+›8îàÓ«r%Ä\˜~d÷pEÝçŒÛËÿÆ90 5%6]Õ‚iÙÄA|Ô$CË ¬®zQ6ES?R0›¤¨6 þtô´9 Ú¾¹›úψXÕšsé=¿X[FÂZËöµû€¯2)ÌŒ‡$ÁÅ}&¡N ·ùŠFyùŽ”†x#¢:œ”´üê‹ÀB nE\©îÑc°¶9úÜ=ºµkޏc&åõ©f4M¡ã.¿ fëÀˆk^\0ÔOIȻݪf ^ÒóÆŠTXL+Àjuì%ΆA«ãßHŸ„ôh6"6v»¨•@·_Ç­bÓ(óõTØ«‘ëKÈ-5ús7*VÓŽÓ‚®vü"g¹í .•XT]d©Ù£âôÎäú5Ž>U6:Ö·­ªÌÜmâ²Ú<Á¿»¢³o…,CÓÆ!€ÑñÀúi*ø1*Þ+ü_C«¢‚(ÜÉDDeGh7š¨Gº¯ž¥ÀªËkH:s3–(Û-š¢G(hŠKŠFÀTCʤÐòh’o—œÒ"µ=ªÿ0bȉúw\’Æü±áU'¦b¸#{ 1WTóΜŸH«ÅDIï½ €×kä3~³ ªf•h±•DäZõ¼¬k³ã°Ž¦Á«¤R–ù¦·K”D4ŸOøŠBM?Ît›©x;$«{ÞUbÒ_¥åûåkRÝÔ¦ $4¤@ÿ¡%¯z]w‹'¸w‹XÆN•|Õ¿ÒQ#ªJt4‘ÃëÀ›ë²žˆd:úùI@VÊ@ ¸ªkgSÌgiò*ë† ŸiøŽ}&]†Àg›Û«|§´žg¼_nc¸Ì9¶ :oºéžQ¼É Ta[É/m;ÀC•a!üÉT{ò½F]B”ËñVø¨¸èï¥ð3‹èiï3xv;Ò4åRoRÉ¢`ñ Ês™iÛn°GâM3Fµ÷È. +{G2IêHL6éÚž‘Æn¾³ãHb‰Œ„©_’³G·EÆ‚{É4?HÑ털ӺŠ$˜1 ¼ó³ö³Ò^JX£Á›u|ýM&s—îÕI%Î<‚ˆ$ûË ¾©\Ì­€žI Z«!¶’Ó6Ÿ½.i8I»…š…ÇíýÀ·ËX¤˜á¾veTÒÚÈ!‚ܶ@‹»q#hÎmIÚ²‰…‡M·£á©ó©ªó‚#¹ˆ U¶®%éQNÖ2Qó Éífœ9¶é^½æ;QF{sA”‚½áH)ö²Â Ų[a]l+!mø€Àðoô’BTæò9ŒdxºÎ{ˆ- 1ç25|A‡ÂØcÒe›yÀé<ã'`. 'g^–Y1i<) 3g£×ŽáET„Èb‡!É%€ðs˾uN+öü°V‰knB£©´#ŒX´šFêï’‡»¦‰uuŠñî4ù‡;¤|L„†÷Ú–U½ßéF¦| ú˜>“Ò“÷Ì€X~¶!Tí»í:YâO…ÉŠ8°'6KmPU{¤‚C!ŒD©$C,ZØÐ{Ä©`Òßß™U `ò!C Å=Vã•}­}š¯ÅbÄáwøÇïñ÷[º+]ûx/íºv«b™.ÖVp´!“¡NÞÕ›Ê {a}$D¶g¹0áªó[Âq Üma*ПŠyFq‡.ô ‰Nºß¹×k›u-kKÛ}ï°¦|ôžÖÙ3¡A©ð…ڴ̪¸ÕÇÈãR‰x`>8Í”¡ò@t–æ¤ll]˜¸iB<£ž Îãè•Ç*tÚ!ƒìf£lSÝìOİT(ªžH)Z×B@N¦™Þô„E¡ålÈåJ[„F`sv䌩\Ä ÷¼š—£ô8–Ÿ®‚áý¸‡µ¶¯6‡&¸¯fSÆkG 8®´Ì"i‘Õ¼¹mdŸûZkrˆ#ñµ®±íÒÍö»ú> ©…zm“­II¯Áãqi’¤c+9`ŽýÌ…a2Íå½Ò£ŸeÀ“¶go{OwžÑ‘j¤-úÑ=ΘJ´Žx€mî÷Œjè‰Æ,í¡qóÆçèǼÅN×›ÔnLÉH+cqAozAÿa2@%p˾k¥ÿûVÚÏ}X!%Íw°¢%€4{ÛÁëiI&ªèåÚœtõ IŸ¶Žv"ÌuÉÅb§À¯*Ýœ%$Ø@ä„Y¤XTòš¤´O€ábÕ\<àÅø@ÄD“m®ºÎÈ»ÿúIÞQ¸E(9¬tf€RÄ-˜4Úk$Œƒ‡V wcÒIê[ªN Oɸ¡Ÿ5­ód-2MK>±+¬.òô´õüJ¹fÈ;Õã~§_ºƒ‚»;°òQZ8M[º•VIIóTž@•µµùt8tóf‚=ø(«îgѲh4} Å û!ÒÍ+$}N¸¸'‹n­.7Œo„L2Þ,ßwS!Z‘“Í[6¯“!'š½–ÿ1GÕDúM9âÔæÀ螟&{ù gó)4ìƒ&[ÑWÐHñæ\u[Ws50M¢ Ø0á0•cL¢Q"‹&Fö ¥ls%Ì’4_õ€ïW¥ GÕTÒ7šx°`0‰ ÁcD‹ˆý=ä²,Ä ‡?M+î’ÝvÿøC¿”¥¨ÛÁ?×û£qp¶l]— ¦êË4‡ÿáŠ*mËè<"«q–ƒävQ“2å!ñ]×mfû¹þ§ÌÈ׿©ëÜOgÕÞ?R¿ÍEЉï©'«<ÑûŸ x™m©ÎRL>_LÛŸ˜: ¾‚>ÐØì¨KýX„P$c&c4ÑÔ½ñëG47››º»µ”°ÐÛSz}ô)âãòyPðØšü‰z:w=mÒèÃAØÝ#1Ã!ëF“ëËêâb& ³´ËN–•Eqd⺠a“ÞNŽ9pëàaÿØi”û6!Á; VœFÔÞP=Ä:›„ÜœikusžMéÈž>uvt·½1·h’EMÊ'¿rF±^Äaa¯s}Çûó~#‚åKCâS»0Ó|°Á½g~(ѳÚõxÛÙ™‘˜’òͲÊëDÜ¢ãÍ/¹ß’óür-q“aaa‰ö†NÄÐr‹yœÙz[lñаÝ„mÍNš'J\ϯ`?º”ûz˜v3VdVr ™¿ PévRÁ­ëj—Rç“Ìv;qþ5‹2R™¶Ÿ¨¤’*ÆeR^óŠËc9l¢{Ø<4h¶U¹s>õÏ-¼Š'“­eg Ê}09ך ÝÉN«Ý¤W²¦&ŒÓ°å<†ÈÚðܺ¥;»¿ h/iyzÃæûK_déâBß:dÑóo3…ËÆ>-àŸ%ÐJ¾ä*¡OÇo¿eM[¼h‰¤_ºü† Þ.ô¡üŒ0äDZBŽ‹õ3GH d䌻sŽrc†—ßϳ"±W\s:ݨÉ/Vô§ö‚ÉZ<ígäÅ‚,YÉ^á”ÄIxBW÷ðOáÓÒS@ÎÚ±õt+R‡ÌÚ#QûêäØa/1s cc×òTiú%… ò ©’e“£¤ºÉ=Ôv›†U»YJ—¡*˜yò»1ƒ!ÖŠK·Œg¼!8Ë‚{‚ÝÓå7ß<;¾(ž‘`ÓU$Y_µgû¬†]›MX1üµgvN&«X¢¦4MxVËÒ¾‡¼ÔOF¼›Úo:У‘×­nbÔXîǧBõè†%ù€ëìøùX1ã[¤fI¤'@¡`P¥  ôiÑ~‡}­í×ÀDP½‰Ã¬îìLœwO¸á,íĪNI)®¤]#E–ßà‡ZWŒ êÙðjM÷BœÐ¢br c`磸Sm¾d3"'úU½XNùˆm¤è?åŠÁkgÏJËZÑø3¼)Φ^IGÑŠ ¬Š+€hûU8³·¯R®<§ZÂ’#Ô°þ<­ i°KZ Qð[¾sU°f‚Û/¹Ì6U±Ã,!ÕÆsêý§ûr@ŸÙøÒÛd¸ÿ«[‘7Ý8vZ¤ž"Övß#¿ê”D(*Gz ” „ªJ$殢å%-Aê(¤ñ÷({©OžP¨üãv¼ù皆¼›¶ƒ,(îJŽYËn×VÿÙ9¼ÌLdÁs,oÇeÆ_¸¬– $œOÿðò€mÌHZèEƒÂ XjDÑ'ÚÿÄåa„éÖ+qæáém7š,£Çº%;]*¿¤Kü!é¿ßu]ýdŠ‹BXðg|ј*Q?~ýN°=Öiáa˜¸à¹Û°m ™ƒÿòêâðßÿyÜ'Yendstream endobj 115 0 obj 5317 endobj 121 0 obj <> stream xœÍ\Ys]Çq~gò#ð–{ªx/f_ôæE6ãÈ6mÁJ%¶@€hq•LÚ¢ª’¿žîY{æô¹H•R¡ty–9³týõ2óþDä‰ÀÿÊÿ/^?:ý£?¹úö‘8ù5ü]=zÿH¦NÊÿ.^Ÿüü ’êDšƒ6Nœ½x”ß–'^xgð¿³×þ¼ûã¢ÎIiwÏ}ι݋E‚PAª~í›e/Ö)£]¿øfÙ+h_™¸»Xöò¼v¤o¡£|Œî¯g¿Áþ8èá!Š(±?ö`Nö úgc89»„®üºâ½×;¹ØÝ_—½…Þ+v¿[ÔîŸRá ôîgð¯×øaç‚ÇΘƒ1R)èòÐÅhv‡èŒÞCKøªWïþÁÙ°{Y¿ƒ>hiê¢ýêM½…¦ÈÃßA«Z¦VñÎ ü§>[_VÚ¤¥«0å»w0$¸c¢Ý}È?½ Sgû¿Z¡•ƒ2hœïú>û ¿ Öîj±¥ûÌwûÞú0’à>Š«Ý<]p•Aj`]E^ÐSèÇ?–½†b”ågPÒЫ‡ÚÀÑ1ä§¢5tê^Ε—eú…$¯<¯—.û»ä ìæ·(¿ ß"¶å„»A' p(4Ðg“-l^¨2^ºÞ<6Ô>•V¨v¡w5ÉzW…ËÂ7O“œ–Gp÷y"AèZ =)ˆ¤‹5¬ Ö & ¹¨'QkáÎû.O¥Á›6÷Y?µ¦úé@¸ëBâ8¬•Êð5¬H#6£á)åî ά“rIX¥ˆ VØÅ€Ó¿W 2LÂtŸã#RhS´Wé.‡æF4”.ÀÈŒi¸?D6-Y¯+N¼àÉþY§v·¼C˜šj“ûjõƒiú¼tçàï#¤ u±´nµXØ |ã]oN3Ô+¢Ð\ÏóœY˜ô>Sdü«Þ&” ' ¡š$P‘@#L¥ÛHàcx\Ú$°l?_pTÒ:¨É 8:Amy©~ çÿM“Küh›c½ QxhU)ê°û²?۪撻K&tïŒKŸ}²ÈC…@ˆV’ˆ>‰Ð[_”MÖ¾iIQ'Oܵô³ÅyÓÔãã¢S/$éØ?q„ñú^%×`˜]×þ<€Sç¨ånXØq®ƒÛu‡Z²^+)-È·Â!4N1ÖÎüH…ÅU–k¼k¼–´¿^ûÈ \C£ª’–„Œ=év¿ö;¢6iñ ¬•’*úWV­¡`Rííðd/5\­æ×ˆBÆSn5®¡Í­&À˘|F½ÒY«ß-8+J(@¯½ñi^wgiÐh¶®[[о:Ä` i?5c#H/Ð ¦¸ÁÛ<(Kb¥­‡õA>•À;€D¾kàÝ¥A›(4§‹ümçʄ⃫ EMìæ Û* LX‹ú` êJ?Fà÷ s4~þ,ü}Eþð:¾ã%ÒDä±üùf]+°…P $NØfŽa›öVñ(¶ôÀ”f4¨¡Ž»ÿ@Ç7ÌåüÕŒ¤úø5± †ÆêÏÂq=´s…ë©=,5…­pµßòt“ôø Çbq¡‰â¦6Ñáözoñº7ôÅq+ÌÊ¢…MoÖÉ…¸йÌ颈‚¡$¦-‘¨Êt‰P»Ú¹ÕWÌupkw±K—*ôkoæ¾áG jéÙ¦»€Íw<Í“’½Œ‘¥fDB›™ðÚ,{2å§+éìì{²«++ÐEFhÔ†¸km“åz‡`„½N€Ðâ;¢@ל%RNq>©ól1Q²q×_‹»üdŸ5äo9Aœž÷‹Ñž#\j¸¬Öö§s]ÄõœÅþ8£ICH*Ðn fK!‚o–"²-š²x)Å …L“Ir˜!3N)Ëÿ+d‚ÜRÌTkćâ Ô´#jÎT D/w>‡«xÕE­Å$¬Øí`{ºhÄU¯ççH4à…ÎádÞ$t Pï$t{$E1jß@ïÙ¦œÅF“ °ƒ¬–|wÓW7:ûW- Ðy\¼=P1UŒ þ2o›îRrÖ#}ó°Ž9NG½xïÇ/±ƒä½w½ÝNU;žsnÜ(ÊÙé @¡JÁ("ÈÕ‚ëI¸‰$<ë²¸é› ±)¡l£tçé. ë„†²P‚žñ„3êø-“C AQh<¨«RG'<¹H,íõ&'!-¿ïÜàÊ‚ 7¹|ßùzf÷F"-ß5V®Šƒt™V|µx|2z í(gs€ƒ¶&6…<@µ‹æˆvM·k°Câ ù.‹ÜB“Ab‡CFaªÊšp;è¯o ’N$I—0LŽæ ɼ ¸T“#C˜Â€I(ǦH‘à¿#<:-~[çõãb X1•l#9%·]Gsk³¼©ÇDO{T@†¸€Ðí£“ï³Z%+Þƒ)˜Þ¯#?Ó\]•.‰? wmDüü±ˆŸtÉ@>h¬$lhttU´°‡ûy*µi6 £e†ŸŸQøIÃøùmò‘µ]ÙÿOM>¹H÷*PÑï)ê©¾Ö ?DÇçgíàiEGöaä«Òk¥oŠÃ_gGE ±®XÂ?´u$Ù"bÄŒqŸ + ç~ˆÃ’øHQÏòJ?§ÑíÖ *>˜$©äýÜž<­À‡‹q–=CÒv~„ŠQ]aê¿§¤Tˆ‘²LÎà€Oåe1=E™`I=DÇÀ t¸jûc7(˜³WåS|EOÁåk¤×¾dPª}¶D=Òá*øy‡8¿ÍÑ ~ÙÞÏ#5uF°ËÐ!bкûS}ÇÿgNMʤ1>ÍD#Æ„*‰ÎS|˜ï‹Ëã î¤h’Ý u^f̱¼0Œ |FyaQxEÙâu‡Y.TBÂàcšñ¶&ÃHÕ+½/P(ÿw±B$ï§Â‘uÎéOžUCÂßg¸7!‚P¯AÏ–`ræ«óg˜‹cìƒ8ZEÑÙÂPÙÊ”߈¼ÙópSî¦_äóÃÙ‚&ünCLŽgДíäí—†x?C @æ6Ù˜#aŸôi«"ŸXS»¿ìÚÇmÇä)Ðìj˜I:SH+ÉåÿeiF‚ºk5|€ ߊÅmºÎ87¾=ÆfwðK¿ïĈtˆ’4|¹þøíŒ~d¡HðO[RÔQy>Gu' ºKØFÒóYw­UkBOiÓŠ®¦:­PPqò78SRêâ+‡d±Æ‰Ýü&fˈe¦…BZ•xèš*…æŸ,*ù U‰ÇŒ£Õ˜3sŒ*÷Œ:¿}ʼn¦²Œîbd¬ó@ƒ×ájü¦É~{KŽök8æAÓïw_ȹøþú\ÕUhSzßç•´N)u"¨ZT©!ÀPWl =ÄHg'Ùìþk‰"ÉJ‚SÆHÍFlä ¥PXØTzúÅb±sA³i¿þëóL÷¬÷,q‹ŒHˆ) ðàG$üÓ¢¨{5å]¼0¼\¥©¬Ÿ¯® nl`ƒ »¯Ðìp$wT†«„ˆdº„ Ñ¢Û"CøîTÐ:¢ R”jç-f†ad³¥¬)Qu&95$Û„é²uEêÈaoGNKÄ+Èd¡îWŠº‰P˜}}bo¢Îlfmý†ZKè H¨ØÐî+f§ÉCùN!Ro¢tç?¡ïC2¯{+t¢€hB¼Œ=Ä>Æq˜øE®FwSÊû¨¤|A Þû]À«3]»o"c9*1äÓeŒ‡·Uåãíì¡£\oßd¤ ëØ £ÁG kÜ¥ìi7R>°&£z¿ÎÆ(ß!í ;ÕNcÉTt)¸JÂFÉYÚÍV7³¿Z@6`@i»ûC•”P¥E͈j÷`´Ž¡ù#?{‡çmáÿIÌíÌðÔV5Ô]O´Î fÓDxþiQŽ>à‹pºnq@¸·"b‹£Rzʺ+6M5­H}ŸÍ!EcN‚Äœ&å«!Û)6Š/w9›ÒSy0A"V~@Æg)ÊI’©ö…~ÞOcuS üTÔ)r9æýŠ:AĵéµO·/ C‘¼d3…°åðÿ»_)”Àr@šáqë ‡2þ(Hj»; 5¦é 6²X1¬r®ûØÐvc€ TŠú€YwSM(Qÿ£8ŠYuCß]B!û Œœj›JY‰*Lµ!}ZáHÇT(ú#Bía)Lðäšó1RVì„ãx[~üiͳ7¥üšª{rH÷ÖJ;ÛóIi Äbhž<ȼO”¾Ä7‹æLûvœ—wÙ·C‰ãv™cØ•®Þ»€°%ìê­¬£sÜ,ç"¿lϱ'y‡Ë§£ˆÎŽp€ÿ"5JØ€ïÉÍ윕¯\RÔjÖ¡8âëŒF´O{«RôäÆQö Îø~Ý"Èotü£ š'uîdDc-`Î{˜¹\Iðv?F UÒŽêGãŽ^è±êý\xbuË诋tñS4y<–†`•{˜xbî,ZA"cµ%CθðŸnE èápW©|°Z’Í:}CMßdó*ϳ©Á²t§Ia6G¯Øx–m"Њ8{kd’ªûoÜ}Çs–H æ…B6ܺØòâ5 ì#ôŒðg–êÞüý}ù¿*A7…b£ )ŸæTF.¦ðY *DÚ_ +ƒ¹:½û× “Zõñ¡Lt!î`¢‘<š)³ôSXèãbxúƒwÛþ*KÙñMíÚT¦6.©)@/*µ"9Î÷ ?ßJÈÏ ŠÄ9+[,ØéH–9_åë’U}/%¡um¶S«~e—k#ò&¸¿u "<³å½ô^ 5É~%&³÷­·vúbG¦½“§ä}·¯=”5¥F‰3ÑmH³ñF!eï?íPÖ4Ã¥2¥º+ ¿] :zD¦X–}”¥×y·Šäå6 G¦“KXćÔjá—žw°Îû7%Ä­I²| ð•L8>Ÿr ½r ™õRT€¤9ÙMM^«#šâ”~ §—G*ÓnŽv†R»%e)ùŒZKòéÌ0=1gëËZ ÿÄÆB§,ÄäCOPå¶´ÜU´”<ÿáz–EHN|8¢Âª}OÙ”¦J¼êrÔŒ1ÿlNåô2‚)ü¼‘×ϵ@am»˜ayÈ /ʪ»)}‚ø›«´É0Kqv~•9@_óõ™£«~žÆ*T0lœå2ø›"žº¡‹ëPª{ÒêÙ2ïÞ‘<þ'ªyµ|‡I”"’’$ÖŠr›1 ‚tæñdX"ð&¦{”¿ä6€ŠíCñW@ óàŒ[¡8‘''† ± øÍ™nT­&¤ê/6GĬÒT/WþQf`koªïdà§Ïó“-¯ÐaëSE;i¨7Žƒý…¥¸§ƒ1캂6}ª8ï^Pª¦'žM:!÷Ãtº“G”<àŠÁ‚^½‹BóFªîz޾åÖ¦ð¨,&pkÆ>»x•Ùm=/,|7 ¬kÏJíDªÜc¤|7|p¹† ÐÓ9š¥2{BÑ)Í[¼ñùèˆõX»ß-ÌÑ;}÷Áóa½@4ŒÒ”®zÊ2ã¬t¿uZåtmµÊåCÙFà‰cVßn}óíêñö¾²«l Ù"ó¸Øo³) ä¼UœÜÊúGêàïYt29='òÕT3Æàø‡Z·Ry„Ä] ‰K$´z Qã d1[.­ŽõLŠŠ:—£g¶\Úz˜kAÉÅ5ˆí9­«] ÅŠ=¢ó®ãûʱ%¤•õ„7#ÏS=$®—Ûc#ÏCÃ*‰< 9ž±Px <óÙ–gãCëÈòí¬Óec·ñt7‹À§s¨ÖÑÃ)É^êÍ­êÖî#qê«+·Øçýj_v]h0µbÄÕ^oÓ$NüDÐ[oþþ±ŠØUôÉ™à€w‘4,ºà×m³Ö‡A߬=îY»*¦#ÜŠwRvc–‡!õl@µ-ª¹Ô¼@%îTEB;nê(ÆÞß®ª²vÜA±r„c8R–QjFc,ûŒîD¥$ªîRþ¼ï<ëÁâ'ؽûol0D,y#•Dláb+R%! ÇK*îÁ:ZfG«‡ µky×P{ž’‡ µ“ì4[úгf%ä1"aý°²;gÈ{_®8@òpO—î‰ùŒ6¶Ž‘Wöþéä$¾P!^ Yn:ÆEN Ãå£õcä d:SåëœO:3ÛðhùW|s+K+oø`%L›}§í¶cH‚×§¶Ì5Ì¿‚¹ù ”21n‡óÔÝç¸ØÐGðdò!~ms8ÎNñ/Ñp7óÖ{^‘s¶ª¿ë;ž¤X¨‹öê¼(»ç‡&¯Ûíçù6ž·õn; ßéý=gÖm˜¶)JGÇôA¼Ê§`Ã7tÕ'£‚Ìï­6 av«™£»½c½l”p7ƒÈÚrÖÝA¬ ©¤âÖ‹FÆþ„¥w//å žÝ¼N\òÁ^÷FÐmò›Ö»˜FWl}FËœ¹ò5ËåœÌ¤Ð|ˆ¸Y7"“}Ç6@ÞÿüìÑà¿ÿÊendstream endobj 122 0 obj 5724 endobj 126 0 obj <> stream xœ•YÉr$Ç ½Óþˆ¾¹*bº˜û"ŸF²$Kö„ìmdzÈrb¸i´8è¯÷C®¨êlʃŪJ‰P?îÄ"w‚~ÊßË»³ó×~wýÓ™Ø}‰ßë³ÏdzaWþ\Þí>½ÀKÒáÎE”»‹wgyµÜyµóÎ,øsqwöýôý¬~äl§ˆß潕fQ"Ló^/>H¡§%½Œš¾ÅóÅ'nîµ—‹’vz5ëÅ9ãìô?㿼ÖÓfƒ—¥RÓ‡y/¥”ó~z_•Þwa/æ½Ы§?Ï*‰ ÿùé5- Qx¼t€ð¶øw³X´VZçûU ÿú½Œ&L÷YXÔPË–|ŒrºÉºMÌ6ßáMl!†0=ö'?Í{¹XëJ/Ý÷'/Êæaðaý䊞ÄÅ踲}©vg_i«›apàØ°ØöèeÞâmÑ. ÁQ$üpñõ™Vrq8è‹+.“ôò]ÄV$ÙGw½ iO¿ä•—Ó›þ$kˆÖ´•Æò•oÓÁ É=tYï1³ß79]OŽ+"{\Ü«£ õ8ª]U_vÓe=àÅÀ-[ªHrÇ^Ÿ öRÃȲ_¾"›q,p©4Žb°Ä]qìwPŠ€&’˜¡3¢vÕi¸ÌÉ$Lã;Œ R㦗§´”[s@KUUÐêËYû»uÈ"Þ“Å+J›êmU JJ8¾?¿ê‚Zîô %¿3 å8c Ï/“Ï_k½B“jœ}†L´ä :»Hí>Aƒ¢s#“¬ P„зQP\@R—oè2Æ`"íYÑ]£Ù¢ò*6v$]EOëhp[±5thg̵ߴÕog«–p]b·í)K4Ö–ÇÁ÷޲Ú.ÚNׄ)‡öàŽÀÆk)SÈ-O0’Ã-›ùçìi_°¶ ¤ ³H›qÔ–Mª>ÎNß@8°Â5§Ó*wnúyÈëÕ8õî{º´dC8$RJÒGæüqBeÕÿ@ 3ènQõkŽNQs–pÿ8¶‚7«@tP%äu#)ÏŽ·C«»H&‡¡¹[‡ûc£ªsÙ„ö|YçÆò‹ìMplé åSQ¨õÔâW϶%xF%Eå!ì袻µÕbDÁ$Öµ˜aÏR+¥ge—Òm«ÕM”Hc“V;ºCŸæàQèuXY¹Íùh+c\'}©"‹Kð9\€ßÛ½£œ&¬=´´;ÊsÚÂEú’[8À£L`ÛTéÁSJëEHÙânÎÛŽ1#4zš)ŠD"œ†Ï€‘ãy1€äYPqØ‚Þ´ØØàl€LE±ƒ¢!*WÍæ‰Ë‘='‹tSih0{Ã`«k(J`……l@Œ#Ñ=€Nr§$u(½j÷FðVÌ ÄêÕ„ 5²ÿéÀQorË}˜áN*ŸMzhªÒ)8©™ü-d¯íHŒv#Œt@݃tMß‹2PÁG5D›ûGoä´¶AÉ?èj׈—ªÄ(ƼíE!PZ‚~Ís@´…\Å×Rj›€Â =$Ñ@+ç#d8Ì+y B$ЖÕÍ ¾!õ AΓcédñà öü©Â¥Jig…GÚQäa+2EÏcM¡žú—;zòô')ªæˆ¦w£dúHÂ)½=$=‡£\fjGX` \©Íðˆ-ý1ã!sИë! êYó"faFÀ©EŠÛ‰Ò¼«¾¶õ„¬ç¼¤§a–ä ©Lñå‘G\ÖÜ—ÞÃ/ѵ ø=ß›ª»’±b–7žáÌ3|/kè»bé‚‚pr“Ó[Óñ Æ©„ yfôråÌDäòJ#"+[ä`Y•[£S9´¢×—ä½¢±de²¨¢|¸j7Ÿ…5)Õšú!-ˆ€ŠÕ¨¹Ðü-!Û´ Œ=m•›'ê-uÂ("B7ž„ØéÓ™$(°c"!|"ÍÔߣóà(ée¤éÍŠ]¡)&þWé(ô‰m7듆¶fN…õP !,Ý=ÕÏÚ@p -¬Ýx"í©L¬£È€…ÿFhF”ûÕc×ðIÓpôûïÜÓ{„Y¾  ~wÉi#9­ÿ¥Kì\œqù\]ƒ¹¢)4nCÏ˶©×?PçˆfNÕóIó—²Y·"ê¿u>­C½ê%¢¯¦ý²F³?x\צºk9jö{Ý5ž½Çâ•ù—f&íüYÿ3\—[i#ßÚ!‡·J»Šã…ÌÆÃ|ÂE=ØÙ4‰@A`ôˆ?|`Ys¾îÄY™ÞTi:yEx4ô˜¤\ôhû¦÷ …èhâÍsì…W•‰7ÒÇ(è—UîWÊ®hˆZÓÏøìË©_qÓwsLK;çæ‹7Ô/£ëV<®Ø¤ë4ñHÖ™t@Öé­MeÎBu ÕšN °(Àö¯…N¨ÎOû’ ‹j¤$JVÊÏÒ h7GøÑȽë_g™}Zø¿‡Ýqn+½Ks-ÓDu°¬Š°àê·†ÀÑm"ª+®Þuè_ÐsyšÖ2bÇ¡ÙÂ&kl#5↵ÄH²ÆþF-!¬íEã¹j¢•M^ì¥/gØð±×¼–¹‘rË×ÅœÖÖðØ»¤ÇèrQEùp&Oq÷6¦!õËÖxÝì{È"Ð=o½˜œØè©ÌÒÖÓ×$ž»é£#º3VÍOŒ©¿íB_æÏ˜1Oi·ZÕ§zÝ)©  kYðZ÷œ]íCMu:(íxˆµ°+¹ È£"³wì1.`[Œ+|•¿”ÄÉãåPJz ²õX¾é8& ÊËm–Ü\sÞä‰õdá‹Çïƒñ[„zæ£]ý±|­Ñ¬ô§}EýÆ€ËãØëL>‰ˆW$ÓÊûôøó‹³¿ãç¿Þ.¾šendstream endobj 127 0 obj 2514 endobj 4 0 obj <> /Contents 5 0 R >> endobj 22 0 obj <> /Contents 23 0 R >> endobj 37 0 obj <> /Contents 38 0 R >> endobj 42 0 obj <> /Contents 43 0 R >> endobj 49 0 obj <> /Contents 50 0 R >> endobj 54 0 obj <> /Contents 55 0 R >> endobj 59 0 obj <> /Contents 60 0 R >> endobj 64 0 obj <> /Contents 65 0 R >> endobj 69 0 obj <> /Contents 70 0 R >> endobj 74 0 obj <> /Contents 75 0 R >> endobj 79 0 obj <> /Contents 80 0 R >> endobj 84 0 obj <> /Contents 85 0 R >> endobj 91 0 obj <> /Contents 92 0 R >> endobj 96 0 obj <> /Contents 97 0 R >> endobj 101 0 obj <> /Contents 102 0 R >> endobj 108 0 obj <> /Contents 109 0 R >> endobj 113 0 obj <> /Contents 114 0 R >> endobj 120 0 obj <> /Contents 121 0 R >> endobj 125 0 obj <> /Contents 126 0 R >> endobj 3 0 obj << /Type /Pages /Kids [ 4 0 R 22 0 R 37 0 R 42 0 R 49 0 R 54 0 R 59 0 R 64 0 R 69 0 R 74 0 R 79 0 R 84 0 R 91 0 R 96 0 R 101 0 R 108 0 R 113 0 R 120 0 R 125 0 R ] /Count 19 >> endobj 1 0 obj <> endobj 7 0 obj <>endobj 20 0 obj <> endobj 21 0 obj <> endobj 35 0 obj <> endobj 36 0 obj <> endobj 40 0 obj <> endobj 41 0 obj <> endobj 47 0 obj <> endobj 48 0 obj <> endobj 52 0 obj <> endobj 53 0 obj <> endobj 57 0 obj <> endobj 58 0 obj <> endobj 62 0 obj <> endobj 63 0 obj <> endobj 67 0 obj <> endobj 68 0 obj <> endobj 72 0 obj <> endobj 73 0 obj <> endobj 77 0 obj <> endobj 78 0 obj <> endobj 82 0 obj <> endobj 83 0 obj <> endobj 89 0 obj <> endobj 90 0 obj <> endobj 94 0 obj <> endobj 95 0 obj <> endobj 99 0 obj <> endobj 100 0 obj <> endobj 106 0 obj <> endobj 107 0 obj <> endobj 111 0 obj <> endobj 112 0 obj <> endobj 118 0 obj <> endobj 119 0 obj <> endobj 123 0 obj <> endobj 124 0 obj <> endobj 128 0 obj <> endobj 129 0 obj <> endobj 116 0 obj <> endobj 14 0 obj <> endobj 145 0 obj <> endobj 104 0 obj <> endobj 12 0 obj <> endobj 87 0 obj <> endobj 146 0 obj <> endobj 10 0 obj <> endobj 8 0 obj <> endobj 45 0 obj <> endobj 33 0 obj <> endobj 147 0 obj <> endobj 31 0 obj <> endobj 29 0 obj <> endobj 27 0 obj <> endobj 148 0 obj <> endobj 25 0 obj <> endobj 149 0 obj <> endobj 18 0 obj <> endobj 16 0 obj <> endobj 150 0 obj <> endobj 117 0 obj <> endobj 130 0 obj <>stream xœÇ8þMSBM10$øøø‹‹ùSùA‹ ‹ ¨ø<÷*÷'÷$FLQCopyright (C) 1997 American Mathematical Society. All Rights ReservedMSBM10EulerR3 ÷ÀÿÒ8‹®÷«®÷Á®ô®è®÷Q®ñ®÷ ÷ί•|ÒûÐ!•{£d–|’Ž‹¢‹÷š‹“…’‚f“ZÍs«„•YÍH÷ä›á±‹÷ ÷û'»û ûÎy{‹yzž‹“Ä„Yü‰Y†„Rƒx‹zy›‹÷¦š‹œz‹€R‡“¼÷U÷£§°ŽÀ‹·‹»…Àk´´‚îl‹&‹JmX$xûU÷} ‹¬Éàµhû ûlxû2ûûΓ‹§‹”ø‹•‹¦ƒ÷~{‹w‹|ü‘‹‹p“yó÷«’ŒŒ“‹š‹¡ššs÷ûFÞ8*wŸùAžûb—³ ³  7Ÿ ® ® “ÁË endstream endobj 15 0 obj <> endobj 131 0 obj <>stream xœx X×¶uµ-]¥QTÚQSˆCDƒ1&ƌ™(­ B@QfA°»w7“ ‚È$(‚€ŒB‰Κxc4FoLr&Q£7ƫم‡¼¼Ó ™ÿÿ}ï}õië×U}N­µöÚkÓ»#“ÉX‡EöîSlÿ´’†Ë¤½¤×åˉáE]g’ ô“C¿Þ#†}k†ŸÂÐv #—Éœ\<‚CbÂ6øDXŽs°±œ2cÆt˹›ýÂ6¬÷²\äà·Ù;‚þg“åòàõü"bÞ°œ»i“¥«ñ‰pKW¿p¿°(?ßžµ‚7‡DFø…Y. öõ bæm—¹1AëÙû.vñ[2/ôƒ¥ŽaþNáΖÏܸâý(·MÞ+£7ûL}sœÍ´·¦¿=iƶSú1Ì$f³†YÂÌcÞ`F3KGf23†YÆ81¶ÌXÆ•qf¦0VÌrf>cͬ`ÞgÆ1nÌÆŽ±aV2 ™iÌxf󳈱g¦3«™ÅŒ£d3}žéË aÌ™¡ŒcÊ c0ƒ3f33ƒ¢È°ôÑ™½ìp/e¯Còñò½Mzš&UŠ!ŠTÅVÍžæ&r:îû>}Göýðµ9¯=ìgÛ/¥ÿ[ýëL›&™^Àˆðb íÀcƒF:aæiö…r©òÉàeƒ«ø>|å·‡ì7ono~ÉüñPס6¿ÈÜÓ_z5V1 J÷DZã(M*8F$¡l$$BbG6µŸéÖ:,ͨNÍñŽ",Z›+%¬’^ã±°OöÎ\;ËcÑx*bydŠ><7¹ïì>'Ó„.§nÁ*”ÏŒšõUà;_Ý}üý´+äµlÕ4r™'.ØŠ+Å B×!oX‰\ÁdŒ`*]£°+ëdÕö,,—0ˆÇa“Ÿéäm۱Ă ¼kïâ̯Ÿàì".±CU{k~c­Ç¿2&óô1úÕSChkèóãXdîáså#ì#òNjE­¾ÕÐõ£áÙáSdE–zSÿ' ìõYvyFh³„¸Äähˆæ¼j£+V—45û·¾gCob"XÍQß0–‰Ù0ã2»š°½ÛG´…Wã$ãJÍØÁ££‚ª»†}°×¸‘wT]Ó^5nZÈismÇPßmºt} P;O†a;Wàx˜í0f‘ ÆjøOšq¡ZsNöä„i4'øwç„H"O%‹¨´&bm‡âû¯¹*kÔŠ¹I^ã…˜ƒ8 *ì÷þœ¨Ø„)&?ËŒ»ø’î¢ÓŒöqÙ­=Æ_ߣWt í9ššÓxjEƽZަ?:]ÌVâ|ª·TVV—4žt«\å¸~µK„ lE–¼ó»^Iéø¾ÔÀÉÚ:œøý'uÑdVýÀå8åp×ñ޹ò§DÜ…®ü›p¥µ®Ü½ ó×­ƒùoªˆév¾-ü¸¶œ혎[WŰCq{T÷”rõÚTm¤pa…1…EûÊbkׯ©5žBLžwÉ\ŠÄ˜ï9úûTG¨‚R6BÄ¥¯i ä”L¼Æ>Êe˜{ÇT£ã­sW&_š_#,?°&@(¬…T½gVb=ì…œô‚Ì]ÜEâÆcEšÀ"_72„ô[ÓÖvþäY¹V`Ä­LÄÒ—¬LñuJÌÐΙ|ׯ0¦L?#Ð(ƒ#Fª‡cÙ1öûì_yJ¦<­ÆR´4òT6«€ô¡åfŒÏc¬X¥Ñä˜Ó`Zåš‹^ñŸÀ·€½‹ÏnoÉ‘®ðGük¼½¼¼jZšëj޼ @´ÑÿW‹Ùå¶µðãG³ZÍ•×%+i*OÆV­Ï^^,Z\üáó'Ȉ2!=´¯t† »AHÖé¶' ë<—µ-Èö  Lt˜0jÁ¡µ%‘ªö55;PÎ)ïß.Ô”FÄ•ÓãkÁ|Om/0&> Ú<ƒ#ëEÙƒN(È¥| £qU³%iᶉ)s`+ jÖ ±áDKë!T|uY„‡²£?¥uÿI‹¦,=·¯º±ôØ ï=qéBå¾úÜ:àî´9Ïqòsvœ§"k‰w|ha‹EŒ4—¥K&¶Ðä& ×ðõú³£t íOw/àëô“&rúúÏðÿqÉõ3p‡»9û"]çµ÷¾ëURßZ^}ø¬[îN½P{àÈ®*à¾L[¸1^GÌG§¨|´Z]ªn»N»FNeWbLìŽ(h˜³qWÃØÑ¡«Òz¨e——C×Xåéâ>åÑäÑùúßvÝ¡TèIÄPòµX†Ì#¹4€DòAû\ðÆÁ¡ÿLøî®>ŽS°Ê ôzÈàr·§%Çz#[29‚¸ÀH ƒ‘^âÛöÛùEÀíÊIËÍФƒ^eÄ\D™(9›áuDF->‘–¡-ÿH/ÍPì×fGétq ù±ë}56QóêmlvßvŸò}ýò”OyŸ>kËP à%“?î<å‘¿Å4žò»{©¿|YÛ+ÑÀ%o×$¦‚¶p« ÍÈàâd Õîd éEäqqÔ”S¹ÄÍ®ÂæÃ…{´ÅÉeèϹnâ.àS÷ 4;ƒÃÞ>IÇÍQt2 ŠYË#;ó>´R¨p({ 5W[C¥gõš”gis4:Ø™¨r\™â³aeQhvRšN¯n$nU‘V6âKwÒwe m§rš€»o¾«R¾°kÒ/Ü%㌷Pg¨ÜGÉ;éU·*iñ[·ÞÂh÷ø4º·‡OëŽâÀ £¨\Œƒ,q„¹² ]ð!_Ä*JZ² ö‰§ê.й¡FS៛¹ eÁ û*ê/z_IFÓH† |3³ßmrg~•¾‡êû/pZZ]'ý#—ÃloÕ3r‰_! É{¶VÃuØËá SbÇC˜cms­º÷S"eâ Q©Ù#iÏéhÚÏ{fSKö×sõ§â§¨,ª3¶\ˆæ£1ôÅá!J&øç³û2!@Eþñ×Ü"M`ɼZü:ÐZP·Wv=f¿úGýw•%©ñeBlJH,¬ç|+CëW–7ð¼LÍb ãKúÖsÔ7ÈS|s;ísIf6®+QµY¬Ø¯ }{O/î×§1«_?Tè×_ßÏ”aþ%Y‚ endstream endobj 105 0 obj <> endobj 132 0 obj <>stream xœM‘[HqÆÿ³k»cmÞb¢šº‹°y /Ñe£²ZJÝÂ,VsuÝ]Çñ²”ÝhÅ<•&™©™ši¦X” ANHJT„eXFwêLüƒ² íåp¾‡sÎïûC‚ „a³ÍîpÄÄþiè³}¶AŸc*ë²~k XŒ` ºðã~®Ç„P\FŒ ³fcºÍëóË®]9ЏØ)Æ$%%ˆ+ó%Ù•åôˆv§’#å;•1áÓ¼Y.Iñ[Å•n·˜úg¢PL• %¹XÚ9~ÚæÍ÷)’,Ú½;%ÙC1y}’\¨²™¤5$8ÈbÃ%f²ô03™}†pCÁ/ƒ¡–„ü­_¨Œªa‹fÔ·¡›Ãðè”P½˜†Óˆ‘¨ïßGÞaOÓi"g³?}Ó÷ðÑ£¾dk”}…MßAecU|¬2ï4¬ÒŒ¸Ê\};tv@™‰¹¦6ßeO/°ßÞŒâ Mx?oUÆŽ…‹ÐÅ'›Ê Àãi‡záêÏK™“꛾‡»×Û« ª«b¢Ö®]½"{¸‡Ÿ ïâ,•éíÇ3úRtp-gà2'¿Ãf­‹hø‰¡ÈÝ|Ý~üp«»4phO@SÖ——B"$?Øÿ”=r—;5¬õ<€Ð_µ•ß *ö« Fi¸ñ™ݘÂá´—ÃÕÇ¡²š?¶ë|E °gO·^w6n]—šŸ–!\1wj]üÂIô'´ù¤ÂJÓDsMÿç> bƒjÔõ…\#´z J%ŸÕ–%ÀÒ„¢DWf›÷R©Ðíï,Ú{åÐó½à`³]9Ö ÎsƒÅ|y}ÅIØ\(-æ›wCÑùºpµ¿!Ý®è퀖گ4¬%½FˆkØT ×ØŽ®î·£UÛ ŽòGKš*ꀽMÍÂÑcõKó_çqcOtëÁÆO’Óø!SœÍËÅÏ'Å›Ë|ÿì½¢Õ&kŸkð·ŽÏÍК›EÅ|å¦Ô °Ë §MÙW§cuœ0QYªMã§ù½–`ÕbÑ,Ó ù ,p|  endstream endobj 13 0 obj <> endobj 133 0 obj <>stream xœX T×¶­¶¡«DÄ)¥Äjpćˆ$1FQœ@QP™d‘yì>Ý ó<#2´"b‚DƘ¨ô%Q£ßè3/Môé)ryÉ¿šä'yÿÿõÖ-Ö¢»oݺ÷ì}öÙ§dŒÑF&“±öN‹\gÎ’þ ¾"_ Ž–o ™?åõ$ƒ©LZ_}Ùu8~= }‡ ÍPF.“98ºÙî‰ öñòµ´¶Ÿd9ÓÎÎÖr¡¿g°Ï÷K'÷PoO÷PúÁÏÒ%p‡ghÔtË…~~–k¥;B,×z†x‡{îì¶} ÿž°PÏ`K§ÀžÁ ÃØ9.Œ Øá´hoàÎUö{,2׺/© Y º?O`ÍÄô”fqT³¬Mq)šÈEoÈÄCB´F—*$GîY68b8õØY-ŽÂQÙgÕ©F­Q¦§Çîƒ`ÎýÐÞÚÊ–Â΄ÍZO–ްäÕïfàDœÙˆ\¶`ö‹Ñ«L˜Ø)>‘žÓ€#x’,N¬L„p° >ù‹ Óh‚Ò¢Ôš(àBUŠjÝ—}ûýªo¿¡¬õŒ€Lª8ñ”–ÅÚÞgûã³JÁ¢²òöçcCÏs­D"Eî ¢ã ÔÑ›­ÄO ć ‡DH ç(¿”g$~½«Çjº¯ñ8ÿ _•íYÄ?'¡+‹v×ïÜÿnÞe28W‰ãêÞ€Nîží52G ëÉǽªEÙxúlV5´AG”~»E`Õ¯JÑ)¦tÊÑÐ3—OÈ×h#è}Aÿ5ô¬˜Ôûm~œVS5U­¯³P¥ÕÈ,ÓUhË€«6(BÕói’›J“´š­£¸Ô¤×§i5ÆõΕ4hj<gÀ¸¢= ²óh%jÛå= =søjÈÞ¶w9±¬f!%p™NÆ“]Ä'‘I¨FdÑ MJS´û ^£L$S ¿q&¬€Ùe.z·øžàûâÏ;O_¸ú(ï\ìÞ@ës¡€nt5J Ù`Àñz)IŸP)È¢Pãa2…wÀuŠÚ°ŽàsÀáèg_ã¦ß!¯8»FøîPždÉÂ_¥¡7ç™ï ¶ñGNt—ÎÄœŒ·w]©RUuú))µd«(µÐ¥ßêgWâ=¹èŠA|uÔ6$_ÝÚ©tow)\C‘±™;ž '–mp N9ö´´x¤DkÒcS”A+–‡»Ñã5øÊie½‘®M{´²¹¼ép•žA.1Õn’pw¼Çĵô mî ì ´’÷Tã·¤®Rœêé9j(±çH,d’¥å‹[°»çØIC…õø>o)ðoo=Ffê-b§ìÚE½î4Óñ ê%ícñeñ3Ànér°%3”D‰Ý’ŒÜö“Vn7`ɉ¾*v”Ýú u8™´k>Y$ÁŒíg÷ó<(Û±Á]ñv‚ûÁKÐFÓ@¿¢˜ð\»"Œ{ÿIÏJÕcL×–]ˆaúkØ“'¥€ìÄ0^Ÿ³q Ÿ¼¢8ýÞÚZ}i[ׯƒnoú8¸ÇЪ&Wy¬j ˆ¤~dkκwµ cÉo`ÈÓ¬r‰+øA§¡˜&…pê‹Oºšãò”õ%5™¥ºôTêb¹ð¢ÈŠÊ+k¢šÜUáQá‚GÍÎ\WzLaÝ[Küò<Ú}”{#£¼Á TÕ»*£CRœBa-çüÑ2tÄ×o¾wõ›5õÁ‚[ÍJ˜M½ÈvHÕª²ãZ r´Åù…ÊâçÀåãÇáòíÛà°u+8ÌQž&nüçŸÄnôö^C³ÍÜëtË…¡XJ¶ÓS%êéõ€Ù“žù|ïþXR(QG îÀ;ôüÄëO±÷s¶/êGcQÒö)Â:J†± œ µ‹ŠÈ`Š ÿ‰n†ê¸eƒ¬åF_’‹ƒÅ|9dïKQCâ>!-=>95=°dW•f2ÈÈ184¬1UY—ªOÉ„ÖÄÖ`pçÞ²pWÇ’BJ…F»¸pHU–„äâl”TÊy¿e`q ‡ Å‰ }D™ÒãOÖú¼•ù«óá÷ѨDyÖ’` Í‘´­2ª•/<ŽThþÂæLؼØ_"Ä÷ŠßkÙûÿ‘ÍùE¾T`âôá<¢ÇfÃð¾$jA«Q#ö‰$Åy¥Yÿ¼Ç=s“8 ½Æ¿fÑ“¾,úgávÄ1¤h…¦¸ª ê:—ÑáÑåsÒû†¦ ¸ î•&eÄFj’c5ÊÔM~á°’/&ÝKéN¾B=uR<ˆÍt´Í°s^§™CÞ <‡.” ›AÞ_efIŽ9÷ò_JfÒ|a,‡U´N¡Õx–Z¦ÀÁ±~ î°¬‹œ>ßy,ä@Sx\úɱî_O0€ýßëÖÅ¯Š»Û”‡|Ï„dWy%ts²ö>³ÁpA…ìG Ôàv9zIò6Î@Æ¡‹»BcífmÎí¾NY«¡Ÿ]é8}EèvßÈ.÷ð[ «© ”Í‹—¨.vý€ã$‘”cHœoÛݸÓÃÏÇÓ³Ñ§í¨¾±M ‹Érj5Îþ.ý/SK.ô¥¿“8…¥Ä‰3ô°­²ówñó»rÌyëªôÏ ˆëÒŸ}ðàö2ªRÈMùsª¡3+Q?9]“(¨6Wn::™ž}ì‚™D¶¬yKQŒòäÆƒ)OB…¨«Â cëÁ•S…¿IŒfeNH4eñ‚þÎýô×jsó„üüÜÂÚÚ÷·Þˆ•*±ÍÇOŸþÃé.‘Õ*_ØøJ¡ ŠÕUTpiµëµf·Å½µ*26S—(ìϨ(®9¨z·Opˆ÷šóþŸÝüöäcAL’ÒÔÌKªßœ”á—R¨vÒ®ï_$Zä\”åÜÂqÀ]ïý†LQ)®éSwÿü ®Iº8EüæKαÍ%ú%°š¼(÷céjx /õDp§c"xIùdÔû€©ØfÝ#h§ã4KËIÇ–úÀþºîÖE«˜o¡žÇá?äåç^ ¤Ž ­k¸ô9H¶ &=)-%M­V’d‚±¨bÿ,]™ëàòséz™-)(.¬*ÃÁÄÆ<;‰zX —1‚Š­Ñ}L'vA´KÍl4D@¼6&#-#¾H²2ª<*¢ØO,qÌq,±‡ÿwwþ_ZÜa,;a 1!öiøòû‚8ï/è7“%æOÉÜŠN7©¥.ô»âÔJ‘7Èè3óÙ¥ÙïKq€:–ÞèA1—âÊæ¾±Ф%(ÇBÂb‹ñIËœiïìJº‰Î9Ëf$íÍLÌHÉ TP§'kÒ5æ„Áriv(m£÷Písÿ¾Ù8­wXvTfrXäSMË©xŠetw%¹aÒG‹*ÈÈÊ.ã^hø «_hü{VðFâÓ>$>ýµF s‹VLô¨Ã9zÙ!šAR=RáIþÞ¢óÄÊ…˜¤Úº7EÕ5ÔW¶”'—íÍô¹5´îs—Ú<í”;X2‹ÌÞNä6ÈE\þâöŽ å.Pý t)*s Š¶¹1JG-”@5Gd§ùi¶Q¾›=ôÇÿŽLã÷û…þ׉•=ƒhP½{>«03ï p¥…ŸÚ’(„‹û9VE½ÀÁøÔsâÞëMüÄão _õð¤q²†`:ç.‹õÿ”‘«)‹ȃÜJîwd–á]9´È/ÌÍùZⱋZ >*”žQ^™š¬¦—Z9g’56n„?¬ï›ñ)‹6d-í1'ÆÅ$'Ï {N§ƒFêÒÚá D×ÈðýÙZÐfç(¡1ÊÉ+Æî*Eî"òêe¤9K¤„oˆg~÷¢c{ÿŸ¼çu÷vž$F¶,õ¢o--^ S`£S¸÷ÿ|ó!»~òÃ#UaóÿÒüŸØß·ÁOž`¾Ôwíü~hgKËKËK*º6œŠo•<çÓ›8GO»KF;o‰ôõPîwãŸ8YÖN dÄòm°6d—ÒÏmK‚/,…]'bª¸~; h‚Ð¢Ë ;èŒ/ÉEúRžžì¼/!)y>ì£u†¢¥éï+ÎGù×—ºà>‡&–ŸRGi·öfÒ›EüBÊò%8“`˜,.TÔj2ƒ£Ô°/N zW«ðQ™TjÒB{ö½MšÌ™È“O °ÿsÇñ÷äxu< £.%c ªRCp©q—êò(%#Y Òµi3™KŒˆq\œFCCWûsuPy@ ²Î^BGÀeÜ ¬>Åa8Mÿ=³™ã(µéb (©Ž¶<5p.¶5–ŸC†‘ùóI…«Ðüû/i—o9ù ±æîPFÎñ+!ø½´œ=\ƒ\‡tŸ<ûÞ˜h oŒžï R,B)0.ÒëE½xŸÏͣŎZn/E2IûãtÁ™ê|uç®ØM€ú zîOJós³¾¦¢Ìár¡î<6ÚÏÙ™p‰3a3·¬ rj‹ ³³…ÂZ]:§¡Ñ‡WÅC¼C{ Ï]“š+#þݧÀ—ÜãDF,/˜¼¾nõ•1Þé9Â>r¡Ðúö5*½²×:]R³ô˜È¬¦»¼öLW}ëĶåQªµ»2ð5¾1ê UC”>ÒB½èoÛ[»tõù±ã'ê3q.¾'+Àn9~„‹ù{¤{Ư]ƒ&§ôø³„Äô–„dæ—Ðd 6~^9%áB}Ve%4qÍ{ª}ƒvïݾä”ëc:uúט°DaÒd4QÞMÛß-þ´I Š ¼5\ÿþ>ÜFÙ…êµñ™Ê<ìæ–XÛ¾0÷ÔÞÄqrŒü¬ÏÖïÜíçá¡÷;ÚgëŸ7í•?¹TÈ΋ËåbbÏ:ž&$Ml®,&/62-.&Eè5ýyMš'QE …å™ùÅY‹Œ3 à4–ãÖ¯Wƒ¯°p%‘K¯ÿ#UåŠÃÐÕZÈõV¥Šm×ý:éxÚçŸÈhÖ,® gQÉÎÅí ²5›5˜ l`bd[a:ðP®©)ʪMkMÍæ¿Fž endstream endobj 88 0 obj <> endobj 134 0 obj <>stream xœcd`ab`dddsö Ž´±T~H3þaú!ËÜÝý³äûRÖnæn–¹ß…¾ ~×çÿ®#ÀÀÌÈèæåœ_PY”™žQ¢ á¬©`hii®à˜›Z”™œ˜§à›X’‘š›Xää(ç'g¦–Tê)8æä(t+¥§•¥¦€-vÎÏ-(-I-RðÍOI-Êc```âe LŒŒLZ|ÿ™­Ò¾—ïd|òSšùgÀ÷rÑ™ »-*í®•ÿs™­¶´»¤da÷Ly¾âÅ?í°ýšÌ¾“ë ÷ÎY<< ½˜L endstream endobj 11 0 obj <> endobj 135 0 obj <>stream xœµWiXTW¶½Å…ºWEš›‰Þ‚N¢Á!(8FQQã**ƒL‚PLŨ(cM›b¦˜«((@D$ÆˆÄ FIl5iÓI4Ñ;çVýÒ§é—ô÷½÷Uý¨ú¾3ì½öÚk¯#¢,-(‘H$v]·i–“ù×dá%‘0ÑB˜DÎ61¥Z5 Ö–M9ñèø8´s,zý9ЉV®õt Hˆ Ú#³{ÍÕÁnÖ‚Îvo†DûùJíÖùÊö„ùÊÈŸP»Íá~Á²„×íÞ µÛdÞm·) : *6Àðj×ð°ˆY@”ݺpÿ€()EQÓ¤~‰áþ®žWD­ŒÞ³I¼ù­˜-«c÷Æ…ú® ÛíôÚçéóg,x}&EyR¨åÔêmjõ µ‘ZI-¢fR«¨ÉÔfj µ…ZMͦܩ5ÔÊò æRS©­”µZG¹PÓ©õ”+5AqÔHʆMÙRc¨©±Ô8jÁ‡b¨RÑ$Q‚è}‹ÙÍô_èË‘–Þ–Ç­&YåX!±3š)`w²U¬0¢qäÚ‘Í£& õ•uæè£ÓÆŒs~챟 |®kÜ ã¢Æ½?þ…ñ…ãL˜;ÁcBÿ¯¢•»©1¿ZX¾Ka}E¿lé®Ó‚ºÃÕ^9©ÖÈHUI°d ‚ÍVÊ4« d©*¹"åUœcƒit(£r!Ó¶¦ ô¼‘‰TyB8 ›Ì.@¾¼89 XØxÛƒJ‘–àlh|H )»©:¾8!16EÐx®§­£·FBB’˜(0 õ"Dõ!¿>Z؈Ü…:Y£´ugn0L…€ùiq¬úG1ž˜l%e>ÈO÷”àjÆ+ÖðR¦FÓ u`„n¨Q‘$Ö„v ZÏ<þ°çÒ¥’mëy|ðOVn‡(P׳c~›A¥ñV·AÔÔ¼nÓè¿1w0vG—'VWéJŒWVœYˆG¼þ2ŸÿÎY!›zd]PÊTµò R³Ü=ÌØõ Ï¡éhám-ç÷ûWI†Îƒ`«Õ ´0N˜ÂhAÙ¬6y|EœŒg[ĹtÍH,bŸu`’U‚ <º!.CnV1âT,NÜG‹G‹É™÷òI¼‚“^TßêûiÁ…pˆsø³Øzº½9ƇÓ¼ÿçqöâÁ«LÚÑ®~ŽC ¼×Ð^wâdY´Âñ„Zÿ†]à°ÖEî ß±+>ء¤èG= >f†¥¢—FçLK¹'ˆdb>MëILìü<žð­²è?Ù©+‘¬d}¡•‘Y•–×!þÁ¬¸Æ&)“b¢÷ì–n6S…ÈãjÑ1Ãa‰¾áXC'\‚&¯Â}E‰„K æË{¦R±F“£QÔ}Wˆ®¡Mv¦%\ä¤d¨U)¼çb¯žUM®`‹×b'òñÁ~hž‰V£ùwÑËÈB ¹É)jyº$ÏÆìŠ©À®À›£vt½}òêãoœðT½Ds”EÀ–@–~˜‡ØÃˆõ ƒè§>TÖO#^À Ê…©ˆjó¿L ÄüpqhÂŒX4{§›B)¹Â`‰™—å¦{KBþmK…Bt©-«oïе{ýâLl‰G­šóF¨´X'‘Uí×CÝodŒÐ!×Áú¦]¢… h?gЀî÷{x4Ï~?‡mME4ÕŽ¨Ê\yvFšJ.WI"ß’ùë;¹½)Ñ1™:.Íú²¢~†\lŸlFÖÛ‚MRi¡Ñ4‘Ë/†LÈcKäϸBFBæ!«†›hIxŽxÀîŸ#­d™ê*^ð$Œ,'ŒLÇö±Žx ©þÂH S[eZl0—+è.mÚŠ¾ážŽœ° ^‰ð싽Ñ4< ¹¢Uè54íâñ ü÷*¶ù ’ܾ÷=zi.–ãb<Ñqª¹w¦9š¥a„åuõ~}ƒF˄ɲ2buêT[~©*£ˆW¨£RAÊÊÊöUU—•U7w¬Xìþ*G,‘~†o>)Iæ<ÔC-| UDâ•ö¨¹ô¥NäÔkDÍ "4ñ&ò4Цñ¨€‹Gã™ÑËñ’æD±·*ï°U}Í|§ +1 ²ñÜäÐiüL¤Öää‘­M†í¥øÖ ŽDÑVmR½øjVJ d † T¦¸òqR¡ÛÜÂû/«ÞO½?“´¡$îþ±¯?Í×€:›OSìË€VZ•\¦××ÖGÔùÌ“:ÆgðjD‹ñ‹ ‚œ™iI«“|‡ÒÚb …H ÔþϨÄÕš¿“šàK0’˜9ª¢£¤ù’¹Wâ<”­sJÈ ~6*Îvœ½FlO²%)¥Î7ëż Ñáv”ÐN£›Â¢Á–M‹IMçC…æî5 XÐê-ɰ§e¤1üHú©ÔóÉÅÊCqû‹c œõ‰Ú1{õŽ–‡1¼¢2Õ™ªl(My‚Od@^˜“™YYÎç䦴¬eg7”û¸ëÂîÆÔIPCDîꢰ\—¸È6Tžú ‰r_Õð™iy¬r*ž9feû³©3üÖ$…²jôH<ÔÞƒˆTþß‹‹¨ØJR¡=:o&Ý@Çï>¨ü¯ „…è.÷}Õ§½ð){[ÝÆ¯ð¸ëiÍêžÖ¬Js‹œk„ÛÃUwU6KP3á4#­Ðœ\~$ba%,†È“>¥ûËz€ý¬øNe.$§@FŠZ"ß Ø » åtÚ9u^Æ å¡ôNEcXC²6²vK);£ˆÃ–¨T UPT™]Yz`o¢çO›³s-~A2Äe2Ž^4¢ùzÑ}h¢F‹ÍmjoÄöÈ-F¬ž4m¦’û70˜¾&;×{øÒUþ˜-Œ«Ô×Ü-çÉ)cÌEa¡ ÷ÍÍN#a€«‰­ Œ‰«Ž¯n¨¨1ð˜Çëɺ\Aèè7úŸ!0há1C¼F‘Ó*,™¡R“92«VÔ}]½@#a.·­Ø«.³õô~†æð<Ÿ\žÌEá0Ac¦­RÒùõ;.­.ò&“†^èôêŽrïf?I“SêÇ Miç“J2NËÜa3»Ìcù|¯uÚžüÆ.ÅUõau~™dÃÄõ$nn¦¦(ÏίlÎ/=ê×ü7"­–7¿EïÉÚ#KÛ½´þ…fZܶ4«QQ#ã`Ûvݤ…{ÂO\sVáU^oG«€Â`D×¥gYSpJaþãšg˜S=Èœz¸ÕÏ0§uáŠÿ¼æ©/xéië w—§®`3Ïkù²òÓçxô9ƒíÍÓJ' žÊÀ:ª©Žl;x–´m#1«ÊZØY ’<õ H`†æ?MÔzÿ&m²7-äî‹'S r*8Šœ ‚tU¾J¯Ì<2vÀÈC’$7j~$¾¦~‚Fwã%G$‚‘Cš‚²ì|‘ b²½ ¨; )—ïbóeVƒpÓ(lëë¼ÁŒã\‚bÌÄÑÀ\ÿ Çe|Œ£¿„êáÎ F1̲aŒˆÏN©^2Š*-LGç å'.g»ìPÒ”ûa—Ù4Wå„A²ÙeË¾Šµ6¤Ûšä%j€Ûš¨ .;Jµ" „ði½yC*ŠBÑËø›œ$¼ò W“WÎÝJZH܈¢‘¹B£Ã¨‚ƒÌô|2Þ³z»óó?¼x2³ÒCœ*’$ Û@f>²\]” ûظ¸5‰Çµb™?=sŸ™Ó=uOEïÌåžwé¤z©mil^2$± IòX²ø¦ƒL¤Äìž0/Ž Y‡· {»apLN´ðˆ€cè=©)7¥J ˤ$Wws`íª¢ˆ5¤+Rq©Ít”$¬,Ûºf¨$Ø„«v“Õ{Ÿ‘(“Õ±!}ZfZÃý Jƒ(u>ƒÒ°k×£DÝ¡[õ¢“£Ý}ýd ¿€ô Ǽ[÷4z•x»ÀÍ}T—TU]^^Ýû%UÇÏTöÔ»³$~ Þ¥\ê o°‹¿‰zïýöcgt|öΆ ÀV^(ù«¤'f3³):-)Εòk:8—ÏÝGÏ ôFÑQ o¶jÎÏ]xIpæJËZ›ËJ&ÕÕÝÐ Rô xz¼=DJuE*ÄÀþôÔ˜X|Ÿ±AýL‡>'xþ^g˜Ïµ@€¨f<“Á™ñ{aœ“¡Ãì¤Ñ(Ä u¸>;#;]#·Õ(2åÁ†Á¾Á=Ÿ=5¼&ówHÌÙ{†€O;þü»w¢YyL¾ÿ6´çƒï†}þIŸºÜþßžÿ›IÿìSê§^TAž‹þ=ߘìüºÎ켪À¿gÐ[vFùK4îÑ<¶¬úèIc°õâ-o¥øFIâBýB·ƒ;ìiJ¬=P Ù`–3áàcôË=â—E÷PÈmZpC‹‰«U&¦mIÙ—žº‰TŽÅëĵUï]®©&/W»ž.øž\=óSò”dW½6wÛIȪ¬)m¬‹×…§ª@­äutŸêö‹®åŽó<ßÜ´–Œ7k-ˆ˜!'€³+Ù¢=è¦Ñg˜T' 4‰åS~ØŒòäqšx],,0·1›+×(,puðä·M–Ù N%xT—Ý»ØúÖ-°Ù9šÜáÞ!3‘7 Þ¤þgÞ§Ñ?MN9IiJ8˜Æãî +)*›ÉªR\†¬Ñ RŠ:øë³Öè댓™ÕÂhn`4Vü>^OnBúSÐs›û6²^З ¬B®ÊP‚ªú¸ˆ¾œ@nqU8ƒÁ£AU¬Ð±1âP¼“Œ³¬Š‚KÅÚüÜëPBª¾Gl§GøOÆó¿m› ~mÇ¡µ˜ïd9T#öô•aÂî•h1J®zmUp—b[ý¥ñ1‘º˜úRm^N.Ÿ••IdŸÕ@’|mäï]…R­+Ï‘çô_C ?c­ilµ¨í:ÕF£³èŸ\gí'§àsöŽóEÇ×–¸Ì . ® æµ2ÕyNõÚþ¸°ö?¬~„è»·?rm_r†Ç¿âøÕ@Û÷AÛ•«—·º®÷öܸ—_éÁÕ&\ñ©M¨I< ëÙ¥ol]4ÏåÒíÏÞéí«7_¿r7…6v‹´¨˜FÕh#׋ݙ'aµÜº«&“Ðn!Å-Z°@'9œüÏ ÑYMQ|®8Ou4šYÃ~]dä¾ÄÈu¾wÐ84Ù¢0dÀ–Wfc‹©ŽØÛÜõðZK÷Y=ŸŸÇ¹AÄÙTݾ2ÂÚ¡ÎÔ´UÔÖ»á0n/”é=aìg¦Í~bIï‹îܧ‘[W+«Œ’ÆÉ¢ÂÅWÕ*ëžà§7½¨µõ£ü~ZØ‚>áà¶üfPÿîÛ®OØË¥óÃÝRÖ¦`jžËÑå­K?Œî"~¡³Ëxáèu͸Àb|Û k*â‘(ù"ôÃGD1¯•½[~ålà h 2ÝÜâMÄï‚·`iòúxlá¿Ø1±•¦¥•¸¦…б¯–1ŽìÅ´tÖ[ÐX[÷•Y¦¨y‹Q endstream endobj 9 0 obj <> endobj 136 0 obj <>stream xœ}”{LSgÆÏ¡Ðs¤à B¦=%›F·y›KêtŠÂ”á´0ï‘k•*PZZ¤Ãp±ÔB_*Òʵ+P ˆàEEq‚ È.^˜ 3çæ%1_ëÇæN½`4ËòþsNr¾ó¼Ïóþ¾—$\]’$ù!â…~Χ™ö÷Hûtû ¤:b7ðà‡kÃt~Åd´iZ:ÍHðH20xk€,Q­îŠUŠfÌ-ô÷÷­ˆ—(¤Ñ‘ ¢He¬$>RɽĉBeÑR‰R=O´".N$vžH‰%IE²$æ…r€,>Q¥”(D!²‰" Ï„èÉN…XªŠ‹Œ"ˆ¯ˆUÄvÏp“S݇µÛX\GIt‚…rªÊÐ 6®ÎBUm£‚uy'YFÝë¼öàiÍ6!Öüß—œna8¡± kÿ …<Ö‡"xè1zÂ¤È VV©)6Öl躸Ìwá<ûŒ,xŒ&Ö!ª0O0+K¯OÓ±òÅâ½@/ëF³ÑǃÝ'»R¬ܟybçÈ!°‘ȧܮïá!‰c>£-Õç&§Èù× a;ZH)`û®¿JÃi¨æê4T:û[-Õ¬½-—BéOÊË4hMàcC~^ÊtLõÎý•¿#¹ƒ5†‹PËUÔ8fÀYÖ~‚:[ׄ6ìE%ƒ^¯Ý‡ãF‡¼_æ¬1Û?1#Y£Ó°¹•‡Î:–3¯ƒM£t‡¢ú=söì§ý>ÿÏ;ÍWŒ‡Ø•ò4¹Ù¨õûóϳögÔÆÑ~âՉʽÒxé Þ/E¡h3¢‹lçå»*ÙâdÈ5=–±ª­2“5}(‹ï$”Îäå èÇ_ÿ†ù¾~³ð<õþGO‘kóÓ £r²ô9é:¡*(Lº " ¢*±9®º¡…Î-eŒèƒŸë›à*œ ÎÅ®N ¯N'?ãmhõÕB3ù¸õÞUškŸÍ ¾ ÓÈ“?tºíLq©.«@¨ÉIÎ-/×”””›l'vUF‹?Ûî+Ä‚%ò›xø /ç8Zj¡õe¬é\¬œN”è§µ"ŠÓøe0œºû£Ñ¨Ï6 A•%O*Ë,-²Ôï)—.ß½"6“Õ#’éÿ¤÷¿4\j“ˆT3ØP]¶MFÞ}èüO,Ó¼ÒìÓÑs¿ìfܤG|ï`‘[_ƒt‚zÅC­¡ ê¸jƒÚ1™òjAãø— ^Y’Ö‰_€ô¨ôDT«Î ô`áзù`ܯÑkuìµ ª8m¯¶'»"§4Ǫ½ ¹ŽÇiÿÃ æ£ þw†CMÂëü¡ x"f|ŸsmŽjg4‚F4ã67šoe¬ê2¥*E­TYR*­e–J!‡7p´ušÞ â ‡~œz ÿúœüã¬Oñ:£ñÕ^@-ö7°®¥üv¬\áŸõ}›ݦ°§3á&¨Üh‡Qœ¿›¬8­Z>wàØ€©‚ÎÇG‚1ŠÑ3êu×Aã‹–ç:Ö2X06©Ñ·öL57«æ··G¯…륚Ën˜É¦Õ~ËÂC£¨ˆ+Ðyr籈)ÐKÅ!kvÍÉ/®4©N)üFw@¯Ïf+z/Z€¾ÐîdžsžWiB㿌Uo ½ì®ª½£µî’Uh?Ý tE{É ¶S-¦Ö%jÒ¢ ­Y¸±Šù4$> endobj 137 0 obj <>stream xœY¦þCMMI6%øøø‹û`ødù,‹ ‹ ©÷Í÷3÷0÷-FKZCopyright (C) 1997 American Mathematical Society. All Rights ReservedCMMI6Computer ModernjK•ÿMUÿÿ’û`«øÙ«÷ ÁŸ—ì÷‚Ûødù©s•{krlsv›x¤¥©¤©ûiý1x@PXQ‹ˆoŒŒŽ‹Œš—’›‹š«q’}pmufVÊ´Î÷ ±÷ ©å÷ú•Ž”‹™ÃY³KûEûx…ƒ™™Œ™’¨Ìÿ‹©’rr~‰}Šˆv ù? û¥•––û`•® à  7Ÿ ® î:ŠÀ endstream endobj 34 0 obj <> endobj 138 0 obj <>stream xœ­y xSeºÿ ±éA aÎD†ÅaQa°ÃnËZ XºÒ%]Bº7ÍÖìy³oMÓ-éÞt¡…Z¶‚Xv-Œ #à€ÜëÂl÷*:_:§÷úÿÒÅîýë½÷ÉÃó´4çœïûÞßû[ÞÃ"žE°X¬Ð5›·¯_´0øãìÀTV`Ú¨À/ØBÆôwÉ@qŒeÃØ'üÓfNš€nG©O£…Ïlë·›ö¬ÉS’’³§ÏY3wú¢+–M_ž(L‰Í˜¾96;91=6ÿ’6}[f|JbvÁ‚é«ÓÒ¦o ^‘5}kbV¢071aøÙk2Ó9Ù‰Âé›3…A,ß´º #~safÂ[k‰áoØ&LÊJÞº6;eÛºœíësù;6ä¥ÅîÌO[üâ’9sçÍ_ðêÂEcE1Ÿ˜Iì&‰7‰Ä"‚#~IÌ"¶¿%/[‰µÄ"b6±XGl'ÖKˆ9Äbñ 1—ØIüŠx‰ˆ$6K‰—‰]Äfâ7Ä2"Šx‹XCL$HâYb4ñ$ñ1Žxš˜JŒ'&éD&±Ÿ"JØY YŸŽrŽ °ûŸÐ=q/ÄÃÙ¹ªý+A¾3:qô>i#óÕXÓS£Ÿzg\íÓÉOß}F2>bÂò ŸMl~vú³¥\Á¤I“,“wM~oJÌ”?ñšŸóN]0õ«i‹§}ü‹%¿0þâ=*”z‰J£nÐÛ¦/šõ+ñ1î»QYËð°ü¬‹sìÀ¤À®£Íê¼ ¤“Sî‚Êh¢÷jám:bMñ@ª$/µC¥¿ µ ÓˆifêàaEŠJ±x"þ£ÊèÀ*Ž kù ÄŸ³ d‰´R½6_IñÇ0$³ÈW9i`²YMNƒ•Ækùb^ Úí¬«bxж£nÌ1šdL¯/=©5»jMPGù¡YۤŠ•.( ´Êd?8,%Žòê®Ú®š.ås\Ì«!yYÒ™¯¬Lí‡MÐAµÁAm+Ö¨p+@©µ×é蘎ާ7‰ð6@£TÉÈ4†Í­fn…0‰œqß±>3L¬çô­_`V•Ì7á¯w3.xÎNžø-¨ã&2+Vï‹r¸Ãb0lÚo)©‡2Ò+rHTÛ";SÞyðù×­¥þ  V£L<—“—®ÌPè¨ß0ÇB&þ)C15ºøhË…–Ïjûi»×R •äÉTÌ‚dfŽJî‹Û`,5Svýû€t¹´²äq} ìÀjˆ$_éË8Óã¯q»)|š‹—2_`¾˜x¶â¢5\‹ÏêµøÜ§ÀPÞXZÓ}ýGѹ›÷1cÄñ´$E[ ¹ä¾†¤ã_¶¢¹§”Ði(…@0w ¹zOi­³Î^CWîDO@ùÉvßî{Âó%”òDJS $A^¶(=?^:rxÁŸ…ª¸VyÂddÈDÚ|ˆ^Ŝ֩ôjÐòdö¢ª’r[¥ˆ‘ùPÇÍn º†bï²kOq£T‡o&r‰ªëk|'bÚ72Ï0\f&3{ιõÿ‚žýÿy, —B£×ËÔêù‹5…@îv÷®ÿ¦î8}ðÊɶnpA·ÎGŽûŽ-óþ½¿¿Îþûø@€ko¶Û/éu ¡¡fžåä€dÌ—ƒ§l ôé|:ÈÃã üÇèv°D¼-Q­ã)dú‚b«ÖÖÔj?Ý mZÿ0ÆJ”)½Õ¨«˜Àj.C¼@ÃçÂàׯBPz€ç‹Íê Œ`áÿff ^z´¡\¶‡0léèÔ¶i ÂV y[Àî0€ÍìÁ½Ãrß#d—]>Tâs]ƽ<›P÷\ßñà q!UR½^ª¢R·JÔ"(¹3¿NZVXÍruÌü¼b›Î^b0–Xh»¯±¶ª Bá“·¹ðŠ‹ ‹e"³œY6eÛö=«ANÊ`uŒ63Uê­ïîØe²ÞðŸÏ I5Îá^—h肨=)1"[ž#Ý-5ç ÖÛìÞÚ†\ÖwÓFp,zÉ5vÀŠüÜ?F\}åa•g]Úüô ⢙èEб2UÜ„ýþNÖ!vóºýÂñ¦C@žhØ“3‹Nglß½½1ÚßÅBD?;pf`×`2ÚÁH:T&…V®×k©9 ©^¦‡|žÌ ¥ÇJ¹V+=µ…‘ùõ±¸ìlæIf3{iOØõƒG½'Ó®Ýí¹mÐÞZ¿¢£¤ß/Ø*ø„sT”x[þ¦ @}© <Ö:¢†«H{ëµí@îUœk:éG£+ºèÚ =';ÁÕúŠL§È™ù Õkt*ò! Qò€Ÿ=¸Í-»|ÖÔh M%†r»ÆRœ–ª>͇SjLÈ2‡ÞA÷êìy Å:¥NÁŒÜ8… ”«Êô†\¼‡ñßC×vzÐiå43e°^¼}¿äíŸ]n d âÞ·t¥ÀsÙ`© .û²ÈñÌ÷³ÐK÷اVr fƒ̤Qo—ëÔ +¦6­Ž¹º¥, ¯'Žá39Œ”Yþ·YˆB‘ˆ…R;å V)A¡¥w1+™ñ—¹lÉY4ób-Zt ¢û¿ø¢ç÷@~{ðåW¨ù ¥ƒüâ2ÊÍÔpµ™~4o˜òÂßgÆ<‹^¡MГŘý•µ­KGÞ^ëÐö°t”ÈA¼ ¬N«­Î\FD³m…µq½ÀÃëƒæ ¹ ?¾;&)%ƒ–öE—½©@¤Ì¤Ïesí­o¾d·s+?VÀŒÉØHK…1a»€Ü"¿k7aHžÀ‡^Ãàç\Eê6R · Þ7¯¼Ù WÀFöì?´q&óül&lÑñ¥|<ÛmýîP‡³ÛVO[}Ü#hù×&'‡«)3˜”Öÿô9uËkYhÎgÄ»ìÆ@-áÏÌ&–‰gäLóòýéhÚ‹ö£¤¢_ÜÄ]¸í4¦§M¿†ÆÑ§ïþá= ?þ œynIÃÛ¹ÞÀ°G¬ÂÝ6 †ìÀº?°Ñª¹ÃüE~oÐyÚ‚¶¡|ïç_ýŠáÒ̕ǰéÍIŽ6›¡³çöÍhfrD¾ôEz÷Ö7c_rÖ£v!óC¹‡º»8ð«ï»[aÔÊ’’3E”´ñ@Û íáÎöºú:o¥ò^—Åè5õ¤/$ÿæ6´Ð-Ø4ÿ6£?S‡Ì?¯•Y‹ýØ4ø*oòýhþÇ^Kx]¼ÃFMYÜO8åÎÅYÉ)ýÈTá¹fow>ˆoåÕ¹Eéjqä‘9ò²ÚÚª¶#qÕqs…̤%•ËŒ Y<¼ºÊE¿ä  hêWhôµ—Íœ~œàýƒÝÃêÔÑi‚Côa¬N‡~¬Nf0šKi¬vÝ\ÇAàº~ʹvêÀƼ¢¹‰ûè䄨üp\› œïtÞZZ1ï½ÁxI¹£É£ « 6€ÙŘ•©ä Ì|ѸG°p5„ÜãôÛD¥¾H‘AƒN§-)ub™2+ÌÔ;H0Œ 6¡ hsUTþ›ù9¯-褷·AÇCã9ˆ¨MS “h³h½Z_¼ f¸Rƒ¹ÂHU£0S S,o0‰S(‡‰ ªú@Q¬¥¦ˆfžlù'œÅ©Â>Øæ ‚¡®‰yÑÕ›ÌOs1\¨¶q? 4@•8Y¦åƒš”8òë*ü¥‡z7¸R›•#¢d§*Sÿ‡ÞªÉÖh7½bÉïïûã|:ß„Ówý“'~ƒ>?ÍÍ]&Råf¦ðâ÷ÆCH ®*{‰ÊIwqå‚4qB|{Áon¼w£’B¬À³Œ`æy -ri¶"CCMüc£XÐ3•y‚ eæ03–[{ýÔ‘Î’ú *åF3ü·VnÞÝ ×ñ&4Ú{Œ®=s´£å¼c™â¡}ñ½{ -è?‰ÛyÁY4áÝ` åò5 ¶2kaMy]É‘ž¸Cë™Ñq/GþúЏAE•wËaɼ6+g‹å”ˆ:e.L•wnvfaô[}I¿C/u q=÷VVÄ9¨Lk’Ž5Þþ[õíòõ6áîU>û3Œ3gðž^‡¡¢ãÉE•^w¹ËD™=Íh’­aØn;ŒÍUÍG.]û¿°Ûë’“ÓÓ‚=ü±€Èñá¦9íC½þ ÄjýlòÄl|lƒ\[“Ýhßf¨òò_`¾J³`Ç:=#*Óòl c?u°ÿ|HÞ|ã*3žbÊb³}è¿jö+¨,œ‰Ý]½¢5bm±x-Û«C>¹úÿÒ¦oí6U"Ñ«¥Zªp[:;˜tm}s©ÆTG›ª-GÁ g“»vU½zˆ[ $ö^qëP"×ZmtÒ킊!3”4C1mŠR!Á¤ˆM+m縡\ïÖ{µv=ˆA:EfÎb,=3&a»4Èy+ÞC¼¾´ä6bÿwÎâÒ ÛÞgc~õ`šùŇ=í´#Ë—ä­&W°ë7 Å0ž­©Â¦â<¹1÷ß×Å ¢_ã´£9æRÜQ–¡ŽÊs1˜%!K9…yäg sX¯Ñˆ@Ì‹j‰ïý÷S#x‘‚¾@Aì‰_µHÔ–Ù ÌÖ@KÏ0¬y·' gÏ{'ö“ÉèzžûÐ2/c )Ćú:w‹»ö½ëÅg#Æ~%ùNbíþù)Ì\õÉÓÑR÷åPòTggÉ2”ù´,M–¡È–¤JñGœ¨Á¢D&ÔÄõÞoA/™©‰ß¨ÙÜÚ<»8W—)¬R”V5T6Ž„Sl6°Ðž~´¯Ÿ=ðäý¢Z¯Ç½-áý7 yø ŸfXø_h¤ogŸ€¶j}*æ„xJo‘][^à»r ‰\¸òÅÅ«V|Pm©7¹(0Œ¸}]Å8ùè‚[duJ½³¢Ê¢±Ú F§r•Ô5;Ýí;.õ‰¥žC•ši¡_jš×oIs¨)žÂfè$?ùý¿Þ½ß°võ½R“CéÅ!úÏ‘áÅE?j1î¢GK—Ò¨LŒÓBq¦„ÇMRÞbt!L=çvùÜÝÿ•7ÙFêÚ×®¾œ [x VŒ3“›Š5Ç„íG}-•.Ê×Qzø0Ivå¯Å°誫ªm  mñ‚ÜÐV¿ÉQ]êõÖû{Ïê9‰åÕ&3èc•êdP 97_CEG]AkôÎ˜Øøjëz‘(¹p$ÕcÆ›Œ…,úúcS}:Nõi8Õ§þ—©~1˜Âg¸3Î2r{ëç>K³ÅGÿ[`öÏ£‹—')ør3öÎÚûh"æ½IhT=>|_ŽïÊ_b?ëþ×ì@kÐG4ØìÝ@z°Z>5I )t4ì5áà ¦ê!u*á”Vc/(¶EA±Õˆrpÿ”üU[öC$×*:z#VE²Ã×Z[—çÎÕFÀ¯×ž‰¿|ÿ‹ëŸû‚­ê<ä•EÜgï^@k0èžA¯s•™ú\“²´å;Ãà#÷™ºüŸP¶JËOY3 €Rì)uYÍ™ÝÚrh†6wÓ)ÏþÂspº:›~×Ô-€Óäãñü™…q9‘ü¸·Œuv9 5®£tzÝêsÆä½ ¥óÞ¸ïˆïŒxÜ.Öýó?¹ãqnTçAoçÁýÇ;ªêkÝTy[éå`ªU ÖRJaaX~l&ð~0ýh†LÂy1ÜaGA_™¢ÖSùGøeü'áŸ;Í ’j„—«ào~õq˜a-©4k­.zͼG¡Qh½m‡¿=œî®Mb³Ñn·è×Q÷ÆK(Mz=…Æ´ˆëøKSUæ2[‚{N Û¯ŸñµÙy0}ãê0æ`Ì<:goԮȇЦ±ªXèîCʰ«Ì*•^_$¥~=+L™¡Ui£ÄfÜì9am;F1Of(ø ùJà)†}º ÌGºMp„> =Ú£#6YŽ#»‚#BƒÄcR°O·39j‡¦½åýço5Í{¿<ß‹=l#Nýhï#1>¨ñíÞZ¿‡úÿ‹î ôîÐ;c#Ï¥„BŠQpì‡nûáª?¹/¡qÐÇ´µÂ}Å0¢fAzy„ ¹:™!  æ‡løašp‘ó[f@¾[¶[º›§< Ù™Á÷›’Š˜ï=šßöÙQ4½Ð0RDd÷±¾ D³ÕÈÎõ8Á5[çqŠä FÃu~ÃÇÔ»P–‘ÃĺBýOö¡ž|bYÕØÑ>ÇØ±ñÿ7¦öÜ endstream endobj 32 0 obj <> endobj 139 0 obj <>stream xœ”klSeÇÏYGyÅÅkªNñœ‚E‰ÑxA4Qa ‚ŽKÙÅ »XÙÖö´+-½_NoO×víÚÓ–¶¬m×±+ìSçTˆŠ(‰—F!/Œ‘Óy0zøÁoƼy“÷ýðæù½ÿÿóp¬´Ãq\XQY¹é™…ÓÊâ}xqiIñ~‘k˜7Îo^e(+-,öÜÁ¾v;»öVöÑÛ0Žoxµ®B®ÐQ­{÷©ÅU¬?¾víñºv)ÕÚÜØ!®lTï“¶7ªùK›x‡¼¹UªÖ=*^×Ö&–,¼P‰%R•”ÒH[®•®·+:ÕRJ\)o‘R†ÝÔÑB©Ô­²ªý¶{ÛUa;±ÍØ«ØSØkØ[Œ}ˆÛJî+éÜ/˜(}¶ô‡Esá•;±[þ*qŒ`Ö|‘ÌãÅ;// Øzö‘?÷'âohèô©éó€F{5õUœP[Gšd@ƒ INɧ~™`űˆÝï0{V7¡ZÛØ"¤·Gúú™È21>Í.†wÑçÕ£ÏV×I;Çìî£5°(µ¾MUo­²…\á˜/ ÌéÔû“€²ÝT§Î©µËHݰÍeÔor(Û]šR§í±T‚aB„¿;<ìEü–O\ÿ+=O}%(ŽÌ¯ùºü1ð¡ «Çìjs{ÔÄW§Çê]¹1Ì›@Ûh»Ìy€è|šVjÖØ’S[q7sws$÷Ðç·~ùáìÌá™Úð‰‡“Ð7N¿Ôí ™Íš¢ c•¶ºږΧýQŒ|ñ®Ú Õšý€ÞPO¾u*w%3Mœ==yÐGéõfµŠV’¦zðXxlü›NÌÚËž¹ãÅǰ;YBŠNE¦}]¡_Ðßsd"{äèÀp0QHyãæ½l¨3iÈä ™ã£m#’oìRhˆ7‚õ†¬ê]–pÿYGBùá0Áƒý$áõœ¾Ì®ør<³KϲOœ,–‰Ô.(¤cL™Ä`ôĹÍG*¹{W×ð¥ÇäDŸ.é~Ë:☳B5(µ2¹vªÎ«l PÇgºBÀ ‚"dÖ7™«¶“þÀ®co¼´*½'D¼ÞÓ‚I”J~üóø1‹2±Àa]ðõ¶!výaü3¾7•Åå¢_„iÒq$޲Ë ‚¯¼W9ØêPì²Ö&K³µ ="Ôš@kŒA’¼$ÜÊ9hʶŒå[O·¾}å,»Œ‰Úºh‹×ep^¯}‰÷^cŽ]w‘¯ÜzæFG‰.ãß_úTÀÎÌ—Š2úCje‡ª½ó¾/;Ð_ ¸•W"Å&ð(^vœf8ˆêÆ÷¾ýó¿S¡~®©©ÙÌõ‡R±A2’‹ä¢7vO3It¦y¤æáFNlºîZwÄOä<™+ŠGœr«×hm_Àø†|ñ»k\†YõEAñq,mH«Ú•r¥6¡í/dóY‚“þù´È°¥nóЃ!àñ &9èAýº˜¦CAɤcÔÜY¶dœ-+—Ø?üLWå³»m_Vyƒ"êó'BDáÂÌÌ@½ŒQftó‹§(‘E0*^9ŽkŠ¿ŠzF}]€¾þÆÈj)ºÁë$=¯¶©ÇÝ t§ýDŽÝ¶(nqõ;!ph¶pëîñ8Ýv ‘=D‡£]Ád71Ç>9À°«|^»ÛuÀë"¹{®flR·å(ßo­LÉÜ?äÈo…yøÔNð a…Ê]Jr¿ß€|da8¬zž·’º”¸6ع/Þå£vâ?M7xœ:‚[~õc—ŸyÞòƒqcz8|4 "“Ùߣ“³ôy-HÀ NÕmòÁ‰¶M7¼7™LLjþ±C@7ºÞ´ÎE˜ê•¯ÔRÒ™\ÌÇûH_ pˆOö×+R5¡±Ìð0›}çÄØ›<=ã[w: ¼ÿ„}bX5Z»½z·DBl—P½Ý¢é¡—ËF¢Q!×Y|tÉW7KJ×.»)(+ð¿hé/? endstream endobj 30 0 obj <> endobj 140 0 obj <>stream xœ-‘kHSaÇßãÙÎNº¬Y‹ìrvh‹ÊF4û`‰ µî°h†AÐ\ÓYÓÉvf[+V4}Ôn¦l+vÉ©éèF‘mF)t¡úPFA}èvá=ã l’<_þ¿~ÏÃC!I¢(Jª7”®œq.%ÎËçÓ NM­”‚œ¹äJjk.R`Ý4œ7ѵ~s¹Þ^wÐQ]eøÅú%¼nÕª~uÅQm6Õò“`µÔ˜„4ØømvsµE8¸Œ_m³ñ¥ '_jqZõ–=^½½¦Î%X¼Á¾Çâ¨EIóW,-Ð!4ÍDr4å &½&’¡ÃM©þ É8U‘‡²Ç3f” x‡üþ§cá¯àÝÊ`àV<èôpø|bqÖ¢7DAäEËówÞ8î÷®ß+×óòYç°_’Eê5Å$“LU‘2ËsÁ‘+ª˜¼Ajc|û½åž'¼ÅÐ,YÏü—Ö_~‰i|ýçPŒz5†+~Ñø þ¨½k\@k+˶—„­ª«ÑxŸÝWg?dÖŽ0ƒs¿|þñ~ÓȈj´{ø9¼eßêªùBcqegC¬7é¹¶Ïïjæn=xÓzØØˆW³®ÖänPÕØ„Æ-'4y›àënƒ \ö8]X‰Ôaüø~¢Ä9whq#Þ¯Ä ÆhÔnIà$㇈ €ËÍ‘$IÊÜ.„øU8MŒ\Ñ(DüÜäQaqø]GˆÂƯ´Ø*þQ¶µC DXr–q€­ÙѲãTS›/ÈÚ˜jR%íeZí/üçÚO¿†°ØÊhG¢u’|(Ê=» èïà’2ÀšK8sà);ù°¸Ø¿ÖxFiü,¥Pv56×qæ2§ؽ².¸C]ìßó²JŸGËY÷27[?@z>ÂM·Ê´¾Žkªìúpª8Lbl?ÏS»,ž9’ÅeJ Bò)ݧåò‘ |*BÿóÒCu endstream endobj 28 0 obj <> endobj 141 0 obj <>stream xœu“mlSeÇïíÝÚËØ&(޶"J ¾¢QÇLdD[î¶J×n}¡ÚõÞ;ºÛî´½ÝÖÞµ3¬¯“„½J|I€D ñ5A>©‰áƒFˆøæó”§Š·&šs?a[imÙ¸±Íº¥—ó¹ö8=Ög ‡ëu´‹ÛÚéÝã⃫­[ÜnëöÊ~ëvÎÏùös{« lÞÞ¾`€óY;¼{9Ÿ‡pùœ'àrºƒ—×ãæü~®?ètwû8§Vvç̹¹^­F+ØÏùüN7EQõ»)»Îó¨qm׆·)z”ÚE§š¥ž¡t’NQZ¦vR Úð”Žê¤~£h;}EW§; »Î¼Ê\«±ÕxoëV¥(P‘Zùhü–Ê`©´Ò8+És¹A€Phò¬'*Ásw„‰ZÖ?oÐÏÊò¬¥ÇHªˆ{ŠØU¤‘û{Á?áK8õúÙݳí™}À ðÂdG-?œÝ•éNñ‡–ºoöôkC?3r6 “e!]>ò‹†Æ5…ÀV¤FÆb¹¨ÏDù0IŠÒ|FTä$Œ)füqü_·ÊÓîQ5îpðƒ?ûÏê'Qª»š€Eëõ÷¤MOÖ“e¤‘l&›ÐR²µYPëùuzbbø#‚³wÑï:‚]…{è_6ÂU˜9rôСÃG®Èé„,ë CdÅÚ¶¸™hð> ïô{Ãá¾¾m{ðà¨P]s±kûaKÞ4ÀkàºÐu®÷Ûá“ÀNN€R¥{sºëñLL$œf‘¶;ïÃùxvè»öc{Tw ~€lu»ƒE¼FEþ ø"ƒ?/-3¦'! MG&2$ ‚dn%þZrI߆úGr±L¸ a…ŒˆÉ-O¥Ä<˜r gd…%-¸ÅˆŽêIÁµ·i£öUèÐ|•AëJι¥ù{“! …LçÍÁ™Òs3z² mPë®Í7×Õ´êç©Sõõõ¤°¬b endstream endobj 26 0 obj <> endobj 142 0 obj <>stream xœ­W t“ešþC ü`¹éF)°ÿ_Qœ2+3vœ‘ETÄŠr«”ÄÒ[zIJ›^ÒKš´MÿÜóæ~O›6M›¦iJ/´P˵ e¹ƒã,êà*èì¬3çKýÙu¿´ÌŒî:{æœÝ“󟓜óçûÞïùžçyŸ—CÌžEp8œ¹)©©[’ŸŠ}}"ºœ]1+úÜbÖôÍ‚)fÄs!~vÏŠ÷ 2.Ai‹ÐS‹ .‡óÊö})¢2I… °Hœ˜”²:1yݺµ‰Kò+y9¥‰©9â¢ü’1þq 1C”'ÈK~’¸ñÀÄôØ?*Óó+ó+ªóù3{§ˆJʪÄù‰©"~~E)AÔö¥yu"~Y~yZEaeºX!ÜU]¼­¶$wý³Ï¿@kˆ•Äâeb‘Fl"v¯éD2‘Al&vO¯[‰ŸÛˆ_oÛ‰'‰½ÄkD ±€XD,&h‚Æç&æ~ÎzΟfår)nõlzöûs6͹';wnˆLš÷ð<Ýüeó¯>°'~Y¼gAÕBå¢^¼nñ©%s—$-ÉYrè[NêëÄÂog…MD¦8Nt~ô<Ç€ÉuÈ;´¹å ®Ó‚.—L%@*¡Fî€6cè|t«Î¡‡ÐèµÚFvÙ½¾¥M|â9 뚦ßj¥£yq`«ï×èÀR³ Œ` ÍZÃèÕR%%øiÇnrM\=è@eh2h `-­äÂ)"(3Ýäç WÑ\^Þf~}–¶QÏÔ’*‹ÚŠ˜ ›:ýÚ^ ­hs1%-6VÚ!n«Ëîµ¹ ð+D’Èg¬ö²+ ‰,yC[S«Ï ÆÃ#&8Lám/à¿« RÁÖÒ¯MÍÑùÁ\ RÐ(UM$[{o íE·zÙ[s0f{Öò@tM€ƒ¾™l~—{û›É„L¨å7I¤‚ú4ÐMN0: †€•ò]õÒïjVkå oÐ ¿å žÆ¥£¾ÛÃÎá¨ô7š]Ì“B=Ô×Keº:P’•­ò¶p¨søÄ[ƒ/³ËÙö1öÑäsÏ}…ûðk·UeS©u:…Šz.‰å@#ÛËNLöÿ®ï—tdâÌÈèƒC Þ2ïu%ž_¶;`¿ÌA ·x§Ï…ƒ0ür|`àó;ã`&ñiuJ­ŽQS%ûª¥•P Í2_mG_ä‹™?©V›T‡Ñb5ÒmGÏìÐmÊŰÌ]P˜½6¥Vºw¿^ÏÏusQ:.>vz»Ñè²Rý=¡^è',õU·JÃ@þþz(dÑXŒN¥ÔÒâ­Ûj…PkµMà‘™«1¥Àhcµ2zÿŠ1J}×¹Qêâ}µéb2» V²+“.oºƒÐrD¡'(ÖÏ6ó²³"ïŸèBDï)úä͉æn ÏõìÛÁ¯Y™¿•.Ú¹K xÝY¤lf]Tp„3|•õLmàÀÙ {’ÑÕQ ½J d£š•M”¶fÛ$, í‡v»˜ýûÄš3[Þ÷Ÿ4_¤í9ýÂãÐ-½¾Ï0’ÓäÑkêµTÝVIZ.eÚ.§ÑföÑÛ¼<µt²º¬]¹R{ëÏ ìE‹:ŽÒ‘ó£ƒÃ@^ô®S©t*½:F”H°»#èÉi¢Ï\㎲ y N™d£j=Æ"¤B_L„Ï´†ê÷‚Íá>‚ÖÚ‚´§´»èˆDKÐèGwÓ/mØ»¯/¤›Ng·LÓ–‘H ;@û?iëó*òÅZ¹¦Ž~Wγ…BÝ­Íý‘°ÍäpgQZš+ɧ›ö €ÜÒpËj£É«üJ{Œâe´>À9z ùrÑ$å…á†ñdû•Ëyð’oç~…å²ÿôc6eÕùçþíoPûyæÃ^·!Ò|¶xCèÉ?6wy,T*xŒý9äÆö:%øJ±ûÜMᙵV¥=gM\MV‰üôí¸vPSòõCù§ÿ0ké Ð0z­\Me?¶»Rdu“çàŒ+ã-÷0÷[Âßp>˜™ä¢Á©9<}‹¸¬¬¼¬Ö[×ÙÑÓÑCm¸Ïs‡1•Cv¿Å mähñàÞ5ùì*f†àÆ º;ÜÓ‡QòAqµ²ZÓD+Ê÷³¤4»©¼AÕä[}EÇqÆXåøkÆl¾¶ç~ưz;.à‚få'U‘©§ºqôº‚dW¸S SÛx&QëõõÔ¾ôòco·âŽôÏÎe<;žyJFÿI4Èœ‘Áº„äukVoc¹´¸ÓÒi°R³ÁkMJ¦5¾eJ£É`k±0UÕb0xÝÔ‰‰‘¿ª? hšÛêâ÷}2/-î™ÖQe-t2Æ2‡ ãäo>øèó[²ÙÙÅ ¨(=0n§Áä3c¦rZ.ǤìümÔ4eÃg¨ônôQ f[½¯R\".©ñJ;B¡®ÅfþÇZ^í†}é H=6ìíþiÅV”Væ W¿rgü÷Aê³è,|ß^0%Läôï]•~o‡ÁÐf§‚Ž^8¤·U“3Óª0z›³q Ž²ƒœè†èW<[·Ùê69Œqp!¿Õ~täX1`F½[‡§•Qz£nŸ–áCãtSê †zÄ÷‹2ëS(A>?/_†¡åîLýó´e&ñô&Mlâ1´z]v”‚–/½ûÞ¹Çd78 ЖUZ¨¤ o*œÀ”­MOt5Žì’±J}o;¾ôtÃ1`t^‡„ îç…Q%JÑ‚ˆ.…—M¸É(þ½Í05ÓÞ1ϸg ­FäÒ®ÙÕÁî²þdI¶ž‘Ëg¼{øˆ †©œÖî90t®¡Á!ë¥áõj|מOPN, „?C—?ã¢ß¢3Ûcé,¯b:ö›Œ#Ý÷õ¥ ¶À¶~fçºÍl"-M-ÊÉÂ2Cµ'h ´ã.ª²ËJ*Ê‹3OÖ¼}iàŠÕD¹ ø“@þqñ‚120:RG _­Äù/ííÃ3œëmzá7³f¤1µèÿ0ùU(EŠºqºF¾¿©@¯b„šFp•ˆ5Øk§¼gñ,è2yÆQ<â9â¦ç°q5»i¦Rƒáý¡Q¶»øå]ßÇŽà®?çVq§Ö¢ZžËb·€Ü ‹Ürïò.m°áz€”3Œœ±¨¼J:` ÷ðS¯T«€™^Ïd›‡ZX˜Ú`C.—'ŽÍqÍÌ¿ö5öZü¼ 5>ž þ žÿ]Æ endstream endobj 19 0 obj <> endobj 143 0 obj <>stream xœXtÇÖ^YöjéÅY°ì’J½…z3`š ƽÉr‘-¹7iänl\%÷Š1¡ƒ© J‚¨yœ@ 1$$@BÞ]2~çü#˶”ÞÿÞ9âàÙ½3sïw¿ûÝQÖV”H$’,vtvž<Éøç(a¨Hf%¼+NÁráÀ›•6¨·õ¶®6œ(0@Þ&õ§Ä"ѲÕ[É¥Þž^²ác8|ò¬Y_èï!õÞí0ÜÑ]æåáï.#¿áN»½=dò Ãúù ß`ü"døi˜ÇÓÚ‹ýƒBeÒáŽ{<¤E-_½P°ÛqQdàž5‹ƒ<\×. Þ»n©ÔsYˆ×†å2o§¡>Îa¾ÃýÜ7Eøïr™2uÌ´§ýxÜø #&Ι4yÔ'Êy[·ïˆ¢¨ñÔû”+µ–ZBM FP[©uÔRj"õµžZFÍ¡&Q#© Ôrj25Šr¢VP£)gÊšJ¡6R+©iÔ‡Ô&j5K¹P«©ÔfÊ‘ZD}Lm¡ÖP‹©™”-õÕƒb©žÔ ªeGõ¡úRý(kª?5Œ@ ¤$G¹Q<5—šG- ¶Q+ˆËÉë”^ä$ºn5Üê¢xޏHüµõZëó6ãm*lÚiWúŒd€$Jò-ó sºÇ{=þÕÓ¿—¸—¼÷ðÞU}¬úìèËôMï‹ûô»Öß¶¿´¿0`ó€_NxÊv˜må;«Þ9Êna?ä<¨lpÁ.ƒïØyضû§ýPû¹ö¯†|8$rÈ•¡ƒ‡>6bXõ°ßßø®Ï»iÜ ¡¬¯P†ô‚R/‘’ bX&œb[é‚jTWŒ<žAG… ?ÿJTÈ7·+÷šGBoº1;·o“h‘ÎÛ …‡qËp’¤Ãàïz0<U >b0ÙøCJ @Q(Þ÷i×Ù)‘ %©b“’âP4ã_…йWtIY2yòå¿ÛÀ º|„g8Yª•ð¯èâ*T·?y_L&Ÿ”ŠˆÁ‹…ösü… ¶£É’8B/ЋŽ= ‹š­£ +‰µÅã´BŠüý*P_C/ÆÞÑ{“ä‰~öj:¹4^—X:í*ÿ2½û„õ4¼ßdÄ!RÛ#•tV´4ÀÙS¥P#MfÚÏTÊK¤A‘ò`÷»[^œ»¼ ®ãôpUï¬øÜΆÁ¶ÿ€ÙÂ;l*ÜÍ-¢£¤Ät*àOà«;Ì#˜JÖKÉvÀRÚöÄ‹{‡Îž/\Ëáð=’ŽyÕÆyã-ç)è—›Í]áæa\7IÿЋî ¤M,ì[€’¢âTá‰\RtĶ…ˆ™±øÖ§k@CuŸ¢x^ãUª¬@L…®¸öî䆬ſâÞ?Ž„Àø¥˜7f„êô¢[­PÙ*†c‚ ãÀ¨é¸SS!_•W!EJÄ8™ü¬C |»RâÖéÄG&߆!_^ÖHò¶_ÇÎÑ9²ý™‰Y ù‰ùh?*ÈÉ)HÏú²òÏ3šö`ú­+% :T_'% t¢w¡e|0cÚa˜Üô0€Â°•x\€iÃ0€þ¶ÌÑg—¯ÃXþ6²×ËŽŸCW™»ka1‡Ãhe0Ùn%Eu»’¶}d5 6WÚ¶Þ˜]Ê;à|ÛBpô·u‹Ü\÷¬›ÆwÅYÔb€#±°Þ°:­&3BQ‡ŸÑ> >üvI =ЄtZ® Ò$øn W§¢H{ï2TÊ ýè²,¤E…Ì%I)*#YÎyà2Iw»ŠvÅ¢Æa[ÜÿÉØ?ZV×Öðàk½Dâä6sÞ’µ·Û~¾uãÖõ'g®›JžµBÁÊáÓ¨HBÌrsV¶+¥æÑæÌ“ V·§î÷*RW!ûºüôC¼U)éžñž95+ÛÕÆ¼Õ 9zÑaܼ""„lªô—'Ç%&sª¤Š–úÔl×n&tÁÏ Á+ñ* ÿà `¾k{Ò‚bãe(@Å'~8;db&MÿÆÂ‡ÿh»rqûì>=2-ª1Æð݉¥z˜ht¨)»þ|³¡˜½|éüµ{—MûhéÊ¥Ÿx}šÃ£¬¸‹o@ ˆžÿ¶ÐoÊ/ïmu“ûyó¶ÏkUqu{ÍâÚ„ƒaWà½èâ(½-æ‚«+EÍ@¯ú½>ûá¾/G v§žT³^ž‘ȇnÞˆ g¢¾c4WØ‚»—/ÞB$¤¹0ÝÁºb€ƒ`{…cì¾B”…öuø± À‹Ì>yü¨]§@I(Î`xm*OÍð]Œk$Ý‘i5@5±î—X8Vƒ±cX>†ê‚ÀV—UÃQïÂ9ìT$ÕÅœ‰9‹£‹è*º™wrÿåúüGè>jŠ/tÎßFα9¢%±c‚æ ó Ä ¾"ÛéÃB¾¬]Jw` ƒ¿‡á0¦M‡±ØžÇ’öS¬ üY6­Ø3¸ÇzâC±EŒïu€ªœlÝYΚÎéÁÕîªÚ@Ðd=²#!~ V7O6—ëxìë*é5Ì1£Ú•^Ànp5káÊ[OžÞ2|uÿÄ<‡î:Hå]mxþX Y¤nA_‹JÔ÷ýà TÇ¥äîiÒ–Õ\™ƒ¢æÌÛ>Û4ÚTŒ‰ð_E+ŒLÖqÔ º°ª³r¢M‹¬ÖCª^Dðª"Õ}6¨ŒÌÌÝ'Ïž-|‚%<–™?¯kWú[ø5ó§¥õôÏÇ–mÚ´sÙG$MÆCõ°£#N¶‘„øó¹žµ°!ð]"¡˰VbÛ¡0X² E5@e¥Ü³Î×Q»8<v€jÝ »»’njïa±OÚ¢ÎÂx,{<ØöHa ûã埡§ )¯DL™¶¨ZstææUòÕμ­á€É¶2ÐC|u¶yæ#cq‡°_…Ÿ]¼Û¯ ¬½a¬éŸ^Zg°í?cA KØî§Îvüø¹ G·mÚ°c‡ ?Ù‹MW’µ æéÝ;muñµ‘5¼.¿"c¿&+¨ÆŸè•†‘ø‰a>Ô°0Œ~k\†¤¿%.ÌÑnlWúXàg‚Ì.tWExG1z?ý`Û—prXYFxº43 cy>ú”©j¨ÿéëÿàtN™YßI½‰‘ÕCR”‰*n‡nŠ 8G6ËsâëȧJÞöYKÂWÑ›†ìÝë3i›SÞ)—\’’Œ#Úø±’($­Ë-Ò4çs-žçU5„’§4|}úwÌê|3;½ÐQ"E‚M,̇“¬YXÁÉßJc»òÿÑnÿƒr3®-ÞøØwƒ–dOL"Òåýôøº­®në'ñ‹ipöe?o.Õ£#Ìwóáž^jYI1íA/‹j >´í™t)ªC ea(¹£•ȿԷؿ&êb®U|~¨À8òWó ª½‘èäùk('¾œ‹©•é”yLÇ6aªŽëE‡ PÕ¡s<ØŠòÝ@2¤—9sŽÒ1ØÚuÛ&ÄÌžŒ†ñ_ýö éš SÅ|ZdVLUg,ïfXr¬·‚óªÛ]èN‚Ùû<;àÕ¿c{èõÙѺr-ŠÂM4áæ¦þ7­È˜éSJ¥F¦œiÁ”3ÑÝô2kš™¿Ç©ôG7=ïÞ{x¬­é¼|Ôa‘œÚq933«ì–q_ ËHžÁUak¢‰÷-ˆÕ_Å},°}ÚLïÓ¶/•uMhY``hh``YhMMYY ×Už»E7²ìÚÊWÍW³ëOq±DË},!ɶGîé†ã¸ëÀ§-ß5ÃÈ #o'èŒ>%‚¿ƒºÎ¸Œ4…E‡šøyørô¦ˆù‰;—=M)ÅñÍc{»¦¿Í©l|4R¡pÆ'7±žƒLL9Z¨æè9õÀ<úÄxO‘˜ãÍÒ!(YNˆv†%ã+üJbÞôAB¯á2‹ ×ö'^g6Ý]ЂiRx‚"/13•‡™XTˆ§%=z/æñÐIЏ„d¤`²Â+ka'ØA®I÷A½¦é×¶Éjc@ N°g½ÐŽÄ]¡ l€Dóµ.£}ã}y\*‘#YCIFæ¾®ºáHÉ%ÄØ¾~tbÑÊ9KÖ~¸*çb ñ~N6ñ~­¬(Lá¿gæ7KÁüúÄ/çýBš²ö0„œDqE,,(6?{6*e2Pín÷_œV¥ùÕ7úø ŸøCZ0‡©kÊ\JDöáÑrED^ÒþDDë0µ.&1: …Û§ €Ãô¿£ V; ûxäÓØˆskÕŸ«ª8½÷^í-÷ê¨4”ƒíþ’Ââ˜\•†—/o .èh"tB³^tÜðAD’­x!^탶b”ȧ©¸8¯–Ë„f‹ô—µ%ii¨€1z†Ã_ÓIEr#÷{£ÐÞ½S•vˆ)Ìë ' AÓu14¥³ ÇmQ1)q©òdEadqë `¥ßóéŽÝ2_ZicV¶&-Ûø)Tܵ “ÄÂ,¨`ó›PS“Šáñm:Æ yy5¡üämoƒbxp•mö¯òõúùí­ n8TY_ß¡ætðþ-u Þ׊šW±`³_ÒÝöèesÚüÀƒ.IfsÈ>²÷C)êîc÷Á[ŸÎ3ïå ZŽGÙ¸š|JGá~(©yA¤®>½6?+‚¾6¿½å9?°¿uXøÀXLfêÞÈ´¢KÂ8±àö¦›]¤A(‡)Q‡‡&*¢“ˆËÿµ,1JP‚½¼0R[–]¸?ËÂÛà`öŠ`ýw·¬k·f£7zD(’R•‰(ª#e?_ëÏý<<ƒ½‹½Zº[#Ñ|JP`¼\3c+l=ºã¢vÍ+<¬Àú R‘¼pûÉJ²…10Êðë½»·>Ä£ñ˜•¸ç'&–úê_Ô'“ü½Þy ‘“ÌyÌp‰PE©ÃT(‘–$–É:tœkŸ=Ib&Ž 3UL2ÉC¸«‡AzQ!«õ›V°k Wož7±K|óAK|¦mŠÖíº~áåkt•3ú°/—lÙè6zg¶“n5—°~•Jå…¶3óO-þòÜ‘†Cõ\QıÍ$Ç?¯½yº1©‚UÁÉ|ÊŽˆè(´yœŒÏ×5iOî«dðjË*Ωϓ@]ªª*;¶">@î¹Å‰ ÇÖlvT©O¬lOf|qÈÞMžÉJĸÅ]«>—êœÑ5àrëÑ-Ñ!ÁY,8 6¿‘€q/颈dUî%€j$€‚×x[ÐLÞøóàO:Ƈ¼i&•Úˆ=œ1þºt#!ÇtÂ¥vkÕê /ÄD’¢\šB4 §BžÈ‡ÁÓ%hw¡ï1™“¯jJað2 é˜<ñH“žBJ`ñ㟴 yM:ƒj˜'t,:XxZCˆ?K›UQ¢‰ãC4Ø*MÕj$V°CkÊØ PÅæfíÏ!*mB^\6þ<씹©šxÄDEÄÈ"ÈSB^‡±&ÿb£P„½¬4¦(7]“[ÀuœçÍr)ÝÚ7}X3 ;˜hø_«$~Yq8p°¿ãÞŒ Íß*‰#.¾y¯S@;X´!ãþ5³;˜J=ùt\åŒûŒóïž.fQ%:œžSrèû´&“gÈnäK±(zj$¯NB[¤'Kˆ×žQžŠ-jêp±…z_¥QjÚFÏ– äv.à¨ìbâiÄF¢¾Vª‰çñ°tâøzH¼*S8×­,lÔT2}cóÈÃN¹4–gKô= ½¸žÖòÀÞ=ô½{z÷¡¨ÿTå¬ endstream endobj 17 0 obj <> endobj 144 0 obj <>stream xœ­ZxTe־ù—¯IïФƒ R!€t B é ÒËžLÊdÊ™™ô^f&™&! $¡Dª€(eED¤­¢(Šß_vý¿›tÿuÝ}öÿŸKõ¥^¦úQvTÊž@9P©¡Ô j5˜N ¡$”-ÅQÉÔjM½E¥QÁTõ6*ê+êGm"Õ¡hʺ+ŠéeÓ˷ׯâTñÍÞ {Ÿ·Ù`ó¹ÄIò=Χ¿a62Wû,ìÓØwdßÌ~òþú—X5àÒÀœAÓÅ º2X?dâíïm}mH§H/¼´ô¥ZÖƒ­xyÖËV»mö¯Øå4tÜЂ¡_Kvcøìáy¯,zå çÉ5ÉXÙFÙ—2~„f„uÄW#‡ŒùÓ¨F½atÞvLþ«/¿:ûÕà±vc[Ç^ûõ¸†ñµ¿ŠÖ¸P;lÀмŸE6øº –KþÚkÐ {šËoór«¨â¶˜Ÿî±ÕgêJ¼%J¢‚XpÕËu$«¶4" E«ÉH‹µöXŒÌª|M&d:T7Cg¥Ãµ+4qÞº`=¹á=¨€â4±SdŸ‘”¸S™$ߺtd@Ä”[3sÍPÊTÇ”FEË“‚ÝÚüœm=uªŠ#QM2P`åmÚäf[Ôëìê‹È÷¢´õBYl¢Ý°œœ°QwT_Õ$%{„”,WÀAZMÿxéä¹³.ë9œø/®ÜD¡ÝÍ gî€5¨)±l§q,WÐ5ŒôòO4©° ¢?ÉMß*ø«èp8¥° †‡ÍÑž[hÓC1Âüˬ—Z ILxytmµ±l÷Ç ö½‡¼†)<¿ôÝxÄ ¡õ¨~~ ¨S5*¥† ™º2Ù˜3ö£™hömÇóÎjýÉóÅyVrØA׈Z¾ê¦);&°©f5ɃçUIºÁ£¦ÃÀuL×ië k…ÓŒöߤ£‘òo½²’²RóÁ¡ ¹™HÛ1À^×yIÒƒ:I³ácØG¾þÍjÆI¿­)h’ñUt“¾àWeÅó%áÚôXÚyÆž”á” ‰ ]0£}V[$»…N?^ôÄNÊ£¾‹´tƒ>§Cƒ%gm\µu6ˤ²+.žƒ+ÌÝ×¾À/s½^„_EKzŽþáäpÿÞ_ïνŠÅ…²5ø‹‡tSU£µôwmS—/Ù4wLOòÁ¿dÕò}ÄüPþU6¯ôÉ¥A,‡/Kx¦E’ýCE3ê ’Hp}ç€Th Ã!1‡ Ý’”!'›I*î»Ë3$©}%yµÂÂO#½…vßóh'‹^÷ ÀC&b¡5ûã$Ô øþ[$åp8ve=ÀÝv(â|M$‡'ªÔj7µÀØ/¯ö¨ö€uà þà"w—»¹‡l¦Ç ³¼w0#¿6[‚žŠ vÒ~ðûì +°±Òï¤å–ñ?ÒxÌ Èá Zz¸)Ä£Úeî;jf±ôÛñHrîàžz‹ ™zcOšpR£ˆ Þæ&÷7ð¯ŽÜÞª>­Ð¬?SwÐdÝÛp¡-ÁêVG2Ët©MÆnßó?ó·Ùæ?ȬH¤ñÖ†A¬Ó‡ $o-‰V(“TJž‹Mxz/=Ÿ$<ËÁdÉ/Y§Í¦r*düaºÚŸ’h´[5;a'lÕ‡{ ®a²Î4)Í¥9”ÜÚ1Å*:ù”Û-î˜Ò1Ÿ-ƒ…JÉiÜG¿¦ÍG&vÂ3ñ ì½Ñ,<½‹f‹dˆÉ‡œ$(S´²4D¢{ÓðX£LŸêb`JÁ`’uÃo´¢ÉfÞ¡-Âbûì"*½e'½‰£ûlÝÑÃuG¹üá lƒ¼3ÛÑÛר&K4ŒÌ†ÞYñm.Ÿ€÷ûñ[Ä"éÄïpïùžîòh™ôñ…ô\ÊQºË:ž«ÞÝ1}5ÔÀÑîœuëã[ô E 6¡E]H½@˜…âY³Lß¹<&àg^C¾ýi"¢ÑÀƒH\‘Ÿ¦ÏHÕ(Ó4²€1Ó!¶€÷î¨æà÷à41:›&ܶìæi>æ#Õ{8{ø¿“ôò:1 c8›S@N’Ô*!šëÜ@x+'¼ÍA6»o¢9ä\Ó%8]ZHsˆËÇ{â qÓ°,f ^C2‡´,qŸ3”¼ºcŽE¨œûSq‡/zÈ"<‰h%^†§à7°öDSñ4´­D“Ð äÆá/ñWì$<ô+TŒ ÑØoÝE£—à<\Ž_™ýš0þê¹ swxéqcÇöw/ z qhˆ‘|õÞ{ %^Â%«b“ ‚‰*®©+1V5û5l|gÖÆ‘¦ß º¯=vŸ®]_ -Ð-„î»hG¡±“Ö oB{«ÑÙ®¼¢#OÅ(]dÑ| ꨛO¾ÿ~E†Ÿý®M<—FÃb`öÂUhü­Y©Q‹*»³|O‚fÀÈ­®@šîŒßÞvÆŠöt9µ­qLj.§§F- ‚zúŒñ>ý¸ p–Ì‚Ê#$3A¹é(]ÒÝÑX š5J±Œ±HB‘ܦóÌ‹øL/p…`Q¤²¾0*Ï.<»c'=ˆ^gÑTÒÃî}–£­žSk£“!œ 5%˜Ë-…õõAu‹ü—{$rÒk¨e¿é¾éÏÓÉ«±W%Zúv%‚JÛÚcÑWÑ¢«Çì¤?£´}žTÖèêK,²ÜÂÊÚ`0m`B„,-9*Ô˜ñ¹ì¾ÐVu0.^¼ÖßQ)kÚÓ”U.è;´ U†’™¸¢äÒüŠœÊ²äzŸhw¥—'çÙài3uéÒ·Ý;–]²¤„ØÀH; ¨È×íèÞÌâï6 ¨ïG¯7&Ý\Ëm¬]ï¯åéºÀÌ]V¨‡L¨,32HŠeÇ.=züÐÞæÙ’;¨7ÌtY²e‚¬›ßxãÓ‹4ÈÌ×–?!LAžˆù’õ=þ%z Ð$æŸï†&áh¥µ1;¯Ž+™\üÚ#`~¨@Gó¡@‘ªM#Z­tñ öWˆØyŽÁ›óX#î}PƒŠÐˆ›£á3qîüd»#&PE2±9íPI©aß ³çºzº3ôÚ­èP7ô6XÐhaNèx‹í<ôÏà!à¾Nºc+<èê;éÉPÔ(CÚ;ô7ùÏA9;eç$n&Êîe šçRÌPäi‰†›ùY¶ •Qï¡xòÍNzù ¬YõE<,f6xÏŸíêËN]¤ÍL& ÒceØžŽƒô‚,®¢‚ÓëA_^qÀó ÖD˜>ô—OïN.”í¬÷ÉõÌe¤×œ –ÚXÝzõÊš¤çt©y,LdUȾ§…~™¡ä$N­JIU©}k½ l ïrç€Òй¬>¼Vùi"óÂÒw!ê%8z1¿e±¿·à³ÁÝ)ÞŸÑ¢ï%¿óCeÿ_ŽŸ„ñåpJn&¥:nFLj©%š¤E6 ž~Sm'CQè‹ i¨„B³!__F`î£Þ*üêÒÈyx¼ìIû¸êú‡pùKnãqþË×?zŸáBÙ´ô¢%¥Ð;öúõV‚w«o«ÿûÊÝÀ\/û¢6 ˆ«HM'H][!íh⣤ÏícÏmmØPAâ>HlKªEXùW­¶¤κX/xÊûgÙ"y‹w0y["C‹è}™Yç‰òÓnЃ7Ì2ŠÖÓ÷ ?Ù*ZÚŽ{cijèJ¼µ±Ë¶li8óóƒéxœ‘û½kA)ôï]Q`½Ë‰ñĽ‹gá×±'i³oÒ­¿üyõ{„Ö’þ•à,ÆQ¨Í1Š~¼ˆ†ZÄÈQè-£­x4Z!ÑÎ 1AÅÈ¿Äu4ô(¹éRí¥sÜ©ˆ ´c°¯ßrxPF&@{¦[XÑ€g¶WŸ½Cló#ôÿ.‹G¸8Ÿ§$zi~^ízÝ }1¼ÝÕ^¡ÊÚ'“~ŸÉïeë#L¡Aò°ð0s¸µÖbªï.‰ó›Vk{²:üúøÜFRûËèÞžÅ/Y×”øœ€ÓŸœøð:zÓŒç¸es:%( z0¶w¥#]«MNçÖ×yµ¾NÒ!ž=cäœã‹®‡É TG“?‰c¤jÒw§×ú™Âó‰ýd–lY<;dAÖáܺêsÚ&m~¨Ÿ3Òµ‹‘9:}A:ƒ¡á¸uÇ9ÿ{„‘}>ÿõz²â‹ÙFY÷ºà#+ÚÓ½…8vOÌwð?°=£›$@íHÆ_Xøû…NÂÇPý§×ü»Ž‹JÐ1\òç×ünÒ±i³íf·4†vƒN£1/æÒÇýÖñ–Òol[¶h¶ªý‡¾ìùËuP¿.Ãéù0 M>y ö£:®Û³`OséW|d$¼ûi%Å/ÈOÅdáÆky‚XŒ ÝRg®Êˆ‚¢p®$ÓX 5Lu¬1446:|ÓÉÐSW?:÷€“vvLí]YRYWWU%¼E êæšc³¨É‚rï¡\â!¦vÌe;‘$¦Ë±£™% h”uÉטT €(†$q$Žâ¼ƒ$­†àùz ­$AÞô((Þ#ÌØDKŠË3 ˆ*Uö%;‹ñÌn%ß1ü¹ó~OŒäBQ 7¸j¡`o‘rùÀ[]«¦oz ¦V¼Å… ŸAJ±nt#œ~KÝ] b0&~¨UTÁ'Šù7Ð6¯²lÿÝ‹•N$l×Ç Q³¶ b U£R)^Źö¸7ªW‰×;Tïƒr"ÁZgMÔo+³©, Bc0²ÏNÔgAdæeæ÷ØZ’<º…·‰ž]£TÊjõÙ`€ÌKgòsÏmÓ›„BÔIJFå5úD!† m¾’ :19-Äíù(úå¿Ø¢:Ø -ÚÍsùJŸ{ÿÚÈ6gˆuˆ‰SÅ«juèMPuÚ:á*?ƒïqa&¤·ë&O‡UXáųxÔÄ7'»â¾´žã‡üž  ñHÄ`òDß„$eœÁyРËt¦Mí6Í€mzÿÓ&IŒè+ÒsN£Þü.«¨õFîˆÑûh<ûÚçÊepÚŸ;V¸»º)Ô*ß‘èîxÉéÞ—?¹Z Óå’Bìaøµtk1œ%Ïw×øj]Éì=|I`Mô· ë†mw½Ë…Eâ¯è[~ÄZÔ(äZNê-‡pÓÇ!5iͱä'%h2’¦á<ûñ¨^U¨Æûš}`$¯ÑnÖDB0„t—»J5ùIYÊ‚àœ˜™8Ã~22f û—ç×wÃCuþÂõG P]ˆlñÏöY‰†4úì¬âïQ“ý¸9S!üÊ¡ ÝéVùqb˜w:V²ÿ¢ðÇõ°é¿ùEß68æ8+ 4ÕÜÏlÛvmÛC4ûâe‹4^î|Æfz×x¶cú°ø¦ìd„3½.B©Ø©:˜Å!Wšôà}þÍ>û¶”nfîR×ÁƸêÚrcuaFÃv¬¦ñpA=0‡Où¼.ó#m[±YýŽzuð›À™÷8âì…C-í\:šÃŽ£'/Þá¶Õ«ñÈûm·ÐÜlNš©c$á^Ç6q‡ˆÿ‚-n®©ûX׳i '¹íÙ´ÓšÂ! ÒÔJ¯êÜey½²¸‹|u§ÀÒµlYJp¸ <ºu^اú¢„Î_ìsb²ÔEPú¬¬b¦Û4ÿ&"ü~6‹–#ÇÜÜãGoê¬t¸:pØÖºE›©Ÿ’B(w³G—þ]b1Ô ­À¦ìÔ¼$Hvö!s>1b]kèFØÛµ†¦]`WfðßÔÂÆ**äu‚V$³»÷î=\Ummj-i²® îÊÖF}’pv“&7 âIÈIÊ5óíçŸ*¬¥² ¤$ÏØu½v…&v«.L@â' Ó¶;}‡Y{W'и®ß¶n­f?Të­ºj¢mš*LrCz”€¹®áÃOë|rû¶ä*Šâ CRS„ÍûnÝI½™ âû´»»O«ªRîèòOKê®¾×øÿµ§þ¿n´;ç›x×±ÀíÅvûêÿÚnw7n…‘Óµ¢|vUܲ“F ù,úätø‘…Öér‹kÚiBTIÛ–+Þ/£&|‡%ó=\cãe\Ê"/šàTWPºïäû¹UpšÂ«|«½ ëÁ ü4N!n»‚|wº{ËªÈæDiå$½Åg¨nâ”ÿ)þe$!Nù©ýùû„e°&HK$ Vuç/ZãNÒ´”ê4Bœ‰^öø >I›©É&2¶û4TwgYˆ=ô^§À…þæw챬ÓÏäZƒ6 ÿâê«™Qè‡\;;ì ©†”" œÌÉ,Bsù,{4¯3»û—Ý¿eˆÁ5ôÓOß[EG~Bîļ ZÄFH2‚ÓÝSÒÓVÄàå’gOÑ4Ä9Odúçx ¶q|íuç#`(k,l­Ž­HÓ€VÍUž?Ñ|˜ûçÍ}sË[ÖÈð¼S!,´#xZÒ­š¼Ì„>¡Õf1òâï°g"zĆ…‡—…5‹ó³‰kÕët:`ô¨ L_¼z,9™6ÿ:Š'±·! ×hÀdã„Ͱ…‘þBœS¤g¤_øv¢'ëÇ}` <"£QC™¥ª*β31 }ûÌ‹‰Åa~øI…<£O‰11ŠÎó6bdá­,’]¨ÈËÌB‡"EI|ºbÂ¹ÈØ5Û#bKÐÛö%IùIñŠä¤”"Ìéå|?±@C´Ø!^‘¤ÈL+K“¡‘+°lELª*4 „7phÄ÷ øm›„¢”¢Ò‚¢ü$ÄiÌÜÿ«ÎYê,µAKFÙ‚’¢Un\®¬+ü¨Ê[Zàï#Ÿ‡+ïÛI;‘=ºÉVÑ( n:ZÕ¦Üaæ¼Á-¨*Á\º;oß÷÷æà—ð0Ìâp™ôlDÌ’GHüõ_É}Ò׿Áâe~›·Es¨¾Ê®†à3Ê’ØvøœèÚõú'÷KÁ+Wî›É@¿ ¶Äù;m'JOÛžcB[Ð!£ˆ·ióSP‹ê%Å`4Æ@¢ ×£I1TDGCL"‡pÑÑÄÈùI’1F#TwÑÙÄŸ¿VHP·ä¡˜㟱y/L VIð@Щ*˜ÉNìEÆCiÞ٢œìëÄ¡1È[¢ˆ ‹ä;§ãa;± ^%p;tæsGixßð~î‰ÌÊâ;>ê1mØ¥[~VùYVÊêtÚÄU¡ïº»Ê”J­T]"Sxã¢ÏE¶z?×¥ÒÂìÜünÕéD’$êª>uÄNz Íæ·³Ûw«ö@óáù¶K—ÏmZ¼Þg›SgN`?m>| .0_?5mÜ<Ç©±z·6W® ¹9ÂBæì{ëBf::ò‡å?!›¯oýܤ8èÛÆÅ˜âóWµ0ã<ÙÚ¸öà÷‚jcÚƒá]Æqᦹ3tëtý¹/ÛYãB!§Ó¢T.Fuȉ=Ë×Ñ]6=¼]É ²ò!ò¹/0LŒ.±4N½}]œ‹~Ow ·®ÌY"NõY~ÂëKÒ ’é ™1ýñë¶Æºyp^nQž°ÁC¾š€zØÚvº’ûm6¶CÐÙØf8‡á´›škŽì-j$£cÃŽ2·ÂÀÌÕ°™³câŒçëg¢;ÏÄhÃqö&×î PhÏ5üÀ¾_ÿƒ‘—W÷ÕIÞN̯ìpe³Š™e R󉪔5‡ÿú÷EI@ÄÊA‘—ZPœ™Ÿoà~ƒ?}kL§˜%ÃÞüUŽéi¿õŸO?GLæŠËshdéA§ãrtúÜœ.3wØ›Eûn¡Ü[bÞ]fáóŒÏ®lÿfn©'8Á¢p¯©K3æÃ›°0szë‚ýó.G 9üÌtàëú‹Y×IÇÂþø2ëk-±ß(ÎÀCøÎÁ…ܨßÕ< 4À…ØŠñùΰV£»L±*aòú`7è±uÎf„Í`Fó]³íÉÐz š'|·“St8’$eçé Ý•¤”Œôt%·eÙò°Eð¬±l8S¶«$˜Kfã>xÀ§ó®^>uõ.†ö]ÇdçýŽd4ÁgpÔš©ÓÚwºümzjd¹ÍOÍÏ×gär~*½¢ÍCož/2?ê8 S›o’Io+x§Îqø7½e,¢×Þ]ò¿^Ëuõ:¾Ùz€ÈBØ1jïx‰­}·fÕ  ±‘$çX5ÓYB|Pòt.P°øw¡…|Ýí²øôtuAsÏf9´ ©-¢“SÄ‹ÑçlÉs¡êüFÒ#L%2þk¼‘í‘°Yç_% Ï%‹DÃúHt Ý!CJÇ4VëëêQ’Ç…•ÆæÄ#ßì\š`¯ÛÛ~ Ò’RÆÕÄ—§—‘¢Â|ô¤€ ž{†Éa&›ÑB³ÐTœÙê¸ÿèÄ¥’Ój´D€ gÖç|zö#Ya3ÈÈÌPÌY€û:U¹ío,¯©æÐÆ—ÿ›Ûð¯Í!T»iB|LÐñÐôl¥å1ñÌ%#= Èöñ¥Æê£© Ú˜ÓÞ×ðL­Y¶rGeb¥0aô„DÎzütI‘],óY+[±Xþ(7Ò‚•…EWÎIÿÖ‚gþÕIz¼Ÿ]w¦ü—ö$à¿rÝÌ7´ü2¹E„ú¶ˆQ.6°-™ü¸¿ò÷A>ù ODOŸ>endobj xref 0 151 0000000000 65535 f 0000100780 00000 n 0000161458 00000 n 0000100589 00000 n 0000097380 00000 n 0000000015 00000 n 0000003609 00000 n 0000100828 00000 n 0000104872 00000 n 0000127621 00000 n 0000104467 00000 n 0000122853 00000 n 0000103803 00000 n 0000116446 00000 n 0000103042 00000 n 0000109295 00000 n 0000107814 00000 n 0000152426 00000 n 0000107338 00000 n 0000145794 00000 n 0000100869 00000 n 0000100899 00000 n 0000097540 00000 n 0000003629 00000 n 0000011526 00000 n 0000106900 00000 n 0000141402 00000 n 0000106295 00000 n 0000139812 00000 n 0000106110 00000 n 0000138758 00000 n 0000105875 00000 n 0000136907 00000 n 0000105285 00000 n 0000130069 00000 n 0000100984 00000 n 0000101014 00000 n 0000097710 00000 n 0000011547 00000 n 0000018247 00000 n 0000101123 00000 n 0000101153 00000 n 0000097880 00000 n 0000018268 00000 n 0000024369 00000 n 0000105129 00000 n 0000129417 00000 n 0000101262 00000 n 0000101292 00000 n 0000098050 00000 n 0000024390 00000 n 0000028105 00000 n 0000101423 00000 n 0000101453 00000 n 0000098220 00000 n 0000028126 00000 n 0000029810 00000 n 0000101496 00000 n 0000101526 00000 n 0000098382 00000 n 0000029831 00000 n 0000036108 00000 n 0000101569 00000 n 0000101599 00000 n 0000098552 00000 n 0000036129 00000 n 0000043025 00000 n 0000101664 00000 n 0000101694 00000 n 0000098722 00000 n 0000043046 00000 n 0000049527 00000 n 0000101781 00000 n 0000101811 00000 n 0000098892 00000 n 0000049548 00000 n 0000055658 00000 n 0000101887 00000 n 0000101917 00000 n 0000099062 00000 n 0000055679 00000 n 0000059211 00000 n 0000101993 00000 n 0000102023 00000 n 0000099232 00000 n 0000059232 00000 n 0000064112 00000 n 0000104236 00000 n 0000122349 00000 n 0000102088 00000 n 0000102118 00000 n 0000099402 00000 n 0000064133 00000 n 0000067849 00000 n 0000102194 00000 n 0000102224 00000 n 0000099572 00000 n 0000067870 00000 n 0000072872 00000 n 0000102322 00000 n 0000102352 00000 n 0000099743 00000 n 0000072893 00000 n 0000077541 00000 n 0000103604 00000 n 0000115358 00000 n 0000102418 00000 n 0000102449 00000 n 0000099917 00000 n 0000077563 00000 n 0000083515 00000 n 0000102517 00000 n 0000102548 00000 n 0000100091 00000 n 0000083537 00000 n 0000088928 00000 n 0000102885 00000 n 0000108536 00000 n 0000102603 00000 n 0000102634 00000 n 0000100257 00000 n 0000088950 00000 n 0000094748 00000 n 0000102724 00000 n 0000102755 00000 n 0000100423 00000 n 0000094770 00000 n 0000097358 00000 n 0000102810 00000 n 0000102841 00000 n 0000108744 00000 n 0000109679 00000 n 0000115581 00000 n 0000116832 00000 n 0000122541 00000 n 0000123201 00000 n 0000127854 00000 n 0000129628 00000 n 0000130456 00000 n 0000137137 00000 n 0000138992 00000 n 0000140114 00000 n 0000141694 00000 n 0000146320 00000 n 0000152989 00000 n 0000103519 00000 n 0000104380 00000 n 0000105765 00000 n 0000106684 00000 n 0000107234 00000 n 0000108364 00000 n trailer << /Size 151 /Root 1 0 R /Info 2 0 R /ID [<6A2FF7A3F46E4F505CE3BD42D6C2CCE5><6A2FF7A3F46E4F505CE3BD42D6C2CCE5>] >> startxref 161653 %%EOF cddlib-094g/doc/cddlibman.ps000066400000000000000000011212431206770251100160130ustar00rootroot00000000000000%!PS-Adobe-2.0 %%Creator: dvips(k) 5.96 Copyright 2005 Radical Eye Software %%Title: cddlibman.dvi %%CreationDate: Sun Mar 23 15:43:43 2008 %%Pages: 19 %%PageOrder: Ascend %%BoundingBox: 0 0 595 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: /usr/local/texlive/2007/bin/powerpc-darwin/dvips -R %+ -Poutline -o /tmp/altpdflatex.82070-1206283419/cddlibman.ps %+ cddlibman.dvi %DVIPSParameters: dpi=600 %DVIPSSource: TeX output 2008.03.23:1543 %%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 /p{show}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.1: MSBM10 2.1 %%CreationDate: 1993 Sep 17 11:10:37 % Math Symbol fonts were designed by the American Mathematical Society. % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (2.1) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (MSBM10) readonly def /FamilyName (Euler) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /MSBM10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 82 /R put readonly def /FontBBox{-55 -420 2343 920}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6A66A4000A13D5F68BFF326D 1D432B0D064B56C598F4338C319309181D78E1629A31ECA5DD8536379B03C383 D10F04E2C2822D3E73F25B81C424627D3D9A158EAB554233A25D3C6849ABA86F 1F25C1667CB57D2E79B7803083CB7CC0616467F68450D9A3FEAB534EB9721003 DBFEEFD050F3AC3492F5C74162A9A531ECEC0F47610B4940E946D21CAA771D30 A6C27ECBA11708CC46C62396BF9D1990D579D0C394899D24FE7A4382EA18E7E1 160E7283AF5BE17254790628E79FCC206F28B5566075B3A5697D5209062544FF D85FD89D6F43D6588B242AB2666B5D2861CD38A8CE676503EDFAE84D12A71E77 8405E468FE391F4F3F50D2C57ED55512036B0DB8E76A7EF413ED08673E56DE2C 16A3B65CD478433C0D2F9FEC4E662D54DAA43CFA6957D2A9AF8979BE06F70B68 ED4C8C493D6DAC4971A3F1D010A7726D084EC1074FECD7D12D72AE16C26194AF 21AF5774D9B860EEE8608D34F150092F09C19959BAA670022B9A9F263CD391E3 74DD1D1B4CD4D75273CAA4E37F68C631723E08FA35AD34C0AFB4621AE6689861 854D16CE1C375FD159A337E221A6FF1CFFB5693A0623E7EBB58C2969F590D081 AD92DD9E5322E26D6A15023664AC73A355998BCC48ADD0E7A4BC79790519606F A1FEF6075033BCD422EE8233B83D1E7C20043280D531223D5AD4D5B41669F884 95CE4D6DDE819B588742B930C579EDF743F2C74C95F717FAA6154FADC3FE2975 F59CFB1C1A29059487E75C48505BAEAD7145667D4E18E46E610C868A257173ED 0D30EAA4C090854DD8378E92D0A376226EA7DA63798F247BAC770FE26D70E72F 90CCFAADF118304646955B0310C65F6CA51BEEEF87AFFE294D08C44354C73E8D 7AE0751CEBE41E68D7E91ED09D4F0FE329150A34D0DEE8F7AED88AFB66381817 364A65B9F1F9C6416198FB016FC8456DEEFED46BF4E1F873527AF52C13078ABF 93CFA6D5E87708787DC837B554561D07B2DB9A89B886A92E7615598566203FE5 96A6D048ACFEF549BBCE51A9EE6CE333704CFD95926DFC740F5A6896D22EBB27 79603F94943CBC04381C62F5C0AB6FEFCE9B71ABFF7FA10A060D7CE5BFE481B0 32E05B3C998C9D89CD66E4DAB5422D01B386769A45984EA2B3250786533E85CB 9F1595D3556EAAE9BAB4793D6245EC8B8D16A47697B51772CB644BD58E81F416 B01A9223997DCF9AAB43FB3CE9C8778039BA2D8E075FC02BB3FA5D66CCA58D24 D9E0261DBB8C11092320D9B0F5CC79FAF53EF2AFD99D5A7732B1962668A85807 9468AF19C570B30F7C798A4DC45D0AAB6E51DE57FCE9F19C468741F1B55ACB6F C9357E6ADFF2A2E2E84037170DD9E3F217D22DDEE6E8660C7988961BDE9990AB 4CF63B8D0D60190BFE810A5661C8E02D32283B304CB434533629D0D3826548F7 EECDE3892C213BCF51BB7257B1C073A39928D1B67DC28E98CB0F7D1D0B158EE6 D49E399D58B3C6321CC9A2696F019E6F7EC0DADC 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTT12 %!PS-AdobeFont-1.1: CMTT12 1.0 %%CreationDate: 1991 Aug 20 16:45:46 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTT12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def end readonly def /FontName /CMTT12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] 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 /FontBBox{-1 -234 524 695}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F0364CD5660FE13FF01BC20148F9C480BCD0E C81D5BFC66F04993DD73F0BE0AB13F53B1BA79FE5F618A4F672B16C06BE3251E 3BCB599BFA0E6041FBD558475370D693A959259A2699BA6E97CF40435B8E8A4B 426343E145DF14E59028D4E0941AB537E34024E6CDE0EA9AF8038A3260A0358D D5B1DB53582F0DAB7ADE29CF8DBA0992D5A94672DFF91573F38D9BFD1A57E161 E52DA1B41433C82261E47F79997DF603935D2A187A95F7A25D148FB3C2B6AA32 6B982C32C6B25867871ED7B38E150031A3DE568C8D3731A779EAAF09AC5CE6C5 A129C4147E56882B8068DF37C97C761694F1316AF93E33FF7E0B2F1F252735CE 0D9F7BCE136B06EE967ABE0C8DF24DCBBF99874702ED252B677F407CB39678CC 85DDFC2F45C552BA967E4158165ED16FECC4E32AC4D3B3EB8046DCDD37C92FDF F1F3710BB8EF5CA358ABACA33C7E5ACAD6BF5DC58BDFC3CF09BA2A38291D45A4 C15FF1916FE2EC47FDC80911EB9C61F5D355BEDFC9DB17588547763AC5F0B1CC 12D2FFB32E0803D37E3281DA9CE36C5433655526ACFB3A301C56FAB09DF07B5D 048B47687348DEB96F3F9C53CE56DDD312B93D3918CD92AF53FB9461864D11B8 0138918D0B1270C54873C4012CDE6F886DB11BCEA04B023EBB43E0D0A06BE725 741D08B9DB688731A6C9886C15A83C28DADCC81385EA239E045E8F3670CE03DB 9EE77ED067036595C9F3B1854343BE3A12E486B6E5A2F8AC44FA5378D28DCCEE 306B0E283AA444423F9A4FF38E2B56DCF67A39CEB2C643DAE86865517D5D0371 CB8797208ADEC637330A3A57902C9A88EDB75A7C16FA9850075D9F19578EC666 1353CC1FC512D59DFF847ACCD5A0FDA6F4CF4BB7C9EE62271154425996A08944 E79BA092B9C46D95B60E552920809BA9381100F0BCC0ADA2151356112D2BC805 B7BA9B4FAE18B451812D36A006CAED7DD4BE2CC57D77AB3CD68C3A36EBF00C84 DE0B7744EA189CD804044B0ACF0CA7DD7BD0338595B6AF02CC620F4AC22968CB E47A8389E2D6CEE4E1F4E2B6166D38D641206C007A3E5BDF9F295FBCD665C6C6 6D30F4E3F6C41361A4FEA2D7B803A7D0198ECE994B6BC48F24AD243CAA496AE9 4CF6B05BA607114574162FAB1611A65DDC069B5E074783640FB2526B02461BF8 9D6BDC3A50CEB8AE7A677C697D6AA75E18C1EB094575247D90DCD94218526CD7 5853E82F44636DA30249835F50AE8353CF2D84846FF0041350CB27EB59342D5C 405747DF9E6FF28E3A3278B9AD1C5338A9E1749FA4B4B780DBA0B2845BF9D39D 512ECCE5EB9147639DB6C99343EE1FD5A7B4E46AE768218BC2DCC447119DC159 2616693AF9F80DFF26D5923F05F3059551CDB0787B592AD23637CCD58D101B09 A0B5A90C2C8F0BBB51D09219B124B059C90FACC2B550E0F23336EA72AA934083 E65053BDD0EFA12DF4E294D0D622E81FC44A9625BAEF51CA7AC29D3DA03C482B 79422328AEF3CB01EE3FE4F934C551C039A352BF4644C417F49CDE280CBC391B 4985104D06E4D393644E5C70DCCB4C6E18F5CFCE0C2976971A4869DAD0B37455 ADBB0A49D4C48BF342A1E6A639E51B544633636240EA84E5860AEA78F8ED2A10 FFF7912FF99871FFB1AA53ABD8AE839D19F54F88DF5AB4B8BEFFFECC81B17E4E 41877F3F051B2CBBF1EBFF0C21B42C22DD2FC72C6BB96C3D5418DCDB943DBEB2 6FBC871D78E893E1AA4F7E2885869F4C6BC8B1E62E34258BB60234098B8AD53B 8EE2ADFC74F6BB04D4525EDBA025F5EB3AD3B3417271FA0FC55FB789E93E7585 88F37950F9BC82168F0FA9776625CB81CB698B5F6F3E0162DE0A2A05AD702493 D754C7DD1202AF9D0F243B10FACEC3EB827080871E67CF08219CA2AA073D0561 2775924DAFECDD08B21369A41B62F402F4BB99D0F2B42E6092A7ED538F1EEE28 26134A7A144D039F2BB9C360F099E093393F78F80D6B190BA9B868CB9AB4AC2C 953D3C264F3713EC69CD89E094FB82BD5ADDD16ACCABDAD8FDA500EDD43041C7 9443911317C9DD565D6561A88C8DF2CFC392BF3A84672F38EF3D7092090F79F0 C55CDC64C402F71EE38AA55B9932700C0D126C08E77280DAAD8CB7BADBC65A8B BEA10BB3B3EE45C708602E2DA24BECA9D21010A0D5668C030C59862E20F19922 FA69E63BDF3A68121F4D129914D05E3504BFC8A0B795B0EC1467393013933135 E65FAA16FCE8018FC4D2DFC9F1F6C68FC22472D5B003C05F890B0C87A377003F FC9462BA8E8D 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY8 %!PS-AdobeFont-1.1: CMSY8 1.0 %%CreationDate: 1991 Aug 15 07:22:10 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 0 /minus put readonly def /FontBBox{-30 -955 1185 779}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A 221A37D9A807DD01161779DDE7D5FC1B2109839E5B52DFBB2A7C1B5D8E7E8AA0 5B10EA43D6A8ED61AF5B23D49920D8F79DAB6A59062134D84AC0100187A6CD1F 80F5DDD9D222ACB1C23326A7656A635C4A241CCD32CBFDF8363206B8AA36E107 1477F5496111E055C7491002AFF272E46ECC46422F0380D093284870022523FB DA1716CC4F2E2CCAD5F173FCBE6EDDB874AD255CD5E5C0F86214393FCB5F5C20 9C3C2BB5886E36FC3CCC21483C3AC193485A46E9D22BD7201894E4D45ADD9BF1 CC5CF6A5010B5654AC0BE0DA903DB563B13840BA3015F72E51E3BC80156388BA F83C7D393392BCBC227771CDCB976E93302531886DDA73EBC9178917EFD0C20B 133F1E59A6C75D5F3F5C6AED02D738369ED9541D8815D9BC42D34C187B1ACCCA 8D5FFF1FA552AE4D2C870DD17119C4BC8D4E6DDDE0E925FBC9391C91D374019F B1F6AEF0498EFAA5974AF35567983E6F1A3963D01C1FCFB2CCDE0DAA89CEA35F FF4081BEC095A7E0889C4326D0B26B343528F28A7EBE951B6B59E77CEFD4FFDC D8A90A56EC2B520060869AE646FC671A833C92A49961EAFF92500196526B5CE2 3792E028EC16CD1402D86FB8AD69679F70A14AD2276AD0A1CE82302ABBAE8D54 308988AD 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMBX12 %!PS-AdobeFont-1.1: CMBX12 1.0 %%CreationDate: 1991 Aug 20 16:34:54 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMBX12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMBX12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] 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 /FontBBox{-53 -251 1139 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712 B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99 AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26 7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF 20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390 B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D 68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809 D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E 26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26 77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299 BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8 30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5 148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23 337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598 0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6 472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26 33147977F35D7F2295DF003B2494214A6E5124D77C249D22668C746258A7A526 74B4730926C21F0845E0D993665F537A40BE00536FF3D3A4B3B069669A7862BB CF4F3594F9AC9A78B5285EC44DFA70C9BF9941E2951127C43119D3343944CF22 0073E40C5FC54883D0EC96D1AAAB4092A1EC9F11725DC9E2872F31789CD2FB8F 1E989A43792D12481CF61AF346EF17FA1DD2B77A5B70E27BB643BA1EBF8BDD2C 2EF11630E347E99D4CBEE4FC84CA12857E45785516E163776E22D405A7F03FC6 F12556F1436704A623D42129CB0999038505FFB9255994D12F9985CFE0DD41EF 60C7A1DEEC9E1D01D0F679E52BF8FFE9DA00F0D3D6E3C565AE94A52DE2DF610A 34AA5B2F99127005354962EA95A09684A1C54603982F6ED8318DF4A2241129EF E522D97506F51D12A07CD458DF01AF358D73BCAB83DE4CD603125F38010A50B1 7F6BD39F4104228417ED5380759B971A145E960A79AFA0A48C3C29D09A071259 E089D9A3DE17058F6C11BC7A368716373957219754E20E3B70EB3CE6E9DD85A7 192B0FAA56383117FAF94ECDD8D4476AFB181E6EFDCEC3E792589DBD045E0762 DB29B6144C22E3F7879F0585E50E09B91CE4247D5F58080916051E18018D2030 4991AFA89195438B8A2FDAF8B507E1BD71CF6D39E6DC72B4B989C659CCFA3C24 50503FA10037B723CC275653F5AC1128CCB4CE670944A42DA43CB775F2BF0094 0642958259953EDD31F1D4DE158DF581BAD6E295BC018D3D068251D948330570 6BA53F928D3DE4189D700F894F38A86F77E40C80DEA4024AD39D337ED83BF953 86D51456BEA836BDA04F6316BFE091135061DDAD9E72F7241681A1B984A7CE33 10863277DE5DCC563966111C3B8C527F2544861038A2D118F0938E681BB6BA0E 0A17694C71574DFC67936807621ACB2B2E8CE6EA24521AC83510A909D3D419F2 77A9A69AF7622AA6E8818CD498CCCF34A1EF5FB52FEEA55D8D012E2A49FE6BAB 988A4C3FC111694FD5DF83793D3FA412F9C52F75DDB64F732A8781B31C152AE5 1A38F4BE47EED3B4DBA1D62018C3DEEFF4DEB4DE75BE27F9795199811B13D3DE 0ECC72D494035FF44AEFE8E105E9FC8C6DF16F427D9360A2A8900E9AF07A2641 F266472BC178A22066E27B6A5007F3192148F1FEE90EB0547A3EFAA07F277976 8DC7F61E361F6CB5F5469335D9B108C00B8A5463569DBF691B189C67C5D1C17D C42CF62D2A64D8604643D7F2E5A9B469B1FF5887D75E81D1EDB8474DEBF5D0D8 9B763CF269794AE655D845493FF7A2A4FBC386E793192F171CF7E9600F11B3B2 FEDEE33925A710B50F89720DBE8E13893E9A99F3E85D59DC507C36989350A337 E43B795D5ED589944D393669909A960DCEB7EC9D85AE4F9B762785790F3A0BBC B578B720DB50A7776A5281F63CAE389505B82B2957BDAF5B8D6FEF03042FE096 F6718635638ED179F20DE6B667C1391FA46C78BA5E94B17E8BD87D7D252A5899 A2A7B6AD5FC24D6B1685E1D306A164DD420EE295C35F698D0E199EF8E4358FFF FFC3C1F7CB4DFB7492569CAB7A1454FAE193B5231BF8F3BDF91E1F65A582EE04 098998408CA5D30E3B88BB4F38415B0B5B29D8F69D4B4D998CDCCEB26869AB1D 652DC6E4F49BE882B49017D94FC4D5A35D405EBDB7816BDF26573ED132806B3D B724A5A6389CDCA9EFAB31ABF9AB9E405F77F450D1AC459FC8785CBF0B7F7E4F B1BE5837527623FC9565E1CAE0648E0E99D789E8ACD8A5A5228DA49C8A4380D1 E4ED5647C52E1E54C2EC96DAE874F9EA397ECFCEC10A70B8E6A3D435F331B29E 20989C717DB44FDFD4B9D4CD3D972534D71E5FD9060646AA9DF73B25AE8E4FC3 47722CAFE1A64A93241E6DAD0FF3F63281F4429D6E721680F1254324F8D20658 B48CD2D1CFE3EB6DB3578121017C2AE2761078A5CFBB17B49D9FD5B3062515EA DE65CDF92BF386C1CD75CB5A3C8CAA376B9BCD3FD99AC91A822183513BFB115B FA9EDCB022FB8489A8B0278EA4B7C064C720C5A5825851C8DB7CACAB01343093 39EB1873FF49569BCD882AEEA513B7B72268C46EF786DD621E40971949113A1D 4D59E3852BDE0A670A2CE5C2B40771A08C01BF7F8DEF69F848285403939E1BEC 57377A5DF39449FE89F84BD680A27BCFC94546D7C7AD295D257DB2E5D6174ACE B30699DADF744079B950EC4DF875416631658D52476D3C404D2573352D366D00 46EA3A7BDAC95E49BE2E9C08B954E983AA11E020C3F7728A4E316C091F6E4822 33CC34CA0DEABE4EE0E8F2EE4BE2A6F8CFC36F396E45ED2B47400C4A306580FA 134DA28C336BF213D155FA2642EB2A54572ED32EA3C3CB4803843ED04A0C94E0 2C9E70290D2A15CDBE3B30B8B2AB03280C7D1317CD3B740E04F71456AECBC02F FD38B33097A70C9EA0EB292581C654D159BEDCDDAA1CF2BFBFA54E5BFD2E3069 1E8738B93AA160D89AB6F3A76F3651016984790D22713FAA8A4BA4830DC87F99 87F966CE5C5768B53100F85BA1D81969BB181C591EAF78C1A73E0F8D14812646 D7655905B54AB31B39C7A202ED15449CDA8E18698A294A5B22C65E921A6E7766 2CF104D45C53AA16E245248A0B0E71E6D6EA7EB1567D2670765B67658B56C73A 8F2EA25DE4B4B45EB68015CC7A592AB60E1F4AF41AF1890BFF8E2F04172087F6 496F0F73AF7EE8B5D52235C50BE7236F406558A522C5A7ACB97308FA6F278A4E 1CD5FD1538D9BE6FF4D1FC9C92634040E50DBE5DC0738855D44CDBD64798BB45 75876F2F49A4A95E761C6DF3C20548DE2E82C68C8135F30B986116674B03F97F F224233144BC977D197215AD91BAE59BBE2CAC04AE8D27304C3A685F7A3C0C0B 3C7A23E88B38B18CAC9FFEFCA92E53DE08B8698CFAA3CDE204F8FE13828A1491 4AE3DCD1603AA0EE098759FFD901B633D8A4B1CA441F040CC1B76292F1D96761 65CFEE423EC390FB95C58DA7A462A11A356E147F18399F6F260D058062459585 1AB6B9B7CAB262B5925FAA6D90143CA06DBEF1D08A263AA55206F39728387452 BF89C0F36F472636D9D82065AF2F8C3B985A7229603623F3520E8F1442C897AC 9378206F2E559FEA568638B69537E0E12671B6068D77AA92DFAE98A9B608807E A231674C664BCF7C343660ECDB66FDF3427C6CDD24CBD6998095BF7985AEF3E1 390FC75577144A92E6C3D076B47CB3F0A1DD91979E88B7CA7855A822C1E5CD09 5D6D11D785D62F7AAA48AFC6716279D9E31375B936D3745BE7FBC5806EE636C5 71B735E0AB32619875120A3DDD20C71EC38F704DB9BA2FB3BF20383192AB8CA3 E75E0D4FAB0EBAF9BA1E306DEE2C5BD8B6102EABAF7A021481E7B82BBB1D3EBD 9E0D87574B641D63120E25B6C3A73754A405D0F199D4A2EA59149644515A5BD5 4297196C5393B17490DD561CB28657435F6B95F6103F5E1CF10E9DBABCEC8AF5 AC00513EE4324BD8E526CDF20E402DA6A61655B129DD0E1AFF23AEE0ABF16026 B178AB96555AD6E931E431B1536162A5DC4CCB31B3105D01BD2AA4CC54625902 32C490614717804D940E0DD0E128F887D70FE37F37421075AA37464CD00D7B5A 3469704FE431EA37257868C3FE7A735FB44322FC3A2DE39970AE5F1DD3DF9AB1 29CC85C6D8EFC7E9107DB3D68C52610F8118EC75211CDEA9EC2705607147307B AFDEDE11F9453AFAE86159C378AA4E117D93A3CDF5CAC53B800F67CB8C9EC38E DA3CBB1F1C8ADAD753874ABBC307EE524FFBC0F0A7A3E7F59F160B1319F102CE 660DA14FC169E07A3969712C96A4354F5194E5D63466CFA0254E4FA870DE3CE2 33EE6D374F2DA785038E16DAC620C4B992D0FEB5CF66436A1B65183B21B9C421 2481BC04E02D1E6C1A5761533FC38873B741D8FA5E23CE58C2F4E92169772A25 A73CBF17D27D7A95020D6CB6F294234EEB478D94826CBC824E843AE827B9BE91 24D64E11E31581172F185FC8F55DFFC708DFB147E93939476E0701713CB3E2AC 3A6B71459A232E517ED0853F497E39678EB3C087814AAD58DFAEDCD1AAB6E0FC EAE1098D8E7F2F96A7DABBB7E12BFFAD77F2230306EB0B4453479653E7250698 81EB641D055E333A223093F27C0785651E43DF22C4CF44824B03B13A2F3EEE69 F14CF6FC6349B025747DAFCFC739E095F53C71583C0D6DA1A79507473E456C2D 3C00A6F0586D7DDC4DF128B59E9AAAB958C93048A1E755569BE2F51C638CB9E7 056F184B97F716A4EEC912CA14DCAA6B7A776C062ECC9909F2EF4F4C8B48B402 3772D1BA6E546C5196FA74E8EC7E692CA0CA4AE5910921A88DA4D98D0D4B4E9C 9A5999A6273DCE4AED0AA896281588B761733CE277052885A86786340B31CB86 E96B3F4870FCA0D674E49857956F6052DA4A0CE89D2612D60E562DFA355513E0 032490D9EC78675F514018ACE1F7479DECCA81B8DFC6218131CC41CFEF74A6DB EBD6DE60856DD891130D3B11C471B475C0B2B163252BCB65664B9425CCF71CE8 E16D93213AA1DAC9B74344821B6E948407EBF6F8BD4BD5BFA5409CEA2E6B90B5 7838DA4F838A14BAA878F525481EA5483990720D32D702E0CB933B094E89C873 424B3C5BEA1A390FE1A26ECB741461680BBAA039244F7A2B98AE6C9B73F696D1 A23D38C6C268AE06E6F085254464A8F30ED1EE0838EF5375ADA3973FC4CE06D6 07C8459233163BFA392620210D91742EBF278E1739CC3EC39785D8D53729BC49 AF58E01DD386851AC2E54FC0E731DE642F54E0C311EF99258A181CDBE5D384F3 E96456AF9799A7E9009F8501F139B2A1C9FE96A414D8D1C5BB0457401D72C0CE 49383D2D3285D05470B6FA8177FE5C4A489CD50D16C6F32696297BF362959852 599B68B77481437A298AF29F0B17790BDE80EB61D049D62A8E2FC357A7A4E95B 0D3DD7F1D0B21ADF3B088880FA414FEF6FEBA20A16ACBCDFA41057944F20E6BB F92D44D45D4486D3E25BE387C0CD6F75F5FB26A3514B6238DB3E80A248D0B956 15376DAB67B5CC99F07F3315EE344A325F77F05C4CAC926BCA7B13E4F11F19CC B3A426933F62ACA29B8CC541CD5C9C30E7303BD5082CA212AD23D9A569AA1D1E FED97E242D827C16D44DFC78BCB69CED25C510B234A07C85BCA12FC8D7CBFC34 F68C86B79681D5753BBF9A6BAEF0C9F3DDD94DE13219D9D2E96C7CEE2DAA4FDC DD5751FA1B28918269C5951D25BBC6317D1B5751ED20C2A0A55FE3726E8E2FFE F008B1D6FBF8A35DC7852428C229336749BC28EEFA87862BBB296B0D8BC8E473 9238C838DAFA3FDE1372E2F294C5D177A4A38B63F5EB760E528AE502E5B0F30B 40F486A4A2A615AD6C37249C9D84CA9B1E1FD5F2B97AA72D3B192DBC284E905D B3CC01FF9F04D14357EA7C44ECC3E8F393B723FBF18E234623E07A6FC6455A4A 4CF37A0D0BE21FD25EA0CF46352D54219E609683CEEC045EB750804F3ECF6044 C0BCC41AF57B2C759E43692465A609E2B0CC09435CD55A7A1D5C89C5422284AE 0DEDE774DB44D5D93C4B6628AF926E0160131F9F8B298675EE342B5B85FFDD01 4B0040E4C71BA24B95196BD588DA5C87922E7E55641396A104B1346F9624D5A3 F83094EFA3F2B8927B691CEC49BFF322103E303301A524D25345E295DF94798C B8CEB368E81D3810D9591A7FC6E3C6441F24D195339654072FBED29572ECDC37 FE18D406AA8E2503F8F1F6638EBDBB26E8C8499CF07D60E09DF5817A9E3F264D B53DB0676FE1744F1C34F1B3F8AA361E04218CB9956ACE619F4CA50333C99348 6EEA62F9AC3D165036AC64AD32E02F7215882A5FED94F16D0526EBDDF93CEF2D 74AD72FCE5E53E639B4BB3D14B1EE5A9AD76151F12745118D25829D62A7882D2 19ADDA574F660C21F6413C5961712D935CC3CB607252D1CE8643336DCFEF883E 981CFF580BE047C1D7157ED559C42A8B050E3A093B0432623D97679BA358DC40 BB9C40741DDE89CDB409D93973EB27CCF1D37D0DCB42E8A00D0C6E047F044FFD 8D91FA441DB33396EE0BDC890C864574EB4A73A5E93E25E14961B9E8C54C7786 6657A8A4640F60CFECD64055E7E6251FDDE543E2B4666926C81D4DE143A1335D BECAB91E4B8BD4EBAE76AE74212FA558F1F2D8B51F5AF309F3621FD6D3A148D6 B0BC6CFA72BE195DCCE41D6238B32FA5DF55E37B3788315493C5670B7CBF9C7C 5AF15B3D8AE0F8E2A6050E680468F7FD4106C333E43F6F5CA792CC5BD3BDC7B4 57C4F198B3A41946B3AB0EE4A46D552D107BAEA2E58DA400BAFE89BBC1A221FD 3DA506E592A5F118E90B386B189C631D01F56C62265B9675FE041A69824DC161 E9695C4C8417C1A3AA4F00F000F5C80B0E94FFDC23845A86F9060B296F936058 C84E15B74A02C2A90DCD49C64C74D550CA2EBB206B230C5FD837A89EEF3DDC18 8411B0D2DC5EC948CC2684844D91089457842BCA85E8E74D309212E722E8E20C 27D798ED278182C16882B886CC6A2EA05147B04FDEE692959910453D05484C91 51C878597621FA94C8ED55B20766E39CA42B02E2E25177BCE9321D4ED175722F 0B524C4FC526D744592F7E3EC252CAF94F8A526F2BB2E52815758175F991DFEC 061AF32011AA8080CEB4FA984E5753EFA4E13B038B99E41913DD1B4C0EECA452 F812C0F7F84413F721A0C6EB4C5110F688AE65C9FF42B80B291D68180A67796F 96318933250D5956D59D11C9BF45017EB60DD7EB21CBDDC5DF1467CB0127A80B B031AFCE0C3EF3B67E2F0A5CA03AB2F4F627970697C1B6D681A98B01E7A8DAAE DE0384DBBD8AAD6DA4784ABFA1557C08366F27D453B9534CD5A6524988121686 7807E9C77A93F33EAC102F615A726563AEBD51AFB2BEEDA3693ECC02BC9D1236 7A2B4FB44001A73244E63FF65F4B0BCCA07E9087F106146038EB465A875D0B31 828722572C2410FD55ED1FB775DE68F5465D0938D4825F02AAA8F5655AC90CAC D7768A8B6CE5DB56CF5022C9BC128723F51668085E0D760EEBBB09C79D328FCF 96250A4D5B7270713FFAD86C0292362A118BEB1E9DEA0B553823A2147CFB5E9F ECF1D8E7F7147C4A1338E68699CA04CB4EAC5C84C4956414FA8D233B060A91E0 E390AFD1955651F963985ACA2E4F93EDD6915ECD87236C039F8F065ACF0E88A2 1E0FE91A1418ED9759C8728B81ECB91FCDD13BC61E80DDAE1403E4F33D2C71F1 6CE7212B1F3E27B10ADA9C0FE45139B7E9C41CB62CCB048EF8597D761FD062A5 85CD567A75787855CE2B8FA58806D7457934EEC97EF60E2897F3D77B4ED74046 A0D0F8A8C76042E5322FECF2FF8564BB70B40609F6664DAB643F8DE79BF02271 3F682286B50335A9F69F4B2630D205A1C4E5C64682AEAE8B0BBD9F9C0021B70D 590E98F114A145C4B860442360BE1219B185021BE588C1D97EEE5DF474C180A7 DC0AC5CE618E8D5EE22C736CA80B8CFB0C87384C1B4996E9334C297157A76BBB B82ACF39E5EFE051B7395B609C9A42B4D0A81AD20455A8AD159314115AF19E6A BE82C6E938B0C1B702AFCAE1E3580CFADDF9C3B1033A0878A4949D416FC602F5 B0E748FA84ED9EF80559467D407C99C3477F00AE161BDA42A6517640A700532C 50187D25AB213AF0ED8D6E47BEE87EAF5C51619297255ABB0AB009785E1EC731 5D9AAA6856D858D841DB8CD65F4E77649F336729A12FA73BC9DAB4A16A2B75AF E418CAA7B764B45B3F60218405AB80A159D69FDA668060901C8D93B000318A50 8ADDD8188E5E9484BC7EB9A957A155A82DA16B6BFA94F865F8CAE76EE863B10A C88AFF9D6F2BD2D30CA267D261B9D50839E31FA74E43A3C56B38008FE8F376AF C3E335FE5AE858E818ACC98EE00E7A660839BEF8DBF8D512650F0FBEEB206DFF E5C0B9BA3B8EE3B8C6755FC284A1FE181C138C4C00E782708E13322E3C251EC4 2ADD94AF4218E20F31D8C906A98F6EA8EE8B6D30DD67E8DA9CEC8F199E1B7612 275F8A15A4CD8C9F668948D530337F402202A3256D02B3186533C4CEC422C689 CCAA09BDF541BC8F170B5280E21C51F5D24C888BA8370DD1C2EBDFA9429953FA B54086534A05AA9B67BF7137DA55C5EE7B8F0ADE4C0F4BF58EBD7A12EDD426D8 3D73DD9054E324F35946B3990B358B85EB2E91D3A312B85340B13BEA04F7243B B54AA2DA581DDC77691C6C7AF78F9131B977B8C5243A248018C0AADB1D7CCB9D 0D08CB39AE46482EBA33A6DD88E25FC5E4789E327B5C4EB31F38FE113361778F AB83FAF25846C120B9F736E7B20787433943C59479C25E9AA10D214B21787124 957ABD244B6552774120AB36713C8C6AF10E28814D2D7A51E7398B3938C24C56 C71744F3B12971254BE77D5A745EF3669334165B03D76C36F0FF812EF26C8151 BF1704CC7371B93F33AAC76A711B8310D1127821A1FFFDDD8FAE90BD21146CFD F9EFD6DEDE72B92081EC21EDA75F72A5189FE5D4E5C9B2EBB285C68CBA981A7B A5017ABA6CD72A09F8A4785D818804C705474AA093070A8097C23B268539821E 394D03A0274CAABDB979CCA2CD6CEFE3D57E5A84A272E10623E46D074B712E66 C68DAAAD526182FEEC8EDEC6DC53C137BF546FB656ADD87D6A3547C0C5E76ED5 A3A36ACDEA11EF8C967057FDA95C75A307F0987872D32DF8AE7F898415C445F5 DEBCC0840F950DEF271C2AE5C64D0D95A03CF9F3ADCDD7AD85EE972793A10AB5 C7CF78AEFF83789809E4BA7CB4A6E8CB9FD662902DC3A9E07B269BDFD50DFC12 4F7B39A7859811014CFAD4E338903A24BFE4A6B7A7D1C0129CE3677A4FCD7A97 DE68E10087244C054B4515EDEA112C0B1960DC04D744B982344A8827D3C54E08 70C61E912DE19181F291E8C43BB5EFD06473B1E329D7E6CC10EF66348419FCF1 68D610AD54EDF93A63198A7F59ACE64057822D32FE2AC3332B378558B84362E4 EEE47CE17142159ACCA45DB205C97B584688AED31E155BCEE23A844830E15028 01710DBBA9D314FA757A0EB9B7E6D8256EAE8072CE393FABAB0794023D94BDA9 CF08701880B9776EF841AAD7FD79F1B195DF1F1B94E189EF72E2DD020038E5E5 DFA34033FD9285F16657CD0E934B462D048CDECDE07C64522AEE7F9F1A87D3B5 FC1B6B51E00A1C424EA66E54409A235BA9E7046597AC6BAACECDC5C5893A6C67 231E5DCB3A36E16FB647259D7B5954DCBDFB32E2345E5CD9E59D7A5EF480CECD BB45B042634BE679DA5B931670D9F0ABCAA6B1040A790C65785FB8435322CA7B 8B7C1EA60E870A0D987142E459392766EC3B4A0FD4F8946CD700424EA9C76F4F 6F17D65EA4FF7C3B9EB69A8B64F7A39EE398F2CB54A47B6FC5AD0D1F2490EAC5 CA5E3443B8B3BB30D7C825C2B504D97F169E8A99DEA1303DEBB37BB292C56311 95BE320318774FE7E06EBB40A5951BDDAB1B3544586E41B66C2A8EAD37F31BAC 17C53FCAD939BB9DFB1AD9A58B7C02371AE9E7B328135BA51E2D86A87B11B648 8CC270B15F14BEB26CE9B1682B7EB9F419EFD6787AB337F112F11B32D9B13192 BC175B9274AE658ED5D3170912046BD19075A3F1BCA5B8282F69A76EA1BEA2F4 191DA56EDBA5A9104B40FF56963D9CCB55408351665A33818D33C2D913F53F23 73614B216F12DC1DFD2C99612A9AC94C084AD72EEFDE3173351C6584F8B059C7 2671C242ED819DC9FD51305E675EFDE73DB4756AF169D424C12B506BFD6B8281 FF6D31745B48E37938FB618995DF9B41D1D2542B317156247A61FFA508091C35 DFCCE1215BD4BF484D8A8288F06FACF18051AABE54298398423062A66D6D9B97 D45331C7397CE1447B260D12C83CA6B0E3ED4FF17403AF5E1BC90970FDD784FC 29AEC3218A28BB65FC821BE55DFF46BD09B67F76D5BB62701CDD64E40A960B08 07358C1AADF3040DC9C587609ED4E5CE12D90AD9DFD2A6E40BEF3EA5E5A16F2C FD5987D50A6895A59247A64D98AECD74FD2AD0D323A170A121E9E526BD5ED268 0D29EFEA3483FAC56CBE5FD141899DAB435535FE7283A22C38C706B3D06044E3 8F07EFC2A46CE195AE8B2E7A2CB3C95FF4EC6B9EB25FCA21BECE8BFF4EDE7109 B28666199AA8AF3F410DD220F76EE3F0DCD55494E266F446B0314F7CB61CBDE2 07609F1A733A5CC50CA1C820AAB29438A8DB3738251E7EC6C5BB28707CAC829C 01BDD7BBA231D9403BDBBD3753A5493D4A3E3E4366346524C14C7CAAD7CC50B7 FC1D159AB6A7CBA56ECF43ABD6B1669178E47A3930A63C319D28EC4E01EA8908 E29D318FA3E89678A93DA812AD8A730C0E93425DC30B3B86E4C4DB982301D182 9EA2E39893760AEBBC4EBCD89F37DE58DD0EEB41CA47280700EFA1200BD8A7E0 EFFE38D0F3AE5022EB7518954537E71B1A021E347F8F72A40CBD31268288BCEE E80A666F922367F08E7BE7B0FB12F21FFF81A244D705D6A30461E0452F8DE567 AC0AE270856D978E05ECC5A53BF95C4A6AD0A28E459170E9E0AAC375B5E912CE CABCAA41AA8C6714B4B437313C5A3332C3C10F80D364F23DCEE77834834A42EB 8370E291A0D504BA74BEA3439D52A68628B4028789DF0E21CC9B7CA31A0BD294 02C94628275F20986DFA1E8DB210538497CD93A216E07E811B04E9B6872A626B 38C60F77B3227E62530FFBE8146BEF9FD7B2F29E2376DE40D5CBF4FD994BB491 6667180182F74F851C253D1DFAB3240BD14D08D1C6E6FC62B115A571BA0234EA 8AE388A8F248426DD92DD65C3A5CE468074E797BE6C6C85A788FD30001FFE54C B9E80128DACAB4B6C9F66396BF2E95C7927A461049B1470F85E3AE08DA937950 14356351E1AB5456E8633C323E2E53F8A2167CD6C98AF58A86E68B11E2E9DCA1 279FE358870DE824CB4ACEE44AFBF25C6061EF34D1859F283AC3B77FB9C85362 627A97A3831DF574A0134BD4311E91B6B9C40CD4BB98F8AC4FA5A9156E4637A4 E89761B080BADB4085656BB9FDEA74F58D82CD923C821374C456F084BE920469 340C12B6E481F2D9461D79AF2554326D728109D91A0EA5054AA1FEA517A1F3F5 28AE922E8EEA363EAC6E9976BB66608BF85D0CF4E089C9A071189F2E7BB46D58 EFF863EB545A0149628B25214B0ADEEF2D61DC4B4481856C59E737D6660128EE 9BA29B01D9F68B11E11DF621D0C5B4AE395B462BE75FD8D7365A2DC356BF9EE8 3D71AC91DE6D737801385ECDE8B1FE46CAB2F8AFFC3B6B6DFFB0584339327304 1095E0AE3C89755456E6E537EB368BBBC6FB9FCD709D7C25362CEE8CE6A0B022 09E5B415647C7229EFCD15219C73DF7D85A556E2EA856570351FF37AD26FEB08 975F745D06EE742616B002F3CB0DD107FF14A25D35113769E89136781B178A28 4459C2BCB2AFB44D03B6F413EFB635BA86D1E12A50EC9149D3E9A14AA106A38C 5FD43E928055DA5440CD263E3E5A75F4A897F3E8F40F02D9094E857247B84DE5 CAB332EEA74CDB04E2BB30C2B63E2F69CBBF1D86D06E26BB11BD49A5BC88FE6B 5077FEE37FF51B05ADAE17B7AD93B5A992BD1EF3B472303F4C69A9435723C073 9A4487C78FBA21E66C1674D93343D824D6CB1A4B0CF1820F43E1E5E088DFFF6A 2AFBB1CF5628C70D89FEB157DF2FF7C0D585A82AA6040535D0815F9D0AC702CA E74678F67ED15870C75C6AEB923670E968507555C917AA84CF1A83E5E400B375 A6C71200898980F41B5C7AE192BAB5695234DB76C17511B810E2C5C2226E6E21 9AEA5A4BE20D847AC1767D6824F7CF2A98F8FEF9D4C58B53C15C80BC076F81FE 572D2E069036EBB45806D1961B5C493C5F6F83F261F42BB949CA2A1E1CF7E96F 5E9554C782F446356B44055A48F11418F0000D0E754ED230F914354C07CFDDB7 FF17EEBB24037CA79CCF613C3205636FC4DB3A8D3D61A728D4CC9C66C8D7D1FC 9177F8FDB3D8DF0B0CC830C67BAA5D443DCD152D350D9360A3DFB871CCA97342 D842DE1A3975FD7DF4C9873594B32C70A9DD7C2AF0112B38EE0EAB76DD96DCC7 8E9CBE8F1CEA9387C3108EF6FD19628647F9CE7956D4641265BCA47705E827BD 3274CA5017175D8C3C6493DD14D524B175B33551EDCF8FCD5FBE4DC2D5B30373 BDD4ECBC4259ECC434418DB7C0987DD5076617982191766E2ECC66AC4A31810D A3E653F0CAEADF251BEE226E5E362A7CDD5866A35B405AACB9F9BF68228A6F1E BE05095643EF 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI6 %!PS-AdobeFont-1.1: CMMI6 1.100 %%CreationDate: 1996 Jul 23 07:53:52 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI6) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI6 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] readonly def /Encoding 256 array 0 1 255 {1 index exch /.notdef put} for dup 106 /j put readonly def /FontBBox{11 -250 1241 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC 4391C9DF440285B8FC159D0E98D4258FC57892DDF0342CA1080743A076089583 6AD6FB2DC4C13F077F17789476E48402796E685107AF60A63FB0DE0266D55CF1 8D0AD65B9342CB686E564758C96164FFA711B11C1CE8C726F3C7BB1044BBD283 9AA4675747DF61E130A55E297CA5F0182A3F12F9085AF2F503481071724077A9 387E27879A9649AD5F186F33500FAC8F7FA26634BDCE1221EC0ED0E359E5EA5E 6166526FEB90C30D30099FBDC1BC2F9B62EFEEC48345160804AA98F8D0AA54B7 A480E715426651865C8E444EDB798C7E11040AF6E5A7ED1888653C6DBF5E6169 70BCD9C063B63B561EF165BF3AF11F8E519F37C6FDA2827685739DE2C48B5ADE EE84F067D704D4511DBFA49E166D543CFD9ECD7417055D8A827F51E087CD2927 BAFC7E6CFBD70B0FE969F890A11149D3D44D422C3370495DA9951AEE7253A49F 3A9444C8CD9158D84117299F7F2332FEB0F94E6ED8BC7AA789A3219BC2F227D3 3B5BC75FB53B55D72AF4A6A7BB613FA235B11BB37D059FD87127CEF73D5B3FBF 9F91ABAD78BD9240BD9525EBA78095EA0BDB25D1A19E876F292882EAD5619D46 D20317A345D931F4FF4EAE6216C27044CBA525E3B917CEA25A04C120466C4B93 FC720E6BA832A06CCA0A3916CEF0968D49085AEBD243C41A448289A6F05CE3F5 79148DC112A3CC7E8FF810B8C1A09E05F496C0F1EBA334E42E05C376C98F5F69 C06C71BFC0A2F3AC9951CFBB143C66FB84F9C4ED27DF70869352D61BD5E11508 0797B87C71AC58D7C35AB3247575482E538773F05A10428E53AFD148B1ABE851 1893F2447ED2625629F49CB4AA83193C0154458634536CF78B599CA0977C41E0 EEE3699386653D9C498F5DA82363911FDEDAC483FC0469BD264C4EABCC577D09 D4AE6C4E53A68D4C2237A906784137945C9ECC75D959EA04A1A64D29FF2B928D BA1AF9F608F0C6164C42FB991A60789D53D7E59F0BE84BD3A25A2CB22AA6052D A817A6E4A5389DC1FADAC7133FCFC9A595C8D4EDAA97CA50026958D6634EBA7E EBF427970E3D57A955CF40EB8DFAA93E7EF7FD958715D933C6EA7A60CBC15B6A E06937FA13DCC5BBC02C73C59F1ED7F62844EAC788F0942AF52D88222B3062F2 73865D2DC742DDF478B8A2B7B2A578E583CF1ED1E1C56C0F3C4F3C2A363BD631 A4C9B15BB936D475E8CFD1B650C90323C8A29FD6F2A76DAF972EABE391258917 53876AEAEED2CAAE226DB0F3B3A768C33034 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTI10 %!PS-AdobeFont-1.1: CMTI10 1.00B %%CreationDate: 1992 Feb 19 19:56:16 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMTI10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] 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 /FontBBox{-163 -250 1146 969}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F 21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6 06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF 55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5 B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86 0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9 1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961 7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A 7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402 356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B 19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2 C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F 244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95 5C4DD885310A706B320AB25C8D742C6F29953254FA54DAAEE60ED477877D19BC D28E9AB576B0EA088171FD000B60D73B3C57F754BC07EBC9BF751B7D2B32459D 993861B7C4B0D98C422A11BECEF76F4EFC0ECAEE89723E6CED53E3678D733363 2DF068AEF0FE7DFB57393BDAA439A6A4C396F86032A98009EAE1247B7DE83B3B E46DF2898598FF5E6CA6953127432A967E4FD41CDD60D6E413059A58FA556EF3 309178B57C16A763CFC9BEEC276944BDEA255789EF4E1ECDE1EA43EEDB955513 F42EDDCF39AE522A1DC2DC523F046EEC4CCAE25792B702C288732F5B13B5CCE7 E8B6A1A1DB86B1EA38883E481BEAB54023EDD9BB94E7780DEEA577ADAA169E66 AB7D8607B409619E79F242CF52E618AC0DAE43317C507CDB27EA8A1472D4E8D9 17E62C98DFB049C78AD15560CE44A39581BD6B555165091C5D41071212A9D2E3 05965AA02B8A67AEB04D915DADC1B84A531A1D672AAA06E9F720BA88419A3183 63D1F9A3BEF8CB2E23CD1F9C003BD7849F093D3B4C83C153A5A790C1F9E37948 5799C02F004C61A6FFDEAA1F9AE884DDD40DEB1539CFE3C3BE03C7C33CB54D56 2C2A0F467049797B56D407AA43EE6B8C3F978A7D945A80BF711C12D6BFFA3DED 35FA8B22E68BBE4FEC59E4C56D3C57E14995A8ADFA51CC6C3A84D3D775CAFA87 A1A0F45C0283139FB485B8FB0BEF5232494C0CB564F966DFE0D0566031392619 3FE8F0BB6747BDA591DFB26132947872D3B209FFD838A17EB1D5047E37452EF4 62066FE4498BD6565F613B96FDD9C4CD9BE88BDDDD65AC86036CDD3150B6F854 CD3FAB9D4038CB8F86A25BE30C3DB367A71D7335835AF044E6E94B04FA88F882 867C87A37C3E27507E945BD7367DE5CFBB8701B338957FF6843504897CC94E80 84DDA15EC37428ACF8361EFD7A0D3679A9F5CE4FEBC059A8EEC324449D204982 54AC21E91899AB042DAD59CEE900157581BE0F18E43E442DB653870C95BCA23E D56C0D00E832803197EA3063805A081FA04245C4ADED3EFA7646471F5EC9C9B4 AA53B07B8C7F81E7F27151033209D5064FA1000334F446EF32C5D83F20DA62D9 5B18A06F323EB3851DE949A372D67038620DA720FBBD3B8EFB90C1B72E4D2798 527DFCE298B81DFBBAB8316AD7F1AC5D8C04BBFC05962DD3945A70B6FF5E5694 26794668CC452A1D0B7D54077EAF2265F391B6229F32D061504BC37391B6066F B01C6DCBFD9C62194754ACBDB4C9D54C12AD7568C8B7DA216656E8B0993BE1C4 3E215CF1440A7A1DC8745AA31CC2ABB6199BE8B84BA94196B1F1B3E87569032C 69AABABD80BAE3C30F303FF8EAECE8B229464AE6563D85EE507AB94E4C7DA23F 1CD976560359A583A1F8CCD8C87CFEBDAB256DBCBD6906F00A3BDC24842EADEF 7B2D2F3A6DD4C8FE1CF4F21FE7245CE14C58E2CED3693DBE1ACF3858BD2F031E FCC7427732351E1407C6E973638E3C920254AA3C3E92AB610130FA2F1E52E393 40A1C42D09BA1C7657E803029D2190CA072721F89203A03DA97AD6CC122D1D8A 77018A76E0E1614DC44145273DFEF17ABD115E72697D64A5C4D8FF59BFDF698D 834329335E9AAC90184308B21E785FC8E27D5E08FA10108346B3F8718B169A0D 4E87EE842B74251371B1FF2B507DAABD5EB55DFF6DC5850E3CD18BFD08268997 FA5950DDDA53EE9CEFB9B0034E4910EC70E66C7960E9FC81E5BFE1DCD5D9768D 263333DE74829E8A4D5EEBCD192FC5991671E0A418C02B331ECBE6636BC6EBFA A396D1B9797F20F8C673B4E255F47399C67D9BA45C58B734933263FD1153B8BC F08CC711384F573FC38C1327EF14571D44922909D02D9322FB81EB16B5687AD9 67A6B2A37AC6DDD10E5126F17D914492F66B172C7DC137252689FCE042EE575F 0835278A6E934E1227D82FDD3CC675D40BD5CEF0EDA8CCF46FB0C8DBE6851EA6 0DFF2E968E224B47B3DAAEC04FFB1CDDED57631EB0DC5E613F93E54D2F4FE643 63D8E24E285C3DF7AF2470A947F4D5E94501530DC7AEC916C1BACA9F686F168B B5B88583600F9169BEE9F647EB4A5363EED65FC05A9BC035EF91FED5D5AE08E9 635C6C1CB0B9ACA90959681F5B5D8C97BA3F77DECB31248B27FCF74D80D5B811 B01A03867F8927537FDCEB531F6F5C3A8939774EDD50A79F0B4F3BE677C48811 438A9187969BB16E4EDB7FDA075DF8857FB1FBDB6C391DD054A159CA1313F3D3 8AC555E2895D0D86C1A2571E8612567A75F16CD644F23D092C991C182B40A33B D79772D8AE710EF3489E3C791AB1F6655B2FDC7FAA78873D010979AE5FE1FDF9 EDA3BD240AEF41E1D7481275B3B52D3E02F6747DFBF6789010A8E9CC033086D7 CE0A00717B83D94A6383605D25DC0FAA4349F057AEFA10B4463E836BA1B02297 565E2B44AD1061B6A1883ABFEC3164C4032AAFB3B291D8253633C7DCF8A52FC7 EA0AB308EC50B3E211A540B6FCADC02E1B1F4CD2AF495E7AF1AD9F7F1C408E2B 137CD55175D4D9C714B947F12545EC7714006BBA19CFBB0965C2AC03221B4F56 DB8F4113B1A8C637767AB4BAC85ECD4435840BC65368D2EEE6B02CB2CB5D32EC 943B8187639F952784D92E074CD06E0C6BC22A94D57612C31AF4A39419DDF985 0203B59C1A2642E58646F8C988C7D050AB01CB2000746EB663310E397FD89E81 F05E4E4CCC119BD9CE6034A4D30E135E61F61608DE180160D974D663B12CA884 00ACF6D276D8171F1063795EE3E9FBB0B921C4B99A282C3DAF30E8D2132F4A08 C1B46AA5CA03B2287B6CCCAFE58F0135BB8CB24CD0BCD89A1AE797D5EC660AF1 1C7A40E14C8EE8AB884968693D2AE8533E485E548B8EBC7ADCF3019ECC535B66 AB7C2F562C18D6B40232A832F0A586743725AD66986C2AACBCDCADB875256924 9DD999725CA9EB302B770331C71E9A8B42970A5A1B72D257A813060BCF283C32 28D4DC30542BA2E056E4C31C7F36004B57A00066321B51C4B93E2388B55571F1 5FA87811AC61A858DB3B4494FB6C49EB1CA29CADA1EE0F53DEB167141E48B65C AFEF71717F5A39F104FFCFD0EE5AF38C9F4C9E7098B0265D12A9805411776703 B57DB832A6C8B6DB995F489C651DB43837C6C5C11D8C4127D28F77E7DA7CC379 46CA767EF3D0921858CF0FF68CF1CB5E6536EADDBF36A3F774046B06C4E9ED0B AB63008ED0EAA50FBC1A639B633270A79D8930042A8964CDFE1F0B4F056756AB D76411B04203F5B9653AF059D03CACFAE9565ACC6F3259ADE8EDE8E323F8A77F 863FAD935A7A2CF48A397262B1B6B5DCBE342F18C2DD26607088260621371640 4703AFA3CBB2912A7B63E839E5584890DDE7CD39B144A3696899BCD2DB3C34A8 9DA07A863EF8C0031167CC963F542F6D45F38D72F6C29BE350B840EA4FAE7C20 B240DB6E01B5D44B285D91BF6A57068FC7D81459C9FAA11F37A27CE29BF21C27 35533A119F19A96ACACEE6CF45A84C9CF713441D13BAF507A41FB6D93C167737 0AB3895AAD8B20A04CB4B3655EFE8CE75AA243DFF70FB8F67F38967CA7AF7044 08A64DA67CAEE4DF9FB92B42D805A5702EF5223DC8AEA2F2A2DB2ACD252AF708 423A30C7BA2934DEFA5BD82FA888D9A34B1ADDC656AC867DE53085BDEBBF365E 4E199BB1C5D2DFF90D877D8D12C5A92F7F5F6C7009FA1F6A85591EA41CF41B92 D49DD757E0A0EA3E7972FD7F4282910033C28C5B7445DD0DC6AC8F05CC3404AA EE48C7F5A8BFB2825322CDFDA49587C7D0EAFED0F399BCB63AA33804E10CFEF3 6859478D5F69211CA62009CBC6E3BFD8ADE4D085C07020FB4C0B2F8A4AEE521E 96F2AA05FDAC9032575B69D4CF9EC3B061FB5F55C99888E29F273FC05D4EF17A 207D9AC0AC5392E5308A2ADE82849399D12929D63F76113EA72DF13943904A12 5A9B8B151E608354293046D9868C00AE64384BD99D7C5B35D4E51990720C0BF7 086783E07810E888D28B58F64ABA384FF3D01795F0E4DD45C9B3792EF573F2DD 260762EDDC32BC0EDF95CBC4331AF7EE9FAC8CBEBF2E4F40417E54790007C5C8 C9E66C6F8D5CDA58A90544EFC1D0622F6DC85FB3CCB14DD32A3EC560EEE653EB 5296518C007DDD9D9A3D523897BE8859E996A7C20BC3141323B0D1905D7AB4CD ECC86BE22D0A3BED97C354C35D9A83665221D0F798FC0899429352339F9CBB3C 705DAE7E651F7155F84705021E7CE87BB29ED521AFB60E59C2CE0D23BBEAEEF2 3E0DB9C64A6EFE9396A57F84297884095AB3224F717050199AA012CD27D62A41 49F1E5685C53EC2B0BCCEAC2F425428FAECAC4A23FD39CC0B12F78E6A8DAE91A 65209CA95A88145DE080325A403B4A701D7F7430A23906F61CEE30BEA11E23D7 2852296D0390543C47164271EB3ADDE524642F065A76515C87F3C1F241DDCAAF 095DC497AD3AB5C1C25E668B73BC8C48F3CAB1A2F0745AABE122B4E8EF9A0743 EEBDBF09D07710C2AC0DCF136EA939E807ADBE041C2D548D0F762F3091659E6B 604FDE8DE96764DD9F07E84E890801D0FE3A86EC34FDBA3D624A813B699B44EC D05E9133A4B6E9AD68DB8D69229A6856015915FE1AE7590E4D62B2B50C9B3F28 B31A7F07488816994AC20BCAA3A4FC15663262D0865E78311D8C051324091935 BFCA9AAD3478DAF42DEB1159A9FE6CAD727629C84610118BF7C1ACBF1A64B401 1C68BA55A957646850EC6E212212BEB362EDB4D44AFDE94F479C298429F9537D 87484F5D94A8D6B0646AECBDB9BE2A95FA3FB823D04336046988081017A350FC 9B986154E708947766724A7136ACEDF30100348B5E6F2A239BE0F773C033E66C 91E9C346C414250749F743D440F62CB0B87EBE2D809A8FE18540B216C4456962 87C038C7AE48C5FB47F38ADEFE86103DED1225534EDCEFB9A76A126039C6730E DF84B0732F695D900C86762F485DB3A6C15EDED9A28AA6F810D602AA2FB30182 79825D7A4B930D637E47595C7E77D6A7FC0A351860A47263CB826C5E1108D0C7 87EC925D218C23110F1FCB4A4F96C384EAC8AD7AA5EC7BBE54409CE607ECCB0E 961BA2EEE565F8E2657DB38D5CEA8910D52E5EE0E181F4E6C946C6C06CE06F30 91DE68D403CF4E1E4EE0F659DD50FEBEF27DA2B50799A6EF1E9C20D88691FBA4 0B808C8B6B2145C2C4E57CD5F28DEFAB3E84657FE89BE3E0065E69D7953D08C6 9A78DCBD10FDB428CFC4A6DBD39159BFEC336BE49B97B56972AB87920C63C9B8 B0A1D98FB97AF64FB5886CA921105452B92D66446007FEBF2FEDAE3010DC639C 0784728529EAEB1104A0E067C9D827302C8E5B118AC1C81FE72DA2FF3F11DDCA 400A137706CAE72E8B34DBD6350E1B62AC5808E09A3350382834F9AC2FF23968 C4FB14EE1CDD7BB0BF8BC91EC707FD3113AAB94069F067407E84C89503CDDD4D 39C32F0A513A41D1D7A4BBBE031C8301BAC59EA2CC62FD35606F8502233816BB 32CBF2018F3712E44F6A3FEBCF8D475E5132428A7CAC06B95F665FB454313E2C AC971D6DC7575E019B04139E441836C7769C69F1AE3132AA76CAF79152A53460 17C72A28F1C8AA94A02EF8F566E7426BBBD8F9077D1BA58A8B41F751EFCCA8C8 0B2A1CFAA84F4996DF5725063B3076D116284E5D4504FB5B3E42D4383803D0E0 0012FCCB7EF74FFE5A4AA916C7A6866F6618C4B1981AF383890F0AE68570549F 1974FE114B0006DCE0BED483E6E07232B3313F4B91BD85C81828845207DFE5EA 1804CBEEAE55A770F56E0C02B5CF22B8C6059DA580B74AEC3B315B4BCFA82317 C85C113BA20337991D223215AB7D60D7948FF1AD56A6E02CA63F738207294ABA 6BDE99FC2D77A01B8AF3B7CC621F61AB5136F2AC6C88AF8F258304CC5841A8AA C717C83CF72098161B60BEADA770F54E9440ADD234FEAE73FF2A253A09F2AEF0 A34C24CBCC0A403D5A847BB8FEFB95D2BF17FD7927163086E41E8A6320BB828D 0CCB3BE5B59DE4DD47CCAE96CADC2E1E1A6E6807E597001ED69A72772175752B 1D77B1E13FC8FF65B2C1EB4DD27E7A59F70661502128B88F99E483E120FCD00D 14393CA398D90C71ABB4BB59DD1DC3AE6F3AEA4E73D4639D46FE73F88B960FDE FC6928033E87767E985987A24423A54F6A852B01A799C26DBED7B6181AEFB33A BCC8F3E36481775A321104E857345D794C31A14F70A0E0C40E3AFE3AF4AAC7EC B3791A82069D1628A783CE67E42D4A069CFED04E921B1EA3D96D92BBDB7D92AC 19D09FF3374D529AA92B3528F5CA3AD36A11B09B347437D0001CBAA805FE09AF 5DDA2D9E3519DBF262F6A2725D91670C1B6DABA1B0341B994E18BB98F6F2FD0E 5723C2B13F7FE42A6F649AA7EA882DAFD15C35B2CD4819FB69B4F48AA04DFCC4 D98E07DC72CF95A833DB02ED1ADC208ADE7DE863AA76B53ACC6E1B9A8646AFB6 81598D03B8E68B5EAE2CB0FFDF73BA6AB6523E5ACED5C387EF965F2D8C10DAAA B0BBF8767EC929E7F0A845817DE2B2729918A3BFD36DB2A896F4E661D12637D9 A36F6F4437E7AFA9EFE4C41EF76581D1A3CE06FFD18C83D871CAE6EEB35527EA 7B10A89046EAA4361F1455B78171DCC7021C79E3B978111140A63B6D0F1C9F40 81CEAEA03AAA12D252E024E904E8221F922CB61F42567774B3796BBB91F0FE5D 644740774226D16C490D798517C742A40AA7FAB0F7B105870015F8EF3B9E871B 62C667FB1E2C4901F95DCFB400C86ACC0E3C7C0CC5D3C1380C02856627274612 DB696634B5133A6928BA001A22A7AD25E739D30073011703572B78E1C4998D73 46805C3CB436189D0BFFC946813D51605C948EA5CFD4382B9423D3FFC69A535B 299128176FC917A333722F79721CB55434198A3947C4789FD0BFDA54BF346276 D411F3CE7296AD56C67ED67C3C9726CBDB4C125190D97B56E4CBB0E818E8F311 3E473921B12818E57DD3E0FB29E07FF089555FC809CC016D728E70516ADF7F4A 4E51193A8EBC5A8E8B1A6ABB1512DC02322D8D637856234962387FE23EEA8EB7 4060231CD31D5766919C655D94B9C996B583102041A50F6090FA371C8B082ED8 EB09472C769848582B0122BAD0EA145439A5B2D2961FB4310392AEC5A747552A AC25A3036ACB13DCDB126B34E31E3C3F46F70FE5DA2E68D2F5C14C9A1B5BD46B 4D0428C04B510D84FC1495E7F48762A73C9C52B78EF268FB40E50D50FA1C161F 20FD9A833038A6B17DC75E247861C649D0F1C2DBEDF2B03EE2C004D65464B5EF 32A7DFC6AB9105DA6E8ABD2A304DD4E052CD01734D316728D08214457428AE45 CE4C4D3FB2B7336426F9E058C746531BA83AB991690A2EB3AA05277DDB7A98F4 1C26FC0BADEC401E8F56BCEA7D7FACBDA5CCCC81B22D4A52352CD81DC3F61854 FB911054CA763B9FD29D43B577F7DC8E7FB9EF814E4FCFD76686F110ED1B33AC 36B12E84D5486777C737CF841E1C57F33224C488EFCADFA1405CD355C0C2C4E4 664A5F3BFE0D8157983EDEA791C94A30221863AE138104255FF2579120B12018 591D2CC780C5302769E7951E1DE9755727283521F88AA524D19F94E750B56861 B2CF10FBDCA025B4A452959D67F4FF2FD7B76523C9722BA73186F54E3A82C773 534E6DC0AC1204B54396DC69E5DBEE2125AF8803886CDFED87BBF86E73A57D21 0B6770272B6B21DCDDDC53B8EB240716EEF77F64269D9672D44C91426C762479 20F7259493F6F092D5A5C04777E9D33D20AE450918DCA3F3ADD1470AC9D5929E 312393C732D1A07E6A49E0157C7996DD8F3E1A1AB258D7909362103E3657F942 452232E6FFF2AA237958EE472A9D8230158C5037D1978DF1DEF89676C2668198 EC5625B0E2513DDC0E16E5119B976A440E8FD5389C85D3FD22B1C26E34446EE5 C64788D5131FA10C718E385EA778F93D91B353F3861B0E3D27C7F34A773BDDDD 480C2308052AF856F3FE7D3787B6D279568136C7E9B29ABA35E2D4C0FF5B619F A0C69EEB510BEEDE2780DB65C9E1A3CA18B8854C949486A70F425019961D6C02 CDC18DD73D1862728EA4F85B8BAC8B74C4707F056D59D7EED80228BEAD8FB75E 2BD436373CBCC3DFDD6CBDC863428C3D862EA0244928C48A558221BD5C339C71 2FF11AD059F98560EABFBAB21938956D4BD7BFAB2F5292E4FA85EBA183499225 D30AF98514893F91B977924547C827D53FF112DD75EDED3D5C23573EBF5804C2 BE9FED8C8460F2CEB8C42F53C8ECB2CF59287E6F2241B56C6AFA5B8ECCB93594 50BEDD3D664724269A9995DE1D31DC772F46C23AE2EC4BB84F9E49284642A354 6DEDE4073B1FAEA92DA6B8AF1212C3151342A2AE671C00EEE59D4A7D48846E02 149B2806061CDDE386C128660C326633040AD63E2CCB1A1C5BC5553C3EDEA0AA 4436EEB2B46FF8C5F7CE1ABDD8DAC839642B754983D8827EA795B99AD0B11007 0BCB7619CCD012BDE9F81E0A07AD0976B2FB484458EC7A67EB0B0C6F6060DE2B 680E52FA70BE3B2732AE52E093A089C223883EABCE4E478F1D159196E3981449 665A3D4113DCAC4241C355915AF4C205A7CAEDAA83B433A8959AF6520238EF56 0076B097FFD9819B97427BBFD051B86CDDCEE81669AB4D4CEF7E96D20200B3A0 168D0682BF4FC28399E9CA54034DE3C3B70AEEAE2397BCC96031338D09F153E4 1C80B6F6B7557EFE9AEA2FCB86C302EDA6AD1363F82688BA7A34ADB0685F0F2F FD197E32A98E430E84708C776A2A58402DC1A3FAFB77FEF65A44BF456CB9BEB0 CF69347E6719B8EBF1D40084E1AF263CFC00FD517513F410CA5B89E85407E005 1528141547C4ED333F84FF7B1DAEB3E19DBC3E077BEB047CF47C05EDE399FCEA 811EC663ECE3B4645C7559F7690ECA12606468706C7C1C6235FBBB56EF715803 A22A65D22F3A26466D93A09B763BF8CE9A3A2B1FC87323348B7892DE9B6BD7A1 1C0C31511A1687E10917B4B626FF4A04310434117A134D80E918C1C40D68042E 03C7B1F832A92084D2182FE4A17623554376BB1906501518B7F4A6D8F73F930F 89571727C5995DE03370EC562E3F671F4F9B8D6C5B05097D682B0DB55C39CF2D FF915DE6AE5E38E0401C7B9E99D848CFF5CF610A6E4282DD046489880E39FFCC B09ADA0B98E2B92CB78C49D45582B1DD4522C033DC813BE09732D61E087E823D D926CF0FBD9EA90A5320BF0245D6376B30BBD4E65329008FAE98F7C9C464C9D6 D099A90016BF118141EEC468EE07866A700CEC2EFD57305D73C8B7C24B6BB373 7A296646C5033354556152C7BCEBC6316B2566880877C26827E92BA1BC533351 84F577E1388BCED6B5981F5DE4157386058299199A04F43AD4726BE62341C888 96F22920718FF6D690ABBC63DAA90607B9A0D485A562A6561E63E5FAA20A18B8 7A7E06BDFA70D6EF8DC85A9350FD7B009A0881BC3D27214FB05268AB06D721A8 553FE1486DC2388F20D63FE969F344FF3EDA3772C77CE555EE446364E890A01D B2BC3763A9463518524666C76B0B89D3906AA198953E8B29B6D9E15B975D2A86 E62AE9B8E1DF07B31B76F45533E916A21C2C192E528DF38E7FA81088DB5A328B 3B174E6B20A176DA12D14CBDDE396E1327D85DC89623E424AC4FE9F7520F4420 94DEC6FE263C11A7FA39F5D9C9BC28B9FFC72194DE2CED2070B0A071EE3F5DED 0678BC5F7873713A24AFE365D08DBEAA4044A7ABD55B60A1ED2AC04AC8887104 97C6F3050C9F537BA248A63F56612C4C35920EDB51A39F0DC70AC20355090BB1 861F737ED456DCE0AAB8449EF74E8DD9BCC9A2141EBCB4CC1BB4CC5E2BB9098C 8B4A71F17108E730009A77047C9009C75E6EA47758C443693121ADF5CFCC4766 C14890D2524F7BDE488B3A5B49D1ECB4B53E7363179D842B248F65D7A19F34E7 AB59FCB3B90A1D93C713E795CA5B4138B850DB3E78919E713E499AF4488348E0 ECFC4935EC87E1FA948BD5CE3E3DB38898F258D8B8C46E990E166CFC3BCC1245 378D1973D3C54098A240AA4C357028B250A0AD1604E9F45B9AA7BFF18882F4FE 657AAB956446B9D1D059B07F7260A68E77FF172B4D1110BA4A1C52BA23D01CBA 53394420F05379FC05E02400BFDA69316F61BFCF7C3E489B9256942EAAA7F7B1 7C1D3341EE7925AE22F9AB79F9A97BB1485D128F5C06A68A5ECC9944A09442A9 14C738C5714D816875D7105EDEC263D10143900DDE911D3FA338F1C575929BC3 BDF12E0430B7F128083546AA6354FBC80C44F8C59B19FFEBA67EEF8FEA271E77 FF3A27D067F4C11457BE070C1B7C7BA4F9DFB7DB4FFD01205745A42F2341EBFF 3A8C24BF2C8D6F2AE5D29E011C597390DE97F955A8B24F3A6C4AF4BF68ADE5F4 2656E94D5649CC19F0DEFE2F1610D1506CE2FF4E15EB9FCBCE674D3EF7404D8C 401B49EC13575DEA4DC63B3FEBCB0DDB7260DCA5841F135C54C74ED6A4683BD4 B105412BE24599A83B8177B58E011966B6AB48FBABAF15DA7EF9A6FC15D7D33C 8491A3C05CA1F0176F710523337AE4AD4BF0CB4C1C75B8DB98EE10A3A628D308 5263444BA7F10D3164E83E0DBE762FFEE338FEFC30A8B18F5241A2A8C967143B C0588DCB812CAB109F466CB5ED9B64CCB6DF8B469D55101762A7AA58749BE985 A08312D00E3AD29AA546590E0118B10BEF2B15FD3C8176529E4F531C2FE92C8A B2B804F6AB935DCC5B18823B647173E833F6D811D0FA7FE05EE68B5E2A5DDC05 5A040D9F485A860EDCE7131542E922E8DA5AA205A7085CFD6B11A9AC40F9041A 31A62CC60C25C3E132BD8039FC3C603E21961878908A4E84961D461EDC0BA92D 8E2242C85ADDE4A199B5FE2300068EB7286A3DE0F40F2E7A02B99E8508C98DF2 7C6CCCD4A18CC53F346D683AF420EBD7E350AB1F9E9836EC2015DE659AB13814 CC6F271AF1E96176AA81C1DA52FB4314B5604010F01D78875591622939053E51 62E36F23863339AC6E1D92F7B6CCBEEC7B730162F69E54BF73CA37499C8C3AC8 FD23F93379E5FC695633C3539DA4F8398E1EE4D8375E594B361A6FFAE655DB3F 4D9F3B53552BCF4FBC15F29EB3A08B118B3E6C6F3A1CC946505599CE69F5F434 5F62793D5BB8BA9C00F1CE273162961B48D117153DFEF3E51CF6BE3D6B3CEC76 C20F829D5AD3C1CB64033F9A8F6B24EC45F8F27FCD55B47A1D1799CCB2BC42BF 7122C8F5C1E481E0EF313937D8C999BC568BEA0BA2A0C4781C1E4685DBF7F41C E75F5930525FE38993452972EF12033A847EEEBD69471BA73FB91D265C1AA04F C0794A888404F60687AAA2ADCEC206119DB64924F8CC67362F1CEAEE8652E2D1 0BA779CE68D5CE71BE03123D961F9D163727C5CC7ADC00E93D222E128726048F 5F6142BC5166A34B56000C905466AA057E17CD906FA9E7D51F53A4935BF65459 F5604E7A35CEBA7CCF31F49899857B2A2C779CBA10A879E8BFF06EAEAA087687 9FADFA796CA26E1CC062EB2FFFD24FC7AA54B44C2102A133AFF56CA60B0C3B45 5D17294E5F1354CAAA4E1C6F71A4B1721FF70E77AD2AEBDDDC6641D7958E9FAD A51D442ACB63784F7993F119CE2AE0D09016DCE8C342A8620BC9388ACE956AF9 BAF0AA920184F6B67ADF418535903FABF54D11E06C027071D99F20C8CF2C6991 26600524873477D372A3C5C8B306487E687A7384A4640E6A25840B9FB3CCE51A 113E9703E9ACE573C1252DDB5F757FD782E19D3634E60453B518750787AA848B 08B704F48E7945A1C3932E9C1032454477946FD56DF637D3438F510E209F0368 2014B28E2F8BB9C230F728EAFEE5C679CFF64BFA29548D5CE844EDBE9E180C4E F77763AD85968843CB4D999F8708E5298D9C6EB969D26092B47D4D9DAC4A44D3 E79C8351D1D155C0A1290299AAE5BB02E9787F1F48720177CB94D898CB0ACFC0 CEAFC6A0F8D61301F396349CD1ADF8BB825EA70CA6296289A59B182D318A4997 EA2712AA7BA1D15854272869E1C24FCF158453D5EC17D3D93B3D6766CA76D6DC 472E54EB9D402C7FDAE2B9B641C9688DC3321E028AA136E170944612AA30F27F 6B90A3BEB73C4F63DEC6D0756954F36C864DB86EFE59AD1BDDBB3097D3E45AD6 0C87A5AC26454F780B8BC6BD472E4C18C071B40B2E61854E5C16971B54A00355 B51E187AD293395FC88D7F86D1A2EEE0747336A16C728CF24215BC01B74A5D23 AF24F8B63D9231E68F00F3743F30AFA9A09FF49D5A7E2310B9A7877CFA95CA44 3DA5DF4094A57F884825BD524AA2A1394FC8702F3B73EDEB5DC699B9730B0257 966ACE31DBA07AE58ED7090F3A7C3D69C6C70EA465BAD6FC788649BF73CC8FE7 DE56B0CAC8B2EF2988B771DFBB54332DA49662B6CA8ABA825EF10C3E9EDF0229 20694556DE1067D5FA69B6A0052B35486DF6AF7A5128995A6C62402AA4895F7B B3BCAB863FC3F8DD5392FE954120249394075904C0245020B9F877278D09BDB4 C0BDEF97B1D8752AE828C7E889538920675CCA5FD0D3FC2B9C8FE8F38A917E64 71726ACA14DB4FC12F178E9634EC47955180A1F2D7DE2774F2C618D9333A1BEA 4235FDCF7D0DF2CF57F34C68489585DA58A644184C982EFD22133F8CC3456103 D74325D40AE90A50CEEA0DFEE1BC380E66A6ABD13B4D140D5D3A3B020286E2FA BE9884A0815A5F17FF9CC8C3B2F5F134F3748A23C467F8A824DD199D8A04AF95 414CC366829CC1A0E5817EAF8EB97293DE39C408CDA4EFCB5C34ADF6420AC0B3 87C9549EC81892CE73565A40FB99585B58EE7F3F5A840772337DA4E831090496 A4CD4FC7FB04216978F43BBB73136164EF5E228AE6FDF0FC8893C07A0E483C8F AE4165F8017118B9E756A8FA3CCC3BA81193B65B1A0160B759D8B53774C1657C D2846E5AD959C5146A0141BF258692DC62CBFF4C521E44033D71F8CA6CB85E39 235CB57F3F6E733FD0956C0146D8FA6D61B20B6FE08CDB48EC3C8897AC502BAF 5B170195A74EB681E14BF53C50FF7D569B6C9F731D83A8AD8B2C2A137AF43E58 71ACB5AD1D4BCF6A5C2549E3DB9396339E1A156C544B6E881AA4BD42490913BD 8DBD493DE2E20E52EEDD935556FE9FCD488D51370BC072D5F48739A257C05D06 929FD375269BA4069D57CD08577546E989032EFE7A190FFDDDA95BB793618015 008DEC967F059EDF9F2BE49B421842D5CDD6E334E1CBC5E59CB419008A36F9AF 9F876235FF226CE2538611B20F07EA41B08CD04629173A72A79122AE8774A1DA EE2B9F895915CE07C20F10C07E41023065E0CB9F0F3D8EE28888F1BCD4558E0F 4ADA2FBB9606ADF8146EC3713FF80CEE8C1414575370B2D5ACEBC0B1A3D301F1 01FFADE47B221E972811E5207305417029BFB23EEDC81405954D0C743061CFBC 7F6E57B755CAB5AFF32C27B68D7D526311018CA244EDA085898C60074E11C39D 714F6345359DCCAC4F53BAADEA305C9DB15FEFBB075A2BE78E2C5EFE54A8BB4A 07697EED8978F1CB89C51AACEF83E1A667668019D5A44941510FB445BE7D4C69 4A5DF3970D0C65422F4E8B909AAB5DFFEF461C1F6F201E121F677C9BA48F1D5C 931535D87EE4105F079E8DF91AE24FF1C4B70E9E7D3EB6E79020033ACEBE41FB EC55594C83C9DBFE8152C6A7E114FB0114778C3D45C97FADC79975497E7C3700 EB6F9058E78E545A6DE6800CD69E277842292099D4B043B4523F826D5B25CDD8 0528B33CDA5153CFC47C037A7935BB11CADF8019DBAE4FFB53484F61D2C4D89F 96BD55A1208A5977E81C5271FEE00B8A18276F96E49F9BC3269AB0551E2A3F6C 934A72674BA63CE844EAFD1F80C2CAA9F012F414433DC9D009BC7B40E4BF5DC9 149981E0B5513CDEFEEFAC9760EAB7CD86B531B2ACB73E9D440D85312352FE47 3975C78D81434C1AC0E2669973E9833A83F2382557E9ECF6BC37E3787EBDE5F7 B992EAFEF7A37CF3925475A584292D25ED6D08E4C4CCDF12B055CB8553BC2C54 B437124B366536136265F50AA07A894E23B4A700F8A4B1C0C497055B94EF9D87 BB3201F6427A0F6867278473482258167B48D7F140B0B94661BA8D8D054D81C7 9FB167E5542860D43ED7E9A0319545B2154A8FDC5ED9D2BF26B6CC41C2C59F1A 6E697B4140E555676D4C124D4DD1D80C858DF56D225B5178BBB11D4446D707E9 8F4C3FD61D1B226C05D82A866FA4E66B2DD34890C81086B9712C78614EBB23F2 C2F80158A15EB130B08D3739C235B9EEABD6455DA67246ABFD7A3089AA4C8218 D42C1FDC1216D19890886097A933FEC71DDF2C22E7B46C7A415B2455E660A596 7C5F2C51253809A1E083C3D7CE00C992B96DDCEF64887D51AF17D07A5EB62B7D E17ED3AA48F075CF0B6909628DEA9C141AEE4EEA564B7D52B30672DD13F531CD 0FD334DBB1117946FC7FD127F98E33CA9CB7B4A9CDBDAA734358F76353E8FB93 4A1D5E343A40EE70D1C5931A31B51F9FED55DD2D7D149C7FB0BBAC553F78C0A3 78C0EE7719CD26595681B043EDCB1398F3417302971D7BB0CEA5E26C456502CB DB2F0365267F3531150777906D8E2FC7FC2813F7942D3ABE5411B06BEC27CB0C D67EE46CDBC693ABD7DA4903A086923DE991A3E4D37FC3DAE2692F1054437149 D803A75E07466F7487513E6880D0C9FA00BDECD2C1B59C309C5D6FCD61BA7CFF E8E60EFF9971CCB2DDA77733800335C0BE493BE94950887D3DA58789C6A3B9BF 968A6DE73B9439A84CCE41448F69F47C8B841682D3A2A3839EC8B56EF981778B 343CCE18E3886951B83882038F0A5BD8DE6BB6A0EED6064008D5F29392573173 62BC23254C65C49404F8F1C58E8CFC0AFF6B09E9567D050415F6C5B7073F06FF 61C4FB63CA877EEF8EF97292CF20D3EAE1A5CEB3E5B9185EA13FCD175F64B87B 37616CB5CF6996B72E7A0FD0B7FC11D75DDE00FB53FCDB852FF78EBCFE27AA0F F146E3CAE775F2636C4BBB2AECB109CFEAA15B41F7ABB89E3B78C88E51D72B05 783D5D433F26B895620C2D0A20FA1DAF31C1BD7A125F76356146EDB82E5BAD99 E65AA21937A0B8506C93ADD1393A6560FD997DAE2162CD9C28D56D67EAC8C584 A2A9E328AD237ACA417612D7BAA5A65F290CC93C5362B734BCA4CDE5A290DF75 5600268525CDE3DA93F5E491C316208F288D14375EF0F3BE155C31DC154BB3F6 04D24D50858B07406307EDD86FD62790C76A0FD1CC1F8C4AB44B095BED717D40 2E468F73698A5B8915D4C7B540FC49B5111CFC36EA69D852DD992AF9B4D858A2 944A15E8D89649A0E3E2BECEE59D15C689CF052F137FC28D030A1B4C85E82183 8D1A174E0809DA0DB4921F0F4C9240F496529FCDDC16F355667C2977EDD4C492 5B3A55D62C864834A5D4C6A7F51FE2C46CE3A6A21B3240555BA13509C16FA3DC 2CA276014E1D9DF75908A803FE6B2413945F5EF522FB4547F86E1C11E042559D 6E98714C619A9FEB7248577D122C388D3C8890E14FD16812FCB16D0EA30255A3 95E40AB702971889B4D17DAE69F56FD5E39ED15571C883EF517DEB4A16160B7F 07872022412BA5FC07C4BE37FB276A4B86BE06377D960D2D01813882947ACE62 2101F38E9166FC7E3A629C3B1C6E95FDE05771313F469C1B6E40F8A2BD42ACB0 51DCDE9F73F74FF5CE2056D32EF1FCDD8CD3A4EBEDCBB8D2B9C7C4967EBC1889 CC89C7BB39B15177CA47B048250ACF0CEC47D4090A2EA3BE1C321B071394A8BA 6FB07B2915813ECD28776735827D3BDDD34D69C00D87AE9D88A32C0C1C217461 E98C9D7FEF42D19DA4039DB56C4616CACFB519CF7B970F35D4CBAED7003FC0EA 703B527A2F6A8F7E0F7A7E647E3757BF08A31523D3E95FDE71F064A4648B1D59 6DCC4CBDE6981C199B35AEF86F2A2EC44F3D6AD7DDC2E80A43EF586481530D2D D4923D542A738AA3EB370BB6BD076223D126AC66524389E772AF831B607A71DE CCA8B822D3EEDEA16A462D07ED61C27874FFE3D9770354D660ECDF58126636BB EA3D68FCA7842E4A6219F8ED487767B276F1C3D8F61316D7ADE6EC4217072A4B 28152B404B7DBC9C22A07D6509D562C1503FD15E176EEDB7B9C973E96049DBFC 348DC2AC2F99DDD4FD42353E7261A5D876FD3B91EBC607F843DCC1D5EA7F7C2E 04BF867A9B928BEA994B85EEDE98C16A06669AE114E2E7651A90E436C1265E2F 7D9C121D22B5AE7E147A28D928D5C721C170390E 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI8 %!PS-AdobeFont-1.1: CMMI8 1.100 %%CreationDate: 1996 Jul 23 07:53:54 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] 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 /FontBBox{-24 -250 1110 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5 5250011D19E9366EB6FD153D3A100CAA6212E3D5D93990737F8D326D347B7EDC 4391C9DF440285B8FC159D0E98D4258FC57892DDF753642CD526A96ACEDA4120 788F22B1D09F149794E66DD1AC2C2B3BC6FEC59D626F427CD5AE9C54C7F78F62 C36F49B3C2E5E62AFB56DCEE87445A12A942C14AE618D1FE1B11A9CF9FAA1F32 617B598CE5058715EF3051E228F72F651040AD99A741F247C68007E68C84E9D1 D0BF99AA5D777D88A7D3CED2EA67F4AE61E8BC0495E7DA382E82DDB2B009DD63 532C74E3BE5EC555A014BCBB6AB31B8286D7712E0E926F8696830672B8214E9B 5D0740C16ADF0AFD47C4938F373575C6CA91E46D88DE24E682DEC44B57EA8AF8 4E57D45646073250D82C4B50CBBB0B369932618301F3D4186277103B53B3C9E6 DB42D6B30115F67B9D078220D5752644930643BDF9FACF684EBE13E39B65055E B1BD054C324962025EC79E1D155936FE32D9F2224353F2A46C3558EF216F6BB2 A304BAF752BEEC36C4440B556AEFECF454BA7CBBA7537BCB10EBC21047333A89 8936419D857CD9F59EBA20B0A3D9BA4A0D3395336B4CDA4BA6451B6E4D1370FA D9BDABB7F271BC1C6C48D9DF1E5A6FAE788F5609DE3C48D47A67097C547D9817 AD3A7CCE2B771843D69F860DA4059A71494281C0AD8D4BAB3F67BB6739723C04 AE05F9E35B2B2CB9C7874C114F57A185C8563C0DCCA93F8096384D71A2994748 A3C7C8B8AF54961A8838AD279441D9A5EB6C1FE26C98BD025F353124DA68A827 AE2AF8D25CA48031C242AA433EEEBB8ABA4B96821786C38BACB5F58C3D5DA011 85B385124F47443FC116DD7EA23AF95CAFE257D2D685037EBE3F423D7BC0C630 B8B1210BCED93CC1C8C6D694F4DC523323FCD3C6015B1EBB5306760C6BC63822 272D60A1368B72B356043E29574434B0238E581D1C5BE338E4CFCF3F2FFFAC29 BB70C40CA278611595869383B55FD12D75AA8708DB1DFA1D3F16DE89BF706476 70AEB3AD4E871A1C3201ABA5FB85FDDD62B2D2C3BF3E57FF873523B087AA87D1 FA4927C2402003302C349F75A9F7C2D0AE27DA37A0C382D945DD6DBF39EB42BA 6343B9CA57FC8E9F6D90255F47B71FAA258C99D6E5E062DCE30DFCDDF2DAF194 3C39A4BFFDC4DEB2125BCC857B90E404225B0AEEF3B85D6051238C777979F884 9CA686FB051C4403AC260118327025D7BCF59690630847E970AC9BC4462E9FAD C502D6BCCF7814443D20CCDA9636D8FBEE9C0BB699A606C217FEA184A8035545 D05B7F02409291457CC05291241E4EF85E1A72514C84D350E24223E067FB4FCF B27EA2B9195014D2B0C3E92C325AA7D880EB59FB2C50E7A5ED176B3F323B0531 1946A616772981A1C30C9A70ED9ADF8706D62B5A02E8AB3600454DFE01869486 7426902000DA318E26E4DC5D89A42FB8FEB76B90817EAD7CE4223AACF65C09CC 7D83023EC4A56EDB0EB2C51E599AC171C1216EDE3F0EC62574D652C1B0F80E30 1EFF1FB577093A5B754DA03F30FA2DE01DF51F2AFFD53BB643CE1BA4A3888168 A5E62D3906560CF360ECF3ECF76976B288483DEFCDC2A605F9840811BEF57327 098537BE5F949C6C7D233A97068F75A4C2E603D91F6CA27E53D68DB04D7FC3F5 8193A59AE6C551863385FF187A6A44D78E8479CC92BB98696805FA307E30F1CB 3B27AA554DACAD36052DDB7DC50A63F9C545CD190CD5F2FECFD44DF704702C39 78840078650AEC83207ECFE0FE2DFAB0CE55A4BFB091CDAE615EAC92EEF89E8F 0B37511C9BE09A9E2467620AFBFC1E51F853B2E07DBD9B5D39E6AEEF5A4ACCAB B56B495CD093A208064B9032A18A24712797EF3A404BAF9F7D93317FD5681594 6D2A5554D72CB76FB8CD6B35FC4BFA17AFA8CDCC6C665310D644FC675FFA2A80 31CBB320101FF9586BD6ADFC020BC04F7CB8BD8A9A7CA240B6B97A037261EF64 C996503F353E729418FAEB1AC6EDB28436F7DC878A274372CDCF3E1FD12D11BD F682A41BD83B9A8D9AA8EDC8A633592FD6F6C29BF1E9F1000447DCAD5541D722 0F9C097A9990002C21D10D2745AEBA3A7B588245F88E1803786A17DFC7B55AFE FCE0A4EBDA32D76B24A168C0C9E682815172906284D02D6A51D0A64A83EB18DC C69837DDAE75C123BA245AC72F670CCF65F7DA55805DAB17FFA4963CD45C5F68 D28E6B5F768E725534A51C6729408F0F1B50CF78AD095DFB191F46949CD15A0B BE1AE986153E69AC08656EA3BE2D4CF0A6B43AB66A71DDDEC8815D5ACBD06FE7 3DB2A361BFEF5AC79F23F8AF888166F8277B6B694B4D1478D1F6D48D1EDF57E9 39BCE550C9EE8584A9143C4704F91440032FE3DC3D4430815ECDB10DEF215CB3 303D91824414067E95CEC005161F771E9A332B5C726370AABFB732A4B046F8DE 207FF4E857F281DD79C77BBCC5CC991292C528482D59F417645218C000C6E3E5 83374A8163E976E2A4246898D713770DF55DB98A442639B4F90506344BF1400B F1314312A720092C436DB6E854219168F699EF6BEDC561201AAC6286EB2E7969 1F13D807BEFFB838A926A7973EE6DC6AFA65879BF86B4325C689E89D98F77CD1 5FA98C930E6E5F88F839EBB598CD3E9CE185A3A93E8D265A279F533CFD79554A 6DAABB2D698C217886FBA5F1D33DCF0531A0319793F2F08DAA16FB43C5FF40F4 710F91201D1FEFBF55D46CA9BB3322974BD9113D229CBEA68A70A9D481D13E47 F7B849EC2403BF7D67C504D3287B73ABAD948AFAFEB66B5466E401FC9090192F 43C5C68FDDB1B2F25973BD5C8EA437B761B0CFCD2BF8590CF66CAEE24845D933 3F2FC174D3C0369CEDA0F7036E728AD6D0316137C769AF611A94A89EF3224638 8BC391B20100024E33563B5A8E139E6D9EDBAFD111029F83D7D4958DD0348DBA 36FC54A394D375655FF1A8DD5FD407EA9AFDF58A66B13499DBA3361E8B3D2E96 A6804461871BEDC6698EA0479FDB73DDBEE54D70F3D8D53DBAB8E86BECAFD953 21647381DE82FB2D66686026F757A5FC6FE4F97669D8F316C6CBBA1A31C3C2E8 5E32A4E544394520EF3E51D092CB4C2A7369748EBDEFEB99DB9F9EAE5E752FA8 9D1AC7B023A3660F34A20EB36571839BB94642236245BF873B6896F47E746702 E2CFAE0EAAFD0B74D41BFEC2F3CDD9BA71F937D24E0A76264F631BEA7DF5E4D1 4F706E9158550EE0CBDA7DA04B539D2E50036D48F256BC36C4B70C19BEC110A3 4A88530D59E17921BA7CB6D0D7ADF2F45B1AE5B56BFC790CACB0F9CD2D6141AB 3855692E313DCC811CFB201899AEA7951F5914AA3AC666CA3AFD9020847F3E40 D892BD0765CE2438326A22C970A29E3EC6C66AE949F020E3B15D52B257A58E13 613B775E5B50E36BD4BE10C2C4D25A3DA527E23CFE4648952EA0754FDC2332B7 85437AB3F1F4084CEC936CFD8997B57317E05AF13F5049F758C34FD82CA8849D 6CBD39151E8342C52F758D85A4D5664DA4A34EBF7939442930A410831FAFADDA 1C98A9B7A9B8D5332AD743E6A8D9D717BBEF970B244FA55C85485D472A2BB026 319BEBCCE731AAB6D1DD5A031110FCD6BF0E9AD39F25A09B98BC3C10EC07694A 036E62C7A497B787CA0C4E5E571924EAD5380EB34672A5020409255FCB39E69D CE3AFFB58CEEFD9D1107100FD51254585CFF2506CE3B08C58C31E95CA5567F7A 762CFEF828C5B8261EABAEF839EEB3761697CA 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR8 %!PS-AdobeFont-1.1: CMR8 1.0 %%CreationDate: 1991 Aug 20 16:39:40 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR8) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR8 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] 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 /FontBBox{-36 -250 1070 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C 68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65 48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3 9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB 0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB 8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466 FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3 9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62 D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8 9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5 ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6 10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582 83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493 2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA901C077A059F709F30 4384CB5FA748F2054FAD9A7A43D4EA427918BD414F766531136B60C3477C6632 BEFE3897B58C19276A301926C2AEF2756B367319772C9B201C49B4D935A8267B 041D6F1783B6AEA4DAC4F5B3507D7032AA640AAB12E343A4E9BDCF419C04A721 3888B25AF4E293AACED9A6BDC78E61DA1C424C6503CC1885F762BD779B0C3709 4DF9CB65F0648B72373A300B521D8280D79BA483342B304C7FCD0887A49D9CE1 192E8AE36AB004FFB7CE0A42F4EA48B04B505F2C0D88EB09CF93D6FFCDB7AD23 D03BF93916F6D7E71637553DC8AC311C856BE481C14947F7E6353B3171FDFEB9 652488E0592D5A181B538AF6A8C5BDFFA421891E6B7D8BFA7DAEE72A40F93D72 3808E7BA8BF96F3E842579DE45B64E1DF88FC79ACF0DD8A1F4ADF3B4C2C3B9CD CE5DA82925DF5913168831DA588564E14032513910DB1EA1E7F8304FAD58E635 4E43575BC260A964ACFEECA8AFACE164E654C9924FB6431C8C791F9C1BB2BDBF 6516014072E620D137219D1078D928C735B1B356A4FB7C8AE44E5689AA1C8268 0C9D72C2B7BA568A05DA601156B2A5FCE941B07F4052242244BF79AC217C84A5 5EB1A7FB851212D37DD5E4220FAC2138D60119E9DA87F5156CD298576E5ED59F DB192E59D3DDD92C1A4CAD15D2A8AD4E24AA1644FA1C47F5F559DD4727E5FE02 01F45337263E57F4F464A8E36AC54E410C3E61225C3739546D6A0475C0183144 5CA242D40A7B48A09A36C057D819797B2A30B9FA5934F40DDAAEE9855750392E A41AFD637143440853BF0315CAC4AF1782248AE28B42C2D3B4FD293754E69512 AFB3467CC9CDE4E44BBBC1FB928EA0E686DF898ABB65BEF8E60C2F08760A95FC 3D0298321B315CE0633CF6ED222BB17976ABFF3E9CC413C0327E0498B8462D1E DADE882D15C4CE194D835C7E26E247D049CAF861CC5A79BFD79610F32FBA3A49 3D3BE7FF757DC36BFD0F715121E0C0BE2E22497E9CB46284CAAA347063385A52 775028C5C7E4F8970A1BF68A1F7CBDD546C6A396095AF5CF37EF9B7F74781986 B4995A7554DE578ADF2F3FF5184DADE2A349A261E31A2D8E4DB02086B03C3619 44C90FCF04C00CF4662A16134A0E713C0DC9EA5E97711708EDA217B3FBA37CE4 014BBB0D9C4EEB4206132A744A1402D3DAEF05E029C1A21F430323643A47A764 B52D1225ED92B2F1792E41D5E4919344596FD630BFF045A59D4318A01E081654 DF63DD3970656D455EB4CC71433F2AD0E4800674CB858434A0187AAB2847247C 86A67466164E8D48841DDE6574758567246EFA5902C4A2D5FDE6B4190AD0B84F 836DB28929B2E4C595F12F6D7F6CF983F4A577336A62174990FB5FDD8E926EC0 CD78150BFA466CB10179 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMSY10 %!PS-AdobeFont-1.1: CMSY10 1.0 %%CreationDate: 1991 Aug 15 07:20:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMSY10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.035 def /isFixedPitch false def end readonly def /FontName /CMSY10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] 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 /FontBBox{-29 -960 1116 775}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964 7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4 A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85 E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A 221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A 27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF 5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09 0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730 DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A 71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09 4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C 515DB70A8D4F6146FE068DC1E5DE8BC57034F5E81DEF84AB9E5382F3E6B5715F DF7C70F5A0FBFCD627713545CD2F7BF03BE000B484FBC808AE5D71F2419857EC B194BF5AC776B9AE3C54BE1E828E0E65149BEFFF4D6D90076101D9F63FE3E917 886E40F2678A1544FE310DE90354B85323413329E9C28005293E70E54EAA0755 29028DB44DA905896AC25CEC38EC175D03321FC1B83403417BB61AAAFC8DCE3F A6914D079987E5B87C83D44D74F649617796F6F306D492DB24F76D28FFE9645D 843F62529794974BE830FDC1F58F11FFB104EFEA3C40993C10F128EEF1B5FBE8 6F442B5BD3A377AD5A457878AA37D623E9D0176109A94D4593126A7D1A5F081E 5704353CFB81F182083A6A431DEC94B2CA4681B766D31124970919F603609655 77CEFEBBDDEC59DD36A1040DBE5FCBA23F74239A2C226C15B9FF071DB31542EA 2D1BCF96BF85423A29C64396AB052DCEBA874740EAF985507F580AD435EBBDA3 BFE3F588569DE4B6D081CC210C82AE6F0BA28FF1EED9E89399FA3BD3D0750FF3 1F5FBB680DF78510278DB853838581CA837CF64E4DD772C969A8F26489CF7988 E6FF1B4BD122E4651B856FD5732B3049A267F0EEBFDAF16036E58A4D8F39BA36 40658E8ED7419E8166869A7D2EEBE2A0F456AF9428B4DCF2BB36290668E06404 4EC497CFA46C6484C7F762314A28CFE77DA97DD68F6BCAFF90D98E7650E400D3 FD4DD94847269BC42FB9F573235646B430CD2CE1E56EEE4EA44F1B73EA2A451F 2A285E1EAFFAFC32A5FD8426689DF320711E6059D20454FA0D7DDCCA5B64691D 3D5E891EB06363541CE1667A02A96414F12D721C92C0A7B0A7D24FC9C83E0B45 3F69F35DFC531AA3CA912E990C7CD8CE626406A1160A6B5B82A33F2745F39CCD DEF54E26B044F0DBF61785149B0536F9B77889B96BB7C7A5245667DFCA9C4D51 5B527A848A58FC60A42D722AD913DD1DF87EC624AA643A648FBC66CA95529DF1 D29FE249D82D5D7654D606B1D6BD9A22342D13B3F873BABAE88B8C42C074E8F4 CF25CC7B759B8FA07367FAE74ADA0D7A596F77EF712B32FF99ECF5C33A950E7C 4B01FC4FA16504745B768C59B4C53A9199158948A585965448C07701B7DB19F5 0501D243E2338C15773D936345A643E8E5B59C31D228DF8C079B66F813CC1291 EC11E8E18504AC9A455FA364E40FA9DDAECCD3376EF38EC9CD871B7A0ABEE362 FD4EABC96B0F01C8AAA33FCFA8D055E565ECE1476B90DE4314F843CF01758DA2 2463024D1E2FF5424B8694876E771975B30283C9F71DBB23549F07B0E5D19C22 33066511B04A55AD044EB16E7607313B1A04B457E51DD4BF75B54C0063EA8276 3176A25FB0FBE8472A21081843F5D191CAACB68BFF0A86A3D5708CD42A5481D0 4B7B3A554E22438834127C22A9CFC62CC0A313E1AFE075A794299CF46ADD0D91 11825248D40BC1C13ADB74D7A2D9DF2D3209ED5E4925CF344777CCAD44085B1B A2D3F3F75E2AB018429E551C4DAE8B3532D1EA018B3AE46065C107DEED0C8403 D6E956E11A3D357E29C9069C0203F104E02E877A08F3779BC3EC42A1D9A24E2E 67D4C6F25F0C92378598B8BD8F40AA1B2671A98DAD75E24FB4C0F10A680A3698 08E0A46FC7E2C54DFA58CDEDEBEAF3BC88CF64090F14B1E5C9C5819012EE4F2B 40B057BE38761FDAACF40EE1EA1ABAD242E67503C7A1ABB321E140F67654B9AF 80A608D5E637D22072B27993013C8C67AC539229320C1EA25A6455F042CC6C58 971DAACA05402A378B0537CD43CB909A64562CD69CF92C138C76DE19463718D0 6FF778E7C49011A101DDFC99AD76F400A60835FDCD3E1DA360AB5B088FB1CA66 A15FA1FBCA1D7199715ADB8079E1A904D10CA5158CDF92629AC4C2D7A1D8C288 424491151FD408FA56054E2A9DE19CF688A08B6501E42CB50AF52574DAF19110 0D6DC81FE5A281525A20568E80B3322F9D9ECD2F9C6A050FB9E45527C9BA9365 75C4D006248BDE9FD0D5B7EE112AEB36E734592B33EED6CEE8D95D1B7B60279B 68B8846FF13DCF6865954F793030CB9A3855AAC01ECD5B0861596CCD8907E867 4313465D47A0D32733B6A8E4A6F387D6069C8CA2E300B4CF6995B6DED3A3B1AD 389B56A89E0E900F8C38A1DD073AE23A8C957BED37241B4426451D9BB592249E DF7D065010F53FDDF14C9A78565481CCE8AD1F05BFCB65530B3146BF5F53245C FAD0F87785C491B3109B8438D779A224149C5CBD6489888EFF798C38EB7D1342 523D2EA9D47936F2C332CE2FB25CD3B4A4AC552F1BD79DE9FCD64AA62D6A181C 305BA813D85D2DB54BE476F990709808CA3DEB53C94918038106F6FCC62A1559 610DA7F9EF3534D3BC2C279246DA5C3AE391CBD5A821857B4D699DD92AC4A430 4F9248452C9C95010C3FD1909891476C5AB54C5125FAE5C89CB4B92CCA049940 F1E7AC052A4CA7127553898BC84CE9B29287206B32D1940D8B90B263 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMMI10 %!PS-AdobeFont-1.1: CMMI10 1.100 %%CreationDate: 1996 Jul 23 07:53:57 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.100) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMMI10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle -14.04 def /isFixedPitch false def end readonly def /FontName /CMMI10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] 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 /FontBBox{-32 -250 1048 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE 3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B 532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470 B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B 986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958 9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321 990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E 6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721 59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823 D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF 8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808 6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9 1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE 03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909 95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1 74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2 3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8 47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19 AFC27E4A7E07D09FB08355F6EA74E530B0743143F2A871732D62D80F35B19FD2 C7FDF08105847F13D50934419AC647CBA71DF74F4531DC02BBDA22AEEA3FBBBB 407E0ACC52BDC60D01A29407CC4F93EB8BF6D4813E9BA858D54F38918AC82720 4956D50291F0546E50FCAFA6DBD0099123F5ECD4AB338DB310DB4CAE11337A89 8ED99B6F483940C97544F888EAF0CBEB11094A13C073D0061808662A04A82BA0 AD35E8782F854AF66C20C0FEF18D0ECDD1646321B93D327E53D88CA0E825FA95 05AA57BD719A0FA14B38EC39164AD228A5F496C48EE1FCF6D7412E372C9B81E5 98C9C34E00C6FF27D711277BD06F13279AEEDDD39489406FAA129D28084D1201 0F381B7130D1278ADFF30212AF2F33E651255C8665D5076E0CBD9F5D5C5D0A81 81C113CF16966411D8738FD33B179FCD58753583ED6B95AAB7C69ABFD9C0A57B 8AEC7A803CBD4686C4C103E7F75883E756865F355473D6852599B498E8B4F0E7 28776667059E17CEE485CBB169C637F8A3A2C96A9661ACC154459C622D3748C3 2CC0B8608057500C303FC1F79F30D8CF39288FDF3819460482E8AC115833BCD5 82434238B0215EFC24428E5D658D6D4F22189412EE4113D0B937934213A11B82 745C1D8A62BE022F04AC17FCDA3B8CC1F513D74046A0D0FCB0B6023C2BDCDAE0 53913C074E99C05EA8A1D416DA1EA10860FF73E77744F6FEBAF1FBF8457D484E B24BDD62BE4326548DA805435D8F274C309B41136B1D72349125FBBE698693DF BAD8BE71E9D6760426D8E6890DB479BE58E20336162388562881E331ED18BC81 24FE927B80D4B3FB38E0625556EC8874922E2A2621512361F6E14B7D9DDF996D 4E005F55ED3154AF197DB39C87E7D7EADED4AE98F868FB6956BA0EBD1D41F2C9 5069192C92440760248FC35AF92AA2C7B951F598989568D60531B5786113E0DB 9F38DEF097C7713DE9CDDE7E8341F94E4669A6623C73BD150D110A397203E0C6 78413310AF52FD05E7BD2393EB4E908E58A08CC266FBB246200EC3F90110DF23 483445EDDF4716E79115D4964A8698E911C1B17BE30AE97C697ED2D4A4060C1D B10771742273849427484F717E297425DBB9668E2DFD5420F6F2264671772F83 F1133B4CF5A8444F18A35437A189BE4E3F6240A7200C8F911236C6E1BD984172 048267CD9198C6392E2A54EEAD5343B019EA64098BC4AEA29FEA2473D764ADB2 53780895DAA73C4ECB702DB163FD72DEC99A6D1A7B3DE21FF7E5D8492FFCB406 288C950037E928DFCA484A4DF5BBD38DE00D2755D2C4DC265DD797BD803F1B32 87CA83653AB3527E7FCFAC8973D49FBA9F8795C8E661450B4650566BACAC19B2 4441C0A6C723FB76C7DC940019F711FA4B947F74ED7451363B1EE6366870D282 57A12F71DA2F3934F14FC4F1F1F15DD8808FF9A584E9EB5E919CA592CC45254F C041B1E00377D6C8E8559452D53B6923341AA1FB436F62C9065B1996E6C3A01F D8D6B987FA06D54C05F7E3101DD9934A64BF962811189C0A0AA7E508787ACE0E 11B3B52806BC6376109385F5DFBBD06A03F1040D3637031FCA76E96F54DB4FCD 6D377063E5145FEB8D494728B7D38ADA690C0EEB384BA8C4475CBC260749699C 04362185609C824682BDD7DA5454479865156175C65FF4ABC6A92D7A43E3B059 BB1FAC4332C417EB10FA20824578863C02D498ED07701EEBBDD61ABED999EDA4 0DD2346BF3AA65CFE2A6EB625DD908B12397A0551CFC44FF2C83CDF4587889DF 9E73659DBA69115623E23C7D496971E26070193AF3B4ADEAFABDAC7A1CF3097E 4D08DE022EF3C7A4B83741CC22DA938F91A232B1D5C600985CAFFE1586758CB5 E4293399D3700071F6B1CB6172B8BF89D84FBFBF95AE77D79A18EFBA4E77E383 F6CA6EAE8C15905F21E6558080B6F4A5E0FB8D4A15D46D784663A8B36E525FD1 98C1D5B4262DF99E480F8DA64CBE984F4C6899626BFD9869D33E85E6D7854E50 E0B82D9DCB9A98089355774AB887DD3978A545879BB8F8859EF0F90AB9C0692B AA28985D4484C29E7A1666090B26D65E9936CCA01847644C9B442FA9EE197F3A B0146539F905A7C8B338FC1F5CE083878BAF70D24296B74A3B22C58543CB058F D9D5C4556A6C032124DD19ADD4688864013E5CBD1433E6C8851FC4C216259CD6 22D6C9B88296BAEB88858E80B1A999083CBE19BCDF45E9AE3D99F231AE594BD7 C7881B69E6A1043CB4C395EF68E2C3902619D96D90B36175917552FC1AD2375B D56E351DED0B01AFF7152016CF48AA87D4CC60FD6323BDBCB64E72B660530FB1 721DEA76FA6FB03535C93E4EDB19D771E4255C2D5C8AA0114F61DB431CE36785 8095A7C1F8B6486CCFB406AA62869545DDCC9DA8A2364B0DD8ED8208E35607B0 B04E0200CA1E8C3A0BE0837F21AA7C78F57014D3045FD24FEA13B7E801A1C434 5F1218A278D98F8C8832D70B6B8777EC93B1574B421594C20C8B986ED8CE2634 5F760E698F6A5D837832E4FBAB4022EA29E2B7631198DC435B08C405A0E60C2C C931EDEE81F72DA4F42EED90204801BB6F1E03C7EAE67B30FF9F73F88F6C01D9 672B616CFE453877BDBF35018E47A42C2DDF778A5C3C6A34CD5F5DC81B74367A 5935C3204B0742A24F1D47A70BD83756D0EA6414E058F1B94D6689297C3FEB4B D2BAF9E4D2112C2F527802E8A8B19905F03E323AE14AA26132FA92F610B975CD 890DF514680ABF95640A7A4318EFE589B907ED4C276B954345802463EEF96982 B04F20E100DE2A48B0B18DB1481324E21D1BDBC98CBA7A5ED5715E01677C6DAE 9751EFFDD8B2CF44D96D9345860C3785D94477D1E34DCEE3FB4402C94EDB52E4 055F2536DE051DFD56CFFF7FB7F79FC153A7FBC76635B0AC4A19EADE7F4F77D3 1A2FDBD06471D302A60788E7B4280B2F162E8C287270CD13A15D0F269AB69FB6 57F00E85A61C3A8B4352951ED2853540F437A6CB6D5691301544430880A8BD31 16999099837EE8C4CF2C049D3857DC182E4A96397F05932431C428D0BC33A3AA 78BEA708E51D8E03B806C2542C0BF2539646FD482BE2A88FA4C6C4D606B0BB9E D31614F13F94C9C26BF39A4E0AE8D8D7F820F94D3D8425A09FAACCCE0D4F09F9 05469D16F3ADC017377219110157C07434F74A220857737426DE8275593EA384 BCFA240CCB628FBBE9889BF0CE7D8BF27F1231A49FDF5864989F5C43C06B19A8 415A3FE7AED61D0818881EAB2581550E8226310C67C93EA198FA55C35314502A 2E17BA25B30278A8E30DEBBDF8CE682E0D34FBC92AEB35EC08AAA3B428358D9E 0B24FE97AA03FABAA4277F5C81F621E1CE2ED0C0C9E3A0868B8C29323A8FC208 C420FE622DC33567D312383BC32295241E2AC452655AF4180A947DF3B46E5F64 6CE0A52AAE10925BE68D4CD49013D95F97558940C54F857AC4A278BA32003BE3 D1514941220D1DEAD556CD8AC64DADEF6C5DA3AD29B85B1717F2FFBCEE59A0EF 4ADE29A3115E3A095EBEABA041AE41DDE25D9A714C41F12A642B411652A01E5F 73D2745A239DD864625C31D3143847145F337EFB9F9C632EFF4E3011391B0B11 0743695E85877B958BF2A9017396C2C3D3403C274F93705C9C1E80616CD66BA3 E4331E3CA0181052A00D9468DC0428C89989ACC2F83924C1D35CF5DAE12CAA89 5535B70F98B9CE6B5CE82BAAAC8208291689FF7EE703AA057F8F06620635A56D 589F14416249148DC146CA2D990C50DAB2F6F6506A6920BE9DA5A93B9F0E7BDD 120151536678A80EE33A531D40D6345D9D9623242E30BBC18654558EF8A22AF5 E91B77AAC994CF700F267FACC80E4EA7B17ABE1B5F57BE02BF5FEFCC3AC9EC29 612A3299A3641F44E0A4EFD64A2FE3C012F1394E733BFB226285392F0F3850D9 426789A509CF59CB7F2D4BC172F36C132783E5A0843AE487DE20C1A3816891A8 A20B986BB8A9799AB773A394941CA2BF1F96054F2A61D6F8D2706112A5D01D9B 80179050C23DD2ECC6A5E185FDB54B8D1CD1A72797ABD82293E83E5CF9296B08 68B0BC09656314C7C1518C69B70D3A9E8D88D20AFFA9863C7FACAE1D0C56E38B 0F90710929A12F82D60D4CD29B816A27ED36E5C41712FE50C1BA397EA58315E3 61415BC5B04B0B10F8870FD4F5F082BA981DDDD34BA42E40E61DE6DF29CB78DF 7243F0E4D2CE5CE7899664CA18BE8CCC0B5AC7D74F3211AD6A7E11400104255A 7E34822D421FEDD7652ACA66256BD86E339DAF7F4C9E34547BD78DFA8DAC788F 3C73F87D66DA7FA209BF878B68D3CA543E38BB457713612543238E2672DFAEBC CDDEB6437C2FB3BD4CB7D0E038D41517A391B8E8D2E998AF453B3F14E2D50449 C4C98CE2D88844480CB8D785BDD9F95A3E217A0ACB8CE2EF587E3F976D779745 C24009B82F4695D16DAB6DD925FFFF100C09776667069C41C6C8767AD978EB38 C468A5B1E0680F918792ADD4A8225C15796B93D20789D714E5D9743D9B3D207E FEBE188B0C03C1E4CF7BACF1121B9323D71E4B0A3A5FEF3AE95364880F41AA6A E74D277C431A4331708578FB52D2DE26675337BF6F5A594B509DBCE9FDD40755 9E91E480FA308B459C81B0CA6B6F60F7BDD58E6F01A11F3B0A9AADF659E94D59 3A606BF53A37191B62B88F84267E8A1FD969538D27113E3CBF6A5FAFC639DD2C 932D3D981045652FFA8F9D3869F8F31D324B7F579110AE5DB82AFE23A5798CAD 30E036E6D8FCC113F1A97F67C3AE2DDB68EF5E929739DB569C09B25939912DEF A7798DE420F0564CD885391BCBFEBF2A00DDC3516CB821DC413372C15DD8C9DD 8B237771B720B3027F520AB1A574E65EE19B52C27BF9055FEC8E67A71568B6E6 F3D87683BAF9AAB79E03CEE528AA695637B08CB845F9475485B67DDF87F5D0BD B4780C2FA5F8FA6CEEB12AAD6B349C91FE41C2CCEF59D850A98319FDB654D2B2 788FDD7B4BB357A6F0C0D077A1E08861320361286B6D69F3EB7BB5E0AF7665E0 C3707A4225CEBC148978ABC33E5B344978F2D5393138EEDE0B667EDF11371F5D 197F4B3989F292A19CA805646FA56F4973846794366CFCEF584B8EE65C1C49F4 56C2B7045C5208CD86064346ED2AD8AD769BA57475A6066C1DF6F1EF54775C22 FFD55302F79410108C6239CC1EAE729F2C58ABB44DA9251D90FE62BAD1A2DF3B 15732D25C3C6B836F6C204C41D6B77536CABD0FB8097E5E242743B3FABED7A78 3DB0C1B4ED263B7233070632378669FB5B6AA3A40E7BEF9E4622FE8046F218A3 087E4F498FD1824D2204DA136DC6B12D22BFB47FF1B9DD6D16F20059A905F41D E15EC2A1F739ED737FEAC5A8CDE6C6A89174F35F3F08F7EFFB7F0421E05F43BB 14BA580D98DA7C28CB7146EB4F6A2AEEA727080516B79F913B9C7C9B245973B0 381B98C68BB20DAC52C86E605BD2402FB83D6C972ECF9CA7CBD3DCDF5ED1FB52 0E07C8F4073E62831278219A7640098E7963E7CE9A1D96EADC0752BD05A65F4E 0EA1933F8FE30BC2862F4AB4778813C1FD351287E99F4CAF8F293CBA493843FB B48F4845EA17EBA256A3E9EB93799A43E9190249F3E6D9C8F4B3D67136F31014 B84E0B5AB2EB9F7281F0C2D35DF88BF5E19F87F73F6CCE47C24E65B87C9DE5A1 276B5B704A04C910F7F6251B205263B345F021BA35463D8E7EE3B6998863B24D E419AB12390CF368A2EEF5D5FE9932A05E7F4794B63A86F07E9F53D8489EA756 BC4C7010DDF2D115A626EFBF8FC3AC109D8217C14196A37BA56FAB336EA44E7A 54B2FF7E9AC0EA8C252B4567D6C4BA71D9D6B8BA9972898C131B8D5BD485866C A0DBA290EDC395E77C3C54391F1F5EC759B0AF4726C12BBC29FEDE8FCC284638 4B3DFD705A6EC7C7DD0246C1168D6AA32E4DE826AA93649ED4AA64CE9796F086 FA718B549470A77E112DA2CDC55A25DF976A4060C755C4C72E5C5B64219A4778 E279E82481D7CE2A7B59C85CCE0A611424281AC393C6B5FE6F0CF9F62A0AA0F6 FA538E4190D80126373784696614E22490DF3203F0FCCDC4EFFCBF9862CBAA37 AB2B2BB499BCB4376917BC1CF920E9EF929D7DE80ABBDF53DD18E3E6322C300A E745B492798CF4AB9CE7FA975D996A9B8E3597E093F3FCFFFD4F15DBF01E7108 8588147ADD3A36CB7DC9A5692C8AB266FFA676BF6D2B849A431338A262F69B24 2E4EA46179A98C5D3BBA87CE9199B25D0D7259E5E69E1F38ABCAF8D21EAC72A5 4DF018A119A8090BF8906F3C134A4B25439BF172ED1AB60360F50EBD440E9135 A335E36D10551B04E09D5B13E78783E1E1B008254E83DA41F5F4079F44881C6F B9B0F1D6E56A9EB8F640961A1C07D1DE1E4009CE749EE655DF33BBF0FE1AC7E2 14DDAB0D80DE1F55C99A9C734659A30C4049F5DB89BE3DBEE630F701F59611E8 D22009C12D5E3D23DADE2E5714EAF3B4DB253C2E038070BAA68CB67323B964E7 B55DB75762849BBDF03E056064525C7B6293FF28C78B4112F9242E026DEDEDBF C323D8A4B95A77738E0136F6A089C36C09E8D7E13AF0B78FCCA2539465CB2695 94471C662EABDDA401AA83FD38DC31AAEECDD96DE6275035701157D5BF939961 07CC1AD866F15474687F7602208FDE9E9E7D1957484BBD021B45F63DE042E76D 762E666893324BC65A918D44ABB7284173DE360B5EB444444CEC3478B554C342 F70314EEB7D026AEF8C7C2E91FBBBF30E471CD576FC9FCFE03E3DFA571E81CCA 0B32685FDFA9AB53E64E0BD02EFD2DD3BDFF6DEE3C1666C57411685CBAE93811 EBE1C2CAA45880708D9F5436FF7C8CB00AC2DA2ED7D210B57A4E0D77A6096356 FA7A5E3C7FA71F97B5C9519F37824DDC8A97A551D601B76F61648410FE165AF5 95DE474CC1F6EE15125E6DA4CE18C837D858F72CFD8890FD5AE61D9914A7E005 E22F2D29FCFA360900FF8E0792D1E2AEEA9C7FC62E4428A78A6C69C861AEBF07 70A25BB5526A8134BA28E483E32C3BF6EA21A62077478628C588EFEC6DF199D8 E8C2492BF795DB8397D7C9A52F2660CBC7F2F13E84C2540CF0CC4A4D31850D36 EEF743BEBCC0175A8F4C967E767DBC926E55D0E66A130F620AC3C8E73F75BFF7 08121DFB95FD46E18075461F5C597C431D6AFD846CDD34E0041926839D856C80 B524AB4FFA4E31165BE1D668C6205239ADE9920E8F03214D1D8A4B1C5E13BBCB 0F59068DCDB5EF589AFFA18E819BE959013E15F494F0529201A9A70C2B6DDE22 A9434459555FA63501E69F94CA24A175EF6FD14FF1973C944012C7183641CA86 7E98C6C99B0E448FC7BFC4867BFC6D42A85CEAF2178082D19E882D8890E845D2 46109F9529A1594FC4A37E7FFE13408843D3ACB1BC58EE20EF2A7BCA9F2AECBB 12A6E1DD58B36A1F10D5D5C135949F71C037CC45AB2097BF6D8378860601B6B4 C168B3E4B94B7F0275C3E13A03F1F219380E7F30E969CB868F1BD3AD8CFDEEB7 7CCEF1B3651720C1DCE26E1DCD48EB76F990709489E084EA31C37741CC2E9FD1 5FA97E2455E9952DB54D69DF6DE9A22385C2823AC6678FA4C9BF09AD2E7C4160 E6381C515EE4BCAD81103E37EED08EF7D847FD27225D7219704FDBA4CECAEFE2 AF3CFCB09F0B124C9DA4177EF220DE7FDF9F20A855BB661FAA1E103BCDB9B849 11CC1967315D149692DFC3C0EC83645374C719C862BBCBA17407DFD6009579B7 ABE2CAD2566D628A9B0E9BB7BA9416E01DF5AA5DA40763F7AE662E6A8FF4CF40 F95915AAA0EC2C72E73D5ECA73D184671730D9C57095A30534BD44DB57F2D58C 8F1352E00AF5EB367E8E6ADACECF18BFD7F128BA43A8AF1551BFE2D4619FC542 7A3546A7DE199C4BAC162D8A3A89FEA1981B693B1A64752A0C098679D33F1BE5 A842C9430A6364CBE813029CE52EB861625A235DCC1252DD45F6CAA1BBA1A634 7BCAE48DD3CB624A49FAE97934D001A9B14E4ECC477F8BAE6841B94A34349EA7 3C0B67773345543BC90B8C2D3C76D8368661EE9273A1FC00FC3AEE5894E701DF ACE899C0E0BFDE8435AACC5D04A2FBDD1E2F6E78D15F5A0F0EDF1697BE93DC90 12B60ACC8920FF8BB461CCBBB0F062AEDDF0E599B491468F20B6DB33EA7D479F DD1CF02F28A420F005388DF9A42973B42B7224FAE270A02E78BB713A825ADAD4 1887D903E2C2220444D349CB0AD1D3CA4820AA4F13DE9D0A945FA18EB810AFDC AE6C8D26DA0D417B1EEC9C533BDE04BDA73B5ECE98099D6009D0FABCABBB869C E5FAE566ACD768DD4CD84FD085573A97794531521B1FF48D4CECAA99460934DF EBBD16EFE2F9097DDE55DD34475B289D7EC759A1CB3F81D3A81491688828E640 2155B586BE482A1D7E38E9A185B854679BFABB17C33D518FEBF0AD6AE5CCA300 C68E87D59BD2FE75E18FA9FFF2D6DC461E8759DA2A2F43C9FE1AADD2EA59687B E539B8A010527A47E25578E7396A79F45949B9273701DE1F47F57103B766C824 299F4CD5DC5FA7BE3570676964A366544970F9FC40041999F79C013CCCEF705E 38E9001558E76777325317A37AD28C40A4F0FA51BFC4C2BF11DF43E58C7834E8 E62E3E0CEC9788989EC5CA3E7D3E3FFA032F3C78332B3524D1B611ACDF66C1BD DB2B7C06483C74377558FBB92F7D4E1E61F2586258B43BBEFE50E0A20088EBC6 ED13781B0EBC07C065BA92E1A0CAD789BBF7114A1C217F3F57F8B144DD41ACAE 1D156C6A995DB418C2906992CD777736AFB151AF96357F28193A2C87BC9366E1 426B118EE73080645F99AC8A1328D92906DCCCAE5AC411075E97B6B2BE 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMTT10 %!PS-AdobeFont-1.1: CMTT10 1.00B %%CreationDate: 1992 Apr 26 10:42:42 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMTT10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch true def end readonly def /FontName /CMTT10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] 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 /FontBBox{-4 -235 731 800}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19 38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204 EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727 A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593 F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714 4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA 6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F 1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438 452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF 8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369 5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9 BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19 741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79 E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712 E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7 D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DC FF798F2ABFC4F3539392985C4CB324B00072295FC160818BB0355FDC4F12E39B 984826450553E3D271F03D8DC2D12A92A4D32034FD16DA13B876D88C8C097384 46D8D7E41CA1A8979F9B07EC3337E70CBBE3A377235B04C79BBBDB66CE1C1A41 89DAB0784D0778A4244CAB95EF2FFC33D38B2479461E3CC0C0042B4879347556 1AE2718C4742058FE118C6E74557BC27F73C857AA0BC3D5527C8A3FEE8D1DE76 42F3BD4C077811073FB73D34FE110BBDAAE3FEA85CCC34C081000267CCF2E887 7C04B2F46ED5B3502E827D43AE420D469620461B43DAA627DC0F82C3D927F6CC C614B819FD1C60E6DA8CF2ECD348DDE3699FC7D4386DC1EFB658E733993E90D5 A39787EED0C73F2DB47FF81E58BD3A3C7F9E9991A6F6C2718921C1730BCBBCF6 D3CB8F824073943E51814481AF27BDCBDABC5750E47960C3FB45E6E420EA5004 143BF27935D06AEB16D9939750603AEE88740E10DE65574A9B98BA01DCBA76E4 BB0EE3AAEC687C09863290D119D13B1F46A7B3BFBF375D999AEDF806EB13CF9B A4D0B1D30C61C96300951ABBB8FEEE2D7B8C3B1BFE3728C855901FC19B6BEF1C 93111F531B0D8E15A6DEBE65C0946EB782ED5D9850CD995782902E2DFA35117F 5F85AB28E54221704EBE8C24D1A37A5F5DFBA72B58C1E729DC28D3C0D7A6A04A 047FD2F18FEC8563568E84910013726D210DB29BEC678CE0E39E2553001E8332 2D204A72E7D5423DCB0977DE89955A03101C5A608304DAE100FE0710387E31B3 4BA5E4BE1BCB7042EBFF9E13E967E474FBE31DC35597A6A2B3540ECE6AF39D90 84C37DE64112685D7D153D0960692BF6945C46B7EBAF39D58461D8E4FEF64886 972415FDA5615CEC91651B09E238383AC59698E08594C8385D97E0C22F62036A 634636E60A0E0CAE2210988921EC23B642CD6EBCB1ED62EB0380E9B5041790A1 443D13EA6AE7D49989FB6B0F423B27DA1A43E1058190708FCCBB294DA4B30354 7E553343BAB90534D6C5C6E899E80F6F813417079D9EF542FC128A163B6C6AE0 D98A3A182DB3B5B81AFC2DCBCBD3F53513D2243E506C392E9E1351D82E7937E1 9302078128EF58455D14E64198B833B4903020603A8E46744929E9F426FA3B0E 279EB93447B56AE40F70B2DFB4E1004CFDD1D981524CC2D5D584B20603E52D80 2F1FA565DC5674588FA9BDE3AA2E28B604E5743A37F44E25B862EA2B096EFFA4 998EE550F9E23CC137E5DB6245691AFDFEDDB78445A3EE021FB468C3FCBECFE1 17E77545F93CB1DE1302B276B498B09BABC700FD804B375A188456A26CBC20C6 4B708C82BE60324B5B57BAB5BF86F7BCA7FF88B8D7899390306AC86E762D75D1 4919386ADC468A116F039F79435502755695E369EB439EA3E398065F007005DE 07E96DFAA1175C5CD4851F6F45D0E45605578D55D153245691DEB2540F4B7006 A7BCE946DF36A8AC6A7BAFACEB92289B4C5F7F4CD52939E2C62A01169AA58151 D2DEA54D4D5A7D9ED20577033A0CAA99807F7521BA3711965157D9B33B5658E0 C89A0DF5C3FB10BC538D808ECD28314C800D3E61AB82E7121E1C9CB273240EB9 23A12B561ECADC24DD059443B0829B8B630BB8484230A1985D81C46903D158A6 CCE7F0789A88CBCD76C04F0C0CCE2CC7B14C22994A5596E841F77C08E21F7E05 2391F90CEBBE6B9CEAFAFAFBC7EF38C2F452EE3CB3979DCE17444D863E9C9F0B 202A385EB00B4E2B8B69DDC99CFB527B0CABEEDC73A34772D619CBFEEA1FFE46 42F6F8C137471BFF385E51520315EDE197DEDD88D2A463C817F724B6D8269FA1 C043772275C2DA742320A997B151CB8A0904615AD5BEE21433EE9BE3444F8245 FF7B24F06E4A1E436117DE89E33E97F7EA7DE04360EA87AD48C8720CBBB2DE8D C5A1C892D02DA9514191607A53D94EB3EDF76E1778CEBDBCE37D2BFA212D41FC 490E9C3C5FC30C40EA51377B487A00F8A579BC43E7BE4F4D484D8808D22CE429 374E100AB3D74FDAF8EC9383B38922E2BDEAB046A00C7B24FCC9317391F79A2C 411F01E0189CB189A6CA649386E7C40ACFB8AF5B66922DC4A00BA9E7745FFD4D 1C04B16C0FBD18F0A4A56CD77FA2A5B8D6F744077A40E21F91C9CEA537F5E487 DF3FC8A76D3FDD80EC8862FB8F3E5B57F5BFF6A1494C4A648B253C465E681F82 4495F2EBB315779DD08C6E3C473D35F3AB38FC2BD690BF3067C8CCD434257B44 2A7A4BA682083E8832BAC3FC839102E0ED90AE7BF5DAA25A4807FABD13C644BA C0A49F68891A94F21D2682E51057F88C95318755F702858FF7262E9BC04A2D21 1DD734FDDFA150C72B354B3642DFBF7E778CD87D7AA8D429A98AC79715F8D78B 7D1AC6118EE27651711EC6BE317FE88964CD3763482337E6AF87124EF61682CB 69BD9EE301ADAB3379F3644A06C5A0ACC5020C6700873B9F39E585595C19FC46 BF71D08E1B1DE81FA2A0ACF46F9200E54733CF70B1CD14CDC356B42AC5C2ABC1 48C07F7FE1E71E546F3B4499E05F9F2FDBCE166B2494DE793B591181FBAF5034 5375092E314C0254479BE4929CFFA88FC1421DD6A8D74DFBCD0FEE3DA74188AC 62B8C62DE1A44D84FA6A66F2F344487B5DDE96884172FD0C6E88695D86A42D40 EA6A5D38EEC29B1B8763DCD464CD6CA7802770C0BDE35BE040C9723386C0E08C 0B202EBCBEF6E4AFC682BABAD9680A3781280139BB9271EE07A31D494BD3182F 8003E3CDF10B423A05345E5CC81B2FCC81922B20377FFA02A2D17993534E2D82 4208279D28DD25AAFC7D43F7470A2D56B1091B190642C6EAEE832ECFD5C2074E 0D4FB0B9186CAF597ACC7A1B50AD91589E8C0304ED3343521A3C91CDC6768C8C 01CA2AEF5C1E3A80621B0BE8C0E60A2136D2889088A1CE1018CB471D2E433B2B 97460B044CCBE106AEA582C82040752B9CBEF56AAA18DA2908ED6E5B7D75A3ED 7228362079965B847CA85ED2042A1D4B1F7B1F9927F895CB3EF3285A259E725C 6DB10306634A33A9A2B6612A60ECDC615190C118429440B9E035A3C3F3133327 4C303420032E4A2954A3971CEC05ABD207B3B38A208BFE085394192DB2838795 2EA29E43C78B38AAB30FE47D423D45E93E63F229DB145C0CF0B476FDEC033684 8B2CB35EB5A1F3523A6C81CE894A271AF25DCFA5F8F0C6561A18224335709F9F D5DC7CA3A01FCDF23203827B910A613CB17A01596A735FAE56A7F26259345585 574357A30DF991FEA73FB0BF788FB240AAA3236120F24B827E48108B729761C7 3EB08B20EDE05E44AD21FBB9E4582E705BE1964CDD42B1F4F47E7CE8BE3867DE BD983CF9F85C7FF6398CAD01DAD46B1CD31B7437EBDC8D6867C2957A15E989FB 21EA8C4383063BC7ABEC89316D6FB10BBCC6E41022C373E0F557075EA119EF39 538ABDB1256F0E77F40F80B2517EF118A7AEB696320DF8FA484577AC6B0E60C3 073C53268D6F00A7DB496082AC0DA2C49186CAD0CD148F49ED6143C12EA7F065 3F579F5EBE86B13F4A27976143B1C1B71C280101A115E53124D38EA079255386 BBA6FE1742488C1C8F1304890C82F307A64C0E4DBF69C6176B1102282A35F330 526DC2F6CBF9DD95E62B0ED1A37B1D1DD58671A7AD3AAE44CDC1D5192313F108 C5A063043CFC32DA43B6F36AD7BE2FCD79C8DC41227690D816C9D6DC1144C65E 3E6C92A726B5C7595B29546F5955DBCAF5DC69A06AC99F34BFF3AF6D4094E8BD ADE88EC16DF7C8275BAEFB1BD5BEAAE8CF00E9F92C7CBA4C1D261669EFA8B153 158187884DF02F97212C7CDD470B9632A83449E29ADE6584FA63B1FEE7430983 54099F415A842A9E29A0E4332388EEF1A16F2CA621093B8F489F400D7C6C2CEB 5DD2016B86E2707B8BD6F22902B4993417F6BA2C2B0E5F87B0DCADC1EA402A3E 10958390F5A82372304F7C13F14385523C0EB35A4980158B760C0296EAD34AAA A51A5A9E318B4DC0A314EF141A4DC30538EF55A504DB3F616D23BD874119F4DA E0526DF75F97C7ECF4B0AFF95F118570626B57F90813379652CFD8E096A34870 C71C6D428A6CC584422C9815DF460CDF7EE61213B6A9F801E19DF744C33077C7 645F5BB44194369FD94E5630CC0C47DE84D6929F6EE7AEE5E045CA1FC97647F7 D727C3EA8D50364210995CBF9301E4AE3DD6C9C12CDBC509EA77BB33BE7782CB CF3C34C91971A608BFFD926C6B092721DFC0C9C4FB531CD752F515D9640BEAD9 26CE99C25739157616C791B357649A74F74454826EA95CBC06995A3C00E49489 2B19496DE0EA217E5DF4B4040DD0403EF4352A88E9F113AD41F502CD840060D3 494D746C76AD55B69B2E53E96298471C0355884DC941CE37B6E66AF6C33AB8FF 0AEC9507FC1095E5DECF10A1CE0EDD2D88FFC740EBE9DB253CB952628F0F715C 77C9AD0EDB9D6B019E65886071A67598310D494026B1FF5B4063945005CBAD22 6ED901C281AD466D023DE6CBB8894CE204C442CB4FF6BA6D3117CC022B99888E 84390C0C4926DF051D035356B4DD8AD3AB68818994AFCC88CF3B50AADC6B0753 D79ADA743E93A5DE8FD734356F24419B91C55065EEB764A16BB76923B45F75D5 77605867D725C17A201E46D46D8877437C29FB483D9AD6AE512EBA98BD407D7F 02FB776A4FAAEC5B6E47E98E728A2F9C48E825BE33157760391EC1A2B2C92EB3 2EED206006E6141A7903E2FBCD603AF6D54C6DA4F6EBE4EF18F3AFE7568B30BF B720BAC3F6D4B0ACFF9110435FA51C72528FDBFFE39F6C4BF4986D0A4D807BEE 623441CD814C5F96F915B79C26CABED60DCCAAFAD9BBAF4D1FA3703A6D64E941 347FB448C49B2BD6634F04D83435D2E33A47E74FE880E776B9BA2130E495FA2F AF9B3D86C009E3774D6E20238135F6D6975F7E41D527CED116D440B805500E71 63AC622CDAE07E27ECAB014E7442FCB8670E616719C3843A3F10D46D3666E2BC C20A30A38E7E4BAACB4EF2B94EEBA0195199C1DD94EABA20D2C47EF4B43FE83E 2EB2F778D999A947B21676EE462BBD0AC05165A6D62852B0809D0B5AF3222CF8 9090FF5DF606C901A5CACC1FD377FEF5D29F0E0D966E008DD20F1807FB5A1D60 CC2C6D1B273826887BCF3A6B3742DD91D103A3D24BE5BB03B6EE71030B2BFB35 400A17FDB675E057BD4A6161804A149C333866C33DB5FF6534707A1AF342CE5D 0AC79A985443436F94A599336C7F767D809F5BB094341F1FC7B45C53563DFFC1 54E80F2DF003C5FA0D4A7BF703E30277E2393665BED0741A3563D7964C5082E2 B2CBC6901BE79CC4F8AB0AF58C36D8F4EFA84ACD8A630B80B5565322969B10FD F236816F8D6E3B55A2EC1A7FA24C1950181B007352879B682B2D5A79D0DF6236 B4730EC61E2F011DB6C4741736046B5DFCE52CCD0EF5D780796ED988B622CFDF E88394CB90CDCC41189A4A1183A9789575B29ED972462CEE2EC360A6DCE44B76 297CA86EDCE5F3ED2D76FD9A0F31452CF0D0A683917E724A4E818EF84D4CD0A2 E8FBF30FE262DC8D7AE9B4D9CF953387FBE93192AAC95D611C70A18863FC28BE FDBCE04A7709485B14341205FDC074641747D6F15C866592FB9C22EB4376DDB2 77750F111D87B2309289D77609AFD622D9735FDA1A40AD92AFF8CA8D5D6D9224 8F0DEEFACC2DB757DB2BF7ADF4ECD0C9780F7D00875A4D3C0D03E42A85D45018 FC4E8AB5FCFCA190C454FB1F9B591DC63A73DD9049901379E175E9365FFCF2F8 D74DADEC15C05EF0A730C776DF62422F73A9DADEE0B5F2B74CE0D046A709E5AE A57524BE4307E665FC80C6887D1E968D3B311D09FA2EDC1859FD96E1121CCE7E C1D427E74BB8C3FA808DC97898DEF88F0A5C53F2AA55118A94C1602822264D4A 8C1D2591E94FDEC13B1D2CFB357B4D884CDC84ADC37AFE61BD24C9B9AE7BCD84 BFB5BF9C2821F172C1535978B73E1A6BC8C8B815D96BCB189FF1B674C63A40E7 0000A4AFFD6501044E4E11181345B48F80E51A33FDFEBB8AD94B697EB0D3B5FF A031FB3EFB1E6393F428F415DAC9E4ABAC95D2695F3EC2C92FF1076954D70771 5791F147B33E9762471F54D8F32856A364D4E1E24D9D4059F3040F2E64AFB288 34996A1385604869B0846104CB9657E60B03DAEBE140943DD66BBC9B16E78AC9 4E73013E70301F3AA0AEEBF5BD155A670BF04DAC0F8F4A9AC1BB84D0787EE725 4B635EA8A53B0D6293ABA1CAC30A294340BFAB6BDB50E33A0F367E21C738D1E8 723673C7CAE3A88E36CA95AC0BCE1F15E9E7AAF6C4B4BEEDD936ECE8644F6002 4D986CBEAA946107895DCFEA4EB93EC5B0B904ABDE6ABCFEB7A78730460887C4 D1A07B38CF0ADB81E2FBA8E3ACD09D0C415ADE31E7E2D2BB784076D3DE5601ED C2811C586FDFCA10774EE630372081CB7384692780127141DDA6A10CFD08F388 EAFC905822F09D81D4C8B584A64B9EA7B335EE9AD6D8DC412F8766CA9B465E9B DF13ECEFE418E2C346D3682ECEE511FF82E87B208CBB8CC37AC03625C446E93D 80BA7EF01CE7F5B61F27ABA14A58F9E8658D0C866AFFDE5CAF71EF5ED044B6F6 B7C21202CAF6DE905F1FCD84B390F3EA5AB1C0758B431F905D257AE2485B150B 92E8A0AD3C5FD7E034B3F770105BD20AFE529E1601F5049708B8F685DC5FAE76 09FE62F107E24D1CE91BFB603810A022C4DAA060BB984C29C55B9B3AA989067E 92F3D01804D980D83AFF4C7D1C511E690120D8668DE0FA3FBF6B6A29BD479E31 981AB11F0F162A70E4E81F2C0A8C59B5FC0C11BD9845C4B61A7E7C833F637DEC E07A87E003F8308B62E40A07D4D7146E9FA54DBDB9306DED92D5D481DF5BFF24 0E6514F6DD1AB8509473A57086EFA2EACCE5F9E58FCEE8B5BB3B6D137BEF1285 89EA832C8C1D8115766B376145A4983F6D1ED5287BBE6CF5F67B49879FBD03C6 8156CF6878B1744371A3103E622159E5C8CF7FCB32C3862C22B3FDF11FBF30B3 1FDD1A164E5E285332873CD35DCB039F5B485B3D9FDBB12DC7ECB67F3505DE7E F11FB27A7AF6490DCDFB1566D3F147FB070B8E83F3D790AD6F236D0245F6E1B0 14535D22BC98381263369E4774E71BAB569BD45281380A48E57C76DD8EBA3C04 17BD36F7CD0958E576050746EB8923AFFA368717E10A16B71583B1663D1D11C8 B5FA491CD0C24997A5F7CDC953B545DB8E08CFB3BFA704E162BEE27C16E65C40 7328604D25A5DC57F251A4C8E502D01C30B46052B3ADE3103DDDA3EFD6272914 199CF380EE9A8387E0EB3240450931160350C0C625D44C331DBAF18374BB4C1F E3777647C366E61F312578079D68406CF3B1DD74071385F94174CE5B1F9ED388 EFB0FFDDFC09DBA85DB889328DF594FA82030EA686902633C2C3E0B0FBC7FA2B 63C22001602F5ACB3E5F47C914E9E191183287FC85873C030610E40421621344 E11678418E89200729936095FD61825331D559CF26BBC51FDF44D769E168BD03 220582E6B8707BD0AECFC20C978079EB95DEE61BD6AF7F00DDB906BD6EFF2D9E 118ADF93EDF08F32A326FC78D1A89C429E17AA399B3323FD64F67777D0113B3B CF0CB58059354DEAF99AA6E130CFEFB41AB367E89466B61D10F571E64343DAD4 1B1584350EC674761333FA934E02401ED59B4AFC47EFBDB86CA3133E9D3D220F E4543891D139786DCF65EDB9B07BBB6DEED08FAFCA473E9F040738A2F35B9B68 26DE84555A6696A5AF76DB38FC063DE75301A1B153FA7D4F87A79911D374137A 476BD6DCE83F1169E79064801A9C4D6A510CD426DD08B75F68285DC5479C79C7 7F0CF5D6026F74BEDA44320DCF5F53B493D3BAB66579F41D970F383E0E36EB2D F75662E1D83A807E04444B08EAB6166B78A2D93D42DBB846D1D378554865AE82 88527E5C35F0D56A16687127710E5BC16E8CA020C2174D48F18CBAC2BD68709A E4DF8A0DD743BE501344B963A6495F05B09D2CED114BFDA6F06CDC7D384AA404 444FABBC12031CBACC89238D7B3C11C74554F518341CED3C236F402225695751 F60BFB05C2F0CBA5D98FA0A9F374614B39C0F0D85A3FEF0E317D99D991FD24BE 7E7F56EB2C7CA2DC150BD986AC5DD101B1869811463CD88D1A5CC2BB07A8281F 61ACB5018C6A841C45BF23ABFEB65FC35A8DD2E2EC04C68DE20075EAFDF218B4 957D9D46581239ED61492789AF9C2B483555EF0F6BD9673F5C266E56149A52A8 A43C2DC7228FE2E715EE2C986B971AE4A3DFC984A6665FE9F353B2A208642BE7 892471129991017921E7837CC9D02228CF06548CABCBBB9EA7DBA451E46CCC5E 7A5C35C04D3B70BB91117414ACA4A79BC957C4E2EF672BEE6319AD271A454875 707CEEA6E0E3E36A5C8BEB0287E485EE4FB4CC96318AD1BBD8E9A4CF9EA58C30 6DA2D664AA5CDC129DBB71D14E1A63B17870F8ED648DF5C84284F2E6A7EFCD1A 1CA58599DA1CD20109F115011726E9F6D1EFDB2DF2C4880728D45287A6CAE369 960AA12900C0B1197D113D17B6F305F2D5CF3FCF8FF477132FC546E5741632C4 729C152C526D9E3DB5B0C42B3F059A0FF732E9A7E0773330543CF9F4A9D2FFC7 210F6FEEACC16891F45721189F574C2B1A326754D0270AAB1FCD85A111FAB619 AAF0BDE62F9AF46D01EC81BB4049EF54938F24DD09CBECAA43FD35528E9F49CF 6AEC8924DC2D9DAE644CCB4C06DE0364DC8A55C57D23652B7F40BC6131053DDC 730F1732DC5901EA45B626D44C46C466BF17AD94F5A4243691C6FCEA0B356960 C9FBDE4D491108E93DC71C5A52B9123DA0B41F8740719A935E12F9B1DF8694B5 AE02FC7887051715C066225D84B0D71B1C8329F43AEB367537C2073DB23253BA 8E792BC727C234FB85677760EF7CBDCD7022F3D128CB9648A6E4AD5EEACA9059 2745DD10DEBD754EE72B4DA6598C42E34543E87EE1C15D0D44728E8C28E2845B 6E32CE2955D9778AFC2BB91273B6582D07D5E913FBF0BC7FD7C030AA5B89781B 26EAC2570601A13EF779FB27DBB10F62F916515AF9D432ED408E6E14D3001AA9 1DA0D91E12DF9CEFE53897CB27077B56E0EF1B67917E94419C7F29ADADD681D1 9C099D96B36443FC7221677504E0FC2803221A70CAF0EBC1AE1A17F08D6C582F E2DD49E24BCD60DEBADB6D873616C1216EB8152CC2F6E1569560B7FCAAC154A0 34AC3141F9BB9A7935BE122FAC406909C221EFE2CBCF8E93CC08F1B65B2E196E 01EF12208DF6D289927EFAC5B95C2E7E9F35E01897236B7FE20836597C43DB38 1F3B0FF3F2EBBB98294FE6FB3FFEDF4DA992DEB30E8C28B0ACE497A7027FE523 C98234DAE8A2C72FC7C69B850D76AF02DECD2BD8E66048D71D2C23C30C06D163 EB51AC341B2BBCC9253E07D3C3B351B31ED811588B8837DDBD1715597F8548FC 8110AE050595E0A33DFD0FBE58D05B90FC276C0D84D865A5618CE5DFA8F2F577 C166CD032C50F8E31CB038EA1C84CBF05095DAAE1B27F8C0FF1DB46550253FAE 60EA95F3568E85641BE56F4B45E9483C9F03936538BD4A45DB8B801B9945311B A87C863CE0704FA51C93DD1D16B911D567F49061956B1D2924B017F319D394ED 014698B588B0C6D44FB4AC5EA0CD198838FAF25A28721D54A38C237413F789FD 5E63962BEDEF058F16D82C612A8BBE1B27A6CCFDAB65463BF7102F4D52105C1B 924A07EF5CABF18DB1681E900F2A12425987FEEB9F53BC2F0185BED93D68E8FB 0D9DE9DF0026A4A1A63D77E74FC12BF1C09326D4876D21CFF0477F61C85B3998 225C53C4ECA4F375087B658A2884BDE896F152565402DE83D4AD22BBB3802761 9D5919B4035481223C74F836DB224A87C57EFB4FCDFF6A7F639C683D20446607 2C66A91762D85D18361446F01D5002FD4E0DD3F7C9F141D3D7F12ADC1AD62B86 519BF3A3DDC24A714DA3909A6CBE635BE1EEA57FFDBF886353FB875DD538A4FB CADBF40F28832F56C3361CC02946295C96D15DC39D1D2346E9F734AEC76CA01C 1D1C82E4263D96BF24CC9C91BC154F6657E4CDB6C9AFA0D91E6E3D3F7B85B0AE 7924B40E7F5079080263C6FEA4566D6EA054191867D704E381B40F1FA35F26FB 590E8D4BE1A42325AB1FA7A97D6FBC0F2FDFAA663697D275BF3950809587A32C 58B2E7812DAC1A741E09B57F753F16A021276E33C8E88A4862102C8E94F33208 A5697FEE41E0B07870AADD737EF08B85DC6BE6106C5BE8304AD2F06570A9D659 5FD541C7C9FEF2B40277820280AB6B12342E3F6E0A68CD00D837639A86D343BE D00DE72E0E7CF20DBFF8211FE171CF60F470EE199D995E1E591353BEB6303D01 F69C1687328C6D4B150C0F3925EEC6B09B7B1F7BC5171E09926D487C01A72727 F5832CA67C718D902ED6A8582DD31C1E05B98BF735DDB34942EF9DBCE6593D1D 008875C82950531D335A835582332A9FF3E818F252C366CE47203C06AAA63EC9 6D12BA546BF70C1C55A19383108B4D5E5DAACD3459AB58AC250C6ED8BB4F7A81 26BF4438E2A7E09DAF1EAC409EF4BAB652704DDFA4BD7922CA7D84335D2AD692 0B5768D7B86958562A6AAE043227D91ECED5604EF88B631FA5214A220A24A434 382F28625802E5A7B771A240BF3CFE3E5C26EF07D25579E9B0DF051CC455ED0C 5BFAF7DACA76961F6E845BFEA89C6237CC4D2167B23DBFA12841A05D3845ADB1 F22DB6FBEC1957F4A6B2764058D01875770FBA21C399A4B7124F8D3CD93B85D8 EC4BF36591B064FCDAF5704729F48C454B185D5F63D08EBA439189730D501F4C 2558CFE90AFFCEBB9CA6906644D91B89DBFB2B126DEC3D11C69C43701A695232 889E0F5B6CFD28563500E58D36A9639758063321FF48CE828031DA7786B5FCF4 11A438CD23F6DE1896996646BF5C297113812DA173AFF1CB9A35A270836F1D28 E4814DB3E06149A27FDB80B420376429E0CF1E4FD3DC4DDFF18D640E08C7F356 2B24BEA6C1D100A37DDBAFE1ADB9D95EA40B1A61FB4B22EFE5041654CCC4F10A CB1BF0591DDB18D2D8DD0799E3CC6D87FCCB79B98D0A0F43F683180D374F165E 600B93451E870C4A778C695FE20235EB3E5D66CCC68B191558C047B78863D34F 891C5BFD08DD9BDDC4438315D16D64FB74568DFD98984702BF41E3AA2DF51B33 266F6AC71143050432767B6ABF14CD9A91EB26EEBF9922A87086EA7ECB89DE2B 6742A8B41236F71DA971607A12FE7CD8366342A0BE30B442775103B7790A7D7F 9EE53E50FFAAF7BD8557C83B3A8B0D6B5874255FA0976237641DEFF9FB78B434 DB904AE6853C5040AECFBFE470A0442E087CB66C561218AC2468B8D7CECA960D 76E869F22780CE8D82C83EE0DB6AA2E40B146375A23466864F97C93417B4D790 6F2AA9E51E0D912A99AFDF9166A24FBB4E931D89A2A1B6AAF169B9987214417A D2618D33D3B5EC742E9F98DB9CCE354506F5D67FBA3B582629CE9FEEE5788F68 C5D221AE2D2DBA4F2E1C572842E7E61D8CB5F4DF9D110BE0F27830248476AB67 C6D43F452F24D161B5E1C6589A1A10E6FE0B74ED8050A26ED31E7A4756448817 37AE9D1DBFE7B7B6BF6EFE016C2055BD06352DD102EE3EB6F83626961C0E4D4F F671C73D12C6ECFCB12F4DE604304411F026591C153095A7CFBE947292D6AFD8 1EC4010EF23BCDA9906F0895D0E0B156C26D955C2CF384A4D1A6CD5D194EAA50 824BE4E6C8140F17D6C43FF141DB67531A155B8DA764B449029C69CA76566B61 A9D2CED8301CA6EEC5925819A75F123655105BDE0C84385AC42B7DBCF71929FB CF6B189C30356B1BAABD615B4874629B1DA03D01E156707B591F775249C3321B 500420EB3002F174FCD2F245D620F81FE4D06D8D0FF3BF8BB16B17B4EE23FFAC A00895FFA7356EA414011F70474244A72CF960F3BF3EFC15639C72A69ECAAFD0 D0801C2C11DD0D1491FDEAE7F8699A8A931EC2E0CAD8AEF58FAB5513B79DA3F2 7DE456612129EE02041679FBE73F1BB623EFA954E322C5092CF233D166F1FDC9 F4A6D9E622FCB26CBABE23C6E77E20E9FAE362D0526369C7C22825108BD10FDD 7D0B86D77DA54FC097A9997D576F1C6578B29A6FBBE5479DBBAA636DF1A85152 738B07D0EE0827529AAFDD981269225A5F92AD7D43ACCFDA3884554269EADB23 E26B7E0B06E01630472C08E1769F7B83A173B9270B4F29EF8B0F9E2CFD5D181A 9E05F0CC0DF783AAA44C8384A70631CD0542127A722FEE62A2DF692066CE5BA0 E3EE4472B48A20CC51905296E24E0B33EB3BBD384F366140D8346694CDD1FA73 3EC45394C65F591C8DBD89699AA6297444D5B9DA1F59E4DA9E7A77491043A746 3C90D2A496AD5C3D508FF8448A78D1CF1306B2D7D1A6E415571ACBCCBB00C0EE FF862616694320F60A214EC3AB2A8E24A2A19F376196E474F8354CA01AE039BD 1629F22A61E8D61A08BC67A0900825C0AE7FE8E9F3B691479A57BBB971BE02E2 4A3353ECBA1BD35ABDC693D8D3C6DECE7FEECA3F0526A49864469554F47E545A EF130AF7804D7D0A2D45CAD160492CF20929C408B220E5CDF32F36AF3188F0BD 0439D6EABDBF7DE3837B71144A029E8F209BA72B24212CAD346E65859D7BB5F3 A27387E6CC999F8BA5DAC763C0450B3042CD7D384E1DC2710669D8248BCADE73 B3DEFC26A2CCE29E49EAA07A61CAEBFCE551E22B41C71CA47BEF80D7A47B032E 8B009D3B3926ED68251544C69DF21DC18EB82E2F3EE3A28736C2406946F0E334 A5324DE56DF80826780E224EDBB52031972BFA0D12B491CFDC74DC1E461FE64F 4D1FC231F194C5242B4F1B4E63E286E78073AEB8731620CCC8AEA7942B783F7E F862CEADDA2D9B54330EB98084D7811A703DD6E26B259BAAB441A606C9112283 D65A7D26C0CC4CC4061309A0CAE0D98CFF0D50C03C2ADC8815B985C4A8F7D62F 431510BE5E8C1D8FBB9852C5DA967015E343DEE1CB50CAE135EDD6CD05429832 C2A65140FA1E08B302501D5290E4A7C46A7F9E8655FD6CD673F1B8AB0B4523D1 C759FF6CF964A5E56C01DDE17355ABA94B372DDF2F51E748C8773E588E885544 03CCEFD8A53306D7CCD20CD8345327FAD8E6830FC677B0A372F989DDE179E36F 64CD65B149A06E66B08D320EEC7E138C316C632C07C6520B777DDB7965600624 2B3DC6831CA3A2A7B0AE0DF56C3267469DFA8A998884FF9F3C599BE38FA40150 76C9F914BF4782C41CB71D2B61B3E6447DB892EFDE33D9C86542E47366F3CB32 B033AE669E2FDC389494B39AA289547BD5FAAF0E7F86F7286D7B1D0D1379239D 3BF2272AED9EFA086DBF8113F86EB274E8AC7BE019E0736B3F675D42419FFAA3 6969FBD65FDC7F90009B403F3CE8E8A0672B84BAD8BD574EC2FB837C59F7C8D1 CA702CBD85997B3692E4D5B7B9A92554C841E4CFFB89511786E3D82957F38A6B F18757A9159BB6C7B820D5D7FBDBB684F24060ECEC9642B1F58B6DB47C7BDF0C 316B4E6E03A15C5AC34BBE39A0409D54FFBCFDDE38E658B684C483ED25B3A1B1 C36CF39FBC3F2C16C60B4191EEB2DF9BD37018669B9023B3417E10079636EFCF 3DBC58AFDA938ACB2DACB2F4F4FB0174CDE21E7C18F3249B7F9552BFA433DCE0 099756877B31DD88639652536F26D7D94099FA9B4FCB0560046A9262931C65E5 92053C4E35FD87DABA9D7005879C22B5101AEA62014F3A057721FBB8E7467BDB 69AD88238DDA8F2E859111B2B418D3AAA022339D086D59DE48CD08454C912467 9DEF6E0ED9F76F05D81B95FF5829A89B24E9E43B0A8496E0B13B22A4FD7814D3 116A6E96E374AEA23B2922D9F6443E3ED1793D1BFBDF3BB02B7D9E6AE5591177 B30ED8E13DF465EDF59A9CF626D0B9CD5903A479ADB4CC991DFC4A8738F0E254 3C1AC97C1B55E09BE394DA49C18C6208984CB3180E7E646785B8FBBFA0E66DF4 90A46D55E23ED4A4B69AD7426E372A827A93C15210CEBC9F14FA9E85CB755497 7C6352FE2C7F2091317C2DC7858459D71E6077E904140D173334EC54BD371E8C D22F826F6A47B6D415539A584A5E51A8A2703917536CC78714FF645C2BA45E71 8E8A115480553288CE75D20B8983CD80C1A379D84B287DF717091C6238AFB40E 5CC1E47D415F93D06C815547E9768364793C2A56DD7CF5D15B43D7E45D5BC173 BDE51EC81AC562ACD34DA9E289CA5ED20B98239493621E9502725DB3CF7BCFEF 7ACDB71CD733D372F72CE5D6E4011ACAD693A5FA3781E703F8C2AA765624DF58 CF80D893BD60E9122EF34807C043AACA79992D65AF26E4C77BE0E7FA8A5EE5B2 3E358D2436383E8AE643AFA6300015E5024900AA4F9F01F361CDA348E46118A2 65B8D83CA0C2247890776B3EE558FB274B977B7E5B90C51253E6A7F21E4B50BE A642F7770F1EADC62A30AFBBA6E382368441E82FDDC68027158160A8118CD293 61BD76CE8D901585C813C5945F516D7C149AEC0B227194677B9188476FD2FC56 93941BE31CB4C8027EE899BCF6849C3A1F6B3AC0437B2D364E8B9A16DDDDF9F9 5C71755A54ABCEA61B29590CB360C0D80354347970AA2BB275DB7EC90EDA4AEE 5F8B2B8AD1D227B68F6D054F026C0F89EB87592B4B49C929F99048925504E8C7 D4C8DD54555985980D889845772A7FE996D13745A4D103B7AED6CFFD27DA2177 B4BB2D7472B9B53594FBA590BF3720F8A0EDA58B204299C3BCAD66FBEFB8A6EF 196549B99E47E871B01F2D8D33B0CD37BE8B1F106A30A6526BE345DF1E974E11 16B0D1DCFC04E0BA9C31E90BC421CAA86873D8DF11DD8DAA1B6FC3634AA50496 96527307B8CE9BD87F6F42918EB681DFA7C65DF440C8B8543B944CABC451C2B5 D7BB3ED820D17B10751386221C95ADE22FF19670560C96D9928E424F8E420342 69CED15DD15ABC2F910042D24519A633A13955A321BB3ADF099E278C39DF4BFB BFD73DEBCA840F4D28E6A615083977339C65CC95F898E8A9A5376BB5B2F5305A 7C39ED1622B99FEAF09929FFADEB422671FC5766A9767A009C16446F0D054434 FC7E7EC0986CAC11D10BACDE55D9D18894EE8C556F84FA22E8F8C3E8DF43C34A DC8D832AF681834BBD85F7A60C06BDE31F0A3F8576545193021AA6C7D896E918 8FB9D9F505DA027E56317099B472456D4C2981F516207F05A6BFEA874F6DCE5F 9AD138099D4E9CB5C105906BF85C5285D3BF00F25D867A55A66980FEA1F7FFF7 A17D60380FA0841BCB941CD8FCE1BE83712126CCF82494650EE43C39C186A837 BE218B46D14F23E515A211844CAB9C922CD59A41C78C8FEEE4D050FA2F7F0AB7 C0A4890E5704291696D287A1FA5F7EA5ED68D01131D4F0C08FF139DEA5123D12 D41A071C53A360F23C4B1E1652D8CD35941CAE2FEAD5CE627223606359D267DC 6B10B546F72DD6E079B1477B93F035D1679D1EDD8AFC9F1D9046EBF493292875 8493E2E218192EDC2A13E4C2F5D13D555517D1F81D9F7AEF32B35DFF0D5A319A 60703183672A4729B02632BB2B90E379B8F0D9D2080A41ADFB1BAE8CBFF76715 4176A1127AD13E2C23B003D712ABD931849741FAB088116C21845840A06B0A41 78CFC45EEBA410C02B6E351D21A47912B4C7A4DD8BA40CED8F87696F9842F65A A18D643BFFE161C6703768A43012D79FFD25C53534F6BC872B2F2C95E34A21F9 6D11067A71741870DBDB38B9F28AB43280DC533C98861A2E76DABD59717C7323 56B1DB3B7EEB8C5C7B7D26BE8459DF534BD9ABC739FB107E673F5F7620DC557A 55F8F7FE488F509D27888105E7B2472F2C6B05826A8514D71D049F4C022D7280 9147 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR10 %!PS-AdobeFont-1.1: CMR10 1.00B %%CreationDate: 1992 Feb 19 19:54:52 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] 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 /FontBBox{-251 -250 1009 969}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4 87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0 92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C 295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75 409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C 4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF 2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E 0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008 24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B 43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575 5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC 96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3 7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65 0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830 B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007 97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8 FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5 20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4 0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20 3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DD2CB9B06D3122 A737435305D42DE9C6B614926BFD44DF10D14402EBEDFF0B144B1C9BD22D7379 5262FEEAFE31C8A721C2D46AA00C10681BA9970D09F1EA4FA1566B96E221864A 45A24ADAEC63F61C9FD18376D39E0FDDE3FB4FBCDD6A7B66068A99D31CF54CD7 DF2262DA91CCC72889CAA62B1D6F2155CC8E940A2C35D8CD3EC75326188E2D30 1090F31AB50F30AC77D2C445BAF7323389406C44641B3A72C26BCDA442504D03 6C22A3BA1A69E5F87EA400501A3B3231E46F96AC3A6C0E4A4F6F21E0B2BEEF53 E016F34D7003351FD12436520926C632218410359AF9FF167750D3CE0DAC3B91 B310C457402E05C316F400246C8C38B98CC8030F71104BC4FA0505B5EFA4F5C5 9E4FA27C3E790D698690336254D7E34451E692AE23BF5FFBACBDF33E25359BD2 B0E7A0686602568BC87422F32486CB50776C7EAAE7F1BF78B228CA3254510653 3D6368A4985C5FF5A48AEF16E1AB71D7CE2C6649F2CF4B2879D4FA042239B504 F988D2FBE87C3BC784E55B8EE36F1BB5EF14FD5836CA448E139EF8FE221E827D 0608A6B90E08CBF44A30669AF4E20CD5C0C8051E5F86062204AF362DA690B74C B952C9F4799FB2535E47AC019175950A1F3A0D0937016148222B545B1E00A91B 39D2121462F51F736802C523BCFBA894EC11C3353F9BCDF0892C00EB583A4D62 247118996064991B816F9F490FA73861FA614FEC7FC23A5D45310527B6559781 F1C805F0EC931D0C60E70FD5AC55F22E6379D369303F63A0E7069237118DA0A6 5BB55FC6EA1797BC51C1D053401ACD4E9B5E724F4AEB149C38DB0E2BFEE811A9 A94A7405422CDC911CDD97EC4976E27F766A9E3F84387C04C6367509157E4D91 09A1F6DDB59AB9096FC43A6F9773ED9CE3DA6B56D10AEF99FD277F8666E72028 807AEC6C26E5A142496CD41A80EC051E875DF9F547BEF060B969B197AF97608B F7A3740B3153621A680DAEAB0454706C65581255CA9B40078FA6D352737F0165 D834359ABCFDF5C212F8AE9FD50BEE9683E7D5969D183C058E8BDA78F61B61AC 98746B3A1750093A40C17EBD4AEF36BB2DFA1C9AC2A12834DE4623CCC76BF5A7 92B2B2E368D1DF3471D83495B19154836569D2A30F9CB05C0EC499EA5D3184CD BAE8D2A2CF80C6359275B3894B4DAD7F92501BA9A6BD215256CF9F35C2BDD40A D1D949000633FF0B5FC7674BBED71294AD28FF25710E968E85C3FE71046BF0C1 71EF48F8024C28959FBE6E896BD1AFE579764616672C724959FD66C8398ABB5D 6C02C5619866453708E3FDCAC2754E9C333C1123A5F746DC5B2CA9D430263645 A88C743EBEF8C82DA0236FB73D3DCDFF874A1A5928406838A81E40F34816EBEA 0D7A89406A6F492E5E5E6C8C4D85A2B9A83B6A4304B05AB541041AE014C845B4 283CE3F75DA22CB7CD78C67A1F067C79B209BDBA6705D80FBF08CD0FEB9D3293 D9955BF6730BD59495A1F81B708292B509537089D8AC34A06DAE5E8BBB9B0A0D F09BA6723DEA964F06C0E1A6541656470E251F5AFC6677043DE7C6D85B60D3EB B8A4415DBFDE3F29D5FAA0B5CE4BE9559595265FA8BC24A172FBAF9B1AD0A4E1 1CADABC2B71A43098146DBFDF7E126069259EB490CAAB07D5C9CE4E328BBC737 C2C08C8A4F2BF52D59F21AFD0B4FA9A792A7D76220184978816E62521A73F74D 6DEB6CCD2CDC4B80521A44C4DB90D920F62DAC930649478C801062F0CC80F00A FCA5C4E5E1C39C1C51FF9EEB5D10147C74F375BE92F631A568B165A6C5603AF7 33D576FA288FFDB1073EDFB3E27AE7D309F1B1EF88E964886ED0F143599C8B3D E5500448B5BB38B8A254BA78CF3D77ECE033C1FFD0C337C87685957912009099 D38700245D96031A32ADE28F1A53280FD5DE710AB9043C1F763D8116460773CC 06FCA725965B8474AF513DF5923EDBB9486DCB064BF850BA236D85CD8290520D 6FF7FAA8CE8706F0B91FED1B1C9EC8582DE0B21E2A6CE906DE939A79366A2C41 9159F93BF964E2512EC9BA14CF3F57FB680C0B422E46D5B7C4378F1FBBF02A98 D2DAA8300B125426331D2E189FD24470EB73C3A07ACE87A656D7C18B2E8B85C1 D82969432DF447EFB88EEAEBF52B60A279BCDB475B5B440A2A52AA65AA7BE7A6 94E1305EEEC50268FE110F279B047A1BEC84036C49CF6900C0092D953338B798 617F951CF53A99FC410EDA3AF64D65051E416413CA95682171AA43E2A8F8E7D6 4CB5FF04BB133F84A046392A3015EAB735988A97DDBF77556989FD5674D6CC44 3121BCA7E198CAD5892EB5CBCD8FA6BF1586159FF395C682E8494113276B9648 C20D806C0296517112BA493BC8F32B1CA7CB4B1A46150DECD06A55119F8BACE3 8525CB3100123716000A7AA97F79C36350E0FF1BCF2376C86E2167C05424FE8A 41AF4F14899004ED5DBF76D34DE0E4D53C78E95CCF9C66CC3D46DD2CD5EFE763 6C18D2AFA1ADC3646289B014603046597231202DCF1BD531B0DC20CAEF872D68 D2AB4D619652966BD32FC7ED588144BABC4054475BE8186BD53EFAC7EB48D9FB E54CE39E436D444D11FA1C06A4F78DD68E05A5BE7630928305341A7D802FB62A 6F882CE91BDC9DDA06E4CA964C15A7453904C7F46C4F9AE5CE46077CF70CBC16 DB70EAE7364CBC2BE2A8F20F9168E9ED6BC375EAFE57D4B2EAE0258F900B64A4 AC7AE008F3BE9B0AF586D67E031F4EBAA507E398D15009D9BD475EE08B9B6B3C 3C716FFE2C10D6B6438062211D63690F98DC5E697D94C4A427398D6B189F355C E76D5FD762FB4DD809D7167EA5CCCB4A962F5D728C81F4FB0363CCE38AEEC896 9B47508130431B97C2F7ADE5E8D30E89DFF6F1F597BB527FF79D8C6E04A1E3B2 34D7F1888369A219A6C37E0441267004968A469BAF6285C32932147F9A092F7B 24DCFB461A6212F339B7E4C3742743DAF408C2619D81B2837E2894EA75B063A8 D42AFDB5201B0315951568651B48E274A55F8B83CBAC42AB30F4D8CD63ADA0EA 0FF418822BD1AB5647DA0B359EBF4707DCC1ACDB8F689784E31841A1806B824D 175DE46F8685AE05BA51C465538DC097CE7DCE0E1DA7A7302E53F882D7A42C9C 1904CE1EF11682FDA0561E012E764B87604D0A9D5A21CE98EFC3C1CEF1A6D20E 2D6E1780EBFA02C46E35A54FEF495476D0BB05F71C238A303131867A65BF97F3 A9039D8B87AC7AEE2401CBF576C2C14801B837B9D4731A35B44D0C2C1C51BAA8 7C9001EB1F35DAEBD3623907C4B2688EEA1A57B78B6A969C83DE3E19B474AE78 5F160966D9E2F97C1E5368D74AE45D7733BAB3148709102256322B9909C6DE93 56AAC542D7CEF2A187D6AD3D10A9E46941E1B519E70F27D1F4B01CE09FBB229B 142A0EC3DB9776FFEDD0E62DEDA5F49C6B3CB5FF7D53BCA15D25E8553244E7D4 7EF935C937743EA8E4FE43F03DFE121529E15DAB3F3A391E91F4248DEB6BADB8 34EE88E09554B708C3A01272D93A1AAFD7EF6C0BE93EAF7306D9ECF0E821390D F6780DA87777769959019950251532FFC28C31DB5030DAC662105812EA265DAF 07CB1EE69949364FFEA0A2B587322DC484EDB8DA73B15AC421CD7F095C211AC2 CF5E52BC708772C86E78A386FC8537CA7ED4CB200EE713CC875C71A3D66152FE 63941705455D4D62A5693C95F3D657FD712CAF2D6F26190F9B4D38A7B69F9F98 7EFE70BCC1353416025116BC14BD5C899484AAA1F8D5E7EDF83C5329DAD4EC0E 40A50FD17BD4A2B45FE3F1EB572FB922F593F3B94DCDA66FD4E6325D60953672 645CEB064147543EC1E99E579F2CC80518152860A91DBC45099545795A4EEB69 3C7E11019FA069BE07E588CE02A31BF9A4DD79A6573669D0B29CA37B017DA0F5 4487C47EB601063A0164F4ED229CE54F6FBB7FBD773D77CAA22EB1A748972FC2 F1D01E91EECA8F43C4250225FE6824D04B5AC7AB5AF31BF1F849105CA6A317C4 7E0D40C499A2021241BECF5846B4EE3CDE0970976512B86F841E60FF3F399400 C65455EF897869D9248EDDEFF108DB330A60FD95F7CFE12CDBFBCA84DA78082C 937600D422A79EB6228A35FC67A988FFE4C595335ECC658B522BE37407ADFB9E 9D6265CADE77C0D382E68E5BD82EA7EBC0FA6AFEF301FEA3824638CC81C6419B C525F1C8EBE280E9961BA938CD131D6F06C98C4216F615A0A20A4390977FB46D 16A447376D2E02D67D56C5681B3A2B9D82AC00DCF18DA4E944A2EFAABC523047 107634DB0A3FC81AD03135711607936A11A1F49CC6625E8A65CD3E5BE0672179 C6A09D97018BF1BB19C3CC168FF6DDFE59D76BBFA7430C39AB04172BB6E7A978 54999DA0521ADD5360EF7D61B4ABD725AF7C23977CB443D4BDE4707576D2D99D A8B548B083958C6E864102B04121BA37DCEAEF1CEB96E8B26103725669EFC077 92758777884F3B31BF01E7436530A16E3AB5B278DF1896AD3BD1EDCDA6093F63 DE633CFABAB1F8EDCE3642BED79866E4BE77111B5D46A6012751A3C2D1CE3CF1 B4EBCC3B4E0FE417503BB5B96792DBAD130C0884F0B2AA8438517BAF0D776AB6 AB3C3AC95D5D2293CAA599628FDB7B2778F5653F1F42C1FC6AA05F4745DACCE3 B5010F652B666349F101F2533B2D007B75C036D82BD0DDDFD2CF0E17E15EBEC2 8A4F752CBA147888A0644744BC3FC63F77613E2959280AC554682A089504E74F EF0F7CAFB68269516AAF56A8D67862312C865BBBEC1DD370AA5860CE7BB3CF00 1C87D2920D9B3DE665CA2ED3AA8E6F71B41D6242038B00F90367E1EFAD0C6542 E1E2FFDA15DD74A070C4707A52DD1010BAFE639A105B3BE8FAA713360C40553A F18C88C21256847FDABE40A55B3DC9BD3D4571C5BB374D7A66D628B29F4C8A20 72ACEF75755696676631C84BB83E131B944ADEA3E8174B6C7AB562662B2AFF5C 39B40B83C22FE7268AC886D61F928FED67BA9D3FB580A297DF6A79F98B44C932 A482491F7B087DAD03DE016181012B2F2D283D6DA1305DC9CC74A2D8908742FE 58D138C5DEFB2563C387AC2DBBC9A3936E39A82960CA990E20ADA2FE66F61013 F8419506BAD0EEC6B3EC2A5C758F6C3A8321C89DB6F088CE538A78C0A6BAF7CF CA85B5B33844F8497B7C797BCCE8AB240C3757C38020D0C2DE6DFB276DBA1575 C3A689485AD882CEDF9547E03EAED7C64852BAFE5F27B092E0328CBE555F281D 9FFBF69511D11B0C5CEAC3CF5008301DA12F3043BC743A6C3451F9AC07B2E4AC DBAEA8DE80DA2638FD5AD24191500EC34EAD8E7ED22EEDBCFD3F8A2462169BA1 832FE9FA739A4B2DC29EAB11AC273BEC356370E8C21855BC7A29E2EA3F3E4C34 1E19190C7746D2AA0C867F465A448D9E6B7CD1556BC303F9694DFA8C27FAD567 68DAE905EFFF437935C09F4458EBB012E1F8A27769A5E6E7E9FB19B8E3BB51B7 FC52A92DD505D9EB807D5E58F3D0F330B26A37F6661A641C1210BE89946630C4 8DD6DD4664F506D282395CCC8985795A80C90A634BEEF91328662A66F01B2574 2C63DF79B32A2D2DEE61207B6AD34693D88516A4CA3D6410781E4277B2DD6A7D F91D34BED5DEC0EF40CAA20EADA814E6849F253C573C1978B206D74E5487C481 A62ED50BC745DAFA7FED99B1B504DA6F887E4D273A8AF123B34FFEE139B7EF9D 3F487591B392C296B582AC191BA1AD825934D1744A34AE7CD1315952C496A7BD D51396ADB04C7200FA731FC0AD96D6F7C57ED30D3AE1138174A2C84A7E532BB6 41B4A867F929E5438D27912E659E5F86F90D7147E79BDDBF30C97793530CC4FF 54D7E97FFEE71DD342EB55642359D7276E308266CCC69DEB00D0D51B70EF3616 C9D6F8DC3101691791344906CF05A89C03C182CB5C5CE7D32DB795D91411CFA8 22A37C55A9945C6407087E88EFC67781643253F19E3997933462ED38E83ECA3C E64A3E9A652D38307E302AC61CDEC7E32D31591EB58E1745F2331363B0EF35A6 4EAB8D009CD2F5D9AD20D296755CB877E88C7B4A657EC5B367EEBD075F6DBA8C EEE0669A2C4EA1B6460A7A81C7D6E64F686418E9E0861E05B756602C2391A86E C4F86B189FE52E15E288F88003387A6360EDF559236959303477D60C1D9717DE A765382BF2FD88EE4198B7F7E8EDFAC5BAC981CAE9B66C08B3C9C7DFF18B2993 714AAFD1A26FB3225FDC024124105CADDF9F8B9049780BEFE190C5A62CF777C7 C623D75A51750C7A8474A0775D1076F822104B7AA0F63210406931D8D220D607 E90C5EC1E4F14B6916DB05225D510D31F2EC92552113AABADC29E47FBAD79155 39D0C8215B6D949C7D1192F0F111286687BA15307F78B72F932541B1A3B3EAE1 2683F549B99C2D3DFC5894C3DC9A7DFDAD253ABD0F970B595AD8F2F8EF1F9EB9 7F3A6C5DDBC94E05C03DF9051282C6C2717070FD8B0B801D30B146BDCFB73F31 A4DEEB2F83F19228F1BB91CD2233F17EB20D6758203FF50083FE88AD8F8DC580 2B3C25A4A12B1D2BF50E0863D13214165C8A1B2C1F30A0CD94786F4F05C2BF79 12A4219938CAE556E2895324DF76321316F00303D8A99C06269ACA4B020D75EE F12EC96AE7A1E6AA61E41E8290FC3B64150F5D3FD35B345882C08A3FEAEAE558 5F1BD120C7F591C19EE2ED934B1F960B5BCBC9B2D8BF7477D37BB2AA948FF42D 6E50BC5D2DD02956D34CDC099DCEA71230016A21850225D331F0B199FD747FE0 D482EDF732E997C968AC2261827DBB620A856A3B5DDB4F4B324828281DE2636D E5796BAE0E33CAA5598E4DF2D044FB6D373B640EB6FBBF78D8DFD7BA5F690792 D5DFD43D1E6F99E6BDF0BBB217D6AC239E6BCDB0CB03A3E0801FC822B3A79194 E92227AC1C9730090EF8ECBD839A3CA20C5120CE2783D4C8314008E959ABCAA2 E10D9D736D51AC80D5CB2AAE30F4692AC0E033219FC9293B21BC7496BEBA5E84 2877AF1604F59666669A080C555F2E1F131BA17F7AE6F53F0B1FB5B4E145DC39 941FB434461CD855391862C358E53A29C6F8086E7702BE1245AD83739536D68F 3778164C3CFC670226C8F7FA8A0C1578D924B2FE54548C462C94B97B7CDA0529 103EEBBD42F2A8E379E20123321AE14ADD391DE78E428A1CA0EDC2FFF6833E22 64839511DD6554AAC6C28C16927A25ADA147ECBB3DBEBD7E319EB86C4B65E665 B59E209C5A2DA3F6326A6CE616D9002B968A3FC2508FD738B05D9EFD7BA239A2 F0933ED758DF4CA5D69FC074CB96F224C8439F44CC56769F56C0A7641E81AA48 D79DA23F07E032218D8D2BDBDCBA55266A96FC0725233E3FB54EC8956504EC63 982DB4168531C126E9763B3399E4F100B75CF5B82E46BA306849409B1AFDEE47 D2E7F932B36507ADF224AF815FB98E7BE6B6045836FDA21EF4A565715F59246A 384694C47FDA87A2F77EF04D364BFE41DC57CF091DEC37FD11418379E8245322 30B4B9B6AEF0A68773AC5A7B3029CB7C60987B463B98897B02CFD790EF701C33 3EAA26A7EB15E49B07D6DEB8882779554410382879F7E0CEF990547C8476AA8C 7A300C966E7195B5A19F68CFFF7D0AB7E576513746E42484A1169781DE99379F 7C522EB4BC3D7B71428D8E6B20224A559A4DB40C4023840836F78FFDAFEAA69E D984D5DCDC72C87A365DAB2AD414EC12E28FA7982F9E0A810FC40BE23BFAD820 3EF4DA158525E1D5036CE782BA6CCEACD6A370DB95C613B0EEE244B497159983 3CA3F6D777F1350347418469E42B8D6FD9ADE42FB67ADB75A5C51B0AA818FB61 08B24262DAB4A4C6165879B4F9EFB94A8741ABB1F5530FD1B7564713ED413293 D5AEFE41012E03E0B742ACF70049DE8E1C5C90C9661A8CE53B13BF904E9B4EE0 B5270249A2DAA0C2A4EDDD68BBA38B83DE1515DA353CB2BC4509DA70E6B3B0C1 21C3AF9AB1CC0DBB6EBE3760003BB8166B24BCC2A2F177888EB8B9D24D35BF93 C924A81B4E08314C3108E3AB24A1D0FF6855510A5622DD113763E94B38438494 92E53CED17FB43AE56B68FF67320B41F49A76233247982952C9002E0D56C979D 3F69D91227723536868F5F7958580630EB4AD336E76517C67F7EA6A8B8306AF8 55648AAA6CF06D66912EA791D3A655AE501C3B035056CDD606039CB98D266EA0 5962F551624F3C846F2BE53B5543EDCF1E87AE8A02D145D15C815A04436A039E 6EC2CB7F78E9C249BE6E18B9A7174D55BDD22D4FBFF18F4CBB8971D95B87A942 214F70E71D69FEFBB61F36FBCDADACE5B1F8DC8DEB553E92FCA6012383F407CB 3E2C0FE1D5ED65A36C667B01ED9060E4A8E0952D188DC14C6BB366E0D2508660 D0550C391418B0D9F7509FB9106355984CEA4AC69270424966DA6D6DB3781E5B C0B8E55D5A79E8FAE3F2718043335699B46432C9D9E20B65117DF4F110FA2AF0 B657478145E4DE7848A720012F85AB074184AF9DFCA61DBA50F3E264A972C9C0 0771DB207642E5427C1CDC82369FB12FA3415ED67AACA997CE21BD4CE16E8248 DCFA92869DD2000D74598E2E7FE31059816FC98E7544089B5173DC42E3AA257F 38CA34F53DA87DB0E6CFEBE4AE376DABF7021F3E0F9C8D9922A219C45A4383F3 C22BCA5A390D81DAC65BBB69DDEC39A03C801D49BFD6803BF9CDEA60EB45148D A7BBAFB6099E99FA795D52C7763D982DF0101C393E3EFF2D4DCC16D1C13A31E6 FDEC9EB43033E23C8ED7A474F68FB0722C0EAC4522E86A5FA4F6131BB71F4D3F 47263406BA019F2A0FE1FF440DDFD00BED55AE78EB754ADDDC3061118F0CEE9F 8F4A8B7AAFC2DD9AEECC639A2DA845E383497646945D6DC2C0BAA12CB8496DCE 088169062E60EDA94F8C4136943A966F9E494DB3D5BB96DA991F7D1066A4B042 52B067DD4ECA918206091C457D6E9B0AF85B9E5C94009611E28A6F375DE02553 B9EB612340475B9B3ACD1B7BC1F82DF39C97F807008D29498AEF6A4D3F4F77B5 1E48DBB05BBE04A3E2525DCB29B62F070C3ECD1642558873932EC3ED03D0D8A4 F5559692971EC736C84F9F919ECC510BD23C088A98CAB9C37676192E22D88012 35367327D4D203EDE75BA7190DCCC39FDCE95700991D7D98244E6C12BCB686EA 70A933800C3695CCB29FF8177A07257F9D245AFA9B3715ECD453825D3BDCE474 5B8385AEB7C761DC1944511B7E6ED8B652B947D42AA7622991D3DB1952490500 5DAA7261A6C87866B78237ECB54C9A5240F42BD6A1F768679733B851DE6A3A3D 5EF0401C8CFE58CC90BDAB879B9AAA6F7A159C9CE6D4203B963B92B94A4A26B5 A482F495D643413FFFF13EAC8B6ACACD1FD0AC7BB903FFCD944E6C1C1817D1F9 DF1A40FD6DB5A0DE3BD499E7D8DAB4464FCC73374523272FB2042BFAB551C99A B3E07A2B9B07B3DF9BE669C09F20E98A7FA874BBE288806949B972427C756F0C 9E41C0EBC6A8FE7BFCD0A9B214C02A3F11C8C0A581033160835617C03AE8AEF7 EEA941E076308C87C1065700C2E96C90D259EA1B5EB5A8C5AC57F31004E52872 BAC516B6B3CD9C6352D3ECC838DF6699B2F5D70953C0A49B60EAE2C9AF6F4B2F 7855231DA516E9169E2D6E43D408D717A43A79CCC3E676AFFD7FA868E78EAA03 CA5B9BBCD6EED4E19BD749D9387F3827D7E1268D63159769D86EA48D62B93986 AAAB836DC53DC6235437A7D6F310F6855C59DFB6D88E406314DAFEE30DD454B8 1DD403E919030C0EC2927F468179190D077D6E7AEEE23073E6B0FA5C6A089F78 34E9C58292CC2CCF3A8D657830B6865E234FA6248C7681135B8B98EABCFF6779 E904101F64AC04C1FC9E8C65597A147A8F027E5AF01E1CC077429813B63F4EE8 97785A311258B8C70201004F33D912FFF35AD1F98A94E9AFC6DE1966145692C8 82BC03780A1655AA83A221E2A58F60A9F5F676BD0020179F433455BD678F8125 002BC3EC53D9400E609D1BB3B5904AB25E9F454E9E855A0D9DC540B460A1A7EF 87280370DC188483347A91A67BB787C400F4CC5E640F2BC3E774BFE90FDB6845 4AD47262C3B4D80EC3836137A74292B3F63D864845072C349069571D8F9A7137 80C485BB0848C47F24D23DF2C564A46AD03CC8526C6A9F80810E2B1CE7360894 C5545E434F3FFEDED91840B41744A2CF89669A957F7752430E502617FB09AFA7 6AEEAADB16731E45D169D9D6F93023CB28CD77230A7B0855112ACB6ACC077C74 3D20D339C61DDE7D61C26105AF9541C1C1CF793E86B36813978DC220100855FC 9A1584579E6F7AD6E1CADD801491D633AB96C05ED572B14133EFC19217AEF3A8 F52A5A67C3877BA8BDE5B477FCB5E8BB069089B436BC919B91AE39A6CFE3FD00 8F714CF2633CFB5DF407AD50508C4E69B15C9A477F46A6A02A3A8FED333DFA46 9B72BA7B33935770494BD4EC308D0F4C536CB34D5AD6CD293918D20A82178A50 47065DF743DD3066ADCF39E53E0B5C78D7501D7EC80899E1D08C34A53025E257 0D3A5C70B416258EB97DC38064793E963F65C1825BF16D3B495186091028F710 D21747A40146A8B93B2832DBF37768244E0DE5056B12387F6D040FB232AD6311 BB71D3C86A0ECAA7B058D076D8C853FD58F6F47F38AC8684CB3628F726EC163A C474A77D42ED727A450F383AC45F9924C7BE5AAAB47F8084BF7B558F68846E58 72B7F1654DBC394FAA39F86E2191EBE660B5B7EC968FF5F824CD64FA481AF8E8 B6DE4DB6A3ACD31584A73728D80178D4B9911E091372C323E6ACA127EEEB2FA2 200B1AA0D6B2C20DAD692B2B52C5968ECA37C03FAE3F33DD31D66FC6EB145A03 6C71C45E7E100C9618E234956A90D11820D35B816528874695CB0BC50BDB4B28 FBBE2D9FF9DD877AEDB8D692BD9B39173C5AC2CF86A679E7D0AEB6B5783F56CD C850EEC9A1B6DE9654649D5A22D922B65C03E2568AD42E9248CFD7B46F9EEEE0 5D48B95D51460A49226B70F6F05A8F9C371499732DD0E692F45E325DDCC1278E 96A0994214869D90DE28319455148F1938FA0A3631C9AA66A09B79C676E9E2D1 9D735188041154EF2460DA3AC7A8CE67853CB529495371E4B2CF3EB1551C95A4 4F0C1FA4EF0F5F31AEBCB1CEC2FD65186D73ABB56D06233857B36CAF042E7EAE E7F166DF234A5BF497E1904F2EB3A55E783A87B668A24B3482E8DB64E75415E8 B3A3AC2400D4D14B10D4771E06427D40755315AC7DE7711F2BE6B319532B47E1 4FE038350E977ABACC53E3872DB28C0C210585882AA640C905CBE060DD70073A 4C18C231B50CB10702543F014731AF52049A8A2D3C98CD7C79C71506E9981064 E91C4FAC52CF80FC97CC61E1851AA59120547AD258C5EEE215AB30F290ABBBE0 661E0662C18F5AC2921E544EBD113F62A46F95554F393BF4F5A49045C8169DD2 251CD2A4138B61FC404D29125645B99B0BC9F59E6CBBC7617212496012CCD4E6 74AC9E5D3509EAFEDC149A54A90B470445753321DD9E71F56B21E6B88261ADD7 90FC0864B6737EAF63FF7D422CE274A3FEF7CC60140D442EFA56D5849796F915 AD96A77A7FA0B5F91159EB3CBC52E58A3CB7F9400FD6766E2029AA361E1D1283 AF8FAE4EFC099618DDB8F1D9D530FBF3CD8F138CD94B8E09D057C9B83FAE50D9 8854BC235E2B2CB25C6B60CFECF0511A6548A3AA6F606C1AB3D22D086176315F 361D81D56C8C117625A24F31B25E3F26730B0277568B778EF549F4FF7711FD12 179323CD05753C5FE9A0C0073CE13CB9F60FE97954DD44E870DEDFD1FF236873 8EC83E909ACAD6BDAF9A1D9C8B17B5621758106050389356E55501A41A28C4F8 2BE8CF1CB12C116B41E6D86E66B20783BA2395DB4A99BA1C5A25E2024E2384C1 19A3CE8027B21B1D2698490F6A35E9C851032A1F939405E268ED63447274E337 72A9A44FA55EE5442AF12BE8E3C7697D7566186AC05AA0EAA2EF3636DD203C44 271B62E2057D707B084488D857CFABF2CEE3C84F940A406A06FAEBF1B027E361 1E1DF658BAAA4F573ED8991BDC24F04FFA5493441E80083AE1E20A9F47DB92CF C0686FA3664374857D33A458792F031E9887BC49C0B3A23B37872A8FD7C15A00 B1645F94EDB37627E719D241B9BA6CDDA2B7554992FD0FE5907A1191BE64B35E DE8866A7F6C358E1BADBB106C2051EF0ACB7FE68AFF747108376CC168315715D F68B7439CACA72196BA226DE308FE01C0E863C4FE51171CF845A62AB71ECE9AE EB8A7E31460C9C34720CBA0060F634781E945BB112C2EA5A083048DDB397DE7C 5056373EFDACE0A20E945478DEF0CA34D01A2EC0DD8C45DBBEB61815C76A6D76 E1F15371051253E1E1EC9923F0AD8EEE713827B354920C87BFD7C686DBC4EA57 D0B5639A4C5708A1C6CB8C9A4161297B397FCB8EB907B28AB7511EEAFA4B45ED 75E800AF72DEDD932781B76F1098BD2CF940EFB341684267B9AB326DF32F7FB1 AA64899DFB97A61E8E7E60D22C6EA56DF5CE9723BB4905F7B95AF66F8C95E36B 7EA215A520442CFA1E65D292ECA9DFD2E448430ABDD276816EC3A440C0005DB1 82544CB35B863B51D6A5D72F749E65E1A774BFE88B683EC67C390B30277CD79E A00E0EE6E7F8F5CD4ED4A44D67A9C6C80900D5685931BEE1A601FCDEA3814C2B 6AB562E60A54A6040ECDE43E19E629D92B540A91447588ECBD449ABFF01FB5C2 32AC5A93436EAF978229FCDD77B1645F43692EAE727AF2ACD4CBF6A6768E564E 56FF9A6A29D03EFF3CFEFF0FE678A2D231E18A6EC515F51E2250F2CA423ABDA2 8EAF94C054C21BA60161F905BAF248F97CD4DB56D03A9E096992404DC82F0837 C8F978A209AAA4EA384EDC2C27DEF5F53CF0B689FDCB9FDC1901558E356AA7ED 8A3B704A502FBF89C961C78A51D4DF7A6202593A79CC5F4C786FE328B59BB122 76BAF46F0539F7DD029FFC86CB933DEFAA0EA5BAA0ADC7275D624E432FE5BAA1 55D819D723FA83933F5196586E5FD8CD3BE1FFE2B9388291E7816AECB17AF508 5A024D543D29E0CDEE34F9146120636AEC5AE205ED137882EE6890C347A9CA94 6B640F8776BAE59027BC6F664E304125290DA3F85A96E85D899236A1C3DDA0E1 CF275D78E95732C0C10E41E94B0A2E7562306DF482E2AD18810370D8C1204EBB 6CBE5A1EFD3348127DDA60CDBDAE5A15C656F1CC10F5A588FBB1B2597FF5EB67 F9C79F83FD2696230023F4BFC66913A98B10425265359908A1CFD2A5D8A1BF89 34AC0C0AD30442484BA1968FC36C6DB4C8FE4DD6C514451881073F8CEFED97B0 8990F6116F0AA360FEA5FB6357E598D90997DB4946EFD1C07931B0DC109B2259 04D2E4669E1317504D6B3575357DC15EC62F36C5C975E464D55C0BBD611636E2 9AB92555B2F7A9183E2DD6DCECAAF20EBE605BE48258D657567CD9B8FD95F31A DF490846ABB256AE12D612C5D816E125064CCA647DEAF4628262F52E16EEE572 301969231082B8294545571C1AEB5BC710C5512EDC330129DFF0B2A2EF6458DF 1A30BAF5F13DA91866E4BE2213A9C7A93AB18065F88043FB582FB7DC2BB1B939 1266074AD6BBCF360E2A7E5DE26E00F04CB8FAE140C6C858D27DF82721A88D1F 25D0799A68500B88AFC2DDE19247FBA4646C10AADD961E66BADF10420F989110 D332B4498D045DEBC28FE2C550C9AD2E18D4D524F9ED52B13E2D38021572DE06 A964A88FBDDF996EAF6079F2D4C1A30C19CCF659B14B980BA679831DD739B672 91509C996FCED79866C5DE7B62146B9ABAF17A9C75311D2F49223D52E916DCB1 B1FCE758D361B660A9ACA7B50DB83EC207D0CE4B401C1AA56D5283D605C4B3AC 0B591B1DE2A55D744E18EDECD3C3A4D162B9E79416DE7B86DA58232AAC0C2E0E BA30130EB14A9BC8F4DFFF1DA44649F5B45F8E8108953DE375F0815D1857536C 6781B3576FF92893D79187B72162E14253D16A2FFDAFCED9E0EBD7E2C9EA4A74 A5B11812D68A80CD4C268A78A361C6549017A54A1E96A983A4EA3A6B64127FD0 53E0E4FE67C88AA63605C618CBCAB93224933D6D31D731BDAF32B98828B311D9 912CA96A86F481B149DB7033346BAD1490C62C5338FD7DD1DD11E56D05E4BEED 00DB89E652B1C9E834429C5FA3CD37B11232F9C03629601FFC00C580BA83D32E C3A043D44ADED0B0118BFDD6D6F6B53340EAA1BA4264A1EF13EF24D321FBA706 5FAD69F42EF1064A8F603B55A5B2FB902709D2B3977C9CE34FD3AF666D4696D4 62E0A9E8CA4DF23437A14A5A711EAC9D518E81F5308A8B5689474540258F539D F89C0F4A2787260B594FE897DEE4CF9B826CF5E463C1DD1832D3B7F0C50B3436 B2517D1935A9E144E3EEA10D3D05222D22AF8545E2C0EB2586C4EC885C0818AC 0662B6FA42043752FE9A324F0B190D1143BD457BF54B5A61F49F2C73011B521C BCBE3524580B5903E3802867028555E5637892B5306CA9D8B96B430DBD1BD3A2 C7B5E331921BA44BEB707ED016E864F25D61669CEF014AF36DD79BA0ACA789EA E764DD6CE63A5B402D0FA2241B6EF7F0A3A8EFF6665D1D2F4BE6CAA5F33B71CB D2A9BBC48329015D2EE24EA7C5E0DD4D70DA2273C08904889CE4E8EB51F6FA0F 1D009BC2211D80DD57DC28177A510DEA9DD79CAD8B3F9359FA23F263436C6B40 5B076A2D475C0616C97286C0C43C4A63D07206EAE137B60B14A522004B340099 3589D1C70BD90B3193CC7305F0DCB7A4F96A93C4DA9DAC90834E7372872EED6D 71744EB613252F4D3C576F7E2A7FCC7A4D331761EF96D43366F09CA9090C786B 4EED93C9837340B35C2CA3F8E168918CF7AD206CEAE31C498904F57F26B4AB4E C4BEEDCBC3E58EF3F93D851AF8AB085679B28EA322A11F063607004420C84C16 75AE90BD08A0611C400CB99C46F1614FC7F7DF6F5B9D5335B2C4354889B23F31 2BF2A3BAC45AE90A3327AADA42F0280F3430F4E45070E4CBC82504CF907E2CD1 3BC1EA8118F59F1B06D7CE0184AE924BC55908A9102E5E454AF9F1875ED38E84 F1C3B9BC7FDE2038E79BEBA91E6DB5F3729C24834A890F6F538F6B67947CE9E7 B5AB6E636E5D581D4FA00FAB64D6A6CF83AA9048D8CE710D25A18EDCDE858051 7242753C69A549B34F64C2C5753E8C9B7BFEBDD5BFEB8493AC4F818A01B230AF E6290ED42E87896DDDDD19F6D63E0308EF313C8609FEAFE55E559601D7CED9DB 4BC46459B917E9F11EB9937C69923D4CE668210EBE31A0BF32B5EF2DC65B172F 8E74C34D16AA26C66E28227CFD9214A66F7CA03ED14B2BBEFA79B3D3CA40E4D4 13361BB07C70640A5A3E16BA02715B251A6B99D8B4527A172C60566A4D1568F5 23664D82E32F0F1D60D35E184828ADD21AF35D6D00F66D5C8DC628FF1AC71FD0 66E15928CFA0FB1FD7046808B74363B58833081D49E509781EC721FDF34C0EFE 742EB769C1345F7F99FC87D23815DC58CACF3DEB824F90761D0A8834229574D8 D6B92FE7C5FE98945A5AF2E4B077E92FD60F52D46EAC5451131DCDF240996694 91F9BFD293077BD4FE7FF5FAF8204FE993A1B61CD39D179C3CC33BD79BFEA1EA 26462E24B1C19D48C18A131B6F5984402B9E738F07F18B7B1EF98680A5A30115 0A11E6EEEF438F42BA5DAA80B7291F6EB6B4F67C898CA12009C4928F80CF464A B0B7AB25E7B572D2C3C67E347BF258D48E4B76760462F026D227D8540BCC283D FAA4057C66D9975F358AB3D56F4E2C595156A652E3032C196761BB8FE47668E5 20105DB429BA6B6222216D903196AD5EA99696EC04D43315A4833D8250E234CE 4839485193D124651AA9B3299507A2C83080FB918F06EEF4F3AAF23F7A40B049 BC27706E6901FA35190DDA51F7A23239A090E1804D93F3E50861A92E09CF872F A7780678DAA6DACE6EB06BD418496259FA92BB49EE507266D845CE9D6FA9ADE0 E0BB91013ADDE9BC708F89E706A90432F612ECF79533F5C68AEAE1825A15ABC9 9FEFB9D36B809AA2FFE7338FD2223D98DAA6C6A05A834F74DDF11582F20B14AC B45B9191B0D7144CB29569249D89BAFE4C4D1D7714744335D53999C509BB6194 F60012F25CBBCEE7B3EA323D5A33C0CD9AEB604E61724C367021CF562DB1D0A6 9A5DAAD0F14BD1AB9AD676277158459DCDF9BCEEB02130D72B746A03D87284F3 94DF680883A60798C44626B06FD5E4E8408FECA865CDECFFE6119CD404B34B2C 8647E3836771DDB355B190C6A18149E54D9A3EF26A4BA5F1D525844512569FE7 BEBB833DCCD7EEB0709BD422002C3585E0A69FCCB25C5B1061D5D9A806385CDD 6323528C7EAF5FAADA87154A15E4E6074ED6465D087B807FA68778A01FDC9710 FBCDD130BFE35D957015270BF5F2E0019F09E3A6D5C871000944BDF4679DA389 4ABE6E3709D658FBE15BFBB9A1CCF712CBE50D3911D6EAE71A3DE8790E344F4B 45AF2CC5A0A7CC4679B0927A80CFCC96220E6C2B4EDD6D02B0E59E4BD6F68901 B13CD929EDA6ED172D2CB3B553884278B91953786507D591BA5E7D36F44E6AF0 7A38CA0337743FA5C24D25833C58060C8B1DAC24614B5C4725D115115CCD801E EE1A9E5802ACCBFCEEB670915D03552B4BD3A590226DC4F121091CB7B91E1055 EC10E892F8DDA7C94D4B598D10695D89EDA380D4C2F64193DBBC84AA21FC9F91 1B00906983E8230FD5221990B48CF53EE8E47552A0125B807EFDFDC0028CB247 86A4064096BB30FEB5B53144E5A52C7F9AE9AEECE453C4CF1901438743FCE980 AE94F6507D0020EB8B927DD101F95923183AD289FB5B293B8E030620F60A488F 0069161C7AF5CC8F828F8687B1F21CB2124B3DB0FE409DE9453A49CDEEE5DC32 A617BD85D2546415FF2750A9E12318B2429D8E31EC852E551A934556686964E7 7A5E96104E12237546FD32F31024351BB2DDC96F978A7B37745B20331B89219A EEDF9E90C7D440933BDA155BB92675E57CEAE1DEBC5AC93A0D2E89EB61D0FCD9 5B0F5E1256320BCE180D64C5C0463A1D7632A4687AB7BF7D04C9B20262C11A71 54E222FC34B1927B91C7877BEDB7FA306723168F1B67FE3378933ED4C92538E9 74C990C62FEB5BC1B15E70778E714B946B56DEE991F5F918C8C663EEA57EFD8B 9986B348A666577FA1D223ADC996D69CC5D3D6A0AF9E41D3CA45C985F9B71C41 5EE86A408308750995A6CDCDE51060BBBC869F857DEF6CBAD59753F568C33D29 C47BC1741B0ED4D92822BCF364B34E2F5F61B5F692DBCED0ECCF00218F5F0B82 2107C80A8A4B8D40ADA170AA7D53B503BB3AC456540A3FD60EB2734398FBB65B D92ADC99065CB71805A5A784A4E6A676A916802B3535590B1134F39906352695 79FB17ED6E6CC5C8EAC4C47707827B2D6CB7865B959713ADFC705C4E5756447F 1F5CDDF288ACB13708D5EB365EDBD5EBA58C23731D024A07BBDBA0A80AEB632B C12CDB4CF1F739D2CE6CF88896B55A4A6488C95F07C28B259C6E7EA8749B5D2E 94B3759D2B57BB077C82829329698511AE1327A0B87DBF422EC7A96A5A7E66BF 17C39186C3113DA22C81B7C176199012AF49D5BC22CD0C9C3502250386F3BA62 F6563E1ADD4495D0837D08DA26B99983B3729D6EC9D004BBEAC3118CB7C277CC AD77377464ADFB9B365763DC7829DAFCB5A3823B791AEDCB04001224989054A1 7A0C29D9D0CDE164F5C4A6F549BE521298DEE87803D4D276206E5D8B3A835B05 8FA4D0D1B35F941281C5C7756D5B56ED9AD203D29D5DE59B9E398DE2D3620E9D E0D346DFF5F36225BC341FBC220680F46F6C2AD2300B660F81E4287964A04BE9 4AEE616C785EDE82F26260CD49B8352D96B0B4360CA48863E7A7D6A192E97497 FE7EF71ADB0DC27D20FF89A5E16E52AADDE2FE10E18C9F8703A4011BF02B4F1F D0983BC55C73EEE03C1C1C82025001106828EF551D7473D6BA0A5100B9A5437F 0D6FA2E764F524E76306903E884EC1969167F8A6297CFE1083D8B81397C57D5B 7DA2D398353BE1C96A190FCBC5042A954DC7B052EB6C57029681C49768525E86 E000EAEC6AD9B575145C7B285FC225FE441B13A68C913913CB7870F4BAD5BF60 A2E0C829BE4D8CD4A273F82288AE34123933B41578BC5389A8F8DFF018A78F43 1057C1C85374E1BA3A0A054CAD10FD98C1C68BEBD4129E73A5121A8CD78A35C1 E226DDED4F3351B20A31D7383348C2DBB94FC5AD9EA9F69294E643F0A0F3AB32 A7422D4E5EB900D8A49C6506403BF2B48A289E49EFA860CB793C6AB9AC3308D1 6991569073AFE581F28FCFF65386D1926D95895958D92A082D2470A6090BC0E3 F735F5F62AF193BCEA0EE2C67D905313B2CF667665F289371DFA3F717A5771D9 89FCF4640613B40E29008EB6B5997B039348FC983FA832E0D005591E59B2AF3C 89CE7A23108BE5B419462A687920965FAE23D8AA3E84533A30D22C4BDB7E4A74 CAEEC2840C7AE8E23F6A57B4537A6D284F05C6B2C11A3FC0C69287FBB0D49C92 513EFE51C6030A0FAE18C0334C317EBC5E30A83FF89B8E0DC41F5000E361F287 833F1F1494C34709E6E8AC03584E9D7282FA375CC6F4ADE1FF8818CDC62B9C15 99F44E5A5FD6B234F3CD0881436E13D236A9B6513C08DB17254AF4E445F5FC9E B4FD77B8D7ABAA291D096537E8CA51A4EE122A8F184626E051434937FEEA686D F9ECFF9D9A3F9D2747BF166532E50099A3A8A235E795A2BDFC6B8610935CD958 9A728C3B02B8FC52DAB63B1271715AE296B658AC5580BDB8738ACE54E50DC2DF 4F256B2632081EED3D40F34C98EF39C50958316EEBE9B99B38108975D0ADDC9A 60C8BD4CC67BAE9EF282F8235ABC6F67456CB0397705BEBA858E0244B05DE8B3 D580ED2A2F1556EDC31BC65C81CB19AE4101827C86881D814ACB1E6520719106 9064056D6BA01F3A1D1F8052A558111D0B8DE3B50ABE1BB02946E53935183DE5 6FD2FFD763599B656AF986594420274C62403AD0934622F9AA95F9D7AA59DD72 4D7A6DD6D5FC13D6FFE6F679324D37697F1C7691585DAFD9C06203E07F89323C 8753E809D5547F20343E11AAD51C994CA4CBA4C75511C181B30D4B89C81CFEAA 94850C5F4584741FCCD2F0FCB91717E23441C4B52F32FBEB8796F1C528B3D5A8 E78236CE31707365B5AEC48BC5AC60FADF972B1DC32C1BCD725646EA5D9C6A07 FF7951BE56826071BDC28AD57576FD802650C0E2EFF01DB1A5FCBD95A521EA0B BD738F9330209E84CBC4FC42FEEB3CE2F1B486851490EEA6F1285E3566B317E3 9FA0063FBCF65B16786F804A8BB438495813BFA484497B4A0370A09093D37F97 238CB06C9F26822441025ECB833D676A125CDCAAA72228B3E5E0EA2215FA8E83 E634262478020580F5B0C52727C0B5D7BB227B1E554DAE9E4469914F9ED0BB00 B66FBE55BB65A6930CAAB98CDAEF801DC046C258FEB855F50F2E431DED89D823 1A0888F5A6E6882A59B59F7FD1BBDFD0F7109FB00C48036B48322E44C5254665 61BD4A8D5F82E5DD17C0418A60AA6851D48F259963EE8ACE90A325965925D0C8 38892F0A9B0F155E392C6BCD1875B97879279AF080A66B4208906FE480713F6C 312638829D12530458DC5DC7DEBFB6A49D1B61E93C3693767222A3B716E15F23 7E2AD7B452AD4F92A51DEB75C8ABDBC92CC4D699311E3B821F3D6F510A7C6BFB 195E77887394501D38FF8F7539D5117D3FF4C69D5F18E970B103DE8403025C1E 73A71A971B19C08FA987ADBC26FC306A98639EC0C88AED00615EE41D81213BB9 028EC5CFBF8EF9376CEAF9B7EB3C54112E1052698ED6BE5783CB655E5106BF0D 726EB154215B2C4923078CCA1BAFF2B57192E8C669D3D72B8526151CD171226A 6136C5DAF1AED86E6AF7EB0F59816B97E4E217F2084E1581CB8032774F6AB2FD 42BBAE485C78F16BF461FBAA007E015E199F265601039A28C4845C81B2F59B1F 317B89D24392493BA59DB42526EC901709DFF9281AA27D3F7A60FE591BB2C845 F12B654EC28842D046BE828BE5E90F1491CF3B857DAE826F8CDA35BE15480F5E 609B4137F921F3FAD7F6A90B5049E615803390DD4A4D03C97B1F83D17E4027BF AABA7FFC3AB5EAE1C119C7DFD6D8AA5FDEF4804993C34B39DBCE9DEA2133BC50 6790BA3B0536323393DC9B151586987BAF7097A46607335CD011E82493ECC5F3 EDD955D78874559B1F4512E54B8EBA809C20DC7BC689A6D8131BDA04657292FE E1715E71594865ECE26BBD99C6FB4BA81AF772654212536F8AC78949CAD2B459 B19ED9D2D83930CBFF4E2DCBA347ACF63E72A7804A51AE6003F94F03E368A3D2 A7B43C153EF61F4CFC1EF078CFE1781AE44D13CEFE9965035EFDCCF6123C19DC 3254B5AE37032004174D5BEECA236D1CE0D06E0C397B7E3DE9F84A41B7BBFF60 58C65D8500A0B7DC680E1666624ED76BBB6D8C9BD9CFC014758D1F11E436BA51 522E5A15723C97CB5EF512398D1F8723D15A07DE64778136C307420CD5DE3CE9 29F4BE2825D799100D1CF79C60DAD14ECAF288EE11534FD9E60498CCE2A29AF6 047429385E4707037340C29533731B61E25B85755E382063E214320D91F81330 E92DB1CADE4CC86B9D329A6D01731E9E80D4197D345E640B0CFD7E1397E2172C 2FF68084D64946549ACFD84C277739BB3220B6E1F30612C8F46FC74EB31F0DCF DF353E4A040D6FD165048C0ED1BBDADCEBA38C407C750E6A9A8F8CB7E7A282F7 9C28160F3CB0BD5366A729D81B995943A14A9A51C12D79869FA202B9B6456C28 A2EC2999CAC16774470BE2B32EC611965E5F8D905AC0411FF3B225E4834CDB47 5FB7B1E74E5E6C3E02826AA2402E49754C31C5DAF1AED873E9F4170777B8E376 ADB6A2D0277F26DD7047E0FB2A51316428893D1CC5C9613A1C93BA2BA3982B21 74AC0F8F4F8F1ED8700D6132C1E67163A2321021CAA913617B0CB7D8DEEBBD25 B6E9893C2913687B7AE23FA0A9D59322CD6F78D205DB09BBCB6A30E61494FE49 D231BD9F9D6EE2A2A4FB8FF6967EFBD319D3CFCDD53C9DB3AD99B3B530827752 34E4948BAD42BCCBBDFFF0326A6BC4D3473BEF8FA7F643C74F856E394F7F7810 D6DCC2D186FD950950554B9BCF328EC997F321C834352191D210087C12C981FD 45 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMBX10 %!PS-AdobeFont-1.1: CMBX10 1.00B %%CreationDate: 1992 Feb 19 19:54:06 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.00B) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMBX10) readonly def /FamilyName (Computer Modern) readonly def /Weight (Bold) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMBX10 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] 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 /FontBBox{-301 -250 1164 946}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82 7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378 77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18 2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91 FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68 7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4 9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176 CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D 6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6 E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E 8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E 3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99 EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4 0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9 4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF 1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910 757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E 0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665 6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B 61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7 92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F 43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453 FCD9A4F194FA648F9FC0971734BB69CB73439CB0DD021D44A7C11BF295E81733 4DFBA460FF3D654F9FB337E99E6D66FBA87A817EB9CA1536C84833870E3626DA 55D48DE850D3E6F6B29DA0E7C9D681283586F208DB8D58042E3A7CE55BE84822 C98237911453E479EAB65AFEBA3F61A763B40E74535BE56C9D8D06DDF9441741 5C9D9D917439368736619717FAB4F06E2C329AE0BA411F3FD522D9C33AD8369B D7DCC9DF993778482F35F965973DE876FA19E109AA198A00658AB3F0D8E3DDD1 08A573F2D525202AFC57E05D141E6C0BB811E1FE280EEA002B7A45BB363AD06C 318D320D2C81AA5DCC842CEF66E7DF7670588CB39C9F42EE7763A3A17372432A 173BDEF7ECCEA297CCDD76A835C36DCE9DB8F8CB66CC71B4920CF5BF055A5260 5B41A5373BA6E4F63C85671D979EA5EC30D22163E6D206168A3827F465279870 CA80E6632872F721BBCC622EE4214BF723551C846765495FA9921E11FE1A950A 53150C3F5D8595958A47E0B16064CC3AFD65DA294FFD111153F4F233BC5468AE 69585C16CFBFCA32C4B96C161F47B56661DF84FCD8ADD3EC0E12B5AF108B0A14 AC3F8338E1910099477D1F7AABE1226065176FAC05C0C1DB0211AAE7FCAABCA0 258EAF4CF3D865D3E6DCBA5BBF1E7E6757DA1FB964E824C6F7D06CF280690A93 80EE0E7B3C86169FB6FEBF4B3D65501EBBAAF733DF941BF1D418FC7150B35201 4502AB972EF1E5CC067CFB4B7E40A51E2EA2EF6FC8220F4A3B1BF89585DAB88E 81AE9FDC0124E0CF740BE6B7714D7CAFB51B531858A991B9777A3D2F7EB3194F 7FD8D50F0106074F69AE7C3069F61E91D8505A1121B8FB08708B0E83A1F03165 C949FF1D3EB5908E4FCAF8B6DAD7F9BABA3201D6F243E494EFDEEFDB354F03B2 BAF94557A7CF60605024A1CC4D9150743D2F5C7E65032A2BBF5731AC4034A3B9 A916F2B640733BB66AB78226DEC49CDC4B42131A73834947DFC6789468C8A750 BD510488C8D611168403F6591ADE2256D5C89E7CFD2F47D008EEC22B3ECB8089 374768B8F97D334D168AEFBBC8914D0B4827F13B3FACBCF33F07427D7715F344 646EF39AB455A1DD85593DAA76BAFD2FF7CFB5C357A6221F458A151C3409C9E1 4ED5A1031F84BD428DC3C91D5F05761322D36B42609C374EDCA9EC9542F070C5 4C4B7EED32171EDEE9FFCDA33189DB732B835F4386406B96E86705E3E88BEB8F 48A777D89A206F2E93B97DF96D28121555723CAB91516986665A7B94C2F3CBB8 FBFB783B7A1BBA46BA450936338D70E17E7636178E4504157DF0D91F0CBC66D7 6144CEE28A7C8F48639FC3A0B47A49FCA43D61A73E17A520423D8D91C570833B CE91CCC9674EF3DB1E1928C5E56FF09DB47C9634D586533528051AD4903EE131 62EFE619360D038C51A830C851AE7FF1BC1655587C64E89BB59C4ADF06856D59 505BAEAD7141BF4D244EA9B73BD3C0A201CAA0F94A033F6AF89F17A00CB10996 92744553005B6F79C00F13DA2392757E0E5A724759B69CBFDE1E5F27E3493480 8045880EFB36842440B32DC9C015D6D700CA3DB460FB923945D087B73421E24F 01B14020A25696B95716724226366E05B8CA415F312D655AAFAED12876A3A288 83858CB41F4A58FFCFDA14892C0EAAFB7AE15109D7D811FFC59B811E3ED80607 4EECFA723007BF259095902504C3492C329B6DDE51EE82AEC7AA148A8E5E1B55 596CFF167BFB3246760273F1D77436BAF2368B23D507C3E3EFDD6ECD6ACED723 CA21226CA02EA0034B1042F167CFF3DDD00F84B5AD0BE0FC883C7A90DAC5F0A6 7915CB107A6961D3297891B3B681732D1BC15F22199D1166C605F90F4CA02E15 2BA2F1B3A885FF83685C530C8E3A501678DF4B9C33CBD0B0178486927CD754CD DCA40BAA159E87A27C4D8315B2C867971BE18D60D2748B3EDD47E30A094CED67 3B1BE4901F27F52BFE60F1659054733C32FC39B55069AAB2DB7A202E9F5397C1 374F9DC3D9B58B30F6D926E5BAC0BD7B6AE035196D5CE64D78233F680FE3999F 345F629B90B16F136B833EA874A9D7571FC1342C39270A8F6A7ABC2D1A85EE9C F4507471C95360CE446DDFE3E78F38645EC731F3FE4442B839D07909C00FA8F2 2961A4383CD6F28066F2E9EDEA93017F83D159748C8FB3CB3D3C60ABBFCC5716 F700401739811AA0AEA6E99F3B3053C7136FCA968F5826B738D047AF73B015CD EE5F67C91B789BB4FB41BE071E48CE7DCB8C2298F9E451EAAA724FFFE506B97F 160878DBF1CDA2598B436C6E213A3D0D1181A9A88EDD98DBE2CAD24F78911928 F818E793BA02266109E77117C298B578898062F8DA04E81FB46410914FA90C67 4B8EF36B6719C92095ED4AC0C4FF9BA322E0F3292A2754C6D20DDFD3D988E1F8 F8905C78DD88818B50BCF685F76D20BC123AE46E9A1CC63252F627CFC097FF5C C9FECCBE231148F2DE34C57067A43C8BC77D06583806D314BC299F1548335AAB 019CBFBB9C90AA72EFDA852E5FF88FA756D3B110CB58C4D2B38D020150D0C9ED 2D12BD1208FA06725FC222C74776F8DD01493FB7CD56DB5785A3BCB05FB51C6C DD3DF621E61A19EBABB38AA83B0EBDA7199EA34CFF3094555DED0E135A64B83A 1697123EAD6C6F248F020FEE39D530085D6F66CA0942A1223010CB3C7A3171A1 6FF89828FECC5E35E005C92F509EC5707B6F137403561A0A8240F551C6104B13 5D03D96EB0E76683D3382FB5F3EC85EEEAB8977FF4FC6C3D2506525629C16B11 CCD6810D66F1D5FC26FDED8E0C034045B9CF05DB483EAB596888BC7413AB2AD9 5EBFB40B064C97B8CA5C00FF3600D1105C062697E9118369F633CD5477A0AA68 C8DE35D02C7A2853891FBB7416881225C9AB5435E91105296E2443F95F65CD16 DD258799BF23AC3646E85253B45C492C8785E3B757AC8245BAFFF35D33014A07 F61D449386012F788FF40F9B7CCB9E248BA4169F6CA052F11A32BE21F12B0D67 6E5C628F3275A5F5281B32B2230FB6A9F44286FAF489CD21A7AA14D4ED9699FB 287BA25822A0F9E20B7E74B53FF6935F57808EBCCF7EF97EADD8C8BF96B62A3A F024BE50F94A6571318700A1F6E364C7EAA28CF574DC8AFC4DC96157245A10FF 506D7BDC8B2F635F2C0E15E502DCC1D33C0D4918E95DDD05B7BA610D9BAE4029 8E79C541DF2C5F793D86746A24B3783A9A82D99C5195A47D49C7DFF772E0EEC4 6B6D4EEBB60E4482D74215B106BF76162C24449A4521B1BDFB233CD7CFE3B9DA BC50CF0D58E8CB387E2135DFEEFD0A5A2C1C6255BC14675957A24F965E0600EF 98AAF15BDD37BB44BE237ABE5F33A17D808CBC285B6BA576A2DAC71F6FEC255F A69C0A4909447E5D1A494A6DA527E60306E9969FFBC2A8EE1E336E6497B19284 66018BC2A53B4E6481AF12E4E137917066BD4FE45EC5AEDB37AC01ABE242B282 EA1591D3C76804173D9C46C142080F060F93A2363D72FEDC2E6265AF9D74F5CB 2CBDBB508BF83EBA6F629EF319E600BF6D58A95AC60904861C52BA41F45CCA98 BFEE8FC7DBEAA899F47F49934908BF6D29F2686AB3B93031D7593727E5534867 2D7E022EDC8ECB83593A64A6F8EE6646F8A9BAD12B35872E8B9D3B0B043700AA CA077D8D1985509C8328BBA940FDAEDDC2BBEF47DA62C1BFCDCBE51785C04A1F CABEBB87F069083C915FF65A13A83D2DEF0F093F47B4FDA6EC0DB9EE4416F148 7BA87417355406230598B0B8FD191E22FC3B0339A7E92729521581F120EAE210 DE13B6943E0E19D32462C7B31A579869EB25B0D887AE1A8DF3FCDC52F836FCCB 71A82940867F3DE634240C91FB4B33331C0AAD79C5BEA947950D12DDA1466734 0AFFBFFF2870D5A27236379DA028909500943006336813B641D300E24AC4A86C DB8035570E17AE4AEDCECF79E4A27A02C0706B611AF82176BB9F95EFEFB8A22F 646FB009B89CC7748806EE1C5D107ECFB0C33076E9F49B21258FB309218D2AE9 00E501CDE1B8B0FA61817108F4B391DEF6CF62DD838B6CC87E1363DDCC381C69 E9C2025F6B766E0D89CE270F752FC0473A58F9699CD8BD0F980EB8BE243A2232 90E58EDF14E1B64325663E9F7F17C7CC416C0E480471967E47743E286D3D609D 9511017989199CF1FB2C29ACAA94598CDCC2828A3A46CD3FEEA29CA5741B2C5D 0365E46106264DC3C9F397BFF8A57F74ACD94E26E3949B8A1306D379323AD8FB 6BD9E97F98529269E937E201CE4974A42EBB6755B9D107306A6DB1A28466B526 825DA3C0BBB6B7292821DC3D39CDDE071514C1086F525596A94097F42E976C54 428C4EA75676DA38F1599060B6D544C428773D74F736BBFDF4D29DAD7A794137 186BD660EA06FBE1A1574EB7E07ECBC1E184D93AD0F5CC36F8B2AA8084731CF7 BA3CB7AAD5B1ACA1E291B873F50EF849A00478BC6AF966C3EE1ABA7A26FE0BE4 D95578C65710545FA241AA4193F51B93F17DAD7BB09F2EB0C5F8F50F6243C3F8 A61F57DCBB5EC2C080A1A2A48E7DBAF87F940B2E38958EA7BDD92BF448485AFE 6505011BD2EE4DA2BB2A500C259D1A6EADB427FC4676DBA795FB83FE24394DB2 143A1FC9A5901AE3EEED5E0946DC6689F5908BAAF2CD27EF6214D0B87BF3D5F4 0FD8C19996DFDC53959CBB1C2A101652DBA289DEC349C1AB3A5AE37BDD2FE221 384944C0901B7587CFFA14C35A95B65DF8ED4CB8843AD5587F890FC559047058 B6B19ED9E9CAAC6C0D13EE0EAAF2E3DB4F7FE8A328D6D521405838423D2A04DA 565497FAC8E5D8515037F992A8CB88E2A9204531151202B36B057C8B493FD5E8 7C91705F137161632E09D38A5738C158B50387CB9B863002AB26F074607E939C FE900040F5D319876F16B7E13168D0D446FA48D4674E3CA52A3F1DF906925F11 8C3FE0D9F6630025917D3BD16C03FA9160F0A87DC7488AAA9DB65B36C699DA6A E79180B6A0768170C1D64D3C8AC6D2DB37D33DAB7DA754EFCA2CBF21421CFDEF EC7DE9037036051EF6D4C3F90E9260FC31B0057F51FE9254CA6072957F4DB8B6 2B9E483252BD189E7150D53E83B7A78809231305E64BF19CAA8EA10B50044F48 2A4DFA8CBD680027F2D11294E8525E163A8B7AC2DDAD32A136B1486C766D7701 8279B5F31708A55B1F14FAA558C67BE6413E709DB4EEF2C61F807AC4B1E21B7B 032FFE684E7A72F69A69FCAAFDB36AA58B6006E7A56157AE6B789045F0F73CD4 0F763D505718A7CC889C8AF7AE06D059D69360463501F4E5B91BB7DBBA06A3E4 02A92522CAD9BFB1C5CA7F7FC6B3CCE2C410927D8051F12874195B1B326A99E9 78C6D175662B31467733558D240E1743D5BA18189859873CE1B6322C41280FEE 24429165337B54F89F1229D55D3066AE4BBBB2CAFF3ECEF35BE0E5A5BBC04933 FC8C84AFF8D872E6C0E9B2FE796236B7FB900AA2C2B2BD5B9C266D43B95E9BBE E1A5D3FC1FE769DF0B9BB5A940F22175609681062B72D7FA8E56EB80FFFE0F29 398E47272B30F760738D23CF748B81DA16FABAEE7B9E03214D996373FEE88E1F A9E03A507B312A3C6F9DC201765AE37435BFECEB0ADBC849129BE1C85CBF07D8 F45F5493326DEE112E5F950826D9A7F62C42F04E64B92C274271CF8CAC8E9057 1DDDE9E675EF9D1ADAB47F3C7B52630D791FE11FB1AD16F5DBD936EB3B1577E2 AC4767F7CD4854ECE9DF1FC7F74D01323DD665B71A93D4418BAF3BF720F7F49F E20E1671556E3CA2F6E68610BF2DA1F90081CFFB246D0B6D846BF82EF0141171 CBD403D2B90C3939A124B56DE41E4F27925B025E98507A823A7F0787C0F19193 9EE0D12C2973450B4B8F51B90485FA0DADECFF502DE5DFB612DC376438E65BD8 503D3BCE6552ACCF8299470F7E8B4BF6CA11733BC802C9429F14AA2ABCF1B5D4 223330BA7A703AD46FFC91308C5F1A47E2306B69DA2F4A25DEDD3912FCE1B08E F5ADAFC424328BDD7A55000C790D3A20D3C5D89C0F3380B3E19E514F0117C6E6 0A897A1149DC53810BB0848D8AA8DBEBCCC1BA5C000594F99EEFDC3888C9A152 6F84EA41C2D2C934542AE6493913340910D4D75FB47BA510F1F1FA856CD3BECB 37209735C0CE8664BDA1E2808D15710374A8CBB526046D49E5301F604B31D9AC F6B375448AE40E4B27FBD8EC75DE9F659BEA36D714FB70D120A792D73DE22D50 95F407D042E840BC91F70D71F50E863154C85CD51AF8B489A114F7B43FF6EC40 1CF7978A7D81E764C282D557C1130C4182C7325E86400D45AB3C94F70F1D5D98 5D0E6A28C0F693D5684A3E3F0E4B569C475DE8361C1A4A4552D792D9AB90D7A5 C0E20E119A19031ECFD026BA7C16E76828106D56294C273260EC275562785EA1 ADE0A81C9BA17E93024717FC9F4827258691EB87B6FE3CD8BACB606CDC2100C9 947D5DEE7D0805A448A66340D67867B22A0B6AAB20BEC2FCF21BFB96D7CE1BF6 2ECC3400D1B382E3C8D1C5152155738CCED0EBE303921EBBFD8F80DBA7DAFC0B FFB47AEA310AA6E78F347410B890BB97128C5F59F2A171FA8A67343D15416082 3ACDCEC3525168D2D7A7ADA9FA64D1A474FD8904BB6550DFF25205DC9F6D94E1 8A202E239D72C00990EB46B12404F6F6271C35E2E15A70AA35C7379505F5EE89 9E4A51F8F923E0D6A27641230AE12A36F26B8D3262CF4A9837F242268216A8D0 D31C88BCAFF3CC9E159A4785051815299023CBA09BB547255A5D277B212B9313 78CD0190A42E03F04A96CE282056D8034A8F219F5544A65888C99B126B85726D 6158CCA2E8E1D1008F8276028295B2333854969BB5B1B9E72DC4EFBAE6C1EC40 034794A3B4E2A75DCB467B47C64145166F1ADB0A5B103C590875EABE6DF2D635 8290EC27E805031C6C44E7885573E436C5E078D1F3A8C99C1BD2E228E389C5F4 B370C48697E13D1BD960CCAE6025A265F905EF57422B3171CDFC0BFF0B1F49A2 2307C908D4D3005B7BB3947C27F78B66D9745B0EDFFB656C65510A1603052EDC 37D013076B739B01574EECC37031D8FBFF3388E174935D8F15284E46D45A2144 F3F83463A16CECE40FDFEE2ADAE95E1441095A28BA0FC858E5EA9766BB13568E C7D4C86F3B6309F074EC65E95DAB73F104E429BB8EF50DEF8F2F6E55ECD713AD 2CE8107786091BE8F744F1D2879AE31D1A464E4DEF1245960D197B6822E0F4A5 AC6864CDAABFEBD201556FD8FC5357BF6442A04C7F8BD07316058BDF1CAD7640 9995993D59AB92B6BEDA7A00E6A47A29DDDD9B0B199402A8437EF730730B59BD 238D242260012261EF332232B9BAA4E4C814CA3B76CE944D6182A11B2809010A 8DC04E63E903E875E6655E6C2B7ED709549127D53EB20B3E911BDDD4B923E594 40269E1DD018847F9C3B0D9C765A05903B57041F0AA9951DE7B482D4206ABE0B 9DF41ABE894AF1EC611794F66E7FDE526ACE0C545DD6D866F1EBACC476C82A32 D291C099B6E33E1FF4C071A563BAB91EC8DB5EE230F7192B78CF5337B3BEC6CF 19D3C85444F163AD39C82415756749E663A4C448FE4ED9FA03668564FB86775B 38C4FF3DF3CD65C9AE72C412A859C64AC2DDD283A8724A5294FAD2E41E2AE7D4 189D292F91FF25446AAAF318F5F6BFC28845FC90C6CB7AD8537F1D353E89E245 B3EC776EBB5EC2C3573FA30E0D31E5DB3C6761897E92F4DF1E8C075C0139BFB1 94922D4695A46DA45B2CBD0FBACF6D20FE30F43635438FF72148280AFD41CCBD 52224F0071E086263DACFE53427203522C5B85C40F6832822E5C879B8AD8ED3A 81195F25CC7302EE69565C7B4035F459432EAA42F65730826C740903EE16E0DC 0A494AEC9361FFAD97C0D765D2C1C626F3C1BC8D23D7FF0E1660152507533BA4 15D82A6E9F2045CD6ABF4CF805960EB4F411585259B5CBAE064075AF2951675B 069F84BB4F42A9638CF8B7433CA9337405D7AD6C32C4D1185730CA3EA95DB3F2 3F3C371D2B1C7D121A2358BD0B03FF5E95AAE28DBAD039A4F579BC5E13B97F6A B6AA765F21A1C34C74685851D3680A806CCA9B7D298E732648E18193FD8F928E 0090BA7BFDA55B3C8B05F0999CBC41F1BD17240EDA3B42D84AAED47319EAE6D1 84E188F69727FDECCBC1D71071819FB8EB6137702FC6CD1971FF4600C70A4AEE 3C2FA27AA13A541F80623C0C8987D9872BAEBDAABD49BA0C5961DFE40EF5C816 7EB0833CE4A91AA5583CC1F6E660C2B98A1E87BA62052F2FAD463536330A5BC6 1844358563D3BE6ADA24D1A9A4D5535EB759808166019C0918A3A99AD045B128 614A8996A34E5D34C08654B21BD2B295F8E1ABDEADD6EE8E0DB7DA9F351A834D A321E8DAD3EDEB7D1A30FD5C0044D304553D3D0AA39C9D40E4F68D3BEE6DD217 7D11226EB40EC79C4A292B1FEAE47F3BD571FCC13482C0289D887F8B80C791A5 172185EB7970B5ED76685D2F19E2E7588DF093E0C34DC709F8F5E79DE5DA8903 6B2466A5352FBEE362D3F3A53A11F2987DFA2BE77E7FD8422609DFFEC50AFE49 068090281ECE160169FFE21C7EC82927B0C189B75E56E9F92A7FAD8585176313 0130C310D14D560553B1688DE3EB5398F7C950432F0F88DB36FBA18C56B8AF5E 0CECF2CB07888F32AF81B522FADF492F39A3A17DC6C8061B079B8842F237CAC5 7088E9E790B3D9B77FD1A07506A7D0712474581159494EEC9D2E7428587E26E2 716D22CE1AB8B884ED765D1AF7F60855115AD921D47E17AEC1EEC751EBB5FE97 DBEBF85171960F1E488854C2085281FC5270911417CB9EF89448D5AA613ED806 012E30B12C12BE6A5E8B1E394353EFC425822B1BDDF8B4285DBBEF37657CB56F 41126A325BBDF38D4710EB9269DFADA7F93D3EAB10097C85403E30A3E0B0D5D7 8631229CB438AF75939FB79C3990E11A2DE595E3BE3404C4FC6265BDCF7E6679 E66DFC3CE8BEA80351875C129F744E4B6D581EB35E1439CD8B5F0071EFBFAE4D 754130E68A21A48D8104724D6E107A4FCC35CA7E071B188D03FA48F14A96FACD F069D5BD56F1B23BAD03C8396660FB8BC2E761D717B67757B9F5C60F19E735B8 45B6EE625DEF906347F33DAEAC8F8F9527DD99C0D0DF3797D66D77FADF970E29 94AA7E69F5CEC2C9BC8E934B28FC41AACD03BEB6B2523A270690937F16191B87 8C494AC81DE5043CB8107667CAF71C7521939C7F8624DEE8472BCDDCF2ADBCA2 B83CAFEAFB0C63982F9FF4833AF0D126783C175E0E8AC3F02B80CD85F55A316C 6FA0F5C0A5BF10752CEEA0E7B6D198CF7E9FED1A5E7F976A52A47FED9512E309 47DB24B061068C3E8B5A56C9DFAD647BF4CCCB2A79DB42E0EBBDB110CA9E757B 4CD2CFC8C6D4E822A0AA742071C18CC7E6170D227041126F06D3D742E77173D2 24726BE0F07BA7C1B531D7C748E4C21F4797721CDBFED894248A962F3AF0C30A E4A4D27456993BEF6DEEDF47D55E4E41598E5981B46F501F6A8F6139BCC04EA3 2163F547280E766015D12D6614FA73E65F8A558EACBE58DD06BFDEDD3DBC5BE0 27E3FAB251206369B25458DAF3EC3F761543C684DA66DB49CF8941A6E434139A 3C297E2C52A56FB9BA096DA086EEC2B09129E83E7872AA041A239E2E7C0DF579 BD468930CB63B4B21255199F3B71F949F6D8509FB0F9C902E5BE0014D48DEB72 220BA736AD3D20DDF1C0D6102F8954F06F933B008DF468F8A81ABD7095482D2B E7514217BF75A73287F5C83FC608D87AFE770B18F687A417BD2D3764F9FD5F95 5E25C8C8B236CFD159E533D7F1A35D368EA3B74B2EAD5E3108504EA9353D5304 E5CCB2CC0E38246E401F3CCFC4E8331EB3E7339EBC56E06E476677A30D4FD27C DFBF89BF334904D06E239314E5F89296E9EAA8F989CF1B117A94E0EF92FA4C96 2FA75B3C20B737771AD15361CA6CB1CFAAD12021932ECE3E8606DD35C438ADB5 65EFB9EEAB1893E8BDC3F793387C9219A654B893EADD6AC7454C42B0F9E4A0A6 FF16B926DB665DEAFC1D88504443023503FF6175C3AE30CD7B60A3FE6CCC01AF 0E2D383C15A38A9856FAEC7B4C5030411E0345DFE886D4E438473995E4705055 4375BB6063C177157471F6147A2CE62DEC1D5DBA40D55CFFA4106A0B2FFA1BC7 4F7DDAE9D9513F8CE8C0A51004B6CD2B7C681F089A105FDDA57FB46E30865D53 4A087E8BF461F8FF9EC4DCF3B4E864EE84B1FDDB3A1CFC61C4E67038EB4D59A4 FD9BFA4CAB26BDCCEBB7CBD937085477FFD324487DF21ABA202773F95764DA6C 612FEE023B371A839002A79B6128B53BB4515BA6D8D9216D4D5D465E06C66B57 B70DC7D708E5CFE49FFEE46FA3259C13652205774466700E1D2F955FF28E58EA B886CEBE579D923489823768C69EB6C6ECEF879B23C29DA5595D7BFB8B2A6D0C ADCA1093E030237A9611862798CE2AF210AA6684FCD763C794AD3DE2E3C138A5 D7AB1B393F114B6E26C6D0B62A6C626706E8E67DCEF15CE539315A6EC5F3CCD3 AAE8C34EA67421B6E5C511594D18F9C841F7DDBA8B7DBE166CA2450A18E35FD5 A8950C6338E3EE87DF7DBF811DCE316ACF80598B74B44B4BF5AEA7054CF1D6B9 0B4A24D3EAFA8013863C0345F2382F3099580B7F3A1E383F536D7056B832BE1A 3B06A688CD5D6BC60F87EF1DC240AFDF1610419CDB30820A3E34C4DED94CFB5A 81C58E3C57D0002E2C0DBC1B87CE51FE05191AC5FCCC8D18BC84A1D04FBA48AD F810EBF1AFB146731747452B78560242C0EA6620B8E2436FD8D842ABB3043726 1ACE7FE479C0D16A2B39B99CA673FA3ED35630531F5C74CC1B4850F285338086 6166E289565B06F92EBFF17317AFAF670866A198F33BD569216A482704AB7015 A6A2CFF01781941F1CE4F9F41648917CBBE080FB4ECCD48C1584CE9EEB3ED819 D49B130E3B82918CA507C5CDCC1AB23785B39D478750FAB32E5AF280C55529DA ABDB00056A3F2C4F5F5326AC1241698DC8A8BE3042D87D8E0ADF797B68F970FC 02C893C89EC3A003BCC40A17A78F8B1F400DE107E366354547CB849BAB1A719C B3A8651BA4069FD7AF99A9E59FC15873D7CA332324D1E00E7C4438E4BA68C430 B3E87E05E7420B19D52B7DF43424D127D7EC48131A2870505C7C66AB6C4827CA D061C8AD5E639885005CF6A008A416F9ED1A6E9BCD984DE395F57D0D0AABB178 C9FC356A798839E2FAA3DAC23B84DDD310FC39FA2142FF83D634D8E9A80D2876 B666374F3F07BD7024F976B44ED5FAB10A711BCACF47A33F60240CFBFF9ACBEF FB6B4AD7DEE1973BB2417FD13FB481D5AFDB7A7A82A1C77CBC52EAD9FB2A7245 083D09AF6C1DAA9137DA36521B62ADF2130EFFE0E9C751F97C29979A3CFB6B23 3DE0323221266D9A29B7E793848E9234B4E757A443363679A584926D87001261 B483E7413D30592FC05BDD2FDEF01863B1E56210F33E2724B846177B3C407CD3 5B386504CF8EB0A2D0384DBF406131FD44AA5ED94D89E4850CA90B41689F89C6 C7C65C89AF2D7D5C2971F355AD93B72B0CB57A227E17FD87E17F19054BC77A97 5BB2C12EE95C22C52C4018B366329B5DF4675D1C6F6CE326619DD3EC9087ECAE 6795C843CFA7FA365C9636D7997BEBC0A9C0AD566170E35B763CF1748AABF122 DB9ABBDF12051B739B880DD6A614D013E6F6321A078BF126313BB03982DE8396 480E68DDC559F189C878B1F3F09CC90C94EC811EE752BC4323DD635BDD95AA2B F5C941BDB5ED3890F64A1108F00F065D9A87EF098449153D944C0C0B3C438435 8152F9C704D0066B87AE99C5931949A5146E62D8AC3EDB679AE3C792CBB23A8C F9734F85C165762CB4ADC959A54A9858C11300B66FB04B5C91827D33F4A04A75 E1399D2659A46E55A072B37A37133DBE04E638F6FB0D665D656863AE3B03D024 601B30AE39315409A53CB3A5E6742B115F2602F74D8A1C151E2B2E396AC26E6B A517D1AF2E5F4C59A734037BE570550EFDEE4960FD87149C653394E7A4E0CE0E 0CA948CDCA0A246F294944E21CDA40A5A6491D8B14B46924DDD41CE32489B397 6C9B6795BD652A26EFDC34CF68C7104944F46A3AB0911596384DFEA84FA6B01E 724252DFAC9877B60FC83597B1BC370C304A208E0CA517DAC4597561C1CEAB4F 10E7F1289C37839A9B95C6238CA15AC4A60203FFCD5135E11E5C3AA3C7446B7D 3D96ECDDCAB9426115780D4689E6D2E0DEE12BA8E55BA49BC7BE5039A0BCF46E 9C55CD1431A407B5EDB127C3727B52F4C4A5C7DFB1C23DEE475CB7B5897E3AA3 CA66ECBC59D94D303EC98A0D63C6EAF6F9B32763B0C4416196AAC3AC1AB5C99B 5818A7AE1E7826988E0096B200D83BD9D5EE71EBDD46FE1055A2F6E8477BF398 6850E8F46088D0BC5D58496B7A85CBBED106CED44D7DF86EE1FB36DB4D8D33B3 2E55ADF2859BC341B47AFF9C1D042D171AA75BAF6F627A0147112A7C534DF682 BD4760296DC3ED01F5045AA9AD673EF72B1037C314AADF73D43A4C14BCE3ABD9 B5B41703E8A249AF5E0D1F8ABF4C3919E9850946C07A5A15D16373B18F75E1E0 2ACD77D0E450D285182D1F91A2AE5B08EAD3CB61F567A32AA4C53DE243A6C18A 72E97950FD02886F717331F2DE32472217EFC98B4D94C43335DA36AB5341767E 1487115E1B0E2D4C40E48611C6B55CCC5A6D7EEDA593985821DF0A17E8AF8FFC EC9AB52EF12792F53E0622BFBFBA87C268A4042EE4DD07B03E1949ECB746668B 7BE27B97957791E0B88D430F3AC8A16E2F15379D74448DB2693FFEA93E1CE3F9 43FEE37BD138374AA2076C440F6FC53894814599A55F6A4129978676A7ECE678 54297AA359881BE6AF25EB770317F90BD98A7A79B51BE290983C8E133E423CD1 85797426AF3F9663BC0FB93D4F79E013D0E4A56C634199C64D5260633A256182 15C8DCB5F0018E671EA4983EE112CA99DED779E89FA8C57389B198F2FDA854E4 C5D40521BEC55AE6B364FF931B303D619A970191F83CB5B14C3832DC63F1BAA1 EB8D0BF5BA270340A1196A2AB69EA5D8F14431C2636CB043B726C35B8F69B790 027CCA573E387EAC8479728FAD61BB3C29E723DBAC5BCC243563801EEDE14410 63DFFCE2AE20E7D86EBCFBEED6CE1EE583AC0A958AF47074CE5D43B2309CAD8E ADAC8653CE3720423C9C8477F7F4CA54B5B4B397020CA87493064FCB36A5ECC4 B4875CCDBD0C7AAAD49DD9CD91BA77460485999079B01A1AF1971EA4F14F6663 3D25AF316EF3076C8D1B2E3263DCD73C22E6F0FBDF889E2BC36A115FEA417687 E9107A67B4341E0AE05084E8BFF21DC0A7F0906A9EC23ED2F6E3F6832D0E44BF 6056E48D415A6FBF0A0B9565D5C4AB578C1F922D4E52B9AF7976018672C610E5 A4C203B5D80EE1A6AFBEFEB32DED46D68E4821BFB8FBD3B5D4A461CB91BA1977 559B6976D07C0E6BF8C97971D78172A8BDA0C703A4E2823DAE8466DF49B35FD4 19EF7CBC2F4064903A9AF5B2CE677C9AA101E84BFF71610D4C2148BB9B2BEE9C 16A420607223361C5D00DD67F5DFF98BFA5FAA5CAD1A3CE55A5C2B7E7B7236D3 3143160A074BC299335BF3A612113004B384B1FB048BD5EA279A00146749062C 02F382BB3136B86351841565CBC6010B2588187011B2E1A7955F5EF2CDF7D565 D3D1915971D09DDFF4D634B49CF105D07629CCDFCF2C960CA3224D021325A972 46C6BCB2392E332E2F23968B2B526912837B81FDEBDAF8D7C8C8C9269C452389 D0795FB2DA454C0A41CA7DD3EF263E19462CAF377983213E0A3B2060E0538313 6EFECC7DA55366C171B2E4936DA0D640E8C145FDFCA67148B0F807E95E7B891B 89903EDF186B4ADCBD360EBA0B 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR12 %!PS-AdobeFont-1.1: CMR12 1.0 %%CreationDate: 1991 Aug 20 16:38:05 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR12) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR12 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] 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 /FontBBox{-34 -251 988 750}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C 68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361 3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E 59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28 51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23 DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F 45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31 821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE 96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D 9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379 26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4 140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213 1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498 1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB 377D3061A20B1EB98796B8607EECBC699445EAA866C38E03ED7D4F3EDBCA1926 2AF6A41F67AFCFBF3630C943FA111E4CCD988A7363F7C2B75EAF5830B049460E 0D2B337988F150B9182E989E7750C51BA83DF37685483F86D1F47478883F3F6A 4B7F768DA5AA89E8F163029ADD4A9209DE8A4F285766C06EA859639B92CCCDCA F59B1C2BB8D588CA754D1257BFF76B53984DF4937093AAEF79009D32A29A4C16 FB610C7D6713482C48D7F9E8410C0F00AD6E67021056B6035534E79F05D14EF2 4E813344B92052E6E38491989F62E8E70B47BDC936D5B12147DED67421B4F1C4 3B425AE884FBA95D4C00316800FEB4C2AECB712C0977B675BEBF659686B32A43 79C609ECFB9770F489E78E39C6032F21A769230B7B5FEC428C4C9263D23F1844 8391D5B270CDA540F99194CBB3F96B0C062EBD018C99F6BA8887E95093A429C2 4017AF57A2EEED21FD3D35A0CD92239683CAC8E5E5294368494F14A32AD098C0 9B70DD84A464DA6692559DCB3A2D3B1CF7DB5E152D192693E1D678F0D2E24D85 9279DEE7B86F11243C2F984389FAD3AB3B868E4CC4D1E0EFFCC2460BB14060EB 1055D007FA13832615688CD9B4FF922B566FBD764B5A957D8DAF44620F59064B 72073A793D0C6224FA9141EC4457CE3789EAC039016DC857D5D2C8B2D219B0FC E8BE07B57B80757251F63231BA4A31A3316681192D01BF9D30C3A439ED15187E E9E839562AF201CF41941F3758B48DAE411DC987E5B10A1516527AEB11916EE3 CC2FC224C559DC9536C06C33513199DDD7FDF288D60434486A022C5387F04935 36689800CCC7F9207BDC4A399341485C169164E2EBBD0C6A949F40D2F9C09CFD 79A29B44D8BEA56636B538FB09C5129AC43BE6A1B3754B45EBD42F16DACE02E1 8575CDD6645A9C09D80731C74B5B60CE5739784D5F9A8CBBD3614C067030E2C8 8DB3B10427AD845A763F6619201D08C0E6AB1E3C4E02F3D2471048C7631519C7 9892A16E8A89AB30BF46072014B064E6E091F93EE43BF58E839A0B7C748428CD D92C6BC78679CBEAE17C5BA35E3938DAAF04B7A304FED7F9CE091FA7EDB9BB47 0AE9CB375FD21B844FFB938C69C0813D808F17FA28B01BAD640D032DD84BA8C4 4E7DA8FC546F8132F9C15134FAAA2CCAEE217D4F385EC3AA24F19D39F684BED2 D7B4D6428153A305A0B438C35FFEE92C9D6EE1856D656F69D071D15F5DB85D97 9E4E83260C03D08EF8776C1DC11D1484D97AD96DAF515C64D231DF6DBC361395 5F23C7518F59B0A2C9E8750CB097EC7BACC1BF30E6F36AE562E659AB06CFADD2 463C5EC86CCE43701C0D546723F6ED22F5C5680DA372F9228BAA42D53497E15F 1510487DABA86CBFAD2D43F0FE44C7C137202590041FECA272ED878AB6435AAC D286362F504DBD0175F442228D24CD4F6D615220ACEE9C686BAB23F51CDF2C54 8A48040F69DA7DF1AD61EB79E3E0D06525DF672F7DC74B16638761B5ED4AE73B 204EE1D1DBFF155A5FC3789A6CB80B4A0FD85A5E46C3946168E825111B9F2ADB 8D461062147493799F9A7E967321A1E6935CAAE6215050C1625595EBAC2372E5 45A5EF251C2CE2377EF6916A68186DB0E15078CE27E40D72B3B7BBDA85ADF9F0 CCF941DB442B0A83C13306C5A6C6D878120D6848B61F7C84B0A5BE93CF569566 57A4CD2F35AB56388464C0A54AC5CB73037AC993F1DDD402E3476575079D2EAE A6C24E9B781BC30D66853DE1E20BDD2115250227D94D3D00302390CA8161EEE4 305F4112957D8C7373C737531796843F5021E13A03C4F8525EA3DDD12193B317 BC4AE290826D9565B6D4AEF565386E413F73AE647053C832C230B3BBCF505DF5 DC62B4CC887FBACAA8C5EC5CFD76E6EBBF7305B72A7E2788989139C1C031E396 501939AE366EFA57E915F75947FF909457C6E2520DF33B7CE27BF60D1AC83DBD 513F95E5B2BF3242B14D623BA81A5E4D9F14CACEE5608C70CADC2DF0F827090A ADBEEA5594DD17287DBFFC8D32E88A79E2A5DD3AEC6DF12B702326DAE1A12B2C 5BA64A07678616926D8CD25952B8CBEB203E66293B5FBF69C3D59BCC4C7F986E 6EF2CF7F13C9EF2F00492CC56544B351A96A3ABA2188EA90275D9A485951725D 6B28E742111F89F26C3EE550A318A4683AF46535011AB6A94A9BE2FEADD70475 6D1123C0F4E864FEE4AF0948257314D16C2FC011112D9F9DF01D4B2B9284AF4C 9623B39D28048CDA4016D86264F41A1D8A1E0E8816FCA904AA4E3BC1241FCDF0 92E8EA6B82EDC825DD2A7B0B42F19FD7CEFAC4233FD2D0F3F3C7DA56C7C84518 22DFC70A3FACED74A30E33AEFF03F7C853C25CFBA52EF3DECC1BAA32C64EA4C3 A9AD347D7F0ADC7D361794B74115093EA339BE43F52E419BD16DF7154B71E0E3 847CBB8116C5C1C6666593E8B7A8EE26A9EED1D8B1A35940349F9DCE3797450D D166A2AE79DE85411DFD807ED887004EF828078D7B2D156ACD374FC0AF705696 6BB23A8EFFC7AAE3EBA735AEE3BA459855243C289E34444A5DA1220EF12241CA 1AE9DF8C15384EA74589ED6323F2C0B5AD4A1CB6E191C9819EEA1AD25A116A76 8F46F8E1E0222443EEA5114BAE747725998E1353D3C0E11C28EBB773C6A67BDD 6A2F03255D96ADBFFAB08F39854CF965D27B85F8CCBDC95E0E1F7B7C6F77B9E7 70F73EE4873ACBDF620C08BDA266BE27F864EE2AD759254A9FA2BFE91D94A3EF 436CA4EC7DAE307ABA4353996AB312943528EF198632CC018B01D209CD225E09 CB018D081B6237F474FC1E01562F03CBF5893B3B492CA012B40BCB71AAB3E480 7D1731BA45801CD73B14ED8C33977D937D228AF1D649ACD74940AB8781CFABA3 6737EDD6433A9E881A190087A64A1729B4E350662F6102BEFC2E48B66DD35B3E 984983FAB2C44DEECEA012F936B2A2025DE32729C947DC30F6656ECCAA720AF0 ED98F3EE50299CECF4FE13B1955B91132C17344A82866E84DBDD67D379C53BF5 5DB87C8862BE16D094CEA0B18BDBDB34653A7E54E7995A43FE8AA48C866DC5C1 624BA8F8F4CB39CB285D47007A6053886AA91E4E2291D1736A2678F24FDAD234 61E859710E4DC3858780003C9B125CD3F7788FE4408E1922C979F1F90711818E 16352B067FF29A2F493A1494F9B88196B4881B49F8F64F6A497BD46331D8E8CA 8E765AF472C489E68777C51C31E0ED5ED526561E9F3213F017D43B3E305CA4E6 2C6AB509BF9E785418B91237B3CBC4CC8413F11BB4BD3182A0DDE55EBC9E5FC6 3BB234C61FD98786A9568E2D4B732A66065959E6AF586DA6930DCC0624E58C10 3A9FDEAB6153118229ED0B78C6F6025CB1D5190111D3BD800453F23F83F51611 C590D9561717A9A25FF989952285A036BE8F26F460F1530EDDFD5842805342EC 4EAFB7E270DD861738B3D95741C81C5DD9B2FDD4A8A7E4D62DD77BB02047BF99 C453764E730AA8679F0AC68713E0EB3679A5633240E9457D61E87B556D09C6C1 6F5A92BD6F23F5CAC778D81B6898BBE3E10B286ACC79550501EFBCD60471F1E4 8ECABFD8BAF0CCB09206EE67E156CAA1289875CAE04A57B46D3B9575CDDD39B4 72BE5FDF45CF386E20C1B91B56B7B97189F047B437AA0F91CF159E0D3E08DEC7 5709D19E861F9B4945A064D926BD11817D79F4D5DBA773B3C9F01EF3B20D0E52 AD16FB23BA0CB36A6A5C9F9F83A0BE531B2BBE0E8417D20743D59DB7C5D6BE61 8787D487872D98B6137456111B898E994E9988AB376FA6F99E96F8C75918C59E 592983EBA0D041F1F5E175E95CC3B4C14D22EDC94B08558B974CCDDD75CC4585 2FF045D19B584943A414189AB6847F73894F3E43D66DA3FD3E03AD57D5400B12 7FD8D6EA4BE738C7D53E26C4955F327AA53718CB7FB06AB12865DAAB94965C62 64CD2C9615C1DF655354D3BADD2F3A5E781C68B541EBF5BF577EBF1F2D51A6A0 E3DA80D7CBCFE0969C9E8313C5AACD8B7EC9352E4A8406DA8652C26EBA514C80 B6ED4043270F6C48EB1ADE631856F8377371AB4B9511FCC04170BCA23FAB33EF 9ABCEC626F6C0D9DA520F4C9C817DF41E282D6B72E54877647A844C25D37F2A0 10F9FCA354EEE01B2F639DA7C114F78ACC769613A0EECF9CDDC45691D9E8D657 8D22C2DF47E54C4F1B24B59A6AE15DAF5A4D159CC0BB34E080A810A3C27B3B46 65AC10B86C92E8DBEB25E1570644F3EA62E9CABB0E8FA7222080AFF5B280EE45 68078867B4D074154311D47B9BE71D356699D91A3EA5493FC77B96DE761BF78B 219D11234D8DB80EF36580116BAFAD33043F26671AEE559D72BDAECFD390191D 8EFCD8D23A363B5748F3A068B83FA1F0C9CEDD9A9EC6568C7B32E0B76C2505F1 10094191C526EC65E75E2B387B2EC54495CB9B72F471AF5DEBACBA5925DC3786 03D0BD2D84C8ED209BA0CD4066FF6090641ED4EAB019E6EAD69F2B01D06467E1 0A1389D19C6475B6A2781CC452A2F6F476C53BF01905665DF7A91A7FBC57564D 0032691998703E3873DFD960E3CEBDC20D2CD067CFD70E27E1D71651AA5F12F7 23F12734B6C9E14360DD8863B6C491A0FAAD83032E0934CA1AC81400A5690D36 A9B21515019218A07E1C7BD6B7AB72274562BA309F3A10A1AFEEF4E440DB70AC 6AC01D18C948A5AB66D5A7BA53DDF85E33291AD71B9881593BFA6059BF4586EC 056F600550CAB4F79B129978892A520554C8B138993AFEE76C6581835E9B5487 D17450211BC5F69F2E574A63AB9399D0376827C0D38A739CF22909F325305306 606C947D76B0C9C246D92D07143EC8DF2EA62F376192F68940B8CF01496DD5A0 FBDD0F19D2C4508D08D396D6E2D7BC7AD86F8E305AF42B1D405375CD409528D5 5A95981B7FB5C10AED77EBA79407004354337A43F5A1DA3D32533625ED1C235D 0A7BB5E4925C1C431132931FA276C75BC1499F347974BA1550A83E80C74CB792 BE8A8C523239DFF62A19B0E1B0FA68B31BFA27AAEBB5D03DE5A9BEEB08E6EAB3 4338F3EECA1CFFE0C9217428856FC51E89DF1BE9EAE94ABDD9F6CABE8384ADED 29738867EAE40D2E9C84453EF97860A1A3C0B181FC868C3CC577C0E24507F014 7E094E3DDAFDB85781331C937F12680F216D5956902B6D4844D0034AF9BC3561 239BDCD3C4DDA727C61566B2303759BE4A0FAB3F51DBA231F6E9A7166916099C FC642208A0428660DAAC78A100248E33E32BF1FEEFB8FCD2299F1B20A328EA61 4A2DD76BE58DECD015883921E41C3099E9F835F2B266C623D3991FCF192702B2 0331689C02A5A3AE94864B9298626D4B2E211679774250114E3C9ABF44441206 5425FF437C4638281F964B7A368E45973BBEF49D0B78C652944249A3F95A3261 74E4FE359A52AC95DBAA15B6DDA67862E0C3759F9D09C716F116432EFC0B5732 FFF93874B2177A69C9582975FF677A7D7DC13D082683F9A396D82778BE1DAE16 8FFA6C0D2DB2C2AA560C17E73A0143D1213237728832978AEFA28086861975BF A5EC5AABE59CCA7EC15A2674AF4285F4172C97C8AA8A149A6EB5EA2881AE4C34 999EA46085405A3E38F74C7E1FF3E1E327FA3DB88F1EEDF13843EA241FFB4E1A 335C0EDAC47ED72DADC385D9D9B093894024BD27F4A23AF9B6B761135A8F4611 CAC9EFCD98D36D81A8278022221E3402FD0AE7D90F3FCB68CE3BD0B0A96E0AE4 0A2409EA7B4242A0896C532D2A0362C292E1A1A2BDAFBFB59A5D53BE8B243F56 22CAB20CF79AE1C10EB88BE6EBC4006DB82E70365144E59458B604A4CAA8DA07 37C183BC308D277CE2CF03EEB024423120DBEC9485A635AFFA6E5A6E47DAEA41 D2A6204F6D1A45851AC4FE00B4DFF87054A1C5F14F9BF1BB0FFEFECDBB6E2E31 C685C0DC971FB07405B15BE3ECEF2E2FD8E42B0715D82716BE7E82C2B04688AB D1146AAB0D2FAE29BF5F00220AD679162169DBB83A2CF6C1724B8BBAD065222F D24EB3A47B23C08D6636CE8A484FFA3F4807D75CD25150095F0F5E001C13D80E C4AB1B0C587366158E3B739712EC1CE08999A36C4A3AA1CA040F1599963ABF17 BADAAAE4E1F3FA5C146E3B5A255867C63361E40E28B0863A0CDA0946BB7F7467 F00DA505C783F203F8DE0C4BE0130DBA9BB645A6BC32E1EE16E19C1AF4D1917F D4E7F7A7E4A90BADA0FFC1CBD98901D85ADC60D76E9B06CBA3B21E77BA5F0CA4 4A35E9D663C5F274189BE6E2B0A161F3E811BD2A5487AC5018E1CB3148D53034 BEB0693456D2A4D592BE7E1AB4706872864FF96172645683525AA2DE240C46D5 194EE3C0F05765291023912FAFABF0636EF5F89FE4275002D7BB349168B48086 5806AFA82B223CF75E37DD7C8712F1E0EA899961FF1EEAEE668C2043BBCAE3DA CB07490FDE9629425D8CEF1DECA01856F13B1685244FCFAB653FD88CD94EBAF3 9EFD747462A12E5D88A6B8BB3F610A19848A4E1ED512AD49099BCB6CCEBE16A0 4131420E849564EFF92B9D9430CFF5FD5F596067AFCFC239684B23A8055CB43F 22F5F3D5409C1DFC764E2F7C32513358FB8C9BC3DDE5E539A3246D15FC70D53A A4405BD858DDD072F4473971731395E1DB8DFA682AF0FC3BAB7B21093CD1CAF9 43CC903653FDE7BEEBFAE123A3D53F112C682D86E8AB8523AC70A1AD5DD798A4 0ED8E00F0B41740E71571DAAE53A9CE27DA5B90FB78126E7756800BB325D4B92 B948D5609A1CF903EB1DCB970364016B35F4424DFF44DB3A18299D3A10B58C6D 5893EDC2A9DA31326708319C8537D27C3700709AC4F6C7E73EAAF734CA40DBA2 27E72DC7BF28BA815AFF155F470BF91B904D0CF61C67248BA36BE58ADF682E93 AEC1D0E42CAAD345E586F5D9FBD4AE1509600EC9E7D24614B5C2E9C04BC2289B F46EFE6B2D81FB0554D0BE8B5820EF456B05DC16C53C0E13B43C52F4E3D80709 844A0093D555EC1CD1202A8029915B4E0C1A890208034F96C05E486A32013936 C27ED2BFC5C303D89EEF8B4693FDA01C6BD6E66ED529DB355C02FADC3AE6AB32 8E86D5B3BF2A88BB039A2D3E9E8D78D4B96C268C26C55DE17EF62F5A482ADD98 BA1B45ECF11BBF943BC8D8582711B11454C5A7C2E37DD7EEAE455AD5F5729F3E 42DF093720894AEAFAFA47FB49B56354B2429E9D631B11BFBD98FECF975EA504 7CF4CB2A3B0547B8133055A71C3CA2F39D7C2600170751E1715904B17017E590 28A401AA80E150BA81B6A5C649EE21300AB003A4163D2C98ADA33820877FA650 156F393B0FD54B627BE75849A75D0C8E0EE352941494C1EC959B83B8227CD447 2762559912EE3F4B46B1D9C280DE220EB7E99C88558EFB21D0FF4F684118F20A 8C37CD29CA8AC0B3AA113AA30B399A1491DF55D5E0E083DBD5E62F5F0A4D7B26 31E52505D737933E083402C41EEB6105EBC32F6AC595A7ECAF6A614729F8EF7D 773A12544E628FAAD1E87F78D6A86B8777E3282F8ED42569B0E85BAA3903AD1A 7797C54AE808450FF5E1628643167D6E80672C0B41E67D279B859F31C73F9B61 6D8D580708024FEAC208EDCAA6CC19D85CBA2C780DABDB8E738A6CA9B3ED2A3C 1D3D5ACE823F7A03AC36E3B6946E323D64A8599F54CCC6E0828E2063BD9E5F5B A3124919F415C3EA54D8C92BA35EEAE0A88460CA3DCD1C84F74BC9CE074A9D7B D2C7D851BBD57EFEB0AC8D7CE0C5D7C7683D500A4CDF56744E0204975BB22323 A059C2EF69C7FC65BFCF7AF377952F8466C5FB84C08F46E9D548A9433FA9FA40 F303894403076B40CAE8F818D25EC5C69E9CB3052F48306FA95074389BAE93F1 4F0075462E4304E598804E6C2619F8AC83FC6A7BC25BF5BE63372A28FAE5E25F F9117190BB58B73831EBB6053FC2775C2EE90984EEC876C0C78783EF496C29FE FE13082AB4E7D2F3D571A0121913F3EDDE8E2DFDA939076148E6C3ED9A7CFBAA 5D55751C6F1219B2DEBC172CE1780FF62A2929A99405E167028D2375D4565280 4D8DC6ACCCA0F5850EBC8F41742EC0444DEA4DECE4EA82AE125B99E35D84DF1B B35A97AC01963EB80E4A589F33D91D643ABBC17EB3911C3624334C484A6D4ECA CDDE40E1DB8C29A0488D25490E571D9753AFD77D51279B6B48017295013EFF5A E99E03E95B21C66283B129F2282EBE58656652AE08F8382FCF46D193EBEE2869 1579F6DE3FFF2796C74DFEC3C659E77F044ED80952401DEA85F6733FACF11AEB 90FBD53DB512EA6DAAA69C630A79E3BC3B86722563BC00423E98FAAE4F2CDADE 8D9F73883039FDD31DF31259B82B3F1E88396437A738E570D01B3258E55753ED 0DC0A494C0DF0259798E3E71348414B6B9D7701B2A0F41F0FA82C5BF094D2197 DB6E81CD8D7456F4053BA8F9A7002AC2A1172D5FE99D32CCED020BFA87C46E05 2FBC499702B9033DF5EBF1E3DDEB853BAA66F741BB2F194443B2250659B73CBF F3C8883DEDFD0ADADFA83094591B8E9EFEA597DF19005AF2F8ED8DCA7C60FD8A 6989E7F18B9F771522B5528D227287A7C4AB5B6E22DDFC423B7E68A2CB6774F0 581D8BA82B2BD78FC63FA98F8D49906C73F62AE5DAB8CEF6F0C66381A4BAD72E 2797676CD7C9C9C62305D0D7CC0A408B0742E21D915374E5197C89FFFF78ACCF 538456BCFEA68CDE41CE9628F1B81A7DBB4E3190854EEEB40510AFA39F688957 3DECF0DB17F4C9037D109F68D67C10D36933E91BBF89A9A6521CAC80F0A6D8AB C1B9F0652045C4735294082D415D3B5BEDE7291BAC511E6BFA1FB05EC8EFA03F 5A4B50D536E6E7957FD9A699AD13A6A8B5454308BE47598BF166999F938F370E 2245029CCD87E85DA0E7C893CE285C708C42811A91A5248C24CA0CFCBB6E2CE5 6588E8DD5702DF8B20E8BFA5BC17A11D2681CE7B59AA820155DD26442BF69221 9A674365B68210B4B214A1B9668D25CB6B7D2F9B5465D7BC13094C938E580B5B E0EFAD9D143D1C9C1BA1FDCA1716EF4E5F5088DFC22D56881C397960138A2F00 EB53261426B2AC78A903DF5B5E51E57441900C92455F397CE61BAFE24A6317BA F8817BC4013912422664D43A3FCC1CBE2393018E4175717E2F93717709A45D5A 4A49937ED42D90E0AC699A3E925029A1DD1962D95BF5940872372F09CC158E69 96B1A4FE9264FE82EE4B911D586D8CF742E13FAB2D66986BB08D26F0C6A23F80 949F5B8127B0C8D80F287F182F4191747511A988ADD41B5FA8FCCCC7FE19615E DB5C4B313B4F6CFA9C440BA7EA2A2F68883CC059A8897F497556995772B81C4E EF69C998B3E38DCA845208EE191C4C7460DA335DC3C79FADEEA8730659185A7D DC1D91475CC45C34E025B2CADFBE2DD4C7ED708BD8C7CABFA1861B34350F8A33 B8FA88250D1A601D99ADC281CC649D433DFD8B9DE54FE681580F81F3586DC9D4 672BCFBE80493B9670EAF850FF54DEE0DEF7481053FF7FE2ECE8824AF1BE5819 54AC05E75B2001E2EAA9F08E7ADA21B7F9B924CF30D3EC7F692E333356ED2587 382AB244DB071EABB2A3578B98252D03D9FB32A0F23C76E14C540D98A1552C90 442B6C396875DBF1FE432615674F3295F5D39E5B8707713A615448B87FA66DA3 4A5FE24108B669582F5B2FA22D3A455C44D3256FCD9513C177FB1FF3831FDCC8 9CE5B7BBE35F039877824CB0EF3B19BBEA0816C72D0957E4694294E8E4B7A1EE D9ACE021A7B7175AECCF434942A169A4D7986182942FE4D97A881CA26867F044 2C88ADD735D0D0A1B0D4DA2D780C48EFBDDD0E7299870665DCCF3625A88580FF FD3A754F84E56BE59B29347C25BD4A68ECE88EF881D722E86143456131D7561D 55C98F1FFDEA0048F0DA957F7DDE92F9D7D489E0CAB9002731809D9B4F389217 E9A673107CC9353C974BBB156B3279966F2A972484C88DFD08CA205578ECFFB2 AAD087A94BEF26B3C2CD6E09E3B4F437C0FB765C5C8EB4FB2913AF23B5E228ED 669B214D240538F07FE5EFDBD4224CD70EF0B5E88ADC1E 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont %%BeginFont: CMR17 %!PS-AdobeFont-1.1: CMR17 1.0 %%CreationDate: 1991 Aug 20 16:38:24 % Copyright (C) 1997 American Mathematical Society. All Rights Reserved. 11 dict begin /FontInfo 7 dict dup begin /version (1.0) readonly def /Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def /FullName (CMR17) readonly def /FamilyName (Computer Modern) readonly def /Weight (Medium) readonly def /ItalicAngle 0 def /isFixedPitch false def end readonly def /FontName /CMR17 def /PaintType 0 def /FontType 1 def /FontMatrix [0.001 0 0 0.001 0 0] 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 /FontBBox{-33 -250 945 749}readonly def currentdict end currentfile eexec D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891 016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171 9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758 469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8 2BDBF16FBC7512FAA308A093FE5F075EA0A10A15B0ED05D5039DA41B32B16E95 A3CE9725A429B35BAD796912FC328E3A28F96FCADA20A598E247755E7E7FF801 BDB00E9B9B086BDBE6EDCF841A3EAFC6F5284FED3C634085BA4EE0FC6A026E96 96D55575481B007BF93CA452EE3F71D83FAAB3D9DEDD2A8F96C5840EAE5BE5DC 9322E81DFF5E250DEB386E12A49FC9FBF9B4C25C3283F3CEA74B8278A1B09DA7 E9AE4FBAAF23EDF5A3E07D39385D521547C3AAAB8EB70549756EBA8EF445AF4A 497CA924ACCC3DD5456F8E2C7E36946A5BF14E2E959895F7C94F49137256BE46 4A238684D52792234869EAE1A6D8ADF4E138B79472D2A90A6CA99E2394CC20CD 3841733046175B20CEBE372327BF13428EED6A3E2FDF84C2DBA4B0AD584EE9DF B51828D3B8F385846158C29C9AC3496CB9692DD10219697B2ED4D425C3957FD8 C4600D76E045C561216EF05D38177243C314877A69A1C22E3BEC611A2EE5A216 9B7C264CF6D1839DBBD78A40610F2C0D7C2FE09FFA9822FF55035AD52546970F 83EED2D30EABB1F303091EBC11A5379B12BB3F405E371519A53EA9D66174ED25 A2E55463EC71A97BE4C04B39E68112956117C8252DB6FB14AB64534B4BCD568B 246DB833982B38CDE7268BBF74B6B0C18091E1B1F87D32D66F4DD023D1F10D2A 7736A960F72AC01F733A11023832CD68FB6288A5977743F6F3F23E0C1657CF5D E8374835BDBD2DED3690C84A1EBB8E2383A5E49E610B6F5F0F5F5EC43CFD16FF 24FEEFB92425CCB577E17FDE4EA6C50E1448DC5726A21888E25B6D6B52DA3D3C E4C4C6A73C176DFEB60B6B6191B336AC4F5BAA123E1B3B6FAE4B3FA9DC8F7E39 335277EF2294315BE95F64EBDB1F393B293FD0FDB9DEE6C89082232013130D28 9234FF12DF47D454558A1EE8603B2832772E5CA07D18B34A4763D5B890F7173F B8FEEF9AAF331DA30950536D399E8459850D254763E98257D748C6D982DDBE1B E07F60A5B5BF9665CB145BEE285F6B0D134C3514BDE075557FC36FBBED63B4AA 1A1FF5031578F763120D1E6F0347436A0E202A244ED6F6FB4BE7FEB2E13E2936 41685903279FE5D49008260496AADFE28AE4164CCA213BEF0F0C2467E7164B49 F73C8985A2A61252F9375D003BCF5733E97F3A5B00EE922BFFF585DD8DA93D7A 27F2E05D38A55A4C2B82F10D767C02370BF178C84B972ECE12CB49D05D92F0B0 BA2F4953E0A17391745A667B1F7E92B8EBEB207CAA798106B6AA83F0EC03EDE2 CF6A4F1FC9BBD22A0652FE91F6C6BE429086D40A629BA7BD8B9B834A2F8B6BB2 1E036777CD11300B76173695F968FF122B916177EFB9A34E8B1A7DDE43DBAE5C 3405421245F7015CBCE71CF94D1DB8A8D6C85A20B1B978F69C56A5F1031F4770 6D074DCAE7D52A84608698225FACC08C2A3302E2D3E0768BFC22C3A613008BA2 DD66FE4AFA42C7B2D77638191CDAE4D58B285120657E544D5B1E8E38F20E8F01 CA35E6761BE93F70AB36518EACD2C28C558D5EB323F4D73D525A3C3B688598F6 C40A8856DD9781401B81CAC9520742A84CBA6CE1CCC33F69291B6E56F035DC55 97750BC5A2314DDCDBADFC8058D105AE718EF535B759EB9B75F1CE498EA958A9 403CC34397698A78443CFA3B1A7F2036320F44A106BC72551AB221DF3F308BEC 328EA34B6A5EBE3C9462DD036C17E5FC967B6B3DBFB2440B7A6AAA6C2BFC6C69 2A809A62BEB8C2D5E762D0455830C8858A229D4E6148DAEC0AC3A9940AFBE928 933AC697F6F2B7090E7569640FEC5AB5ABC994E32DC2768B484069A107CF6DF1 0E643DB4016D5E84F0027F8ADD99192378D81F8676C06A4FB51C0F6EE8E7B3A1 BF88E3B5AE745196DC156746516852AADC90BD1D9171180964395D3665F1D462 5C320738E6D8087D4C8CF778B6083D93705D80FD04C6D271589EB48A4B088C43 00FD429FDE925279038960E39AB0B038145D977717C6D7021C43D02055BD00F7 0663AF4EC9466141381BA2453B043FA7F736E301AF000E9318505D359A1D4435 1FEE3FA1161B47678560D837DBE9881E2AE8844C817EBF17A46BE3BDBD1926FA DE67AFC7534843E251E4861FB462CE8BE5A4D570A8F7D7B6EDF36742DB10B1AA DCF9A6533DF28A85BB2BBD41E3F57AD1E4D77FEBACC76905843B6F2D7FBC5552 0092371C7282225CB47816682CB39BB011E90A09E10777879476E8922BB5934F BFE58A1ACDA5E18A1956C076B26376514FED265A2C9AD72BE950745C5280E275 08598C9E86104DD41D05AA5BF59812A45051C11FC7CCB72E1CF4A05718BEF514 A2EA7196A7477D10D7F87A7FB51D568F4D0B4008D3187ED93D2F5FF5ABB1FC44 77136A0EB613F6E983E6075B792D6E7FC882F808687F3AD875FD12DEAD2B0E1B 2983D440E51FFEB580C6F518448A612EE1B001C00DFB70DAF0184964689BC61C 38477F5438B33E733270914148C0B000BA08548156477400B6472693435844F8 E97BF25A0312B008D81D6D6155407867A8BA1C59036F91C3ED25511CAAA21392 CAEC3C9228AFF2CCF7E62D0E7E14C2569A80CE585B09B39F49AC0AAC9F02218C AE92273F29014713BBA20F3AC6DA614C51456E423E624F84FC88E691AB8E7732 EC3B764D8B3A8676D189E40D0D97C9E896AE6B84CE32AEFEAF4648C7D02ABBA3 289226665A8D1F822A4411CDA8D71073F9431339832A72360E21C5EB53F667BC FE1A1531314FAB6EB049873944C4F857D4A15F09DC9BC930DA44DAAC5F980A03 6807391391FBD574DB65FC517B18F43C4B59E033B7BF3FD4AFC3324B3016CC01 596086D15F873F3FFB477A987C5FD5B246F226DBFC8AE8AA8BDE191124608481 3CDE339AAF72E5407B81B77E134C74C19A1B26D25D3E7279F17CACA101147E25 3953DBD17ADB2A814723AD206E510E9C70565479D7B691B1F3838335A1A226C7 5E008399C2172F1F81F4F135337A84E852CD1D79ECAAAA06DEA12C8D3DEB2FF1 2484538C4905D6848B3A5DE53001618E402EC758D490CAFFD341ED89B7902AB7 CCF32868920DA9F5A8F7FB089AA3EAEA03AE299CD0055CAF9D354519C8B33DFF 1C096597732BC112921389463CDDFEE2BBF96A8FAC04A23C5A62A84DFCC7EA0B 77A9FFF2F198A07CBF1BFE27355ED3461DC31300C048E60F897CF111C1FAC30D 362993113C1763F15FB913CE1D50BD5245945FC27294779A030DDB7FB6C2585C BAFF9714223BCA8024DDAACF94988E5C36831617CA1A4B15A5D1A4DF222191CC A023E6AD9ACCBBCE640DE4443D1D4F8882CE5A8FFD14F9C4DF2B986EF39734D7 D94A1C00EE2451922952A9577012F5C00E02F3D9EB0A0F3FEE1757A19384141B A943A382BB247E0F1C02027B9A64C8DCB2233187ED4B0E2F19457EACA7FCE9F9 33B578210E9251561BD4BA8E869DB1A9DB9CAD8F0B8DD64D8E8DB3599BD280BD 8D63AD6BDA2012B7B20FCA00402C77C332676CC66B1D863117B5014BDADECC1C 1E615F94148267E83300F597B445C0B855E8FE9B1B869CF40DA4519C2A898631 566946E5FFC3C1353B18280D48B77457CFA1A6EFD75766C33B87A4D7528ACD39 A4DBEE64769D4D305828161B8BE5831BC4745F5A9BF0D94D734C4E412777CE08 C5DBB70D2299718206EDCE622E40E2A4A35E19C7F1D7A9418ED2805B4864FEEF 327D5BC534126537585C419258272C2543B9E27176F2DD78BEFDB7B0634911D1 87329ECCB34357E736704F0E950C723C267492ACEC459B4256789748F811CACB C4277E44A1E5DAD99ED86D97E1107083125E745E64DE879A2A2545B085055ED1 0DE63CA91A963C18A0CB3DEADF33D527EBD2728715F627F858B331CF49B32B8B FC1EF92ECDC60CC9C37D6308BF63F4F2F6D1AECE71377826D9C1DA4457EB9576 7551 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 cleartomark %%EndFont TeXDict begin 39139632 55387786 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 a4 %%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(2)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(3)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(7)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(11)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(11)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(12)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(15)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(16)0 4287 y(6)84 b(Examples)3219 b(16)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)c(can)h(handle)f(an)m(y)h(general)h(input)e(and)g(is)h (more)f(general.)43 b(F)-8 b(urtthermore,)31 b(additional)h(functions)e (ha)m(v)m(e)0 2735 y(b)s(een)g(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)25 b(w)m(e)f(de\014ne)f(P)m(olyhedra)h Ff(V-format)p Fo(.)39 b(Let)24 b Fj(P)37 b Fo(b)s(e)23 b(represen)m(ted)h(b)m(y)f Fj(n)g Fo(gerating)i(p)s(oin)m(ts)f(and)f Fj(s)g Fo(generating)0 926 y(directions)30 b(\(ra)m(ys\))h(as)f Fj(P)39 b Fo(=)24 b Fj(conv)s Fo(\()p Fj(v)1244 940 y Fh(1)1285 926 y Fj(;)15 b(:)g(:)g(:)h(;)f(v)1530 940 y Fg(n)1578 926 y Fo(\))k(+)g Fj(nonneg)s Fo(\()p Fj(r)2095 940 y Fg(n)p Fh(+1)2232 926 y Fj(;)c(:)g(:)g(:)i(;)e(r)2475 940 y Fg(n)p Fh(+)p Fg(s)2610 926 y Fo(\).)41 b(Then)28 b(the)i(P)m(olyhedra)h(V-format)0 1039 y(for)f Fj(P)43 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(cured.)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(ccured.)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(formated)f(as)h(a)g(double)f(\015oat)h(with)f(a)g(decimal)i(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)d(and)f(en)m(umerates)h(all)g (triangulations)h(of)f(a)g(p)s(oin)m(t)f(set.)69 b(It)40 b(detects)h(the)e(regularlit)m(y)i(of)f(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-094g/doc/cddlibman.tex000066400000000000000000001370451206770251100161770ustar00rootroot00000000000000% 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. Furtthermore, 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$ gerating 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 occured. \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 occured. \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 formated 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 regularlity 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-094g/doc/cddlibman.toc000066400000000000000000000031451206770251100161550ustar00rootroot00000000000000\contentsline {section}{\numberline {1}Introduction}{2} \contentsline {section}{\numberline {2}Polyhedra H- and V-Formats (Version 1999)}{3} \contentsline {section}{\numberline {3}Basic Object Types (Structures) in cddlib}{4} \contentsline {section}{\numberline {4}Library Functions}{7} \contentsline {subsection}{\numberline {4.1}Library Initialization}{7} \contentsline {subsection}{\numberline {4.2}Core Functions}{7} \contentsline {subsection}{\numberline {4.3}Data Manipulations}{11} \contentsline {subsubsection}{\numberline {4.3.1}Number Assignments}{11} \contentsline {subsubsection}{\numberline {4.3.2}Arithmetic Operations for {\tt mytype} Numbers}{11} \contentsline {subsubsection}{\numberline {4.3.3}Predefined Constants}{12} \contentsline {subsubsection}{\numberline {4.3.4}Sign Evaluation and Comparison for {\tt mytype} Numbers}{12} \contentsline {subsubsection}{\numberline {4.3.5}Polyhedra Data Manipulation}{12} \contentsline {subsubsection}{\numberline {4.3.6}LP Data Manipulation}{13} \contentsline {subsubsection}{\numberline {4.3.7}Matrix Manipulation}{13} \contentsline {subsection}{\numberline {4.4}Input/Output Functions}{14} \contentsline {subsection}{\numberline {4.5}Obsolete Functions}{15} \contentsline {subsection}{\numberline {4.6}Set Functions in {\tt setoper} library}{15} \contentsline {section}{\numberline {5}An Extension of the CDD Library in GMP mode}{16} \contentsline {section}{\numberline {6}Examples}{16} \contentsline {section}{\numberline {7}Numerical Accuracy}{16} \contentsline {section}{\numberline {8}Other Useful Codes}{16} \contentsline {section}{\numberline {9}Codes Using Cddlib}{17} cddlib-094g/doc/html.sty000066400000000000000000000303141206770251100152340ustar00rootroot00000000000000% 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-094g/examples-ext/000077500000000000000000000000001206770251100153755ustar00rootroot00000000000000cddlib-094g/examples-ext/ccc4.ext000066400000000000000000000004411206770251100167320ustar00rootroot00000000000000* 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-094g/examples-ext/ccc5.ext000066400000000000000000000007151206770251100167370ustar00rootroot00000000000000* 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-094g/examples-ext/ccc6.ext000066400000000000000000000022431206770251100167360ustar00rootroot00000000000000* 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-094g/examples-ext/ccp4.ext000066400000000000000000000005451206770251100167540ustar00rootroot00000000000000* 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-094g/examples-ext/ccp5.ext000066400000000000000000000010221206770251100167440ustar00rootroot00000000000000* 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-094g/examples-ext/ccp6.ext000066400000000000000000000023651206770251100167600ustar00rootroot00000000000000* 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-094g/examples-ext/cyclic10-4.ext000066400000000000000000000004161206770251100176700ustar00rootroot00000000000000* 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-094g/examples-ext/cyclic12-6.ext000066400000000000000000000007001206770251100176700ustar00rootroot00000000000000* 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-094g/examples-ext/cyclic14-8.ext000066400000000000000000000013341206770251100177000ustar00rootroot00000000000000* 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-094g/examples-ext/cyclic16-10.ext000066400000000000000000000022551206770251100177560ustar00rootroot00000000000000* 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-094g/examples-ext/irbox20-4.ext000066400000000000000000000012121206770251100175410ustar00rootroot00000000000000* 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-094g/examples-ext/irbox200-4.ext000066400000000000000000000123241206770251100176270ustar00rootroot00000000000000* 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-094g/examples-ext/prodst62.ext000066400000000000000000005307771206770251100176250ustar00rootroot00000000000000* 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-094g/examples-ext/reg24-5.ext000066400000000000000000000010451206770251100172040ustar00rootroot00000000000000* 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-094g/examples-ext/reg600-5.ext000066400000000000000000000561001206770251100172660ustar00rootroot00000000000000* 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-094g/examples-ine/000077500000000000000000000000001206770251100153505ustar00rootroot00000000000000cddlib-094g/examples-ine/allzero.ine000066400000000000000000000002241206770251100175130ustar00rootroot00000000000000* 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-094g/examples-ine/cross10.ine000066400000000000000000000701071206770251100173440ustar00rootroot00000000000000* 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-094g/examples-ine/cross12.ine000066400000000000000000004101101206770251100173360ustar00rootroot00000000000000* 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-094g/examples-ine/cross6.ine000066400000000000000000000023021206770251100172610ustar00rootroot00000000000000* 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-094g/examples-ine/cross8.ine000066400000000000000000000135031206770251100172700ustar00rootroot00000000000000* 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-094g/examples-ine/cube10.ine000066400000000000000000000014001206770251100171170ustar00rootroot00000000000000H-representation begin 20 11 integer 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 1 0 0 0 0 0 0 0 0 -1 0 1 0 0 0 0 0 0 0 -1 0 0 1 0 0 0 0 0 0 -1 0 0 0 1 0 0 0 0 0 -1 0 0 0 0 1 0 0 0 0 -1 0 0 0 0 0 1 0 0 0 -1 0 0 0 0 0 0 1 0 0 -1 0 0 0 0 0 0 0 1 0 -1 0 0 0 0 0 0 0 0 -2 -1 0 0 0 0 0 0 0 0 0 end minimize -2 -1 0 0 0 0 0 0 0 0 0 cddlib-094g/examples-ine/cube12.ine000066400000000000000000000020011206770251100171170ustar00rootroot00000000000000* 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-094g/examples-ine/cube6.ine000066400000000000000000000005001206770251100170440ustar00rootroot00000000000000* 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-094g/examples-ine/cube8.ine000066400000000000000000000007771206770251100170660ustar00rootroot00000000000000* 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-094g/examples-ine/cubocta.ine000066400000000000000000000004301206770251100174620ustar00rootroot00000000000000filename: 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-094g/examples-ine/ex1.ine000066400000000000000000000003531206770251100165430ustar00rootroot00000000000000* 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-094g/examples-ine/infeas.ine000066400000000000000000000006531206770251100173160ustar00rootroot00000000000000* 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-094g/examples-ine/integralpoints.ine000066400000000000000000000022511206770251100211070ustar00rootroot00000000000000* 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-094g/examples-ine/kkd18_4.ine000066400000000000000000000013251206770251100172130ustar00rootroot00000000000000* 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-094g/examples-ine/kkd27_5.ine000066400000000000000000000025271206770251100172210ustar00rootroot00000000000000* 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-094g/examples-ine/kkd38_6.ine000066400000000000000000000046311206770251100172220ustar00rootroot00000000000000* 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-094g/examples-ine/nonfull.ine000066400000000000000000000003231206770251100175200ustar00rootroot00000000000000* 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-094g/examples-ine/origin.ine000066400000000000000000000005261206770251100173370ustar00rootroot00000000000000* 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-094g/examples-ine/reg24-5.ine000066400000000000000000000007461206770251100171410ustar00rootroot00000000000000* 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-094g/examples-ine/sampleh1.ine000066400000000000000000000002371206770251100175610ustar00rootroot00000000000000* 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-094g/examples-ine/sampleh2.ine000066400000000000000000000002001206770251100175500ustar00rootroot00000000000000* file name: sampleh2.ine * a hyperplane with no vertices and rays H-representation begin 1 4 integer -1 0 0 1 end cddlib-094g/examples-ine/sampleh3.ine000066400000000000000000000002161206770251100175600ustar00rootroot00000000000000* 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-094g/examples-ine/sampleh4.ine000066400000000000000000000003441206770251100175630ustar00rootroot00000000000000* 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-094g/examples-ine/sampleh5.ine000066400000000000000000000004101206770251100175560ustar00rootroot00000000000000* 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-094g/examples-ine/sampleh6.ine000066400000000000000000000002601206770251100175620ustar00rootroot00000000000000* 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-094g/examples-ine/sampleh7.ine000066400000000000000000000004401206770251100175630ustar00rootroot00000000000000* 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-094g/examples-ine/sampleh8.ine000066400000000000000000000104101206770251100175620ustar00rootroot00000000000000* 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-094g/examples-ine/samplelp.ine000066400000000000000000000020701206770251100176610ustar00rootroot00000000000000* 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-094g/examples-ine/samplelp1.ine000066400000000000000000000002571206770251100177470ustar00rootroot00000000000000* 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-094g/examples-ine/samplelp2.ine000066400000000000000000000002771206770251100177520ustar00rootroot00000000000000* 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-094g/examples-ine/samplelp3.ine000066400000000000000000000144441206770251100177540ustar00rootroot00000000000000* 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-094g/examples-ine/samplelp4.ine000066400000000000000000000143651206770251100177570ustar00rootroot00000000000000* 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-094g/examples-ine3d/000077500000000000000000000000001206770251100155775ustar00rootroot00000000000000cddlib-094g/examples-ine3d/cube3.ine000066400000000000000000000002461206770251100172770ustar00rootroot00000000000000filename: 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-094g/examples-ine3d/cubocta.ine000066400000000000000000000004301206770251100177110ustar00rootroot00000000000000filename: 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-094g/examples-ine3d/dodeca.ine000066400000000000000000000007421206770251100175160ustar00rootroot00000000000000filename: 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-094g/examples-ine3d/grcubocta.ine000066400000000000000000000007221206770251100202460ustar00rootroot00000000000000filename: 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-094g/examples-ine3d/hexocta.ine000066400000000000000000000013051206770251100177260ustar00rootroot00000000000000filename: 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-094g/examples-ine3d/icododeca.ine000066400000000000000000000032041206770251100202050ustar00rootroot00000000000000Icosidodecahedron % 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-094g/examples-ine3d/rcubocta.ine000066400000000000000000000007131206770251100200770ustar00rootroot00000000000000filename: 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-094g/examples-ine3d/rhomtria.ine000066400000000000000000000026511206770251100201250ustar00rootroot00000000000000Rhombic 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-094g/examples/000077500000000000000000000000001206770251100145775ustar00rootroot00000000000000cddlib-094g/examples/project1.ine000066400000000000000000000012721206770251100170250ustar00rootroot00000000000000* 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-094g/examples/project1res.ine000066400000000000000000000003571206770251100175420ustar00rootroot00000000000000H-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-094g/examples/project2.ine000066400000000000000000000035021206770251100170240ustar00rootroot00000000000000* 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-094g/examples/project2res.ine000066400000000000000000000024431206770251100175410ustar00rootroot00000000000000H-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-094g/examples/redcheck.ext000066400000000000000000000001341206770251100170670ustar00rootroot00000000000000V-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-094g/examples/sample.ine000066400000000000000000000002551206770251100165570ustar00rootroot00000000000000* 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-094g/examples/sampleh1.ine000066400000000000000000000002371206770251100170100ustar00rootroot00000000000000* 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-094g/examples/sampleh2.ine000066400000000000000000000002001206770251100167770ustar00rootroot00000000000000* file name: sampleh2.ine * a hyperplane with no vertices and rays H-representation begin 1 4 integer -1 0 0 1 end cddlib-094g/examples/sampleh3.ine000066400000000000000000000002161206770251100170070ustar00rootroot00000000000000* 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-094g/examples/sampleh4.ine000066400000000000000000000003171206770251100170120ustar00rootroot00000000000000* 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-094g/examples/sampleh5.ine000066400000000000000000000003331206770251100170110ustar00rootroot00000000000000* 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-094g/examples/sampleh6.ine000066400000000000000000000002601206770251100170110ustar00rootroot00000000000000* 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-094g/examples/sampleh7.ine000066400000000000000000000004401206770251100170120ustar00rootroot00000000000000* 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-094g/examples/sampleh8.ine000066400000000000000000000104101206770251100170110ustar00rootroot00000000000000* 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-094g/examples/samplelp.ine000066400000000000000000000020771206770251100171170ustar00rootroot00000000000000* 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-094g/examples/samplelp.testlp1_gmp_output000066400000000000000000000066051206770251100222240ustar00rootroot00000000000000lsne-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-094g/examples/samplelp.testlp1_output000066400000000000000000000066031206770251100213570ustar00rootroot00000000000000lsne-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-094g/examples/samplelp1.ine000066400000000000000000000002571206770251100171760ustar00rootroot00000000000000* 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-094g/examples/samplelp2.ine000066400000000000000000000002771206770251100172010ustar00rootroot00000000000000* 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-094g/examples/samplelp3.ine000066400000000000000000000144441206770251100172030ustar00rootroot00000000000000* 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-094g/examples/samplelp4.ine000066400000000000000000000143651206770251100172060ustar00rootroot00000000000000* 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-094g/examples/samplelp_big.ine000066400000000000000000015100141206770251100177340ustar00rootroot00000000000000H-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-094g/examples/samplelp_big_dualinfeas.ine000066400000000000000000015075351206770251100221450ustar00rootroot00000000000000Dual 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-094g/examples/samplev1.ext000066400000000000000000000002241206770251100170470ustar00rootroot00000000000000* 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-094g/examples/samplev2.ext000066400000000000000000000002611206770251100170510ustar00rootroot00000000000000* 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-094g/examples/samplev3.ext000066400000000000000000000003211206770251100170470ustar00rootroot00000000000000* 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-094g/install-sh000077500000000000000000000324641206770251100147760ustar00rootroot00000000000000#!/bin/sh # install - install a program, script, or datafile scriptversion=2006-12-25.00 # 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. nl=' ' IFS=" "" $nl" # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=${DOITPROG-} if test -z "$doit"; then doit_exec=exec else doit_exec=$doit fi # 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_glob='?' initialize_posix_glob=' test "$posix_glob" != "?" || { if (set -f) 2>/dev/null; then posix_glob= else posix_glob=: fi } ' 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 no_target_directory= 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 *' '* | *' '* | *' '* | *'*'* | *'?'* | *'['*) echo "$0: invalid mode: $mode" >&2 exit 1;; esac shift;; -o) chowncmd="$chownprog $2" shift;; -s) stripcmd=$stripprog;; -t) dst_arg=$2 shift;; -T) no_target_directory=true;; --version) echo "$0 $scriptversion"; exit $?;; --) shift break;; -*) echo "$0: invalid option: $1" >&2 exit 1;; *) break;; esac shift done 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 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 trap '(exit $?); exit' 1 2 13 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 starting with `-'. 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 # Protect names starting with `-'. case $dst in -*) dst=./$dst;; esac # 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 -n "$no_target_directory"; then echo "$0: $dst_arg: Is a directory" >&2 exit 1 fi dstdir=$dst dst=$dstdir/`basename "$src"` dstdir_status=0 else # Prefer dirname, but fall back on a substitute if dirname fails. dstdir=` (dirname "$dst") 2>/dev/null || expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ X"$dst" : 'X\(//\)[^/]' \| \ X"$dst" : 'X\(//\)$' \| \ X"$dst" : 'X\(/\)' \| . 2>/dev/null || echo X"$dst" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q } /^X\(\/\/\)[^/].*/{ s//\1/ q } /^X\(\/\/\)$/{ s//\1/ q } /^X\(\/\).*/{ s//\1/ q } s/.*/./; q' ` 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-writeable 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 eval "$initialize_posix_glob" oIFS=$IFS IFS=/ $posix_glob set -f set fnord $dstdir shift $posix_glob set +f IFS=$oIFS prefixes= for d do test -z "$d" && 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` && eval "$initialize_posix_glob" && $posix_glob set -f && set X $old && old=:$2:$4:$5:$6 && set X $new && new=:$2:$4:$5:$6 && $posix_glob 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-end: "$" # End: cddlib-094g/lib-src-gmp/000077500000000000000000000000001206770251100150755ustar00rootroot00000000000000cddlib-094g/lib-src-gmp/.DS_Store.1000077500000000000000000000140041206770251100167210ustar00rootroot00000000000000Bud1%  @€ @€ @€ @ E%DSDB`€ @€ @€ @cddlib-094g/lib-src-gmp/Makefile.am000066400000000000000000000006051206770251100171320ustar00rootroot00000000000000lib_LTLIBRARIES = libcddgmp.la libcddgmp_la_SOURCES = \ cddcore.c \ cddlp.c \ cddmp.c \ cddio.c \ cddlib.c \ cddproj.c \ cddcore_f.c \ cddlp_f.c \ cddmp_f.c \ cddio_f.c \ cddlib_f.c \ cddproj_f.c \ setoper.c include_HEADERS = \ cdd.h \ cddmp.h \ cddtypes.h \ cdd_f.h \ cddmp_f.h \ cddtypes_f.h \ setoper.h AM_CPPFLAGS = -I$(gmpincludedir) -DGMPRATIONAL AM_LDFLAGS = -version-info 0:0:0 cddlib-094g/lib-src-gmp/Makefile.in000066400000000000000000000405371206770251100171530ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 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@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@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 = lib-src-gmp DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" libLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(lib_LTLIBRARIES) libcddgmp_la_LIBADD = am_libcddgmp_la_OBJECTS = cddcore.lo cddlp.lo cddmp.lo cddio.lo \ cddlib.lo cddproj.lo cddcore_f.lo cddlp_f.lo cddmp_f.lo \ cddio_f.lo cddlib_f.lo cddproj_f.lo setoper.lo libcddgmp_la_OBJECTS = $(am_libcddgmp_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libcddgmp_la_SOURCES) DIST_SOURCES = $(libcddgmp_la_SOURCES) includeHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(include_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ 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@ MAKEINFO = @MAKEINFO@ 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_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_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@ 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@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ 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 = libcddgmp.la libcddgmp_la_SOURCES = \ cddcore.c \ cddlp.c \ cddmp.c \ cddio.c \ cddlib.c \ cddproj.c \ cddcore_f.c \ cddlp_f.c \ cddmp_f.c \ cddio_f.c \ cddlib_f.c \ cddproj_f.c \ setoper.c include_HEADERS = \ cdd.h \ cddmp.h \ cddtypes.h \ cdd_f.h \ cddmp_f.h \ cddtypes_f.h \ setoper.h AM_CPPFLAGS = -I$(gmpincludedir) -DGMPRATIONAL AM_LDFLAGS = -version-info 0:0:0 all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(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 lib-src-gmp/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu lib-src-gmp/Makefile .PRECIOUS: 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 install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ else :; fi; \ done uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ p=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libcddgmp.la: $(libcddgmp_la_OBJECTS) $(libcddgmp_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(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)/cddcore.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddcore_f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddio_f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddlib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddlib_f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddlp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddlp_f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddmp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddmp_f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddproj.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddproj_f.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setoper.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" @list='$(include_HEADERS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ rm -f "$(DESTDIR)$(includedir)/$$f"; \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here 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 $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$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 $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; 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: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-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 info: info-am info-am: install-data-am: install-includeHEADERS install-dvi: install-dvi-am install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: 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: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool ctags 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 uninstall uninstall-am uninstall-includeHEADERS \ uninstall-libLTLIBRARIES # 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-094g/lib-src-gmp/cdd.h000077700000000000000000000000001206770251100204442../lib-src/cdd.hustar00rootroot00000000000000cddlib-094g/lib-src-gmp/cdd_f.h000066400000000000000000000343301206770251100163100ustar00rootroot00000000000000/* automatically generated by sed scripts from the c source named below: */ /* cdd.h: Header file for cddlib.c written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 */ /* 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-094g/lib-src-gmp/cddcore.c000077700000000000000000000000001206770251100221542../lib-src/cddcore.custar00rootroot00000000000000cddlib-094g/lib-src-gmp/cddcore_f.c000066400000000000000000001636411206770251100171640ustar00rootroot00000000000000/* automatically generated by sed scripts from the c source named below: */ /* cddcore.c: Core Procedures for cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 */ /* 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_f.h" #include #include #include #include #include void ddf_CheckAdjacency(ddf_ConePtr cone, ddf_RayPtr *RP1, ddf_RayPtr *RP2, ddf_boolean *adjacent) { ddf_RayPtr TempRay; ddf_boolean localdebug=ddf_FALSE; static ddf_rowset Face, Face1; static ddf_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; } if (ddf_debug) localdebug=ddf_TRUE; *adjacent = ddf_TRUE; set_int(Face1, (*RP1)->ZeroSet, (*RP2)->ZeroSet); set_int(Face, Face1, cone->AddedHalfspaces); if (set_card(Face)< cone->d - 2) { *adjacent = ddf_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 = ddf_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 = ddf_FALSE; } TempRay = TempRay->Next; } } void ddf_Eliminate(ddf_ConePtr cone, ddf_RayPtr*Ptr) { /*eliminate the record pointed by Ptr^.Next*/ ddf_RayPtr TempPtr; ddf_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++) ddf_clear(TempPtr->Ray[j]); ddf_clear(TempPtr->ARay); free(TempPtr->Ray); /* free the ray vector memory */ set_free(TempPtr->ZeroSet); /* free the ZeroSet memory */ free(TempPtr); /* free the ddf_Ray structure memory */ cone->RayCount--; } void ddf_SetInequalitySets(ddf_ConePtr cone) { ddf_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 ddf_AValue(myfloat *val, ddf_colrange d_size, ddf_Amatrix A, myfloat *p, ddf_rowrange i) { /*return the ith component of the vector A x p */ ddf_colrange j; myfloat x; ddf_init(x); ddf_set(*val,ddf_purezero); /* Changed by Marc Pfetsch 010219 */ for (j = 0; j < d_size; j++){ ddf_mul(x,A[i - 1][j], p[j]); ddf_add(*val, *val, x); } ddf_clear(x); } void ddf_StoreRay1(ddf_ConePtr cone, myfloat *p, ddf_boolean *feasible) { /* Original ray storing routine when RelaxedEnumeration is ddf_FALSE */ ddf_rowrange i,k,fii=cone->m+1; ddf_colrange j; myfloat temp; ddf_RayPtr RR; ddf_boolean localdebug=ddf_debug; ddf_init(temp); RR=cone->LastRay; *feasible = ddf_TRUE; set_initialize(&(RR->ZeroSet),cone->m); for (j = 0; j < cone->d; j++){ ddf_set(RR->Ray[j],p[j]); } for (i = 1; i <= cone->m; i++) { k=cone->OrderVector[i]; ddf_AValue(&temp, cone->d, cone->A, p, k); if (localdebug) { fprintf(stderr,"ddf_StoreRay1: ddf_AValue at row %ld =",k); ddf_WriteNumber(stderr, temp); fprintf(stderr,"\n"); } if (ddf_EqualToZero(temp)) { set_addelem(RR->ZeroSet, k); if (localdebug) { fprintf(stderr,"recognized zero!\n"); } } if (ddf_Negative(temp)){ if (localdebug) { fprintf(stderr,"recognized negative!\n"); } *feasible = ddf_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); ddf_WriteNumber(stderr, temp); fprintf(stderr,"\n"); } } } RR->FirstInfeasIndex=fii; RR->feasible = *feasible; ddf_clear(temp); } void ddf_StoreRay2(ddf_ConePtr cone, myfloat *p, ddf_boolean *feasible, ddf_boolean *weaklyfeasible) /* Ray storing routine when RelaxedEnumeration is ddf_TRUE. weaklyfeasible is true iff it is feasible with the strict_inequality conditions deleted. */ { ddf_RayPtr RR; ddf_rowrange i,k,fii=cone->m+1; ddf_colrange j; myfloat temp; ddf_boolean localdebug=ddf_debug; ddf_init(temp); RR=cone->LastRay; if (ddf_debug) localdebug=ddf_TRUE; *feasible = ddf_TRUE; *weaklyfeasible = ddf_TRUE; set_initialize(&(RR->ZeroSet),cone->m); for (j = 0; j < cone->d; j++){ ddf_set(RR->Ray[j],p[j]); } for (i = 1; i <= cone->m; i++) { k=cone->OrderVector[i]; ddf_AValue(&temp, cone->d, cone->A, p, k); if (ddf_EqualToZero(temp)){ set_addelem(RR->ZeroSet, k); if (cone->parent->EqualityIndex[k]==-1) *feasible=ddf_FALSE; /* strict inequality required */ } /* if (temp < -zero){ */ if (ddf_Negative(temp)){ *feasible = ddf_FALSE; if (fii>cone->m && cone->parent->EqualityIndex[k]>=0) { fii=i; /* the first violating inequality index */ *weaklyfeasible=ddf_FALSE; } } } RR->FirstInfeasIndex=fii; RR->feasible = *feasible; ddf_clear(temp); } void ddf_AddRay(ddf_ConePtr cone, myfloat *p) { ddf_boolean feasible, weaklyfeasible; ddf_colrange j; if (cone->FirstRay == NULL) { cone->FirstRay = (ddf_RayPtr) malloc(sizeof(ddf_RayType)); cone->FirstRay->Ray = (myfloat *) calloc(cone->d, sizeof(myfloat)); for (j=0; jd; j++) ddf_init(cone->FirstRay->Ray[j]); ddf_init(cone->FirstRay->ARay); if (ddf_debug) fprintf(stderr,"Create the first ray pointer\n"); cone->LastRay = cone->FirstRay; cone->ArtificialRay->Next = cone->FirstRay; } else { cone->LastRay->Next = (ddf_RayPtr) malloc(sizeof(ddf_RayType)); cone->LastRay->Next->Ray = (myfloat *) calloc(cone->d, sizeof(myfloat)); for (j=0; jd; j++) ddf_init(cone->LastRay->Next->Ray[j]); ddf_init(cone->LastRay->Next->ARay); if (ddf_debug) fprintf(stderr,"Create a new ray pointer\n"); cone->LastRay = cone->LastRay->Next; } cone->LastRay->Next = NULL; cone->RayCount++; cone->TotalRayCount++; if (ddf_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){ ddf_StoreRay2(cone, p, &feasible, &weaklyfeasible); if (weaklyfeasible) (cone->WeaklyFeasibleRayCount)++; } else { ddf_StoreRay1(cone, p, &feasible); if (feasible) (cone->WeaklyFeasibleRayCount)++; /* weaklyfeasible is equiv. to feasible in this case. */ } if (!feasible) return; else { (cone->FeasibleRayCount)++; } } void ddf_AddArtificialRay(ddf_ConePtr cone) { ddf_Arow zerovector; ddf_colrange j,d1; ddf_boolean feasible; if (cone->d<=0) d1=1; else d1=cone->d; ddf_InitializeArow(d1, &zerovector); if (cone->ArtificialRay != NULL) { fprintf(stderr,"Warning !!! FirstRay in not nil. Illegal Call\n"); free(zerovector); /* 086 */ return; } cone->ArtificialRay = (ddf_RayPtr) malloc(sizeof(ddf_RayType)); cone->ArtificialRay->Ray = (myfloat *) calloc(d1, sizeof(myfloat)); for (j=0; jArtificialRay->Ray[j]); ddf_init(cone->ArtificialRay->ARay); if (ddf_debug) fprintf(stderr,"Create the artificial ray pointer\n"); cone->LastRay=cone->ArtificialRay; ddf_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++){ ddf_clear(zerovector[j]); } free(zerovector); /* 086 */ } void ddf_ConditionalAddEdge(ddf_ConePtr cone, ddf_RayPtr Ray1, ddf_RayPtr Ray2, ddf_RayPtr ValidFirstRay) { long it,it_row,fii1,fii2,fmin,fmax; ddf_boolean adjacent,lastchance; ddf_RayPtr TempRay,Rmin,Rmax; ddf_AdjacencyType *NewEdge; ddf_boolean localdebug=ddf_FALSE; ddf_rowset ZSmin, ZSmax; static ddf_rowset Face, Face1; static ddf_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,"ddf_ConditionalAddEdge: FMIN = %ld (row%ld) FMAX=%ld\n", fmin, cone->OrderVector[fmin], fmax); } if (fmin==fmax){ if (localdebug) fprintf(stderr,"ddf_ConditionalAddEdge: equal FII value-> No edge added\n"); } else if (set_member(cone->OrderVector[fmin],ZSmax)){ if (localdebug) fprintf(stderr,"ddf_ConditionalAddEdge: No strong separation -> No edge added\n"); } else { /* the pair will be separated at the iteration fmin */ lastchance=ddf_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=ddf_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 = ddf_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 = ddf_FALSE; } else if (cone->parent->NondegAssumed) { adjacent = ddf_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 = ddf_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=(ddf_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 ddf_CreateInitialEdges(ddf_ConePtr cone) { ddf_RayPtr Ptr1, Ptr2; ddf_rowrange fii1,fii2; long count=0; ddf_boolean adj,localdebug=ddf_FALSE; cone->Iteration=cone->d; /* CHECK */ if (cone->FirstRay ==NULL || cone->LastRay==NULL){ /* fprintf(stderr,"Warning: ddf_ 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,"ddf_ CreateInitialEdges: edge %ld \n",count); ddf_CheckAdjacency(cone, &Ptr1, &Ptr2, &adj); if (fii1!=fii2 && adj) ddf_ConditionalAddEdge(cone, Ptr1, Ptr2, cone->FirstRay); Ptr2=Ptr2->Next; } Ptr1=Ptr1->Next; } _L99:; } void ddf_UpdateEdges(ddf_ConePtr cone, ddf_RayPtr RRbegin, ddf_RayPtr RRend) /* This procedure must be called after the ray list is sorted by ddf_EvaluateARay2 so that FirstInfeasIndex's are monotonically increasing. */ { ddf_RayPtr Ptr1, Ptr2begin, Ptr2; ddf_rowrange fii1; ddf_boolean ptr2found,quit,localdebug=ddf_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: ddf_UpdateEdges called with NULL pointer(s)\n"); goto _L99; } Ptr1=RRbegin; pos1=1; do{ ptr2found=ddf_FALSE; quit=ddf_FALSE; fii1=Ptr1->FirstInfeasIndex; pos2=2; for (Ptr2=Ptr1->Next; !ptr2found && !quit; Ptr2=Ptr2->Next,pos2++){ if (Ptr2->FirstInfeasIndex > fii1){ Ptr2begin=Ptr2; ptr2found=ddf_TRUE; } else if (Ptr2==RRend) quit=ddf_TRUE; } if (ptr2found){ quit=ddf_FALSE; for (Ptr2=Ptr2begin; !quit ; Ptr2=Ptr2->Next){ count++; if (localdebug) fprintf(stderr,"ddf_UpdateEdges: edge %ld \n",count); ddf_ConditionalAddEdge(cone, Ptr1,Ptr2,RRbegin); if (Ptr2==RRend || Ptr2->Next==NULL) quit=ddf_TRUE; } } Ptr1=Ptr1->Next; pos1++; workleft = 100.0 * (cone->ZeroRayCount-pos1) * (cone->ZeroRayCount - pos1-1.0) / totalpairs; if (cone->ZeroRayCount>=500 && ddf_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 ddf_FreeDDMemory0(ddf_ConePtr cone) { ddf_RayPtr Ptr, PrevPtr; long count; ddf_colrange j; ddf_boolean localdebug=ddf_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++) ddf_clear(PrevPtr->Ray[j]); ddf_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++) ddf_clear(cone->LastRay->Ray[j]); ddf_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 */ ddf_FreeBmatrix(cone->d_alloc,cone->B); ddf_FreeBmatrix(cone->d_alloc,cone->Bsave); /* Fixed by Marc Pfetsch 010219*/ ddf_FreeAmatrix(cone->m_alloc,cone->d_alloc,cone->A); cone->A = NULL; free(cone); } void ddf_FreeDDMemory(ddf_PolyhedraPtr poly) { ddf_FreeDDMemory0(poly->child); poly->child=NULL; } void ddf_FreePolyhedra(ddf_PolyhedraPtr poly) { ddf_bigrange i; if ((poly)->child != NULL) ddf_FreeDDMemory(poly); ddf_FreeAmatrix((poly)->m_alloc,poly->d_alloc, poly->A); ddf_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 ddf_Normalize(ddf_colrange d_size, myfloat *V) { long j,jmin=0; myfloat temp,min; ddf_boolean nonzerofound=ddf_FALSE; if (d_size>0){ ddf_init(min); ddf_init(temp); ddf_abs(min,V[0]); jmin=0; /* set the minmizer to 0 */ if (ddf_Positive(min)) nonzerofound=ddf_TRUE; for (j = 1; j < d_size; j++) { ddf_abs(temp,V[j]); if (ddf_Positive(temp)){ if (!nonzerofound || ddf_Smaller(temp,min)){ nonzerofound=ddf_TRUE; ddf_set(min, temp); jmin=j; } } } if (ddf_Positive(min)){ for (j = 0; j < d_size; j++) ddf_div(V[j], V[j], min); } ddf_clear(min); ddf_clear(temp); } } void ddf_ZeroIndexSet(ddf_rowrange m_size, ddf_colrange d_size, ddf_Amatrix A, myfloat *x, ddf_rowset ZS) { ddf_rowrange i; myfloat temp; /* Changed by Marc Pfetsch 010219 */ ddf_init(temp); set_emptyset(ZS); for (i = 1; i <= m_size; i++) { ddf_AValue(&temp, d_size, A, x, i); if (ddf_EqualToZero(temp)) set_addelem(ZS, i); } /* Changed by Marc Pfetsch 010219 */ ddf_clear(temp); } void ddf_CopyBmatrix(ddf_colrange d_size, ddf_Bmatrix T, ddf_Bmatrix TCOPY) { ddf_rowrange i; ddf_colrange j; for (i=0; i < d_size; i++) { for (j=0; j < d_size; j++) { ddf_set(TCOPY[i][j],T[i][j]); } } } void ddf_CopyArow(myfloat *acopy, myfloat *a, ddf_colrange d) { ddf_colrange j; for (j = 0; j < d; j++) { ddf_set(acopy[j],a[j]); } } void ddf_CopyNormalizedArow(myfloat *acopy, myfloat *a, ddf_colrange d) { ddf_CopyArow(acopy, a, d); ddf_Normalize(d,acopy); } void ddf_CopyAmatrix(myfloat **Acopy, myfloat **A, ddf_rowrange m, ddf_colrange d) { ddf_rowrange i; for (i = 0; i< m; i++) { ddf_CopyArow(Acopy[i],A[i],d); } } void ddf_CopyNormalizedAmatrix(myfloat **Acopy, myfloat **A, ddf_rowrange m, ddf_colrange d) { ddf_rowrange i; for (i = 0; i< m; i++) { ddf_CopyNormalizedArow(Acopy[i],A[i],d); } } void ddf_PermuteCopyAmatrix(myfloat **Acopy, myfloat **A, ddf_rowrange m, ddf_colrange d, ddf_rowindex roworder) { ddf_rowrange i; for (i = 1; i<= m; i++) { ddf_CopyArow(Acopy[i-1],A[roworder[i]-1],d); } } void ddf_PermutePartialCopyAmatrix(myfloat **Acopy, myfloat **A, ddf_rowrange m, ddf_colrange d, ddf_rowindex roworder,ddf_rowrange p, ddf_rowrange q) { /* copy the rows of A whose roworder is positive. roworder[i] is the row index of the copied row. */ ddf_rowrange i,k; k=0; for (i = 1; i<= m; i++) { if (roworder[i]>0) ddf_CopyArow(Acopy[roworder[i]-1],A[i-1],d); } } void ddf_InitializeArow(ddf_colrange d,ddf_Arow *a) { ddf_colrange j; if (d>0) *a=(myfloat*) calloc(d,sizeof(myfloat)); for (j = 0; j < d; j++) { ddf_init((*a)[j]); } } void ddf_InitializeAmatrix(ddf_rowrange m,ddf_colrange d,ddf_Amatrix *A) { ddf_rowrange i; if (m>0) (*A)=(myfloat**) calloc(m,sizeof(myfloat*)); for (i = 0; i < m; i++) { ddf_InitializeArow(d,&((*A)[i])); } } void ddf_FreeAmatrix(ddf_rowrange m,ddf_colrange d,ddf_Amatrix A) { ddf_rowrange i; ddf_colrange j; for (i = 0; i < m; i++) { for (j = 0; j < d; j++) { ddf_clear(A[i][j]); } } if (A!=NULL) { for (i = 0; i < m; i++) { free(A[i]); } free(A); } } void ddf_FreeArow(ddf_colrange d, ddf_Arow a) { ddf_colrange j; for (j = 0; j < d; j++) { ddf_clear(a[j]); } free(a); } void ddf_InitializeBmatrix(ddf_colrange d,ddf_Bmatrix *B) { ddf_colrange i,j; (*B)=(myfloat**) calloc(d,sizeof(myfloat*)); for (j = 0; j < d; j++) { (*B)[j]=(myfloat*) calloc(d,sizeof(myfloat)); } for (i = 0; i < d; i++) { for (j = 0; j < d; j++) { ddf_init((*B)[i][j]); } } } void ddf_FreeBmatrix(ddf_colrange d,ddf_Bmatrix B) { ddf_colrange i,j; for (i = 0; i < d; i++) { for (j = 0; j < d; j++) { ddf_clear(B[i][j]); } } if (B!=NULL) { for (j = 0; j < d; j++) { free(B[j]); } free(B); } } ddf_SetFamilyPtr ddf_CreateSetFamily(ddf_bigrange fsize, ddf_bigrange ssize) { ddf_SetFamilyPtr F; ddf_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=(ddf_SetFamilyPtr) malloc (sizeof(ddf_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 ddf_FreeSetFamily(ddf_SetFamilyPtr F) { ddf_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); } } ddf_MatrixPtr ddf_CreateMatrix(ddf_rowrange m_size,ddf_colrange d_size) { ddf_MatrixPtr M; ddf_rowrange m0,m1; ddf_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=(ddf_MatrixPtr) malloc (sizeof(ddf_MatrixType)); ddf_InitializeAmatrix(m1,d1,&(M->matrix)); ddf_InitializeArow(d1,&(M->rowvec)); M->rowsize=m0; set_initialize(&(M->linset), m1); M->colsize=d0; M->objective=ddf_LPnone; M->numbtype=ddf_Unknown; M->representation=ddf_Unspecified; return M; } void ddf_FreeMatrix(ddf_MatrixPtr M) { ddf_rowrange m1; ddf_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) { ddf_FreeAmatrix(m1,d1,M->matrix); ddf_FreeArow(d1,M->rowvec); set_free(M->linset); free(M); } } } void ddf_SetToIdentity(ddf_colrange d_size, ddf_Bmatrix T) { ddf_colrange j1, j2; for (j1 = 1; j1 <= d_size; j1++) { for (j2 = 1; j2 <= d_size; j2++) { if (j1 == j2) ddf_set(T[j1 - 1][j2 - 1],ddf_one); else ddf_set(T[j1 - 1][j2 - 1],ddf_purezero); } } } void ddf_ColumnReduce(ddf_ConePtr cone) { ddf_colrange j,j1=0; ddf_rowrange i; ddf_boolean localdebug=ddf_FALSE; for (j=1;j<=cone->d;j++) { if (cone->InitialRayIndex[j]>0){ j1=j1+1; if (j1m; i++) ddf_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++) ddf_WriteNumber(stderr, cone->B[i-1][j-1]); fprintf(stderr,"\n"); } } } cone->d=j1; /* update the dimension. cone->d_orig remembers the old. */ ddf_CopyBmatrix(cone->d_orig, cone->B, cone->Bsave); /* save the dual basis inverse as Bsave. This matrix contains the linearity space generators. */ cone->ColReduced=ddf_TRUE; } long ddf_MatrixRank(ddf_MatrixPtr M, ddf_rowset ignoredrows, ddf_colset ignoredcols, ddf_rowset *rowbasis, ddf_colset *colbasis) { ddf_boolean stop, chosen, localdebug=ddf_debug; ddf_rowset NopivotRow,PriorityRow; ddf_colset ColSelected; ddf_Bmatrix B; ddf_rowindex roworder; ddf_rowrange r; ddf_colrange s; long rank; rank = 0; stop = ddf_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); ddf_InitializeBmatrix(M->colsize, &B); ddf_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 */ ddf_SelectPivot2(M->rowsize, M->colsize,M->matrix,B,ddf_MinIndex,roworder, PriorityRow,M->rowsize, NopivotRow, ColSelected, &r, &s, &chosen); if (ddf_debug && chosen) fprintf(stderr,"Procedure ddf_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++; ddf_GaussianColumnPivot(M->rowsize, M->colsize, M->matrix, B, r, s); if (localdebug) ddf_WriteBmatrix(stderr,M->colsize,B); } else { stop=ddf_TRUE; } if (rank==M->colsize) stop = ddf_TRUE; } while (!stop); ddf_FreeBmatrix(M->colsize,B); free(roworder); set_free(ColSelected); set_free(NopivotRow); set_free(PriorityRow); return rank; } void ddf_FindBasis(ddf_ConePtr cone, long *rank) { ddf_boolean stop, chosen, localdebug=ddf_debug; ddf_rowset NopivotRow; ddf_colset ColSelected; ddf_rowrange r; ddf_colrange j,s; *rank = 0; stop = ddf_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); ddf_SetToIdentity(cone->d, cone->B); do { /* Find a set of rows for a basis */ ddf_SelectPivot2(cone->m, cone->d,cone->A,cone->B,cone->HalfspaceOrder,cone->OrderVector, cone->EqualitySet,cone->m, NopivotRow, ColSelected, &r, &s, &chosen); if (ddf_debug && chosen) fprintf(stderr,"Procedure ddf_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)++; ddf_GaussianColumnPivot(cone->m, cone->d, cone->A, cone->B, r, s); if (localdebug) ddf_WriteBmatrix(stderr,cone->d,cone->B); } else { stop=ddf_TRUE; } if (*rank==cone->d) stop = ddf_TRUE; } while (!stop); set_free(ColSelected); set_free(NopivotRow); } void ddf_FindInitialRays(ddf_ConePtr cone, ddf_boolean *found) { ddf_rowset CandidateRows; ddf_rowrange i; long rank; ddf_RowOrderType roworder_save=ddf_LexMin; *found = ddf_FALSE; set_initialize(&CandidateRows, cone->m); if (cone->parent->InitBasisAtBottom==ddf_TRUE) { roworder_save=cone->HalfspaceOrder; cone->HalfspaceOrder=ddf_MaxIndex; cone->PreOrderedRun=ddf_FALSE; } else cone->PreOrderedRun=ddf_TRUE; if (ddf_debug) ddf_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*/ ddf_FindBasis(cone, &rank); if (ddf_debug) ddf_WriteBmatrix(stderr, cone->d, cone->B); if (ddf_debug) fprintf(stderr,"ddf_FindInitialRays: rank of Amatrix = %ld\n", rank); cone->LinearityDim=cone->d - rank; if (ddf_debug) fprintf(stderr,"Linearity Dimension = %ld\n", cone->LinearityDim); if (cone->LinearityDim > 0) { ddf_ColumnReduce(cone); ddf_FindBasis(cone, &rank); } if (!set_subset(cone->EqualitySet,cone->InitialHalfspaces)) { if (ddf_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 = ddf_TRUE; set_free(CandidateRows); if (cone->parent->InitBasisAtBottom==ddf_TRUE) { cone->HalfspaceOrder=roworder_save; } if (cone->HalfspaceOrder==ddf_MaxCutoff|| cone->HalfspaceOrder==ddf_MinCutoff|| cone->HalfspaceOrder==ddf_MixCutoff){ cone->PreOrderedRun=ddf_FALSE; } else cone->PreOrderedRun=ddf_TRUE; } void ddf_CheckEquality(ddf_colrange d_size, ddf_RayPtr*RP1, ddf_RayPtr*RP2, ddf_boolean *equal) { long j; if (ddf_debug) fprintf(stderr,"Check equality of two rays\n"); *equal = ddf_TRUE; j = 1; while (j <= d_size && *equal) { if (!ddf_Equal((*RP1)->Ray[j - 1],(*RP2)->Ray[j - 1])) *equal = ddf_FALSE; j++; } if (*equal) fprintf(stderr,"Equal records found !!!!\n"); } void ddf_CreateNewRay(ddf_ConePtr cone, ddf_RayPtr Ptr1, ddf_RayPtr Ptr2, ddf_rowrange ii) { /*Create a new ray by taking a linear combination of two rays*/ ddf_colrange j; myfloat a1, a2, v1, v2; static ddf_Arow NewRay; static ddf_colrange last_d=0; ddf_boolean localdebug=ddf_debug; ddf_init(a1); ddf_init(a2); ddf_init(v1); ddf_init(v2); if (last_d!=cone->d){ if (last_d>0) { for (j=0; jd,sizeof(myfloat)); for (j=0; jd; j++) ddf_init(NewRay[j]); last_d=cone->d; } ddf_AValue(&a1, cone->d, cone->A, Ptr1->Ray, ii); ddf_AValue(&a2, cone->d, cone->A, Ptr2->Ray, ii); if (localdebug) { fprintf(stderr,"CreatNewRay: Ray1 ="); ddf_WriteArow(stderr, Ptr1->Ray, cone->d); fprintf(stderr,"CreatNewRay: Ray2 ="); ddf_WriteArow(stderr, Ptr2->Ray, cone->d); } ddf_abs(v1,a1); ddf_abs(v2,a2); if (localdebug){ fprintf(stderr,"ddf_AValue1 and ABS"); ddf_WriteNumber(stderr,a1); ddf_WriteNumber(stderr,v1); fprintf(stderr,"\n"); fprintf(stderr,"ddf_AValue2 and ABS"); ddf_WriteNumber(stderr,a2); ddf_WriteNumber(stderr,v2); fprintf(stderr,"\n"); } for (j = 0; j < cone->d; j++){ ddf_LinearComb(NewRay[j], Ptr1->Ray[j],v2,Ptr2->Ray[j],v1); } if (localdebug) { fprintf(stderr,"CreatNewRay: New ray ="); ddf_WriteArow(stderr, NewRay, cone->d); } ddf_Normalize(cone->d, NewRay); if (localdebug) { fprintf(stderr,"CreatNewRay: ddf_Normalized ray ="); ddf_WriteArow(stderr, NewRay, cone->d); } ddf_AddRay(cone, NewRay); ddf_clear(a1); ddf_clear(a2); ddf_clear(v1); ddf_clear(v2); } void ddf_EvaluateARay1(ddf_rowrange i, ddf_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 */ { ddf_colrange j; myfloat temp,tnext; ddf_RayPtr Ptr, PrevPtr, TempPtr; ddf_init(temp); ddf_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) { ddf_set(temp,ddf_purezero); for (j = 0; j < cone->d; j++){ ddf_mul(tnext,cone->A[i - 1][j],Ptr->Ray[j]); ddf_add(temp,temp,tnext); } ddf_set(Ptr->ARay,temp); /* if ( temp <= -zero && Ptr != cone->FirstRay) {*/ if ( ddf_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; } } ddf_clear(temp); ddf_clear(tnext); } void ddf_EvaluateARay2(ddf_rowrange i, ddf_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. */ { ddf_colrange j; myfloat temp,tnext; ddf_RayPtr Ptr, NextPtr; ddf_boolean zerofound=ddf_FALSE,negfound=ddf_FALSE,posfound=ddf_FALSE; if (cone==NULL || cone->TotalRayCount<=0) goto _L99; ddf_init(temp); ddf_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 */ ddf_set(temp,ddf_purezero); for (j = 0; j < cone->d; j++){ ddf_mul(tnext,cone->A[i - 1][j],Ptr->Ray[j]); ddf_add(temp,temp,tnext); } ddf_set(Ptr->ARay,temp); /* if ( temp < -zero) {*/ if ( ddf_Negative(temp)) { if (!negfound){ negfound=ddf_TRUE; cone->NegHead=Ptr; cone->NegLast=Ptr; } else{ Ptr->Next=cone->NegHead; cone->NegHead=Ptr; } } /* else if (temp > zero){*/ else if (ddf_Positive(temp)){ if (!posfound){ posfound=ddf_TRUE; cone->PosHead=Ptr; cone->PosLast=Ptr; } else{ Ptr->Next=cone->PosHead; cone->PosHead=Ptr; } } else { if (!zerofound){ zerofound=ddf_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; ddf_clear(temp); ddf_clear(tnext); _L99:; } void ddf_DeleteNegativeRays(ddf_ConePtr cone) /* Eliminate the infeasible rays with respect to i which are supposed to be consecutive from the head of the ddf_Ray list, and sort the zero list assumed to be consecutive at the end of the list. */ { ddf_rowrange fii,fiitest; myfloat temp; ddf_RayPtr Ptr, PrevPtr,NextPtr,ZeroPtr1,ZeroPtr0; ddf_boolean found, completed, zerofound=ddf_FALSE,negfound=ddf_FALSE,posfound=ddf_FALSE; ddf_boolean localdebug=ddf_FALSE; ddf_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 ddf_DeleteNegativeRays: ArtificialRay does not point the FirstRay.\n"); completed=ddf_FALSE; while (Ptr != NULL && !completed){ /* if ( (Ptr->ARay) < -zero ){ */ if ( ddf_Negative(Ptr->ARay)){ ddf_Eliminate(cone, &PrevPtr); Ptr=PrevPtr->Next; } else{ completed=ddf_TRUE; } } /* Sort the zero rays */ Ptr = cone->FirstRay; cone->ZeroRayCount=0; while (Ptr != NULL) { NextPtr=Ptr->Next; /* remember the Next record */ ddf_set(temp,Ptr->ARay); if (localdebug) {fprintf(stderr,"Ptr->ARay :"); ddf_WriteNumber(stderr, temp);} /* if ( temp < -zero) {*/ if ( ddf_Negative(temp)) { if (!negfound){ fprintf(stderr,"Error: An infeasible ray found after their removal\n"); negfound=ddf_TRUE; } } /* else if (temp > zero){*/ else if (ddf_Positive(temp)){ if (!posfound){ posfound=ddf_TRUE; cone->PosHead=Ptr; cone->PosLast=Ptr; } else{ cone->PosLast=Ptr; } } else { (cone->ZeroRayCount)++; if (!zerofound){ zerofound=ddf_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=ddf_FALSE; ZeroPtr1=NULL; for (ZeroPtr0=cone->ZeroHead; !found && ZeroPtr0!=NULL ; ZeroPtr0=ZeroPtr0->Next){ fiitest=ZeroPtr0->FirstInfeasIndex; if (fiitest >= fii){ found=ddf_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; ddf_clear(temp); } void ddf_FeasibilityIndices(long *fnum, long *infnum, ddf_rowrange i, ddf_ConePtr cone) { /*Evaluate the number of feasible rays and infeasible rays*/ /* w.r.t the hyperplane i*/ ddf_colrange j; myfloat temp, tnext; ddf_RayPtr Ptr; ddf_init(temp); ddf_init(tnext); *fnum = 0; *infnum = 0; Ptr = cone->FirstRay; while (Ptr != NULL) { ddf_set(temp,ddf_purezero); for (j = 0; j < cone->d; j++){ ddf_mul(tnext, cone->A[i - 1][j],Ptr->Ray[j]); ddf_add(temp, temp, tnext); } if (ddf_Nonnegative(temp)) (*fnum)++; else (*infnum)++; Ptr = Ptr->Next; } ddf_clear(temp); ddf_clear(tnext); } ddf_boolean ddf_LexSmaller(myfloat *v1, myfloat *v2, long dmax) { /* dmax is the size of vectors v1,v2 */ ddf_boolean determined, smaller; ddf_colrange j; smaller = ddf_FALSE; determined = ddf_FALSE; j = 1; do { if (!ddf_Equal(v1[j - 1],v2[j - 1])) { /* 086 */ if (ddf_Smaller(v1[j - 1],v2[j - 1])) { /*086 */ smaller = ddf_TRUE; } determined = ddf_TRUE; } else j++; } while (!(determined) && (j <= dmax)); return smaller; } ddf_boolean ddf_LexLarger(myfloat *v1, myfloat *v2, long dmax) { return ddf_LexSmaller(v2, v1, dmax); } ddf_boolean ddf_LexEqual(myfloat *v1, myfloat *v2, long dmax) { /* dmax is the size of vectors v1,v2 */ ddf_boolean determined, equal; ddf_colrange j; equal = ddf_TRUE; determined = ddf_FALSE; j = 1; do { if (!ddf_Equal(v1[j - 1],v2[j - 1])) { /* 093c */ equal = ddf_FALSE; determined = ddf_TRUE; } else { j++; } } while (!(determined) && (j <= dmax)); return equal; } void ddf_AddNewHalfspace1(ddf_ConePtr cone, ddf_rowrange hnew) /* This procedure 1 must be used with PreorderedRun=ddf_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. */ { ddf_RayPtr RayPtr0,RayPtr1,RayPtr2,RayPtr2s,RayPtr3; long pos1, pos2; double prevprogress, progress; myfloat value1, value2; ddf_boolean adj, equal, completed; ddf_init(value1); ddf_init(value2); ddf_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*/ ddf_set(value1,cone->FirstRay->ARay); if (ddf_Nonnegative(value1)) { if (cone->RayCount==cone->WeaklyFeasibleRayCount) cone->CompStatus=ddf_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 && ddf_Negative(RayPtr2s->ARay)) { RayPtr2s = RayPtr2s->Next; pos2++; } } if (RayPtr2s==NULL) { cone->FirstRay=NULL; cone->ArtificialRay->Next=cone->FirstRay; cone->RayCount=0; cone->CompStatus=ddf_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=ddf_FALSE; while ((RayPtr1 != RayPtr2s) && !completed) { ddf_set(value1,RayPtr1->ARay); ddf_set(value2,RayPtr2->ARay); ddf_CheckEquality(cone->d, &RayPtr1, &RayPtr2, &equal); if ((ddf_Positive(value1) && ddf_Negative(value2)) || (ddf_Negative(value1) && ddf_Positive(value2))){ ddf_CheckAdjacency(cone, &RayPtr1, &RayPtr2, &adj); if (adj) ddf_CreateNewRay(cone, RayPtr1, RayPtr2, hnew); } if (RayPtr2 != RayPtr3) { RayPtr2 = RayPtr2->Next; continue; } if (ddf_Negative(value1) || equal) { ddf_Eliminate(cone, &RayPtr0); RayPtr1 = RayPtr0->Next; RayPtr2 = RayPtr2s; } else { completed=ddf_TRUE; } pos1++; progress = 100.0 * ((double)pos1 / pos2) * (2.0 * pos2 - pos1) / pos2; if (progress-prevprogress>=10 && pos1%10==0 && ddf_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=ddf_AllFound; _L99:; ddf_clear(value1); ddf_clear(value2); } void ddf_AddNewHalfspace2(ddf_ConePtr cone, ddf_rowrange hnew) /* This procedure must be used under PreOrderedRun mode */ { ddf_RayPtr RayPtr0,RayPtr1,RayPtr2; ddf_AdjacencyType *EdgePtr, *EdgePtr0; long pos1; ddf_rowrange fii1, fii2; ddf_boolean localdebug=ddf_FALSE; ddf_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=ddf_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); ddf_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; ddf_CreateNewRay(cone, RayPtr1, RayPtr2, hnew); fii2=cone->LastRay->FirstInfeasIndex; if (fii1 != fii2) ddf_ConditionalAddEdge(cone,RayPtr1,cone->LastRay,cone->PosHead); EdgePtr0=EdgePtr; EdgePtr=EdgePtr->Next; free(EdgePtr0); (cone->EdgeCount)--; } cone->Edges[cone->Iteration]=NULL; ddf_DeleteNegativeRays(cone); set_addelem(cone->AddedHalfspaces, hnew); if (cone->Iterationm){ if (cone->ZeroHead!=NULL && cone->ZeroHead!=cone->LastRay){ if (cone->ZeroRayCount>200 && ddf_debug) fprintf(stderr,"*New edges being scanned...\n"); ddf_UpdateEdges(cone, cone->ZeroHead, cone->LastRay); } } if (cone->RayCount==cone->WeaklyFeasibleRayCount) cone->CompStatus=ddf_AllFound; _L99:; } void ddf_SelectNextHalfspace0(ddf_ConePtr cone, ddf_rowset excluded, ddf_rowrange *hnext) { /*A natural way to choose the next hyperplane. Simply the largest index*/ long i; ddf_boolean determined; i = cone->m; determined = ddf_FALSE; do { if (set_member(i, excluded)) i--; else determined = ddf_TRUE; } while (!determined && i>=1); if (determined) *hnext = i; else *hnext = 0; } void ddf_SelectNextHalfspace1(ddf_ConePtr cone, ddf_rowset excluded, ddf_rowrange *hnext) { /*Natural way to choose the next hyperplane. Simply the least index*/ long i; ddf_boolean determined; i = 1; determined = ddf_FALSE; do { if (set_member(i, excluded)) i++; else determined = ddf_TRUE; } while (!determined && i<=cone->m); if (determined) *hnext = i; else *hnext=0; } void ddf_SelectNextHalfspace2(ddf_ConePtr cone, ddf_rowset excluded, ddf_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)) { ddf_FeasibilityIndices(&fea, &inf, i, cone); if (inf < infmin) { infmin = inf; fi = fea; *hnext = i; } } } if (ddf_debug) { fprintf(stderr,"*infeasible rays (min) =%5ld, #feas rays =%5ld\n", infmin, fi); } } void ddf_SelectNextHalfspace3(ddf_ConePtr cone, ddf_rowset excluded, ddf_rowrange *hnext) { /*Choose the next hyperplane with maximum infeasibility*/ long i, fea, inf, infmax, fi=0; /*feasibility and infeasibility numbers*/ ddf_boolean localdebug=ddf_debug; infmax = -1; for (i = 1; i <= cone->m; i++) { if (!set_member(i, excluded)) { ddf_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 ddf_SelectNextHalfspace4(ddf_ConePtr cone, ddf_rowset excluded, ddf_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)) { ddf_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 (!ddf_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 ddf_SelectNextHalfspace5(ddf_ConePtr cone, ddf_rowset excluded, ddf_rowrange *hnext) { /*Choose the next hyperplane which is lexico-min*/ long i, minindex; myfloat *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 (ddf_LexSmaller(v2,v1,cone->d)) { minindex = i; v1=v2; } } } *hnext = minindex; } void ddf_SelectNextHalfspace6(ddf_ConePtr cone, ddf_rowset excluded, ddf_rowrange *hnext) { /*Choose the next hyperplane which is lexico-max*/ long i, maxindex; myfloat *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 (ddf_LexLarger(v2, v1, cone->d)) { maxindex = i; v1=v2; } } } *hnext = maxindex; } void ddf_UniqueRows(ddf_rowindex OV, long p, long r, ddf_Amatrix A, long dmax, ddf_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; myfloat *x; ddf_boolean localdebug=ddf_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 (!ddf_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 ddf_Partition(ddf_rowindex OV, long p, long r, ddf_Amatrix A, long dmax) { myfloat *x; long i,j,ovi; x=A[OV[p]-1]; i=p-1; j=r+1; while (ddf_TRUE){ do{ j--; } while (ddf_LexLarger(A[OV[j]-1],x,dmax)); do{ i++; } while (ddf_LexSmaller(A[OV[i]-1],x,dmax)); if (i1 ; j--) { r=rand(); 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 ddf_ComputeRowOrderVector(ddf_ConePtr cone) { long i,itemp; cone->OrderVector[0]=0; switch (cone->HalfspaceOrder){ case ddf_MaxIndex: for(i=1; i<=cone->m; i++) cone->OrderVector[i]=cone->m-i+1; break; case ddf_MinIndex: for(i=1; i<=cone->m; i++) cone->OrderVector[i]=i; break; case ddf_LexMin: case ddf_MinCutoff: case ddf_MixCutoff: case ddf_MaxCutoff: for(i=1; i<=cone->m; i++) cone->OrderVector[i]=i; ddf_RandomPermutation(cone->OrderVector, cone->m, cone->rseed); ddf_QuickSort(cone->OrderVector, 1, cone->m, cone->A, cone->d); break; case ddf_LexMax: for(i=1; i<=cone->m; i++) cone->OrderVector[i]=i; ddf_RandomPermutation(cone->OrderVector, cone->m, cone->rseed); ddf_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 ddf_RandomRow: for(i=1; i<=cone->m; i++) cone->OrderVector[i]=i; ddf_RandomPermutation(cone->OrderVector, cone->m, cone->rseed); break; } } void ddf_UpdateRowOrderVector(ddf_ConePtr cone, ddf_rowset PriorityRows) /* Update the RowOrder vector to shift selected rows in highest order. */ { ddf_rowrange i,j,k,j1=0,oj=0; long rr; ddf_boolean found, localdebug=ddf_FALSE; if (ddf_debug) localdebug=ddf_TRUE; found=ddf_TRUE; rr=set_card(PriorityRows); if (localdebug) set_fwrite(stderr,PriorityRows); for (i=1; i<=rr; i++){ found=ddf_FALSE; for (j=i; j<=cone->m && !found; j++){ oj=cone->OrderVector[j]; if (set_member(oj, PriorityRows)){ found=ddf_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 ddf_SelectPreorderedNext(ddf_ConePtr cone, ddf_rowset excluded, ddf_rowrange *hh) { ddf_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 ddf_SelectNextHalfspace(ddf_ConePtr cone, ddf_rowset excluded, ddf_rowrange *hh) { if (cone->PreOrderedRun){ if (ddf_debug) { fprintf(stderr,"debug ddf_SelectNextHalfspace: Use PreorderNext\n"); } ddf_SelectPreorderedNext(cone, excluded, hh); } else { if (ddf_debug) { fprintf(stderr,"debug ddf_SelectNextHalfspace: Use DynamicOrderedNext\n"); } switch (cone->HalfspaceOrder) { case ddf_MaxIndex: ddf_SelectNextHalfspace0(cone, excluded, hh); break; case ddf_MinIndex: ddf_SelectNextHalfspace1(cone, excluded, hh); break; case ddf_MinCutoff: ddf_SelectNextHalfspace2(cone, excluded, hh); break; case ddf_MaxCutoff: ddf_SelectNextHalfspace3(cone, excluded, hh); break; case ddf_MixCutoff: ddf_SelectNextHalfspace4(cone, excluded, hh); break; default: ddf_SelectNextHalfspace0(cone, excluded, hh); break; } } } ddf_boolean ddf_Nonnegative(myfloat val) { /* if (val>=-ddf_zero) return ddf_TRUE; */ if (ddf_cmp(val,ddf_minuszero)>=0) return ddf_TRUE; else return ddf_FALSE; } ddf_boolean ddf_Nonpositive(myfloat val) { /* if (val<=ddf_zero) return ddf_TRUE; */ if (ddf_cmp(val,ddf_zero)<=0) return ddf_TRUE; else return ddf_FALSE; } ddf_boolean ddf_Positive(myfloat val) { return !ddf_Nonpositive(val); } ddf_boolean ddf_Negative(myfloat val) { return !ddf_Nonnegative(val); } ddf_boolean ddf_EqualToZero(myfloat val) { return (ddf_Nonnegative(val) && ddf_Nonpositive(val)); } ddf_boolean ddf_Nonzero(myfloat val) { return (ddf_Positive(val) || ddf_Negative(val)); } ddf_boolean ddf_Equal(myfloat val1,myfloat val2) { return (!ddf_Larger(val1,val2) && !ddf_Smaller(val1,val2)); } ddf_boolean ddf_Larger(myfloat val1,myfloat val2) { myfloat temp; ddf_boolean answer; ddf_init(temp); ddf_sub(temp,val1, val2); answer=ddf_Positive(temp); ddf_clear(temp); return answer; } ddf_boolean ddf_Smaller(myfloat val1,myfloat val2) { return ddf_Larger(val2,val1); } void ddf_abs(myfloat absval, myfloat val) { if (ddf_Negative(val)) ddf_neg(absval,val); else ddf_set(absval,val); } void ddf_LinearComb(myfloat lc, myfloat v1, myfloat c1, myfloat v2, myfloat c2) /* lc := v1 * c1 + v2 * c2 */ { myfloat temp; ddf_init(temp); ddf_mul(lc,v1,c1); ddf_mul(temp,v2,c2); ddf_add(lc,lc,temp); ddf_clear(temp); } void ddf_InnerProduct(myfloat prod, ddf_colrange d, ddf_Arow v1, ddf_Arow v2) { myfloat temp; ddf_colrange j; ddf_boolean localdebug=ddf_FALSE; ddf_init(temp); ddf_set_si(prod, 0); for (j = 0; j < d; j++){ ddf_mul(temp,v1[j],v2[j]); ddf_add(prod,prod,temp); } if (localdebug) { fprintf(stderr,"InnerProduct:\n"); ddf_WriteArow(stderr, v1, d); ddf_WriteArow(stderr, v2, d); fprintf(stderr,"prod ="); ddf_WriteNumber(stderr, prod); fprintf(stderr,"\n"); } ddf_clear(temp); } /* end of cddcore.c */ cddlib-094g/lib-src-gmp/cddio.c000077700000000000000000000000001206770251100213122../lib-src/cddio.custar00rootroot00000000000000cddlib-094g/lib-src-gmp/cddio_f.c000066400000000000000000001553351206770251100166440ustar00rootroot00000000000000/* automatically generated by sed scripts from the c source named below: */ /* cddio.c: Basic Input and Output Procedures for cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 */ /* 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_f.h" #include #include #include #include #include /* void ddf_fread_rational_value (FILE *, myfloat *); */ void ddf_SetLinearity(ddf_MatrixPtr, char *); void ddf_SetInputFile(FILE **f,ddf_DataFileType inputfile,ddf_ErrorType *Error) { int opened=0,stop,quit=0; int i,dotpos=0,trial=0; char ch; char *tempname; *Error=ddf_NoError; while (!opened && !quit) { fprintf(stderr,"\n>> Input file: "); scanf("%s",inputfile); ch=getchar(); stop=ddf_FALSE; for (i=0; i5) { *Error=ddf_IFileNotFound; quit=1; } } } } void ddf_SetWriteFileName(ddf_DataFileType inputfile, ddf_DataFileType outfile, char cflag, ddf_RepresentationType rep) { char *extension; ddf_DataFileType ifilehead=""; int i,dotpos; switch (cflag) { case 'o': switch (rep) { case ddf_Generator: extension=".ine"; break; /* output file for ine data */ case ddf_Inequality: extension=".ext"; break; /* output file for ext data */ default: extension=".xxx";break; } break; case 'a': /* decide for output adjacence */ if (rep==ddf_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==ddf_Inequality) extension=".ecd"; /* ext incidence file */ else extension=".icd"; /* ine incidence file */ break; case 'n': /* decide for input incidence */ if (rep==ddf_Inequality) extension=".icd"; /* ine incidence file */ else extension=".ecd"; /* ext incidence file */ break; case 'j': /* decide for input adjacency */ if (rep==ddf_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); */ } ddf_NumberType ddf_GetNumberType(const char *line) { ddf_NumberType nt; if (strncmp(line, "integer", 7)==0) { nt = ddf_Integer; } else if (strncmp(line, "rational", 8)==0) { nt = ddf_Rational; } else if (strncmp(line, "real", 4)==0) { nt = ddf_Real; } else { nt=ddf_Unknown; } return nt; } void ddf_ProcessCommandLine(FILE *f, ddf_MatrixPtr M, const char *line) { char newline[ddf_linelenmax]; ddf_colrange j; myfloat value; ddf_init(value); if (strncmp(line, "hull", 4)==0) { M->representation = ddf_Generator; } if (strncmp(line, "debug", 5)==0) { ddf_debug = ddf_TRUE; #ifdef ddf_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,ddf_linelenmax,f); ddf_SetLinearity(M,newline); } if (strncmp(line, "maximize", 8)==0 || strncmp(line, "minimize", 8)==0) { if (strncmp(line, "maximize", 8)==0) M->objective=ddf_LPmax; else M->objective=ddf_LPmin; for (j = 1; j <= M->colsize; j++) { if (M->numbtype==ddf_Real) { #if !defined(ddf_GMPRATIONAL) double rvalue; fscanf(f, "%lf", &rvalue); ddf_set_d(value, rvalue); #endif } else { ddf_fread_rational_value (f, value); } ddf_set(M->rowvec[j - 1],value); if (ddf_debug) {fprintf(stderr,"cost(%5ld) =",j); ddf_WriteNumber(stderr,value);} } /*of j*/ } ddf_clear(value); } ddf_boolean ddf_AppendMatrix2Poly(ddf_PolyhedraPtr *poly, ddf_MatrixPtr M) { ddf_boolean success=ddf_FALSE; ddf_MatrixPtr Mpoly,Mnew=NULL; ddf_ErrorType err; if ((*poly)!=NULL && (*poly)->m >=0 && (*poly)->d>=0 && (*poly)->d==M->colsize && M->rowsize>0){ Mpoly=ddf_CopyInput(*poly); Mnew=ddf_AppendMatrix(Mpoly, M); ddf_FreePolyhedra(*poly); *poly=ddf_DDMatrix2Poly(Mnew,&err); ddf_FreeMatrix(Mpoly); ddf_FreeMatrix(Mnew); if (err==ddf_NoError) success=ddf_TRUE; } return success; } ddf_MatrixPtr ddf_MatrixCopy(ddf_MatrixPtr M) { ddf_MatrixPtr Mcopy=NULL; ddf_rowrange m; ddf_colrange d; m= M->rowsize; d= M->colsize; if (m >=0 && d >=0){ Mcopy=ddf_CreateMatrix(m, d); ddf_CopyAmatrix(Mcopy->matrix, M->matrix, m, d); ddf_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; } ddf_MatrixPtr ddf_CopyMatrix(ddf_MatrixPtr M) { return ddf_MatrixCopy(M); } ddf_MatrixPtr ddf_MatrixNormalizedCopy(ddf_MatrixPtr M) { ddf_MatrixPtr Mcopy=NULL; ddf_rowrange m; ddf_colrange d; m= M->rowsize; d= M->colsize; if (m >=0 && d >=0){ Mcopy=ddf_CreateMatrix(m, d); ddf_CopyNormalizedAmatrix(Mcopy->matrix, M->matrix, m, d); ddf_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; } ddf_MatrixPtr ddf_MatrixAppend(ddf_MatrixPtr M1, ddf_MatrixPtr M2) { ddf_MatrixPtr M=NULL; ddf_rowrange i, m,m1,m2; ddf_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=ddf_CreateMatrix(m, d); ddf_CopyAmatrix(M->matrix, M1->matrix, m1, d); ddf_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; } ddf_MatrixPtr ddf_MatrixNormalizedSortedCopy(ddf_MatrixPtr M,ddf_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). */ ddf_MatrixPtr Mcopy=NULL,Mnorm=NULL; ddf_rowrange m,i; ddf_colrange d; ddf_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=ddf_MatrixNormalizedCopy(M); Mcopy=ddf_CreateMatrix(m, d); for(i=1; i<=m; i++) roworder[i]=i; ddf_RandomPermutation(roworder, m, 123); ddf_QuickSort(roworder,1,m,Mnorm->matrix,d); ddf_PermuteCopyAmatrix(Mcopy->matrix, Mnorm->matrix, m, d, roworder); ddf_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; ddf_FreeMatrix(Mnorm); } free(roworder); return Mcopy; } ddf_MatrixPtr ddf_MatrixUniqueCopy(ddf_MatrixPtr M,ddf_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 ddf_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. */ ddf_MatrixPtr Mcopy=NULL; ddf_rowrange m,i,uniqrows; ddf_rowset preferredrows; ddf_colrange d; ddf_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; ddf_UniqueRows(roworder, 1, m, M->matrix, d,preferredrows, &uniqrows); Mcopy=ddf_CreateMatrix(uniqrows, d); ddf_PermutePartialCopyAmatrix(Mcopy->matrix, M->matrix, m, d, roworder,1,m); ddf_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; } ddf_MatrixPtr ddf_MatrixNormalizedSortedUniqueCopy(ddf_MatrixPtr M,ddf_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 ddf_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. */ ddf_MatrixPtr M1=NULL,M2=NULL; ddf_rowrange m,i; ddf_colrange d; ddf_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=ddf_MatrixNormalizedSortedCopy(M,&newpos1); for (i=1; i<=m;i++) newpos1r[newpos1[i]]=i; /* reverse of newpos1 */ M2=ddf_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]]]; } } ddf_FreeMatrix(M1);free(newpos1);free(newpos2);free(newpos1r); } return M2; } ddf_MatrixPtr ddf_MatrixSortedUniqueCopy(ddf_MatrixPtr M,ddf_rowindex *newpos) /* 094 */ { /* Same as ddf_MatrixNormalizedSortedUniqueCopy except that it returns a unnormalized origial data with original ordering. */ ddf_MatrixPtr M1=NULL,M2=NULL; ddf_rowrange m,i,k,ii; ddf_colrange d; ddf_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=ddf_MatrixNormalizedSortedCopy(M,&newpos1); for (i=1; i<=m;i++) newpos1r[newpos1[i]]=i; /* reverse of newpos1 */ M2=ddf_MatrixUniqueCopy(M1,&newpos2); ddf_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; ddf_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; } ddf_MatrixPtr ddf_AppendMatrix(ddf_MatrixPtr M1, ddf_MatrixPtr M2) { return ddf_MatrixAppend(M1,M2); } int ddf_MatrixAppendTo(ddf_MatrixPtr *M1, ddf_MatrixPtr M2) { ddf_MatrixPtr M=NULL; ddf_rowrange i, m,m1,m2; ddf_colrange j, d,d1,d2; ddf_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=ddf_CreateMatrix(m, d); ddf_CopyAmatrix(M->matrix, (*M1)->matrix, m1, d); ddf_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; ddf_FreeMatrix(*M1); *M1=M; success=1; } return success; } int ddf_MatrixRowRemove(ddf_MatrixPtr *M, ddf_rowrange r) /* 092 */ { ddf_rowrange i,m; ddf_colrange d; ddf_boolean success=0; m=(*M)->rowsize; d=(*M)->colsize; if (r >= 1 && r <=m){ (*M)->rowsize=m-1; ddf_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 ddf_MatrixRowRemove2(ddf_MatrixPtr *M, ddf_rowrange r, ddf_rowindex *newpos) /* 094 */ { ddf_rowrange i,m; ddf_colrange d; ddf_boolean success=0; ddf_rowindex roworder; m=(*M)->rowsize; d=(*M)->colsize; if (r >= 1 && r <=m){ roworder=(long *)calloc(m+1,sizeof(long)); (*M)->rowsize=m-1; ddf_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; } ddf_MatrixPtr ddf_MatrixSubmatrix(ddf_MatrixPtr M, ddf_rowset delset) /* 092 */ { ddf_MatrixPtr Msub=NULL; ddf_rowrange i,isub=1, m,msub; ddf_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=ddf_CreateMatrix(msub, d); for (i=1; i<=m; i++){ if (!set_member(i,delset)){ ddf_CopyArow(Msub->matrix[isub-1], M->matrix[i-1], d); if (set_member(i, M->linset)){ set_addelem(Msub->linset,isub); } isub++; } } ddf_CopyArow(Msub->rowvec, M->rowvec, d); Msub->numbtype=M->numbtype; Msub->representation=M->representation; Msub->objective=M->objective; } return Msub; } ddf_MatrixPtr ddf_MatrixSubmatrix2(ddf_MatrixPtr M, ddf_rowset delset,ddf_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. */ ddf_MatrixPtr Msub=NULL; ddf_rowrange i,isub=1, m,msub; ddf_colrange d; ddf_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=ddf_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 { ddf_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; ddf_CopyArow(Msub->rowvec, M->rowvec, d); Msub->numbtype=M->numbtype; Msub->representation=M->representation; Msub->objective=M->objective; } return Msub; } ddf_MatrixPtr ddf_MatrixSubmatrix2L(ddf_MatrixPtr M, ddf_rowset delset,ddf_rowindex *newpos) /* 094 */ { /* This is same as ddf_MatrixSubmatrix2 except that the linearity rows will be shifted up so that they are at the top of the matrix. */ ddf_MatrixPtr Msub=NULL; ddf_rowrange i,iL, iI, m,msub; ddf_colrange d; ddf_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=ddf_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)){ ddf_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 { ddf_CopyArow(Msub->matrix[iI-1], M->matrix[i-1], d); roworder[i]=iI; iI+=1; } } } *newpos=roworder; ddf_CopyArow(Msub->rowvec, M->rowvec, d); Msub->numbtype=M->numbtype; Msub->representation=M->representation; Msub->objective=M->objective; } return Msub; } int ddf_MatrixRowsRemove(ddf_MatrixPtr *M, ddf_rowset delset) /* 094 */ { ddf_MatrixPtr Msub=NULL; int success; Msub=ddf_MatrixSubmatrix(*M, delset); ddf_FreeMatrix(*M); *M=Msub; success=1; return success; } int ddf_MatrixRowsRemove2(ddf_MatrixPtr *M, ddf_rowset delset,ddf_rowindex *newpos) /* 094 */ { ddf_MatrixPtr Msub=NULL; int success; Msub=ddf_MatrixSubmatrix2(*M, delset,newpos); ddf_FreeMatrix(*M); *M=Msub; success=1; return success; } int ddf_MatrixShiftupLinearity(ddf_MatrixPtr *M,ddf_rowindex *newpos) /* 094 */ { ddf_MatrixPtr Msub=NULL; int success; ddf_rowset delset; set_initialize(&delset,(*M)->rowsize); /* emptyset */ Msub=ddf_MatrixSubmatrix2L(*M, delset,newpos); ddf_FreeMatrix(*M); *M=Msub; set_free(delset); success=1; return success; } ddf_PolyhedraPtr ddf_CreatePolyhedraData(ddf_rowrange m, ddf_colrange d) { ddf_rowrange i; ddf_PolyhedraPtr poly=NULL; poly=(ddf_PolyhedraPtr) malloc (sizeof(ddf_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=ddf_Real; ddf_InitializeAmatrix(poly->m_alloc,poly->d_alloc,&(poly->A)); ddf_InitializeArow(d,&(poly->c)); /* cost vector */ poly->representation =ddf_Inequality; poly->homogeneous =ddf_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 = ddf_FALSE; poly->InitBasisAtBottom = ddf_FALSE; poly->RestrictedEnumeration = ddf_FALSE; poly->RelaxedEnumeration = ddf_FALSE; poly->AincGenerated=ddf_FALSE; /* Ainc is a set array to store the input incidence. */ return poly; } ddf_boolean ddf_InitializeConeData(ddf_rowrange m, ddf_colrange d, ddf_ConePtr *cone) { ddf_boolean success=ddf_TRUE; ddf_colrange j; (*cone)=(ddf_ConePtr)calloc(1, sizeof(ddf_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=ddf_Real; (*cone)->parent=NULL; /* CONTROL: variables to control computation */ (*cone)->Iteration=0; (*cone)->HalfspaceOrder=ddf_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 = ddf_TRUE; (*cone)->PreOrderedRun = ddf_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 */ ddf_InitializeBmatrix((*cone)->d_alloc, &((*cone)->B)); ddf_InitializeBmatrix((*cone)->d_alloc, &((*cone)->Bsave)); ddf_InitializeAmatrix((*cone)->m_alloc,(*cone)->d_alloc,&((*cone)->A)); (*cone)->Edges =(ddf_AdjacencyType**) calloc((*cone)->m_alloc,sizeof(ddf_AdjacencyType*)); (*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 = ddf_FALSE; (*cone)->d_orig = d; /* STATES: variables to represent current state. */ /*(*cone)->Error; (*cone)->CompStatus; (*cone)->starttime; (*cone)->endtime; */ return success; } ddf_ConePtr ddf_ConeDataLoad(ddf_PolyhedraPtr poly) { ddf_ConePtr cone=NULL; ddf_colrange d,j; ddf_rowrange m,i; m=poly->m; d=poly->d; if (!(poly->homogeneous) && poly->representation==ddf_Inequality){ m=poly->m+1; } poly->m1=m; ddf_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++) ddf_set(cone->A[i-1][j-1],poly->A[i-1][j-1]); if (poly->representation==ddf_Inequality && !(poly->homogeneous)){ ddf_set(cone->A[m-1][0],ddf_one); for (j=2; j<=d; j++) ddf_set(cone->A[m-1][j-1],ddf_purezero); } return cone; } void ddf_SetLinearity(ddf_MatrixPtr M, char *line) { int i=0; ddf_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; } ddf_MatrixPtr ddf_PolyFile2Matrix (FILE *f, ddf_ErrorType *Error) { ddf_MatrixPtr M=NULL; ddf_rowrange m_input,i; ddf_colrange d_input,j; ddf_RepresentationType rep=ddf_Inequality; myfloat value; ddf_boolean found=ddf_FALSE, newformat=ddf_FALSE, successful=ddf_FALSE, linearity=ddf_FALSE; char command[ddf_linelenmax], comsave[ddf_linelenmax], numbtype[ddf_wordlenmax]; ddf_NumberType NT; #if !defined(ddf_GMPRATIONAL) double rvalue; #endif ddf_init(value); (*Error)=ddf_NoError; while (!found) { if (fscanf(f,"%s",command)==EOF) { (*Error)=ddf_ImproperInputFormat; goto _L99; } else { if (strncmp(command, "V-representation", 16)==0) { rep=ddf_Generator; newformat=ddf_TRUE; } if (strncmp(command, "H-representation", 16)==0){ rep=ddf_Inequality; newformat=ddf_TRUE; } if (strncmp(command, "partial_enum", 12)==0 || strncmp(command, "equality", 8)==0 || strncmp(command, "linearity", 9)==0 ) { linearity=ddf_TRUE; fgets(comsave,ddf_linelenmax,f); } if (strncmp(command, "begin", 5)==0) found=ddf_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=ddf_GetNumberType(numbtype); if (NT==ddf_Unknown) { (*Error)=ddf_ImproperInputFormat; goto _L99; } M=ddf_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==ddf_Real) { #if defined ddf_GMPRATIONAL *Error=ddf_NoRealNumberSupport; goto _L99; #else fscanf(f, "%lf", &rvalue); ddf_set_d(value, rvalue); #endif } else { ddf_fread_rational_value (f, value); } ddf_set(M->matrix[i-1][j - 1],value); if (ddf_debug) {fprintf(stderr,"a(%3ld,%5ld) = ",i,j); ddf_WriteNumber(stderr,value);} } /*of j*/ } /*of i*/ if (fscanf(f,"%s",command)==EOF) { (*Error)=ddf_ImproperInputFormat; goto _L99; } else if (strncmp(command, "end", 3)!=0) { if (ddf_debug) fprintf(stderr,"'end' missing or illegal extra data: %s\n",command); (*Error)=ddf_ImproperInputFormat; goto _L99; } successful=ddf_TRUE; if (linearity) { ddf_SetLinearity(M,comsave); } while (!feof(f)) { fscanf(f,"%s", command); ddf_ProcessCommandLine(f, M, command); fgets(command,ddf_linelenmax,f); /* skip the CR/LF */ } _L99: ; ddf_clear(value); /* if (f!=NULL) fclose(f); */ return M; } ddf_PolyhedraPtr ddf_DDMatrix2Poly(ddf_MatrixPtr M, ddf_ErrorType *err) { ddf_rowrange i; ddf_colrange j; ddf_PolyhedraPtr poly=NULL; *err=ddf_NoError; if (M->rowsize<0 || M->colsize<0){ *err=ddf_NegativeMatrixSize; goto _L99; } poly=ddf_CreatePolyhedraData(M->rowsize, M->colsize); poly->representation=M->representation; poly->homogeneous=ddf_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++) { ddf_set(poly->A[i-1][j-1], M->matrix[i-1][j-1]); if (j==1 && ddf_Nonzero(M->matrix[i-1][j-1])) poly->homogeneous = ddf_FALSE; } /*of j*/ } /*of i*/ ddf_DoubleDescription(poly,err); _L99: return poly; } ddf_PolyhedraPtr ddf_DDMatrix2Poly2(ddf_MatrixPtr M, ddf_RowOrderType horder, ddf_ErrorType *err) { ddf_rowrange i; ddf_colrange j; ddf_PolyhedraPtr poly=NULL; *err=ddf_NoError; if (M->rowsize<0 || M->colsize<0){ *err=ddf_NegativeMatrixSize; goto _L99; } poly=ddf_CreatePolyhedraData(M->rowsize, M->colsize); poly->representation=M->representation; poly->homogeneous=ddf_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++) { ddf_set(poly->A[i-1][j-1], M->matrix[i-1][j-1]); if (j==1 && ddf_Nonzero(M->matrix[i-1][j-1])) poly->homogeneous = ddf_FALSE; } /*of j*/ } /*of i*/ ddf_DoubleDescription2(poly, horder, err); _L99: return poly; } void ddf_MatrixIntegerFilter(ddf_MatrixPtr M) { /* setting an almost integer to the integer. */ ddf_rowrange i; ddf_colrange j; myfloat x; ddf_init(x); for (i=0; i< M->rowsize; i++) for (j=0; j< M->colsize; j++){ ddf_SnapToInteger(x, M->matrix[i][j]); ddf_set(M->matrix[i][j],x); } ddf_clear(x); } void ddf_CopyRay(myfloat *a, ddf_colrange d_origsize, ddf_RayPtr RR, ddf_RepresentationType rep, ddf_colindex reducedcol) { long j,j1; myfloat b; ddf_init(b); for (j = 1; j <= d_origsize; j++){ j1=reducedcol[j]; if (j1>0){ ddf_set(a[j-1],RR->Ray[j1-1]); /* the original column j is mapped to j1, and thus copy the corresponding component */ } else { ddf_set(a[j-1],ddf_purezero); /* original column is redundant and removed for computation */ } } ddf_set(b,a[0]); if (rep==ddf_Generator && ddf_Nonzero(b)){ ddf_set(a[0],ddf_one); for (j = 2; j <= d_origsize; j++) ddf_div(a[j-1],a[j-1],b); /* normalization for generators */ } ddf_clear(b); } void ddf_WriteRay(FILE *f, ddf_colrange d_origsize, ddf_RayPtr RR, ddf_RepresentationType rep, ddf_colindex reducedcol) { ddf_colrange j; static ddf_colrange d_last=0; static ddf_Arow a; if (d_last< d_origsize){ if (d_last>0) free(a); ddf_InitializeArow(d_origsize+1, &a); d_last=d_origsize+1; } ddf_CopyRay(a, d_origsize, RR, rep, reducedcol); for (j = 0; j < d_origsize; j++) ddf_WriteNumber(f, a[j]); fprintf(f, "\n"); } void ddf_WriteArow(FILE *f, ddf_Arow a, ddf_colrange d) { ddf_colrange j; for (j = 0; j < d; j++) ddf_WriteNumber(f, a[j]); fprintf(f, "\n"); } void ddf_WriteAmatrix(FILE *f, ddf_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 ddf_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++) { ddf_WriteNumber(f, A[i-1][j-1]); } fprintf(f,"\n"); } fprintf(f, "end\n"); _L99:; } void ddf_WriteBmatrix(FILE *f, ddf_colrange d_size, ddf_Bmatrix B) { ddf_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++) { ddf_WriteNumber(f, B[j1][j2]); } /*of j2*/ putc('\n', f); } /*of j1*/ putc('\n', f); _L99:; } void ddf_WriteSetFamily(FILE *f, ddf_SetFamilyPtr F) { ddf_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 ddf_WriteSetFamilyCompressed(FILE *f, ddf_SetFamilyPtr F) { ddf_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 ddf_WriteMatrix(FILE *f, ddf_MatrixPtr M) { ddf_rowrange i, linsize; if (M==NULL){ fprintf(f, "WriteMatrix: The requested matrix is empty\n"); goto _L99; } switch (M->representation) { case ddf_Inequality: fprintf(f, "H-representation\n"); break; case ddf_Generator: fprintf(f, "V-representation\n"); break; case ddf_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"); } ddf_WriteAmatrix(f, M->matrix, M->rowsize, M->colsize); if (M->objective!=ddf_LPnone){ if (M->objective==ddf_LPmax) fprintf(f, "maximize\n"); else fprintf(f, "minimize\n"); ddf_WriteArow(f, M->rowvec, M->colsize); } _L99:; } void ddf_WriteLP(FILE *f, ddf_LPPtr lp) { if (lp==NULL){ fprintf(f, "WriteLP: The requested lp is empty\n"); goto _L99; } fprintf(f, "H-representation\n"); ddf_WriteAmatrix(f, lp->A, (lp->m)-1, lp->d); if (lp->objective!=ddf_LPnone){ if (lp->objective==ddf_LPmax) fprintf(f, "maximize\n"); else fprintf(f, "minimize\n"); ddf_WriteArow(f, lp->A[lp->objrow-1], lp->d); } _L99:; } void ddf_SnapToInteger(myfloat y, myfloat x) { /* this is broken. It does nothing. */ ddf_set(y,x); } void ddf_WriteReal(FILE *f, myfloat x) { long ix1,ix2,ix; double ax; ax=ddf_get_d(x); ix1= (long) (fabs(ax) * 10000. + 0.5); ix2= (long) (fabs(ax) + 0.5); ix2= ix2*10000; if ( ix1 == ix2) { if (ddf_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 ddf_WriteNumber(FILE *f, myfloat x) { #if defined ddf_GMPRATIONAL fprintf(f," "); mpq_out_str(f, 10, x); #else ddf_WriteReal(f, x); #endif } void ddf_WriteIncidence(FILE *f, ddf_PolyhedraPtr poly) { ddf_SetFamilyPtr I; switch (poly->representation) { case ddf_Inequality: fprintf(f, "ecd_file: Incidence of generators and inequalities\n"); break; case ddf_Generator: fprintf(f, "icd_file: Incidence of inequalities and generators\n"); break; default: break; } I=ddf_CopyIncidence(poly); ddf_WriteSetFamilyCompressed(f,I); ddf_FreeSetFamily(I); } void ddf_WriteAdjacency(FILE *f, ddf_PolyhedraPtr poly) { ddf_SetFamilyPtr A; switch (poly->representation) { case ddf_Inequality: fprintf(f, "ead_file: Adjacency of generators\n"); break; case ddf_Generator: fprintf(f, "iad_file: Adjacency of inequalities\n"); break; default: break; } A=ddf_CopyAdjacency(poly); ddf_WriteSetFamilyCompressed(f,A); ddf_FreeSetFamily(A); } void ddf_ComputeAinc(ddf_PolyhedraPtr poly) { /* This generates the input incidence array poly->Ainc, and two sets: poly->Ared, poly->Adom. */ ddf_bigrange k; ddf_rowrange i,m1; ddf_colrange j; ddf_boolean redundant; ddf_MatrixPtr M=NULL; myfloat sum,temp; ddf_init(sum); ddf_init(temp); if (poly->AincGenerated==ddf_TRUE) goto _L99; M=ddf_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 ddf_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++){ ddf_set(sum,ddf_purezero); for (j=1; j<=poly->d; j++){ ddf_mul(temp,poly->A[i-1][j-1],M->matrix[k-1][j-1]); ddf_add(sum,sum,temp); } if (ddf_EqualToZero(sum)) { set_addelem(poly->Ainc[i-1], k); } } if (!(poly->homogeneous) && poly->representation==ddf_Inequality){ if (ddf_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=ddf_TRUE; set_addelem(poly->Ared, i); }else { redundant=ddf_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=ddf_TRUE; } set_addelem(poly->Ared, i); } } } } ddf_FreeMatrix(M); poly->AincGenerated=ddf_TRUE; _L99:; ddf_clear(sum); ddf_clear(temp); } ddf_boolean ddf_InputAdjacentQ(ddf_PolyhedraPtr poly, ddf_rowrange i1, ddf_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. */ { ddf_boolean adj=ddf_TRUE; ddf_rowrange i; static set_type common; static long lastn=0; if (poly->AincGenerated==ddf_FALSE) ddf_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=ddf_FALSE; goto _L99; } if (set_member(i1, poly->Adom) || set_member(i2, poly->Adom)){ // dominant inequality is considered adjacencent to all others. adj=ddf_TRUE; goto _L99; } set_int(common, poly->Ainc[i1-1], poly->Ainc[i2-1]); i=0; while (im1 && adj==ddf_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=ddf_FALSE; } } _L99:; return adj; } void ddf_WriteInputIncidence(FILE *f, ddf_PolyhedraPtr poly) { ddf_SetFamilyPtr I; if (poly->AincGenerated==ddf_FALSE) ddf_ComputeAinc(poly); switch (poly->representation) { case ddf_Inequality: fprintf(f,"icd_file: Incidence of inequalities and generators\n"); break; case ddf_Generator: fprintf(f,"ecd_file: Incidence of generators and inequalities\n"); break; default: break; } I=ddf_CopyInputIncidence(poly); ddf_WriteSetFamilyCompressed(f,I); ddf_FreeSetFamily(I); } void ddf_WriteInputAdjacency(FILE *f, ddf_PolyhedraPtr poly) { ddf_SetFamilyPtr A; if (poly->AincGenerated==ddf_FALSE){ ddf_ComputeAinc(poly); } switch (poly->representation) { case ddf_Inequality: fprintf(f, "iad_file: Adjacency of inequalities\n"); break; case ddf_Generator: fprintf(f, "ead_file: Adjacency of generators\n"); break; default: break; } A=ddf_CopyInputAdjacency(poly); ddf_WriteSetFamilyCompressed(f,A); ddf_FreeSetFamily(A); } void ddf_WriteProgramDescription(FILE *f) { fprintf(f, "* cddlib: a double description library:%s\n", ddf_DDVERSION); fprintf(f, "* compiled for %s arithmetic.\n", ddf_ddf_ARITHMETIC); fprintf(f,"* %s\n",ddf_COPYRIGHT); } void ddf_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 ddf_WriteDDTimes(FILE *f, ddf_PolyhedraPtr poly) { ddf_WriteTimes(f,poly->child->starttime,poly->child->endtime); } void ddf_WriteLPTimes(FILE *f, ddf_LPPtr lp) { ddf_WriteTimes(f,lp->starttime,lp->endtime); } void ddf_WriteLPStats(FILE *f) { time_t currenttime; time(¤ttime); fprintf(f, "\n*--- Statistics of pivots ---\n"); #if defined ddf_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",ddf_statBApivots); fprintf(f, "* ec = %ld (exact CC pivots)\n",ddf_statCCpivots); fprintf(f, "* e1 = %ld (exact dual simplex phase I pivots)\n",ddf_statDS1pivots); fprintf(f, "* e2 = %ld (exact dual simplex phase II pivots)\n",ddf_statDS2pivots); fprintf(f, "* e3 = %ld (exact anticycling CC pivots)\n",ddf_statACpivots); fprintf(f, "* e4 = %ld (exact basis verification pivots)\n",ddf_statBSpivots); #else 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); #endif ddf_WriteLPMode(f); ddf_WriteTimes(f,ddf_statStartTime, currenttime); } void ddf_WriteLPMode(FILE *f) { fprintf(f, "\n* LP solver: "); switch (ddf_choiceLPSolverDefault) { case ddf_DualSimplex: fprintf(f, "DualSimplex\n"); break; case ddf_CrissCross: fprintf(f, "Criss-Cross\n"); break; default: break; } fprintf(f, "* Redundancy cheking solver: "); switch (ddf_choiceRedcheckAlgorithm) { case ddf_DualSimplex: fprintf(f, "DualSimplex\n"); break; case ddf_CrissCross: fprintf(f, "Criss-Cross\n"); break; default: break; } fprintf(f, "* Lexicographic pivot: "); if (ddf_choiceLexicoPivotQ) fprintf(f, " on\n"); else fprintf(f, " off\n"); } void ddf_WriteRunningMode(FILE *f, ddf_PolyhedraPtr poly) { if (poly->child!=NULL){ fprintf(f,"* roworder: "); switch (poly->child->HalfspaceOrder) { case ddf_MinIndex: fprintf(f, "minindex\n"); break; case ddf_MaxIndex: fprintf(f, "maxindex\n"); break; case ddf_MinCutoff: fprintf(f, "mincutoff\n"); break; case ddf_MaxCutoff: fprintf(f, "maxcutoff\n"); break; case ddf_MixCutoff: fprintf(f, "mixcutoff\n"); break; case ddf_LexMin: fprintf(f, "lexmin\n"); break; case ddf_LexMax: fprintf(f, "lexmax\n"); break; case ddf_RandomRow: fprintf(f, "random %d\n",poly->child->rseed); break; default: break; } } } void ddf_WriteCompletionStatus(FILE *f, ddf_ConePtr cone) { if (cone->Iterationm && cone->CompStatus==ddf_AllFound) { fprintf(f,"*Computation completed at Iteration %4ld.\n", cone->Iteration); } if (cone->CompStatus == ddf_RegionEmpty) { fprintf(f,"*Computation completed at Iteration %4ld because the region found empty.\n",cone->Iteration); } } void ddf_WritePolyFile(FILE *f, ddf_PolyhedraPtr poly) { ddf_WriteAmatrix(f,poly->A,poly->m,poly->d); } void ddf_WriteErrorMessages(FILE *f, ddf_ErrorType Error) { switch (Error) { case ddf_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 ddf_IFileNotFound: fprintf(f, "*Input Error: Specified input file does not exist.\n"); break; case ddf_OFileNotOpen: fprintf(f, "*Output Error: Specified output file cannot be opened.\n"); break; case ddf_NegativeMatrixSize: fprintf(f, "*Input Error: Input matrix has a negative size:\n"); fprintf(f, "*Please check rowsize or colsize.\n"); break; case ddf_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 ddf_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 ddf_EmptyHrepresentation: fprintf(f, "*Input Error: H-representation is empty.\n"); break; case ddf_EmptyRepresentation: fprintf(f, "*Input Error: Representation is empty.\n"); break; case ddf_NoLPObjective: fprintf(f, "*LP Error: No LP objective (max or min) is set.\n"); break; case ddf_NoRealNumberSupport: fprintf(f, "*LP Error: The binary (with GMP Rational) does not support Real number input.\n"); fprintf(f, " : Use a binary compiled without -Dddf_GMPRATIONAL option.\n"); break; case ddf_NotAvailForH: fprintf(f, "*Error: A function is called with H-rep which does not support an H-representation.\n"); break; case ddf_NotAvailForV: fprintf(f, "*Error: A function is called with V-rep which does not support an V-representation.\n"); break; case ddf_CannotHandleLinearity: fprintf(f, "*Error: The function called cannot handle linearity.\n"); break; case ddf_RowIndexOutOfRange: fprintf(f, "*Error: Specified row index is out of range\n"); break; case ddf_ColIndexOutOfRange: fprintf(f, "*Error: Specified column index is out of range\n"); break; case ddf_LPCycling: fprintf(f, "*Error: Possibly an LP cycling occurs. Use the Criss-Cross method.\n"); break; case ddf_NumericallyInconsistent: fprintf(f, "*Error: Numerical inconsistency is found. Use the GMP exact arithmetic.\n"); break; case ddf_NoError: fprintf(f,"*No Error found.\n"); break; } } ddf_SetFamilyPtr ddf_CopyIncidence(ddf_PolyhedraPtr poly) { ddf_SetFamilyPtr F=NULL; ddf_bigrange k; ddf_rowrange i; if (poly->child==NULL || poly->child->CompStatus!=ddf_AllFound) goto _L99; if (poly->AincGenerated==ddf_FALSE) ddf_ComputeAinc(poly); F=ddf_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; } ddf_SetFamilyPtr ddf_CopyInputIncidence(ddf_PolyhedraPtr poly) { ddf_rowrange i; ddf_SetFamilyPtr F=NULL; if (poly->child==NULL || poly->child->CompStatus!=ddf_AllFound) goto _L99; if (poly->AincGenerated==ddf_FALSE) ddf_ComputeAinc(poly); F=ddf_CreateSetFamily(poly->m1, poly->n); for(i=0; i< poly->m1; i++){ set_copy(F->set[i], poly->Ainc[i]); } _L99:; return F; } ddf_SetFamilyPtr ddf_CopyAdjacency(ddf_PolyhedraPtr poly) { ddf_RayPtr RayPtr1,RayPtr2; ddf_SetFamilyPtr F=NULL; long pos1, pos2; ddf_bigrange lstart,k,n; set_type linset,allset; ddf_boolean adj; if (poly->n==0 && poly->homogeneous && poly->representation==ddf_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!=ddf_AllFound) goto _L99; F=ddf_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){ ddf_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; } ddf_SetFamilyPtr ddf_CopyInputAdjacency(ddf_PolyhedraPtr poly) { ddf_rowrange i,j; ddf_SetFamilyPtr F=NULL; if (poly->child==NULL || poly->child->CompStatus!=ddf_AllFound) goto _L99; if (poly->AincGenerated==ddf_FALSE) ddf_ComputeAinc(poly); F=ddf_CreateSetFamily(poly->m1, poly->m1); for (i=1; i<=poly->m1; i++){ for (j=1; j<=poly->m1; j++){ if (i!=j && ddf_InputAdjacentQ(poly, i, j)) { set_addelem(F->set[i-1],j); } } } _L99:; return F; } ddf_MatrixPtr ddf_CopyOutput(ddf_PolyhedraPtr poly) { ddf_RayPtr RayPtr; ddf_MatrixPtr M=NULL; ddf_rowrange i=0,total; ddf_colrange j,j1; myfloat b; ddf_RepresentationType outputrep=ddf_Inequality; ddf_boolean outputorigin=ddf_FALSE; ddf_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==ddf_Inequality) outputrep=ddf_Generator; if (total==0 && poly->homogeneous && poly->representation==ddf_Inequality){ total=1; outputorigin=ddf_TRUE; /* the origin (the unique vertex) should be output. */ } if (poly->child==NULL || poly->child->CompStatus!=ddf_AllFound) goto _L99; M=ddf_CreateMatrix(total, poly->d); RayPtr = poly->child->FirstRay; while (RayPtr != NULL) { if (RayPtr->feasible) { ddf_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 */ ddf_set(b,poly->child->Bsave[0][j-1]); if (outputrep==ddf_Generator && ddf_Positive(b)){ ddf_set(M->matrix[i][0],ddf_one); /* ddf_Normalize */ for (j1=1; j1d; j1++) ddf_div(M->matrix[i][j1],(poly->child->Bsave[j1][j-1]),b); } else { for (j1=0; j1d; j1++) ddf_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. */ ddf_set(M->matrix[0][0],ddf_one); for (j=1; jd; j++){ ddf_set(M->matrix[0][j],ddf_purezero); } } ddf_MatrixIntegerFilter(M); if (poly->representation==ddf_Inequality) M->representation=ddf_Generator; else M->representation=ddf_Inequality; _L99:; ddf_clear(b); return M; } ddf_MatrixPtr ddf_CopyInput(ddf_PolyhedraPtr poly) { ddf_MatrixPtr M=NULL; ddf_rowrange i; M=ddf_CreateMatrix(poly->m, poly->d); ddf_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); ddf_MatrixIntegerFilter(M); if (poly->representation==ddf_Generator) M->representation=ddf_Generator; else M->representation=ddf_Inequality; return M; } ddf_MatrixPtr ddf_CopyGenerators(ddf_PolyhedraPtr poly) { ddf_MatrixPtr M=NULL; if (poly->representation==ddf_Generator){ M=ddf_CopyInput(poly); } else { M=ddf_CopyOutput(poly); } return M; } ddf_MatrixPtr ddf_CopyInequalities(ddf_PolyhedraPtr poly) { ddf_MatrixPtr M=NULL; if (poly->representation==ddf_Inequality){ M=ddf_CopyInput(poly); } else { M=ddf_CopyOutput(poly); } return M; } /****************************************************************************************/ /* rational number (a/b) read is taken from Vinci by Benno Bueeler and Andreas Enge */ /****************************************************************************************/ void ddf_sread_rational_value (const char *s, myfloat 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 ddf_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 ddf_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; dddf_set_d(value, rvalue); #endif if (ddf_debug) { fprintf(stderr,"rational_read: "); ddf_WriteNumber(stderr,value); fprintf(stderr,"\n"); } } void ddf_fread_rational_value (FILE *f, myfloat value) /* reads a rational value from the specified file "f" and assigns it to "value" */ { char number_s [ddf_wordlenmax]; myfloat rational_value; ddf_init(rational_value); fscanf(f, "%s ", number_s); ddf_sread_rational_value (number_s, rational_value); ddf_set(value,rational_value); ddf_clear(rational_value); } /****************************************************************************************/ /* end of cddio.c */ cddlib-094g/lib-src-gmp/cddlib.c000077700000000000000000000000001206770251100216102../lib-src/cddlib.custar00rootroot00000000000000cddlib-094g/lib-src-gmp/cddlib_f.c000066400000000000000000000270361206770251100167770ustar00rootroot00000000000000/* automatically generated by sed scripts from the c source named below: */ /* cddlib.c: cdd library (library version of cdd) written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 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_f.h" #include #include #include #include #include /* Global Variables */ ddf_boolean ddf_debug =ddf_FALSE; ddf_boolean ddf_log =ddf_FALSE; /* GLOBAL CONSTANTS and STATICS VARIABLES (to be set by ddf_set_global_constants() */ myfloat ddf_zero; myfloat ddf_one; myfloat ddf_purezero; myfloat ddf_minuszero; myfloat ddf_minusone; time_t ddf_statStartTime; /* cddlib starting time */ long ddf_statBApivots; /* basis finding pivots */ long ddf_statCCpivots; /* criss-cross pivots */ long ddf_statDS1pivots; /* phase 1 pivots */ long ddf_statDS2pivots; /* phase 2 pivots */ long ddf_statACpivots; /* anticycling (cc) pivots */ #ifdef ddf_GMPRATIONAL long ddf_statBSpivots; /* basis status checking pivots */ #endif ddf_LPSolverType ddf_choiceLPSolverDefault; /* Default LP solver Algorithm */ ddf_LPSolverType ddf_choiceRedcheckAlgorithm; /* Redundancy Checking Algorithm */ ddf_boolean ddf_choiceLexicoPivotQ; /* whether to use the lexicographic pivot */ /* #include THINK C PROFILER */ /* #include THINK C PROFILER */ void ddf_DDInit(ddf_ConePtr cone) { cone->Error=ddf_NoError; cone->CompStatus=ddf_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 */ ddf_SetInequalitySets(cone); ddf_ComputeRowOrderVector(cone); cone->RecomputeRowOrder=ddf_FALSE; } void ddf_DDMain(ddf_ConePtr cone) { ddf_rowrange hh, itemp, otemp; ddf_boolean locallog=ddf_log; /* if ddf_log=ddf_FALSE, no log will be written. */ if (cone->d<=0){ cone->Iteration=cone->m; cone->FeasibleRayCount=0; cone->CompStatus=ddf_AllFound; goto _L99; } if (locallog) { fprintf(stderr,"(Initially added rows ) = "); set_fwrite(stderr,cone->InitialHalfspaces); } while (cone->Iteration <= cone->m) { ddf_SelectNextHalfspace(cone, cone->WeaklyAddedHalfspaces, &hh); if (set_member(hh,cone->NonequalitySet)){ /* Skip the row hh */ if (ddf_debug) { fprintf(stderr,"*The row # %3ld should be inactive and thus skipped.\n", hh); } set_addelem(cone->WeaklyAddedHalfspaces, hh); } else { if (cone->PreOrderedRun) ddf_AddNewHalfspace2(cone, hh); else{ ddf_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==ddf_AllFound||cone->CompStatus==ddf_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 ddf_InitialDataSetup(ddf_ConePtr cone) { long j, r; ddf_rowset ZSet; static ddf_Arow Vector1,Vector2; static ddf_colrange last_d=0; if (last_d < cone->d){ if (last_d>0) { for (j=0; jd,sizeof(myfloat)); Vector2=(myfloat*)calloc(cone->d,sizeof(myfloat)); for (j=0; jd; j++){ ddf_init(Vector1[j]); ddf_init(Vector2[j]); } last_d=cone->d; } cone->RecomputeRowOrder=ddf_FALSE; cone->ArtificialRay = NULL; cone->FirstRay = NULL; cone->LastRay = NULL; set_initialize(&ZSet,cone->m); ddf_AddArtificialRay(cone); set_copy(cone->AddedHalfspaces, cone->InitialHalfspaces); set_copy(cone->WeaklyAddedHalfspaces, cone->InitialHalfspaces); ddf_UpdateRowOrderVector(cone, cone->InitialHalfspaces); for (r = 1; r <= cone->d; r++) { for (j = 0; j < cone->d; j++){ ddf_set(Vector1[j], cone->B[j][r-1]); ddf_neg(Vector2[j], cone->B[j][r-1]); } ddf_Normalize(cone->d, Vector1); ddf_Normalize(cone->d, Vector2); ddf_ZeroIndexSet(cone->m, cone->d, cone->A, Vector1, ZSet); if (set_subset(cone->EqualitySet, ZSet)){ if (ddf_debug) { fprintf(stderr,"add an initial ray with zero set:"); set_fwrite(stderr,ZSet); } ddf_AddRay(cone, Vector1); if (cone->InitialRayIndex[r]==0) { ddf_AddRay(cone, Vector2); if (ddf_debug) { fprintf(stderr,"and add its negative also.\n"); } } } } ddf_CreateInitialEdges(cone); cone->Iteration = cone->d + 1; if (cone->Iteration > cone->m) cone->CompStatus=ddf_AllFound; /* 0.94b */ set_free(ZSet); } ddf_boolean ddf_CheckEmptiness(ddf_PolyhedraPtr poly, ddf_ErrorType *err) { ddf_rowset R, S; ddf_MatrixPtr M=NULL; ddf_boolean answer=ddf_FALSE; *err=ddf_NoError; if (poly->representation==ddf_Inequality){ M=ddf_CopyInequalities(poly); set_initialize(&R, M->rowsize); set_initialize(&S, M->rowsize); if (!ddf_ExistsRestrictedFace(M, R, S, err)){ poly->child->CompStatus=ddf_AllFound; poly->IsEmpty=ddf_TRUE; poly->n=0; answer=ddf_TRUE; } set_free(R); set_free(S); ddf_FreeMatrix(M); } else if (poly->representation==ddf_Generator && poly->m<=0){ *err=ddf_EmptyVrepresentation; poly->IsEmpty=ddf_TRUE; poly->child->CompStatus=ddf_AllFound; answer=ddf_TRUE; poly->child->Error=*err; } return answer; } ddf_boolean ddf_DoubleDescription(ddf_PolyhedraPtr poly, ddf_ErrorType *err) { ddf_ConePtr cone=NULL; ddf_boolean found=ddf_FALSE; *err=ddf_NoError; if (poly!=NULL && (poly->child==NULL || poly->child->CompStatus!=ddf_AllFound)){ cone=ddf_ConeDataLoad(poly); /* create a cone associated with poly by homogenization */ time(&cone->starttime); ddf_DDInit(cone); if (poly->representation==ddf_Generator && poly->m<=0){ *err=ddf_EmptyVrepresentation; cone->Error=*err; goto _L99; } /* Check emptiness of the polyhedron */ ddf_CheckEmptiness(poly,err); if (cone->CompStatus!=ddf_AllFound){ ddf_FindInitialRays(cone, &found); if (found) { ddf_InitialDataSetup(cone); if (cone->CompStatus==ddf_AllFound) goto _L99; ddf_DDMain(cone); if (cone->FeasibleRayCount!=cone->RayCount) *err=ddf_NumericallyInconsistent; /* cddlib-093d */ } } time(&cone->endtime); } _L99: ; return found; } ddf_boolean ddf_DoubleDescription2(ddf_PolyhedraPtr poly, ddf_RowOrderType horder, ddf_ErrorType *err) { ddf_ConePtr cone=NULL; ddf_boolean found=ddf_FALSE; *err=ddf_NoError; if (poly!=NULL && (poly->child==NULL || poly->child->CompStatus!=ddf_AllFound)){ cone=ddf_ConeDataLoad(poly); /* create a cone associated with poly by homogenization */ cone->HalfspaceOrder=horder; /* set the row order */ time(&cone->starttime); ddf_DDInit(cone); if (poly->representation==ddf_Generator && poly->m<=0){ *err=ddf_EmptyVrepresentation; cone->Error=*err; goto _L99; } /* Check emptiness of the polyhedron */ ddf_CheckEmptiness(poly,err); if (cone->CompStatus!=ddf_AllFound){ ddf_FindInitialRays(cone, &found); if (found) { ddf_InitialDataSetup(cone); if (cone->CompStatus==ddf_AllFound) goto _L99; ddf_DDMain(cone); if (cone->FeasibleRayCount!=cone->RayCount) *err=ddf_NumericallyInconsistent; /* cddlib-093d */ } } time(&cone->endtime); } _L99: ; return found; } ddf_boolean ddf_DDInputAppend(ddf_PolyhedraPtr *poly, ddf_MatrixPtr M, ddf_ErrorType *err) { /* This is imcomplete. It simply solves the problem from scratch. */ ddf_boolean found; ddf_ErrorType error; if ((*poly)->child!=NULL) ddf_FreeDDMemory(*poly); ddf_AppendMatrix2Poly(poly, M); (*poly)->representation=ddf_Inequality; found=ddf_DoubleDescription(*poly, &error); *err=error; return found; } ddf_boolean ddf_DDFile2File(char *ifile, char *ofile, ddf_ErrorType *err) { /* The representation conversion from an input file to an outfile. */ /* modified by D. Avis to allow stdin/stdout */ ddf_boolean found=ddf_TRUE; FILE *reading=NULL,*writing=NULL; ddf_PolyhedraPtr poly; ddf_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=ddf_FALSE; *err=ddf_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=ddf_TRUE; } else { fprintf(stderr,"The output file %s cannot be opened\n",ofile); found=ddf_FALSE; *err=ddf_OFileNotOpen; goto _L99; } } M=ddf_PolyFile2Matrix(reading, err); if (*err!=ddf_NoError){ goto _L99; } poly=ddf_DDMatrix2Poly(M, err); /* compute the second representation */ ddf_FreeMatrix(M); if (*err==ddf_NoError) { ddf_WriteRunningMode(writing, poly); A=ddf_CopyInequalities(poly); G=ddf_CopyGenerators(poly); if (poly->representation==ddf_Inequality) { ddf_WriteMatrix(writing,G); } else { ddf_WriteMatrix(writing,A); } ddf_FreePolyhedra(poly); ddf_FreeMatrix(A); ddf_FreeMatrix(G); } _L99: ; if (*err!=ddf_NoError) ddf_WriteErrorMessages(stderr,*err); if (reading!=NULL) fclose(reading); if (writing!=NULL) fclose(writing); return found; } /* end of cddlib.c */ cddlib-094g/lib-src-gmp/cddlp.c000077700000000000000000000000001206770251100213222../lib-src/cddlp.custar00rootroot00000000000000cddlib-094g/lib-src-gmp/cddlp_f.c000066400000000000000000003654041206770251100166500ustar00rootroot00000000000000/* automatically generated by sed scripts from the c source named below: */ /* cddlp.c: dual simplex method c-code written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 */ /* 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_f.h" #include #include #include #include #include #if defined ddf_GMPRATIONAL #include "cdd_f.h" #endif #define ddf_CDDLPVERSION "Version 0.94b (August 25, 2005)" #define ddf_FALSE 0 #define ddf_TRUE 1 typedef set_type rowset; /* set_type defined in setoper.h */ typedef set_type colset; void ddf_CrissCrossSolve(ddf_LPPtr lp,ddf_ErrorType *); void ddf_DualSimplexSolve(ddf_LPPtr lp,ddf_ErrorType *); void ddf_CrissCrossMinimize(ddf_LPPtr,ddf_ErrorType *); void ddf_CrissCrossMaximize(ddf_LPPtr,ddf_ErrorType *); void ddf_DualSimplexMinimize(ddf_LPPtr,ddf_ErrorType *); void ddf_DualSimplexMaximize(ddf_LPPtr,ddf_ErrorType *); void ddf_FindLPBasis(ddf_rowrange,ddf_colrange,ddf_Amatrix,ddf_Bmatrix,ddf_rowindex,ddf_rowset, ddf_colindex,ddf_rowindex,ddf_rowrange,ddf_colrange, ddf_colrange *,int *,ddf_LPStatusType *,long *); void ddf_FindDualFeasibleBasis(ddf_rowrange,ddf_colrange,ddf_Amatrix,ddf_Bmatrix,ddf_rowindex, ddf_colindex,long *,ddf_rowrange,ddf_colrange,ddf_boolean, ddf_colrange *,ddf_ErrorType *,ddf_LPStatusType *,long *, long maxpivots); #ifdef ddf_GMPRATIONAL void ddf_BasisStatus(ddf_LPPtr lpf, ddf_LPPtr lp, ddf_boolean*); void ddf_BasisStatusMinimize(ddf_rowrange,ddf_colrange, ddf_Amatrix,ddf_Bmatrix,ddf_rowset, ddf_rowrange,ddf_colrange,ddf_LPStatusType,myfloat *,ddf_Arow,ddf_Arow,ddf_rowset,ddf_colindex, ddf_rowrange,ddf_colrange,ddf_colrange *,long *, int *, int *); void ddf_BasisStatusMaximize(ddf_rowrange,ddf_colrange,ddf_Amatrix,ddf_Bmatrix,ddf_rowset, ddf_rowrange,ddf_colrange,ddf_LPStatusType,myfloat *,ddf_Arow,ddf_Arow,ddf_rowset,ddf_colindex, ddf_rowrange,ddf_colrange,ddf_colrange *,long *, int *, int *); #endif void ddf_WriteBmatrix(FILE *f,ddf_colrange d_size,ddf_Bmatrix T); void ddf_SetNumberType(char *line,ddf_NumberType *number,ddf_ErrorType *Error); void ddf_ComputeRowOrderVector2(ddf_rowrange m_size,ddf_colrange d_size,ddf_Amatrix A, ddf_rowindex OV,ddf_RowOrderType ho,unsigned int rseed); void ddf_SelectPreorderedNext2(ddf_rowrange m_size,ddf_colrange d_size, rowset excluded,ddf_rowindex OV,ddf_rowrange *hnext); void ddf_SetSolutions(ddf_rowrange,ddf_colrange, ddf_Amatrix,ddf_Bmatrix,ddf_rowrange,ddf_colrange,ddf_LPStatusType, myfloat *,ddf_Arow,ddf_Arow,ddf_rowset,ddf_colindex,ddf_rowrange,ddf_colrange,ddf_rowindex); void ddf_WriteTableau(FILE *,ddf_rowrange,ddf_colrange,ddf_Amatrix,ddf_Bmatrix, ddf_colindex,ddf_rowindex); void ddf_WriteSignTableau(FILE *,ddf_rowrange,ddf_colrange,ddf_Amatrix,ddf_Bmatrix, ddf_colindex,ddf_rowindex); ddf_LPSolutionPtr ddf_CopyLPSolution(ddf_LPPtr lp) { ddf_LPSolutionPtr lps; ddf_colrange j; long i; lps=(ddf_LPSolutionPtr) calloc(1,sizeof(ddf_LPSolutionType)); for (i=1; i<=ddf_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 */ ddf_init(lps->optvalue); ddf_set(lps->optvalue,lp->optvalue); /* optimal value */ ddf_InitializeArow(lp->d+1,&(lps->sol)); ddf_InitializeArow(lp->d+1,&(lps->dsol)); lps->nbindex=(long*) calloc((lp->d)+1,sizeof(long)); /* dual solution */ for (j=0; j<=lp->d; j++){ ddf_set(lps->sol[j],lp->sol[j]); ddf_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; } ddf_LPPtr ddf_CreateLPData(ddf_LPObjectiveType obj, ddf_NumberType nt,ddf_rowrange m,ddf_colrange d) { ddf_LPType *lp; lp=(ddf_LPPtr) calloc(1,sizeof(ddf_LPType)); lp->solver=ddf_choiceLPSolverDefault; /* set the default lp solver */ lp->d=d; lp->m=m; lp->numbtype=nt; lp->objrow=m; lp->rhscol=1L; lp->objective=ddf_LPnone; lp->LPS=ddf_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=ddf_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=ddf_choiceLexicoPivotQ; /* ddf_choice... is set in ddf_set_global_constants() */ lp->m_alloc=lp->m+2; lp->d_alloc=lp->d+2; lp->objective=obj; ddf_InitializeBmatrix(lp->d_alloc,&(lp->B)); ddf_InitializeAmatrix(lp->m_alloc,lp->d_alloc,&(lp->A)); ddf_InitializeArow(lp->d_alloc,&(lp->sol)); ddf_InitializeArow(lp->d_alloc,&(lp->dsol)); ddf_init(lp->optvalue); return lp; } ddf_LPPtr ddf_Matrix2LP(ddf_MatrixPtr M, ddf_ErrorType *err) { ddf_rowrange m, i, irev, linc; ddf_colrange d, j; ddf_LPType *lp; ddf_boolean localdebug=ddf_FALSE; *err=ddf_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=ddf_CreateLPData(M->objective, M->numbtype, m, d); lp->Homogeneous = ddf_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++) { ddf_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++) { ddf_set(lp->A[i-1][j-1],M->matrix[i-1][j-1]); if (j==1 && irowsize && ddf_Nonzero(M->matrix[i-1][j-1])) lp->Homogeneous = ddf_FALSE; } /*of j*/ } /*of i*/ for (j = 1; j <= M->colsize; j++) { ddf_set(lp->A[m-1][j-1],M->rowvec[j-1]); /* objective row */ } /*of j*/ return lp; } ddf_LPPtr ddf_Matrix2Feasibility(ddf_MatrixPtr M, ddf_ErrorType *err) /* Load a matrix to create an LP object for feasibility. It is essentially the ddf_Matrix2LP except that the objject function is set to identically ZERO (maximization). */ /* 094 */ { ddf_rowrange m, linc; ddf_colrange j; ddf_LPType *lp; *err=ddf_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=ddf_Matrix2LP(M, err); lp->objective = ddf_LPmax; /* since the objective is zero, this is not important */ for (j = 1; j <= M->colsize; j++) { ddf_set(lp->A[m-1][j-1],ddf_purezero); /* set the objective to zero. */ } /*of j*/ return lp; } ddf_LPPtr ddf_Matrix2Feasibility2(ddf_MatrixPtr M, ddf_rowset R, ddf_rowset S, ddf_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 */ { ddf_rowrange m, i, irev, linc; ddf_colrange d, j; ddf_LPType *lp; ddf_rowset L; ddf_boolean localdebug=ddf_FALSE; *err=ddf_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=ddf_CreateLPData(ddf_LPmax, M->numbtype, m, d); lp->Homogeneous = ddf_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++) { ddf_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)) { ddf_set(lp->A[i-1][M->colsize],ddf_minusone); } for (j = 1; j <= M->colsize; j++) { ddf_set(lp->A[i-1][j-1],M->matrix[i-1][j-1]); if (j==1 && irowsize && ddf_Nonzero(M->matrix[i-1][j-1])) lp->Homogeneous = ddf_FALSE; } /*of j*/ } /*of i*/ for (j = 1; j <= d; j++) { ddf_set(lp->A[m-2][j-1],ddf_purezero); /* initialize */ } /*of j*/ ddf_set(lp->A[m-2][0],ddf_one); /* the bounding constraint. */ ddf_set(lp->A[m-2][M->colsize],ddf_minusone); /* the bounding constraint. */ for (j = 1; j <= d; j++) { ddf_set(lp->A[m-1][j-1],ddf_purezero); /* initialize */ } /*of j*/ ddf_set(lp->A[m-1][M->colsize],ddf_one); /* maximize z */ set_free(L); return lp; } void ddf_FreeLPData(ddf_LPPtr lp) { if ((lp)!=NULL){ ddf_clear(lp->optvalue); ddf_FreeArow(lp->d_alloc,lp->dsol); ddf_FreeArow(lp->d_alloc,lp->sol); ddf_FreeBmatrix(lp->d_alloc,lp->B); ddf_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 ddf_FreeLPSolution(ddf_LPSolutionPtr lps) { if (lps!=NULL){ free(lps->nbindex); ddf_FreeArow(lps->d+1,lps->dsol); ddf_FreeArow(lps->d+1,lps->sol); ddf_clear(lps->optvalue); free(lps); } } int ddf_LPReverseRow(ddf_LPPtr lp, ddf_rowrange i) { ddf_colrange j; int success=0; if (i>=1 && i<=lp->m){ lp->LPS=ddf_LPSundecided; for (j=1; j<=lp->d; j++) { ddf_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 ddf_LPReplaceRow(ddf_LPPtr lp, ddf_rowrange i, ddf_Arow a) { ddf_colrange j; int success=0; if (i>=1 && i<=lp->m){ lp->LPS=ddf_LPSundecided; for (j=1; j<=lp->d; j++) { ddf_set(lp->A[i-1][j-1],a[j-1]); /* replacing the i-th constraint by a */ } success=1; } return success; } ddf_Arow ddf_LPCopyRow(ddf_LPPtr lp, ddf_rowrange i) { ddf_colrange j; ddf_Arow a; if (i>=1 && i<=lp->m){ ddf_InitializeArow(lp->d, &a); for (j=1; j<=lp->d; j++) { ddf_set(a[j-1],lp->A[i-1][j-1]); /* copying the i-th row to a */ } } return a; } void ddf_SetNumberType(char *line,ddf_NumberType *number,ddf_ErrorType *Error) { if (strncmp(line,"integer",7)==0) { *number = ddf_Integer; return; } else if (strncmp(line,"rational",8)==0) { *number = ddf_Rational; return; } else if (strncmp(line,"real",4)==0) { *number = ddf_Real; return; } else { *number=ddf_Unknown; *Error=ddf_ImproperInputFormat; } } void ddf_WriteTableau(FILE *f,ddf_rowrange m_size,ddf_colrange d_size,ddf_Amatrix A,ddf_Bmatrix T, ddf_colindex nbindex,ddf_rowindex bflag) /* Write the tableau A.T */ { ddf_colrange j; ddf_rowrange i; myfloat x; ddf_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++) { ddf_TableauEntry(&x,m_size,d_size,A,T,i,j); ddf_WriteNumber(f,x); } fprintf(f,"\n"); } fprintf(f,"end\n"); ddf_clear(x); } void ddf_WriteSignTableau(FILE *f,ddf_rowrange m_size,ddf_colrange d_size,ddf_Amatrix A,ddf_Bmatrix T, ddf_colindex nbindex,ddf_rowindex bflag) /* Write the sign tableau A.T */ { ddf_colrange j; ddf_rowrange i; myfloat x; ddf_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++) { ddf_TableauEntry(&x,m_size,d_size,A,T,i,j); if (ddf_Positive(x)) fprintf(f, " +"); else if (ddf_Negative(x)) fprintf(f, " -"); else fprintf(f, " 0"); } fprintf(f,"\n"); } fprintf(f,"end\n"); ddf_clear(x); } void ddf_WriteSignTableau2(FILE *f,ddf_rowrange m_size,ddf_colrange d_size,ddf_Amatrix A,ddf_Bmatrix T, ddf_colindex nbindex_ref, ddf_colindex nbindex,ddf_rowindex bflag) /* Write the sign tableau A.T and the reference basis */ { ddf_colrange j; ddf_rowrange i; myfloat x; ddf_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++) { ddf_TableauEntry(&x,m_size,d_size,A,T,i,j); if (ddf_Positive(x)) fprintf(f, " +"); else if (ddf_Negative(x)) fprintf(f, " -"); else fprintf(f, " 0"); } fprintf(f,"\n"); } fprintf(f,"end\n"); ddf_clear(x); } void ddf_GetRedundancyInformation(ddf_rowrange m_size,ddf_colrange d_size,ddf_Amatrix A,ddf_Bmatrix T, ddf_colindex nbindex,ddf_rowindex bflag, ddf_rowset redset) /* Some basic variables that are forced to be nonnegative will be output. These are variables whose dictionary row components are all nonnegative. */ { ddf_colrange j; ddf_rowrange i; myfloat x; ddf_boolean red=ddf_FALSE,localdebug=ddf_FALSE; long numbred=0; ddf_init(x); for (i=1; i<= m_size; i++) { red=ddf_TRUE; for (j=1; j<= d_size; j++) { ddf_TableauEntry(&x,m_size,d_size,A,T,i,j); if (red && ddf_Negative(x)) red=ddf_FALSE; } if (bflag[i]<0 && red) { numbred+=1; set_addelem(redset,i); } } if (localdebug) fprintf(stderr,"\nddf_GetRedundancyInformation: %ld redundant rows over %ld\n",numbred, m_size); ddf_clear(x); } void ddf_SelectDualSimplexPivot(ddf_rowrange m_size,ddf_colrange d_size, int Phase1,ddf_Amatrix A,ddf_Bmatrix T,ddf_rowindex OV, ddf_colindex nbindex_ref, ddf_colindex nbindex,ddf_rowindex bflag, ddf_rowrange objrow,ddf_colrange rhscol, ddf_boolean lexicopivot, ddf_rowrange *r,ddf_colrange *s,int *selected,ddf_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=ddf_FALSE and *lps=LPSundecided. If Phase1=ddf_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. */ ddf_boolean colselected=ddf_FALSE,rowselected=ddf_FALSE, dualfeasible=ddf_TRUE,localdebug=ddf_FALSE; ddf_rowrange i,iref; ddf_colrange j,k; myfloat val,valn, minval,rat,minrat; static ddf_Arow rcost; static ddf_colrange d_last=0; static ddf_colset tieset,stieset; /* store the column indices with tie */ ddf_init(val); ddf_init(valn); ddf_init(minval); ddf_init(rat); ddf_init(minrat); if (d_last0) { for (j=1; j<=d_last; j++){ ddf_clear(rcost[j-1]);} free(rcost); set_free(tieset); set_free(stieset); } rcost=(myfloat*) calloc(d_size,sizeof(myfloat)); for (j=1; j<=d_size; j++){ ddf_init(rcost[j-1]);} set_initialize(&tieset,d_size); set_initialize(&stieset,d_size); d_last=d_size; } *r=0; *s=0; *selected=ddf_FALSE; *lps=ddf_LPSundecided; for (j=1; j<=d_size; j++){ if (j!=rhscol){ ddf_TableauEntry(&(rcost[j-1]),m_size,d_size,A,T,objrow,j); if (ddf_Positive(rcost[j-1])) { dualfeasible=ddf_FALSE; } } } if (dualfeasible){ while ((*lps==ddf_LPSundecided) && (!rowselected) && (!colselected)) { for (i=1; i<=m_size; i++) { if (i!=objrow && bflag[i]==-1) { /* i is a basic variable */ if (Phase1){ ddf_TableauEntry(&val, m_size,d_size,A,T,i,bflag[m_size]); ddf_neg(val,val); /* for dual Phase I. The RHS (dual objective) is the negative of the auxiliary variable column. */ } else {ddf_TableauEntry(&val,m_size,d_size,A,T,i,rhscol);} if (ddf_Smaller(val,minval)) { *r=i; ddf_set(minval,val); } } } if (ddf_Nonnegative(minval)) { *lps=ddf_Optimal; } else { rowselected=ddf_TRUE; set_emptyset(tieset); for (j=1; j<=d_size; j++){ ddf_TableauEntry(&val,m_size,d_size,A,T,*r,j); if (j!=rhscol && ddf_Positive(val)) { ddf_div(rat,rcost[j-1],val); ddf_neg(rat,rat); if (*s==0 || ddf_Smaller(rat,minrat)){ ddf_set(minrat,rat); *s=j; set_emptyset(tieset); set_addelem(tieset, j); } else if (ddf_Equal(rat,minrat)){ set_addelem(tieset,j); } } } if (*s>0) { if (!lexicopivot || set_card(tieset)==1){ colselected=ddf_TRUE; *selected=ddf_TRUE; } else { /* lexicographic rule with respect to the given reference cobasis. */ if (localdebug) {printf("Tie occurred at:"); set_write(tieset); printf("\n"); ddf_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=ddf_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)) { ddf_TableauEntry(&val,m_size,d_size,A,T,*r,j); ddf_TableauEntry(&valn,m_size,d_size,A,T,iref,j); if (j!=rhscol && ddf_Positive(val)) { ddf_div(rat,valn,val); if (*s==0 || ddf_Smaller(rat,minrat)){ ddf_set(minrat,rat); *s=j; set_emptyset(stieset); set_addelem(stieset, j); } else if (ddf_Equal(rat,minrat)){ set_addelem(stieset,j); } } } } set_copy(tieset,stieset); if (set_card(tieset)==1) colselected=ddf_TRUE; } } k+=1; } while (!colselected && k<=d_size); *selected=ddf_TRUE; } } else *lps=ddf_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); } ddf_clear(val); ddf_clear(valn); ddf_clear(minval); ddf_clear(rat); ddf_clear(minrat); } void ddf_TableauEntry(myfloat *x,ddf_rowrange m_size, ddf_colrange d_size, ddf_Amatrix X, ddf_Bmatrix T, ddf_rowrange r, ddf_colrange s) /* Compute the (r,s) entry of X.T */ { ddf_colrange j; myfloat temp; ddf_init(temp); ddf_set(*x,ddf_purezero); for (j=0; j< d_size; j++) { ddf_mul(temp,X[r-1][j], T[j][s-1]); ddf_add(*x, *x, temp); } ddf_clear(temp); } void ddf_SelectPivot2(ddf_rowrange m_size,ddf_colrange d_size,ddf_Amatrix A,ddf_Bmatrix T, ddf_RowOrderType roworder,ddf_rowindex ordervec, rowset equalityset, ddf_rowrange rowmax,rowset NopivotRow, colset NopivotCol,ddf_rowrange *r,ddf_colrange *s, ddf_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; ddf_rowrange i,rtemp; rowset rowexcluded; myfloat Xtemp; ddf_boolean localdebug=ddf_FALSE; stop = ddf_FALSE; localdebug=ddf_debug; ddf_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 = ddf_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) ddf_SelectPreorderedNext2(m_size,d_size,rowexcluded,ordervec,&rtemp);; if (rtemp>=1) { *r=rtemp; *s=1; while (*s <= d_size && !*selected) { ddf_TableauEntry(&Xtemp,m_size,d_size,A,T,*r,*s); if (!set_member(*s,NopivotCol) && ddf_Nonzero(Xtemp)) { *selected = ddf_TRUE; stop = ddf_TRUE; } else { (*s)++; } } if (!*selected) { set_addelem(rowexcluded,rtemp); } } else { *r = 0; *s = 0; stop = ddf_TRUE; } } while (!stop); set_free(rowexcluded); ddf_clear(Xtemp); } void ddf_GaussianColumnPivot(ddf_rowrange m_size, ddf_colrange d_size, ddf_Amatrix X, ddf_Bmatrix T, ddf_rowrange r, ddf_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. */ { ddf_colrange j, j1; myfloat Xtemp0, Xtemp1, Xtemp; static ddf_Arow Rtemp; static ddf_colrange last_d=0; ddf_init(Xtemp0); ddf_init(Xtemp1); ddf_init(Xtemp); if (last_d!=d_size){ if (last_d>0) { for (j=1; j<=last_d; j++) ddf_clear(Rtemp[j-1]); free(Rtemp); } Rtemp=(myfloat*)calloc(d_size,sizeof(myfloat)); for (j=1; j<=d_size; j++) ddf_init(Rtemp[j-1]); last_d=d_size; } for (j=1; j<=d_size; j++) { ddf_TableauEntry(&(Rtemp[j-1]), m_size, d_size, X, T, r,j); } ddf_set(Xtemp0,Rtemp[s-1]); for (j = 1; j <= d_size; j++) { if (j != s) { ddf_div(Xtemp,Rtemp[j-1],Xtemp0); ddf_set(Xtemp1,ddf_purezero); for (j1 = 1; j1 <= d_size; j1++){ ddf_mul(Xtemp1,Xtemp,T[j1-1][s - 1]); ddf_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++) ddf_div(T[j-1][s - 1],T[j-1][s - 1],Xtemp0); ddf_clear(Xtemp0); ddf_clear(Xtemp1); ddf_clear(Xtemp); } void ddf_GaussianColumnPivot2(ddf_rowrange m_size,ddf_colrange d_size, ddf_Amatrix A,ddf_Bmatrix T,ddf_colindex nbindex,ddf_rowindex bflag,ddf_rowrange r,ddf_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=ddf_FALSE; long entering; if (ddf_debug) localdebug=ddf_debug; ddf_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,"ddf_GaussianColumnPivot2\n"); fprintf(stderr," pivot: (leaving, entering) = (%ld, %ld)\n", r,entering); fprintf(stderr, " bflag[%ld] is set to %ld\n", r, s); } } void ddf_ResetTableau(ddf_rowrange m_size,ddf_colrange d_size,ddf_Bmatrix T, ddf_colindex nbindex,ddf_rowindex bflag,ddf_rowrange objrow,ddf_colrange rhscol) { ddf_rowrange i; ddf_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. */ ddf_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 ddf_SelectCrissCrossPivot(ddf_rowrange m_size,ddf_colrange d_size,ddf_Amatrix A,ddf_Bmatrix T, ddf_rowindex bflag,ddf_rowrange objrow,ddf_colrange rhscol, ddf_rowrange *r,ddf_colrange *s, int *selected,ddf_LPStatusType *lps) { int colselected=ddf_FALSE,rowselected=ddf_FALSE; ddf_rowrange i; myfloat val; ddf_init(val); *selected=ddf_FALSE; *lps=ddf_LPSundecided; while ((*lps==ddf_LPSundecided) && (!rowselected) && (!colselected)) { for (i=1; i<=m_size; i++) { if (i!=objrow && bflag[i]==-1) { /* i is a basic variable */ ddf_TableauEntry(&val,m_size,d_size,A,T,i,rhscol); if (ddf_Negative(val)) { rowselected=ddf_TRUE; *r=i; break; } } else if (bflag[i] >0) { /* i is nonbasic variable */ ddf_TableauEntry(&val,m_size,d_size,A,T,objrow,bflag[i]); if (ddf_Positive(val)) { colselected=ddf_TRUE; *s=bflag[i]; break; } } } if ((!rowselected) && (!colselected)) { *lps=ddf_Optimal; return; } else if (rowselected) { for (i=1; i<=m_size; i++) { if (bflag[i] >0) { /* i is nonbasic variable */ ddf_TableauEntry(&val,m_size,d_size,A,T,*r,bflag[i]); if (ddf_Positive(val)) { colselected=ddf_TRUE; *s=bflag[i]; *selected=ddf_TRUE; break; } } } } else if (colselected) { for (i=1; i<=m_size; i++) { if (i!=objrow && bflag[i]==-1) { /* i is a basic variable */ ddf_TableauEntry(&val,m_size,d_size,A,T,i,*s); if (ddf_Negative(val)) { rowselected=ddf_TRUE; *r=i; *selected=ddf_TRUE; break; } } } } if (!rowselected) { *lps=ddf_DualInconsistent; } else if (!colselected) { *lps=ddf_Inconsistent; } } ddf_clear(val); } void ddf_CrissCrossSolve(ddf_LPPtr lp, ddf_ErrorType *err) { switch (lp->objective) { case ddf_LPmax: ddf_CrissCrossMaximize(lp,err); break; case ddf_LPmin: ddf_CrissCrossMinimize(lp,err); break; case ddf_LPnone: *err=ddf_NoLPObjective; break; } } void ddf_DualSimplexSolve(ddf_LPPtr lp, ddf_ErrorType *err) { switch (lp->objective) { case ddf_LPmax: ddf_DualSimplexMaximize(lp,err); break; case ddf_LPmin: ddf_DualSimplexMinimize(lp,err); break; case ddf_LPnone: *err=ddf_NoLPObjective; break; } } #ifdef ddf_GMPRATIONAL ddf_LPStatusType LPSf2LPS(ddf_LPStatusType lpsf) { ddf_LPStatusType lps=ddf_LPSundecided; switch (lpsf) { case ddf_LPSundecided: lps=ddf_LPSundecided; break; case ddf_Optimal: lps=ddf_Optimal; break; case ddf_Inconsistent: lps=ddf_Inconsistent; break; case ddf_DualInconsistent: lps=ddf_DualInconsistent; break; case ddf_StrucInconsistent: lps=ddf_StrucInconsistent; break; case ddf_StrucDualInconsistent: lps=ddf_StrucDualInconsistent; break; case ddf_Unbounded: lps=ddf_Unbounded; break; case ddf_DualUnbounded: lps=ddf_DualUnbounded; break; } return lps; } void ddf_BasisStatus(ddf_LPPtr lpf, ddf_LPPtr lp, ddf_boolean *LPScorrect) { int i; ddf_colrange se, j; ddf_boolean basisfound; switch (lp->objective) { case ddf_LPmax: ddf_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 ddf_LPmin: ddf_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 ddf_LPnone: break; } } #endif void ddf_FindLPBasis(ddf_rowrange m_size,ddf_colrange d_size, ddf_Amatrix A, ddf_Bmatrix T,ddf_rowindex OV,ddf_rowset equalityset, ddf_colindex nbindex, ddf_rowindex bflag,ddf_rowrange objrow,ddf_colrange rhscol, ddf_colrange *cs,int *found,ddf_LPStatusType *lps,long *pivot_no) { /* Find a LP basis using Gaussian pivots. If the problem has an LP basis, the procedure returns *found=ddf_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=ddf_FALSE, *lps=ddf_StrucDualInconsistent and the evidence column *s. Otherwise, this returns *found=ddf_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; myfloat val; ddf_rowrange r; ddf_colrange j,s; ddf_init(val); *found=ddf_FALSE; *cs=0; rank=0; stop=ddf_FALSE; *lps=ddf_LPSundecided; set_initialize(&RowSelected,m_size); set_initialize(&ColSelected,d_size); set_addelem(RowSelected,objrow); set_addelem(ColSelected,rhscol); stop=ddf_FALSE; do { /* Find a LP basis */ ddf_SelectPivot2(m_size,d_size,A,T,ddf_MinIndex,OV,equalityset, m_size,RowSelected,ColSelected,&r,&s,&chosen); if (chosen) { set_addelem(RowSelected,r); set_addelem(ColSelected,s); ddf_GaussianColumnPivot2(m_size,d_size,A,T,nbindex,bflag,r,s); pivots_p0++; rank++; } else { for (j=1;j<=d_size && *lps==ddf_LPSundecided; j++) { if (j!=rhscol && nbindex[j]<0){ ddf_TableauEntry(&val,m_size,d_size,A,T,objrow,j); if (ddf_Nonzero(val)){ /* dual inconsistent */ *lps=ddf_StrucDualInconsistent; *cs=j; /* dual inconsistent because the nonzero reduced cost */ } } } if (*lps==ddf_LPSundecided) *found=ddf_TRUE; /* dependent columns but not dual inconsistent. */ stop=ddf_TRUE; } /* printf("d_size=%ld, rank=%ld\n",d_size,rank); */ if (rank==d_size-1) { stop = ddf_TRUE; *found=ddf_TRUE; } } while (!stop); *pivot_no=pivots_p0; ddf_statBApivots+=pivots_p0; set_free(RowSelected); set_free(ColSelected); ddf_clear(val); } void ddf_FindLPBasis2(ddf_rowrange m_size,ddf_colrange d_size, ddf_Amatrix A, ddf_Bmatrix T,ddf_rowindex OV,ddf_rowset equalityset, ddf_colindex nbindex, ddf_rowindex bflag,ddf_rowrange objrow,ddf_colrange rhscol, ddf_colrange *cs,int *found,long *pivot_no) { /* Similar to ddf_FindLPBasis but it is much simpler. This tries to recompute T for the specified basis given by nbindex. It will return *found=ddf_FALSE if the specified basis is not a basis. */ int chosen,stop; long pivots_p0=0,rank; ddf_colset ColSelected,DependentCols; ddf_rowset RowSelected, NopivotRow; myfloat val; ddf_boolean localdebug=ddf_FALSE; ddf_rowrange r,negcount=0; ddf_colrange j,s; ddf_init(val); *found=ddf_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=ddf_FALSE; do { /* Find a LP basis */ ddf_SelectPivot2(m_size,d_size,A,T,ddf_MinIndex,OV,equalityset, m_size,RowSelected,ColSelected,&r,&s,&chosen); if (chosen) { set_addelem(RowSelected,r); set_addelem(ColSelected,s); ddf_GaussianColumnPivot2(m_size,d_size,A,T,nbindex,bflag,r,s); if (localdebug && m_size <=10){ ddf_WriteBmatrix(stderr,d_size,T); ddf_WriteTableau(stderr,m_size,d_size,A,T,nbindex,bflag); } pivots_p0++; rank++; } else{ *found=ddf_FALSE; /* cannot pivot on any of the spacified positions. */ stop=ddf_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); ddf_SelectPivot2(m_size,d_size,A,T,ddf_MinIndex,OV,equalityset, m_size,RowSelected,ColSelected,&r,&s,&chosen); if (chosen) *found=ddf_FALSE; /* not supposed to be independent */ else *found=ddf_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=ddf_TRUE; } stop = ddf_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); ddf_clear(val); } void ddf_FindDualFeasibleBasis(ddf_rowrange m_size,ddf_colrange d_size, ddf_Amatrix A,ddf_Bmatrix T,ddf_rowindex OV, ddf_colindex nbindex,ddf_rowindex bflag,ddf_rowrange objrow,ddf_colrange rhscol, ddf_boolean lexicopivot, ddf_colrange *s,ddf_ErrorType *err,ddf_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. */ ddf_boolean phase1,dualfeasible=ddf_TRUE; ddf_boolean localdebug=ddf_FALSE,chosen,stop; ddf_LPStatusType LPSphase1; long pivots_p1=0; ddf_rowrange i,r_val; ddf_colrange j,l,ms=0,s_val,local_m_size; myfloat x,val,maxcost,axvalue,maxratio; static ddf_colrange d_last=0; static ddf_Arow rcost; static ddf_colindex nbindex_ref; /* to be used to store the initial feasible basis for lexico rule */ myfloat scaling,svalue; /* random scaling myfloat value */ myfloat minval; if (ddf_debug) localdebug=ddf_debug; ddf_init(x); ddf_init(val); ddf_init(scaling); ddf_init(svalue); ddf_init(axvalue); ddf_init(maxcost); ddf_set(maxcost,ddf_minuszero); ddf_init(maxratio); ddf_set(maxratio,ddf_minuszero); if (d_last0) { for (j=1; j<=d_last; j++){ ddf_clear(rcost[j-1]);} free(rcost); free(nbindex_ref); } rcost=(myfloat*) calloc(d_size,sizeof(myfloat)); nbindex_ref=(long*) calloc(d_size+1,sizeof(long)); for (j=1; j<=d_size; j++){ ddf_init(rcost[j-1]);} d_last=d_size; } *err=ddf_NoError; *lps=ddf_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){ ddf_TableauEntry(&(rcost[j-1]),local_m_size,d_size,A,T,objrow,j); if (ddf_Larger(rcost[j-1],maxcost)) {ddf_set(maxcost,rcost[j-1]); ms = j;} } } if (ddf_Positive(maxcost)) dualfeasible=ddf_FALSE; if (!dualfeasible){ for (j=1; j<=d_size; j++){ ddf_set(A[local_m_size-1][j-1], ddf_purezero); for (l=1; l<=d_size; l++){ if (nbindex[l]>0) { ddf_set_si(scaling,l+10); ddf_mul(svalue,A[nbindex[l]-1][j-1],scaling); ddf_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,"\nddf_FindDualFeasibleBasis: curruent basis is not dual feasible.\n"); fprintf(stderr,"because of the column %ld assoc. with var %ld dual cost =", ms,nbindex[ms]); ddf_WriteNumber(stderr, maxcost); if (localdebug) { if (m_size <=100 && d_size <=30){ printf("\nddf_FindDualFeasibleBasis: the starting dictionary.\n"); ddf_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) && ddf_Positive(rcost[j-1])){ ddf_TableauEntry(&axvalue,local_m_size,d_size,A,T,local_m_size,j); if (ddf_Nonnegative(axvalue)) { *err=ddf_NumericallyInconsistent; /* This should not happen as they are set negative above. Quit the phase I.*/ if (localdebug) fprintf(stderr,"ddf_FindDualFeasibleBasis: Numerical Inconsistency detected.\n"); goto _L99; } ddf_neg(axvalue,axvalue); ddf_div(axvalue,rcost[j-1],axvalue); /* axvalue is the negative of ratio that is to be maximized. */ if (ddf_Larger(axvalue,maxratio)) { ddf_set(maxratio,axvalue); ms = j; } } } if (ms==0) { *err=ddf_NumericallyInconsistent; /* This should not happen. Quit the phase I.*/ if (localdebug) fprintf(stderr,"ddf_FindDualFeasibleBasis: Numerical Inconsistency detected.\n"); goto _L99; } /* Pivot on (local_m_size,ms) so that the dual basic solution becomes feasible */ ddf_GaussianColumnPivot2(local_m_size,d_size,A,T,nbindex,bflag,local_m_size,ms); pivots_p1=pivots_p1+1; if (localdebug) { printf("\nddf_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) ddf_WriteSignTableau2(stdout,m_size+1,d_size,A,T,nbindex_ref,nbindex,bflag); } phase1=ddf_TRUE; stop=ddf_FALSE; do { /* Dual Simplex Phase I */ chosen=ddf_FALSE; LPSphase1=ddf_LPSundecided; if (pivots_p1>maxpivots) { *err=ddf_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 */ } ddf_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: ddf_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. */ ddf_TableauEntry(&x,local_m_size,d_size,A,T,objrow,ms); if (ddf_Negative(x)){ *err=ddf_NoError; *lps=ddf_DualInconsistent; *s=ms; } if (localdebug) { fprintf(stderr,"\nddf_FindDualFeasibleBasis: the auxiliary variable was forced to enter the basis (# pivots = %ld).\n",pivots_p1); fprintf(stderr," -- objrow %ld, ms %ld entry: ",objrow,ms); ddf_WriteNumber(stderr, x); fprintf(stderr,"\n"); if (ddf_Negative(x)){ fprintf(stderr,"->The basis is dual inconsistent. Terminate.\n"); } else { fprintf(stderr,"->The basis is feasible. Go to phase II.\n"); } } ddf_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 */ ddf_TableauEntry(&val,local_m_size,d_size,A,T,i,ms); /* auxiliary column*/ if (ddf_Smaller(val, minval)) { r_val=i; ddf_set(minval,val); } } } ddf_clear(minval); if (r_val==0) { *err=ddf_NumericallyInconsistent; /* This should not happen. Quit the phase I.*/ if (localdebug) fprintf(stderr,"ddf_FindDualFeasibleBasis: Numerical Inconsistency detected (r_val is 0).\n"); goto _L99; } ddf_GaussianColumnPivot2(local_m_size,d_size,A,T,nbindex,bflag,r_val,ms); pivots_p1=pivots_p1+1; if (localdebug) { printf("\nddf_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) ddf_WriteSignTableau2(stdout,m_size+1,d_size,A,T,nbindex_ref,nbindex,bflag); } stop=ddf_TRUE; } else { ddf_GaussianColumnPivot2(local_m_size,d_size,A,T,nbindex,bflag,r_val,s_val); pivots_p1=pivots_p1+1; if (localdebug) { printf("\nddf_FindDualFeasibleBasis: make a %ld-th pivot on %ld %ld\n",pivots_p1,r_val,s_val); if (m_size <=100 && d_size <=30) ddf_WriteSignTableau2(stdout,local_m_size,d_size,A,T,nbindex_ref,nbindex,bflag); } if (bflag[local_m_size]<0) { stop=ddf_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; ddf_statDS1pivots+=pivots_p1; ddf_clear(x); ddf_clear(val); ddf_clear(maxcost); ddf_clear(maxratio); ddf_clear(scaling); ddf_clear(svalue); ddf_clear(axvalue); } void ddf_DualSimplexMinimize(ddf_LPPtr lp,ddf_ErrorType *err) { ddf_colrange j; *err=ddf_NoError; for (j=1; j<=lp->d; j++) ddf_neg(lp->A[lp->objrow-1][j-1],lp->A[lp->objrow-1][j-1]); ddf_DualSimplexMaximize(lp,err); ddf_neg(lp->optvalue,lp->optvalue); for (j=1; j<=lp->d; j++){ if (lp->LPS!=ddf_Inconsistent) { /* Inconsistent certificate stays valid for minimization, 0.94e */ ddf_neg(lp->dsol[j-1],lp->dsol[j-1]); } ddf_neg(lp->A[lp->objrow-1][j-1],lp->A[lp->objrow-1][j-1]); } } void ddf_DualSimplexMaximize(ddf_LPPtr lp,ddf_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; ddf_boolean localdebug=ddf_FALSE,localdebug1=ddf_FALSE; #if !defined ddf_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 ddf_rowrange i,r; ddf_colrange j,s; static ddf_rowindex bflag; static long mlast=0,nlast=0; static ddf_rowindex OrderVector; /* the permutation vector to store a preordered row indeces */ static ddf_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=ddf_NoError; */ if (ddf_debug) localdebug=ddf_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 ddf_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. */ ddf_ComputeRowOrderVector2(lp->m,lp->d,lp->A,OrderVector,ddf_MinIndex,rseed); lp->re=0; lp->se=0; ddf_ResetTableau(lp->m,lp->d,lp->B,lp->nbindex,bflag,lp->objrow,lp->rhscol); ddf_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. */ } ddf_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, "ddf_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) ddf_WriteSignTableau2(stdout,lp->m+1,lp->d,lp->A,lp->B,nbindex_ref,lp->nbindex,bflag); } if (*err==ddf_LPCycling || *err==ddf_NumericallyInconsistent){ if (localdebug) fprintf(stderr, "Phase I failed and thus switch to the Criss-Cross method\n"); ddf_CrissCrossMaximize(lp,err); return; } if (lp->LPS==ddf_DualInconsistent){ lp->se=s; goto _L99; /* No dual feasible basis is found, and thus DualInconsistent. Output the evidence column. */ } /* Dual Simplex Method */ stop=ddf_FALSE; do { chosen=ddf_FALSE; lp->LPS=ddf_LPSundecided; phase1=ddf_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) { ddf_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,"\nddf_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==ddf_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,"\nddf_DualSimplexMaximize: The current dictionary.\n"); ddf_WriteSignTableau2(stdout,lp->m,lp->d,lp->A,lp->B,nbindex_ref,lp->nbindex,bflag); } } #if !defined ddf_GMPRATIONAL if (pivots_pc>maxccpivots) { *err=ddf_LPCycling; stop=ddf_TRUE; goto _L99; } #endif ddf_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) { ddf_GaussianColumnPivot2(lp->m,lp->d,lp->A,lp->B,lp->nbindex,bflag,r,s); if (localdebug && lp->m <=100 && lp->d <=30){ fprintf(stderr,"\nddf_DualSimplexMaximize: The current dictionary.\n"); ddf_WriteSignTableau2(stdout,lp->m,lp->d,lp->A,lp->B,nbindex_ref,lp->nbindex,bflag); } } else { switch (lp->LPS){ case ddf_Inconsistent: lp->re=r; case ddf_DualInconsistent: lp->se=s; default: break; } stop=ddf_TRUE; } } while(!stop); _L99: lp->pivots[2]=pivots_ds; lp->pivots[3]=pivots_pc; ddf_statDS2pivots+=pivots_ds; ddf_statACpivots+=pivots_pc; ddf_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 ddf_CrissCrossMinimize(ddf_LPPtr lp,ddf_ErrorType *err) { ddf_colrange j; *err=ddf_NoError; for (j=1; j<=lp->d; j++) ddf_neg(lp->A[lp->objrow-1][j-1],lp->A[lp->objrow-1][j-1]); ddf_CrissCrossMaximize(lp,err); ddf_neg(lp->optvalue,lp->optvalue); for (j=1; j<=lp->d; j++){ if (lp->LPS!=ddf_Inconsistent) { /* Inconsistent certificate stays valid for minimization, 0.94e */ ddf_neg(lp->dsol[j-1],lp->dsol[j-1]); } ddf_neg(lp->A[lp->objrow-1][j-1],lp->A[lp->objrow-1][j-1]); } } void ddf_CrissCrossMaximize(ddf_LPPtr lp,ddf_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 ddf_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 ddf_rowrange i,r; ddf_colrange s; static ddf_rowindex bflag; static long mlast=0; static ddf_rowindex OrderVector; /* the permutation vector to store a preordered row indeces */ unsigned int rseed=1; ddf_colindex nbtemp; *err=ddf_NoError; #if !defined ddf_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. */ ddf_ComputeRowOrderVector2(lp->m,lp->d,lp->A,OrderVector,ddf_MinIndex,rseed); lp->re=0; lp->se=0; pivots1=0; ddf_ResetTableau(lp->m,lp->d,lp->B,lp->nbindex,bflag,lp->objrow,lp->rhscol); ddf_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=ddf_FALSE; do { /* Criss-Cross Method */ #if !defined ddf_GMPRATIONAL if (pivots1>maxpivots) { *err=ddf_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 ddf_SelectCrissCrossPivot(lp->m,lp->d,lp->A,lp->B,bflag, lp->objrow,lp->rhscol,&r,&s,&chosen,&(lp->LPS)); if (chosen) { ddf_GaussianColumnPivot2(lp->m,lp->d,lp->A,lp->B,lp->nbindex,bflag,r,s); pivots1++; } else { switch (lp->LPS){ case ddf_Inconsistent: lp->re=r; case ddf_DualInconsistent: lp->se=s; default: break; } stop=ddf_TRUE; } } while(!stop); _L99: lp->pivots[1]+=pivots1; ddf_statCCpivots+=pivots1; ddf_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 ddf_SetSolutions(ddf_rowrange m_size,ddf_colrange d_size, ddf_Amatrix A,ddf_Bmatrix T, ddf_rowrange objrow,ddf_colrange rhscol,ddf_LPStatusType LPS, myfloat *optvalue,ddf_Arow sol,ddf_Arow dsol,ddf_rowset posset, ddf_colindex nbindex, ddf_rowrange re,ddf_colrange se,ddf_rowindex bflag) /* Assign the solution vectors to sol,dsol,*optvalue after solving the LP. */ { ddf_rowrange i; ddf_colrange j; myfloat x,sw; int localdebug=ddf_FALSE; ddf_init(x); ddf_init(sw); if (localdebug) fprintf(stderr,"SetSolutions:\n"); switch (LPS){ case ddf_Optimal: for (j=1;j<=d_size; j++) { ddf_set(sol[j-1],T[j-1][rhscol-1]); ddf_TableauEntry(&x,m_size,d_size,A,T,objrow,j); ddf_neg(dsol[j-1],x); ddf_TableauEntry(optvalue,m_size,d_size,A,T,objrow,rhscol); if (localdebug) {fprintf(stderr,"dsol[%ld]= ",nbindex[j]); ddf_WriteNumber(stderr, dsol[j-1]); } } for (i=1; i<=m_size; i++) { if (bflag[i]==-1) { /* i is a basic variable */ ddf_TableauEntry(&x,m_size,d_size,A,T,i,rhscol); if (ddf_Positive(x)) set_addelem(posset, i); } } break; case ddf_Inconsistent: if (localdebug) fprintf(stderr,"SetSolutions: LP is inconsistent.\n"); for (j=1;j<=d_size; j++) { ddf_set(sol[j-1],T[j-1][rhscol-1]); ddf_TableauEntry(&x,m_size,d_size,A,T,re,j); ddf_neg(dsol[j-1],x); if (localdebug) {fprintf(stderr,"dsol[%ld]=",nbindex[j]); ddf_WriteNumber(stderr,dsol[j-1]); fprintf(stderr,"\n"); } } break; case ddf_DualInconsistent: if (localdebug) printf( "SetSolutions: LP is dual inconsistent.\n"); for (j=1;j<=d_size; j++) { ddf_set(sol[j-1],T[j-1][se-1]); ddf_TableauEntry(&x,m_size,d_size,A,T,objrow,j); ddf_neg(dsol[j-1],x); if (localdebug) {fprintf(stderr,"dsol[%ld]=",nbindex[j]); ddf_WriteNumber(stderr,dsol[j-1]); fprintf(stderr,"\n"); } } break; case ddf_StrucDualInconsistent: ddf_TableauEntry(&x,m_size,d_size,A,T,objrow,se); if (ddf_Positive(x)) ddf_set(sw,ddf_one); else ddf_neg(sw,ddf_one); for (j=1;j<=d_size; j++) { ddf_mul(sol[j-1],sw,T[j-1][se-1]); ddf_TableauEntry(&x,m_size,d_size,A,T,objrow,j); ddf_neg(dsol[j-1],x); if (localdebug) {fprintf(stderr,"dsol[%ld]= ",nbindex[j]);ddf_WriteNumber(stderr,dsol[j-1]);} } if (localdebug) fprintf(stderr,"SetSolutions: LP is dual inconsistent.\n"); break; default:break; } ddf_clear(x); ddf_clear(sw); } void ddf_RandomPermutation2(ddf_rowindex OV,long t,unsigned int seed) { long k,j,ovj; double u,xk,r,rand_max=(double) RAND_MAX; int localdebug=ddf_FALSE; srand(seed); for (j=t; j>1 ; j--) { r=rand(); 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 ddf_ComputeRowOrderVector2(ddf_rowrange m_size,ddf_colrange d_size,ddf_Amatrix A, ddf_rowindex OV,ddf_RowOrderType ho,unsigned int rseed) { long i,itemp; OV[0]=0; switch (ho){ case ddf_MaxIndex: for(i=1; i<=m_size; i++) OV[i]=m_size-i+1; break; case ddf_LexMin: for(i=1; i<=m_size; i++) OV[i]=i; ddf_QuickSort(OV,1,m_size,A,d_size); break; case ddf_LexMax: for(i=1; i<=m_size; i++) OV[i]=i; ddf_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 ddf_RandomRow: for(i=1; i<=m_size; i++) OV[i]=i; if (rseed<=0) rseed=1; ddf_RandomPermutation2(OV,m_size,rseed); break; case ddf_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 ddf_SelectPreorderedNext2(ddf_rowrange m_size,ddf_colrange d_size, rowset excluded,ddf_rowindex OV,ddf_rowrange *hnext) { ddf_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 ddf_GMPRATIONAL ddf_LPObjectiveType Obj2Obj(ddf_LPObjectiveType obj) { ddf_LPObjectiveType objf=ddf_LPnone; switch (obj) { case ddf_LPnone: objf=ddf_LPnone; break; case ddf_LPmax: objf=ddf_LPmax; break; case ddf_LPmin: objf=ddf_LPmin; break; } return objf; } ddf_LPPtr ddf_LPgmp2LPf(ddf_LPPtr lp) { ddf_rowrange i; ddf_colrange j; ddf_LPType *lpf; double val; ddf_boolean localdebug=ddf_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 ddf_boolean ddf_LPSolve(ddf_LPPtr lp,ddf_LPSolverType solver,ddf_ErrorType *err) /* The current version of ddf_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; ddf_boolean found=ddf_FALSE; #ifdef ddf_GMPRATIONAL ddf_LPPtr lpf; ddf_ErrorType errf; ddf_boolean LPScorrect=ddf_FALSE; ddf_boolean localdebug=ddf_FALSE; if (ddf_debug) localdebug=ddf_debug; #endif *err=ddf_NoError; lp->solver=solver; time(&lp->starttime); #ifndef ddf_GMPRATIONAL switch (lp->solver) { case ddf_CrissCross: ddf_CrissCrossSolve(lp,err); break; case ddf_DualSimplex: ddf_DualSimplexSolve(lp,err); break; } #else lpf=ddf_LPgmp2LPf(lp); switch (lp->solver) { case ddf_CrissCross: ddf_CrissCrossSolve(lpf,&errf); /* First, run with double float. */ if (errf==ddf_NoError){ /* 094a: fix for a bug reported by Dima Pasechnik */ ddf_BasisStatus(lpf,lp, &LPScorrect); /* Check the basis. */ } else {LPScorrect=ddf_FALSE;} if (!LPScorrect) { if (localdebug) printf("BasisStatus: the current basis is NOT verified with GMP. Rerun with GMP.\n"); ddf_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 ddf_DualSimplex: ddf_DualSimplexSolve(lpf,&errf); /* First, run with double float. */ if (errf==ddf_NoError){ /* 094a: fix for a bug reported by Dima Pasechnik */ ddf_BasisStatus(lpf,lp, &LPScorrect); /* Check the basis. */ } else {LPScorrect=ddf_FALSE;} if (!LPScorrect){ if (localdebug) printf("BasisStatus: the current basis is NOT verified with GMP. Rerun with GMP.\n"); ddf_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); ddf_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==ddf_NoError) found=ddf_TRUE; return found; } ddf_boolean ddf_LPSolve0(ddf_LPPtr lp,ddf_LPSolverType solver,ddf_ErrorType *err) /* The original version of ddf_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; ddf_boolean found=ddf_FALSE; *err=ddf_NoError; lp->solver=solver; time(&lp->starttime); switch (lp->solver) { case ddf_CrissCross: ddf_CrissCrossSolve(lp,err); break; case ddf_DualSimplex: ddf_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==ddf_NoError) found=ddf_TRUE; return found; } ddf_LPPtr ddf_MakeLPforInteriorFinding(ddf_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. */ { ddf_rowrange m; ddf_colrange d; ddf_NumberType numbtype; ddf_LPObjectiveType obj; ddf_LPType *lpnew; ddf_rowrange i; ddf_colrange j; myfloat bm,bmax,bceil; int localdebug=ddf_FALSE; ddf_init(bm); ddf_init(bmax); ddf_init(bceil); ddf_add(bm,ddf_one,ddf_one); ddf_set(bmax,ddf_one); numbtype=lp->numbtype; m=lp->m+1; d=lp->d+1; obj=ddf_LPmax; lpnew=ddf_CreateLPData(obj, numbtype, m, d); for (i=1; i<=lp->m; i++) { if (ddf_Larger(lp->A[i-1][lp->rhscol-1],bmax)) ddf_set(bmax,lp->A[i-1][lp->rhscol-1]); } ddf_mul(bceil,bm,bmax); if (localdebug) {fprintf(stderr,"bceil is set to "); ddf_WriteNumber(stderr, bceil);} for (i=1; i <= lp->m; i++) { for (j=1; j <= lp->d; j++) { ddf_set(lpnew->A[i-1][j-1],lp->A[i-1][j-1]); } } for (i=1;i<=lp->m; i++){ ddf_neg(lpnew->A[i-1][lp->d],ddf_one); /* new column with all minus one's */ } for (j=1;j<=lp->d;j++){ ddf_set(lpnew->A[m-2][j-1],ddf_purezero); /* new row (bceil, 0,...,0,-1) */ } ddf_set(lpnew->A[m-2][0],bceil); /* new row (bceil, 0,...,0,-1) */ for (j=1;j<= d-1;j++) { ddf_set(lpnew->A[m-1][j-1],ddf_purezero); /* new obj row with (0,...,0,1) */ } ddf_set(lpnew->A[m-1][d-1],ddf_one); /* new obj row with (0,...,0,1) */ if (localdebug) ddf_WriteAmatrix(stderr, lp->A, lp->m, lp->d); if (localdebug) ddf_WriteAmatrix(stderr, lpnew->A, lpnew->m, lpnew->d); ddf_clear(bm); ddf_clear(bmax); ddf_clear(bceil); return lpnew; } void ddf_WriteLPResult(FILE *f,ddf_LPPtr lp,ddf_ErrorType err) { long j; fprintf(f,"* cdd LP solver result\n"); if (err!=ddf_NoError) { ddf_WriteErrorMessages(f,err); goto _L99; } ddf_WriteProgramDescription(f); fprintf(f,"* #constraints = %ld\n",lp->m-1); fprintf(f,"* #variables = %ld\n",lp->d-1); switch (lp->solver) { case ddf_DualSimplex: fprintf(f,"* Algorithm: dual simplex algorithm\n");break; case ddf_CrissCross: fprintf(f,"* Algorithm: criss-cross method\n");break; } switch (lp->objective) { case ddf_LPmax: fprintf(f,"* maximization is chosen\n");break; case ddf_LPmin: fprintf(f,"* minimization is chosen\n");break; case ddf_LPnone: fprintf(f,"* no objective type (max or min) is chosen\n");break; } if (lp->objective==ddf_LPmax||lp->objective==ddf_LPmin){ fprintf(f,"* Objective function is\n"); for (j=0; jd; j++){ if (j>0 && ddf_Nonnegative(lp->A[lp->objrow-1][j]) ) fprintf(f," +"); if (j>0 && (j % 5) == 0) fprintf(f,"\n"); ddf_WriteNumber(f,lp->A[lp->objrow-1][j]); if (j>0) fprintf(f," X[%3ld]",j); } fprintf(f,"\n"); } switch (lp->LPS){ case ddf_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); ddf_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]); ddf_WriteNumber(f,lp->dsol[j]); fprintf(f,"\n"); } } fprintf(f," optimal_value : "); ddf_WriteNumber(f,lp->optvalue); fprintf(f,"\nend\n"); break; case ddf_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); ddf_WriteNumber(f,ddf_one); fprintf(f,"\n"); for (j=1; jd; j++){ if (lp->nbindex[j+1]>0) { fprintf(f," %3ld : ",lp->nbindex[j+1]); ddf_WriteNumber(f,lp->dsol[j]); fprintf(f,"\n"); } } fprintf(f,"end\n"); break; case ddf_DualInconsistent: case ddf_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); ddf_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]); ddf_WriteLPTimes(f, lp); _L99:; } ddf_LPPtr ddf_CreateLP_H_ImplicitLinearity(ddf_MatrixPtr M) { ddf_rowrange m, i, irev, linc; ddf_colrange d, j; ddf_LPPtr lp; ddf_boolean localdebug=ddf_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=ddf_CreateLPData(M->objective, M->numbtype, m, d); lp->Homogeneous = ddf_TRUE; lp->objective = ddf_LPmax; lp->eqnumber=linc; /* this records the number of equations */ lp->redcheck_extensive=ddf_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++) { ddf_neg(lp->A[irev-1][j-1],M->matrix[i-1][j-1]); } /*of j*/ } else { ddf_set(lp->A[i-1][d-1],ddf_minusone); /* b_I + A_I x - 1 z >= 0 (z=x_d) */ } for (j = 1; j <= M->colsize; j++) { ddf_set(lp->A[i-1][j-1],M->matrix[i-1][j-1]); if (j==1 && irowsize && ddf_Nonzero(M->matrix[i-1][j-1])) lp->Homogeneous = ddf_FALSE; } /*of j*/ } /*of i*/ ddf_set(lp->A[m-2][0],ddf_one); ddf_set(lp->A[m-2][d-1],ddf_minusone); /* make the LP bounded. */ ddf_set(lp->A[m-1][d-1],ddf_one); /* objective is to maximize z. */ if (localdebug) { fprintf(stderr,"ddf_CreateLP_H_ImplicitLinearity: an new lp is\n"); ddf_WriteLP(stderr,lp); } return lp; } ddf_LPPtr ddf_CreateLP_V_ImplicitLinearity(ddf_MatrixPtr M) { ddf_rowrange m, i, irev, linc; ddf_colrange d, j; ddf_LPPtr lp; ddf_boolean localdebug=ddf_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=ddf_CreateLPData(M->objective, M->numbtype, m, d); lp->Homogeneous = ddf_FALSE; lp->objective = ddf_LPmax; lp->eqnumber=linc; /* this records the number of equations */ lp->redcheck_extensive=ddf_FALSE; /* this is default */ irev=M->rowsize; /* the first row of the linc reversed inequalities. */ for (i = 1; i <= M->rowsize; i++) { ddf_set(lp->A[i-1][0],ddf_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++) { ddf_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 { ddf_set(lp->A[i-1][d-1],ddf_minusone); /* b_I x_0 + A_I x - 1 z >= 0 (z=x_d) */ } for (j = 2; j <= (M->colsize)+1; j++) { ddf_set(lp->A[i-1][j-1],M->matrix[i-1][j-2]); } /*of j*/ } /*of i*/ ddf_set(lp->A[m-2][0],ddf_one); ddf_set(lp->A[m-2][d-1],ddf_minusone); /* make the LP bounded. */ ddf_set(lp->A[m-1][d-1],ddf_one); /* objective is to maximize z. */ if (localdebug) { fprintf(stderr,"ddf_CreateLP_V_ImplicitLinearity: an new lp is\n"); ddf_WriteLP(stderr,lp); } return lp; } ddf_LPPtr ddf_CreateLP_H_Redundancy(ddf_MatrixPtr M, ddf_rowrange itest) { ddf_rowrange m, i, irev, linc; ddf_colrange d, j; ddf_LPPtr lp; ddf_boolean localdebug=ddf_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=ddf_CreateLPData(M->objective, M->numbtype, m, d); lp->Homogeneous = ddf_TRUE; lp->objective = ddf_LPmin; lp->eqnumber=linc; /* this records the number of equations */ lp->redcheck_extensive=ddf_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++) { ddf_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++) { ddf_set(lp->A[i-1][j-1],M->matrix[i-1][j-1]); if (j==1 && irowsize && ddf_Nonzero(M->matrix[i-1][j-1])) lp->Homogeneous = ddf_FALSE; } /*of j*/ } /*of i*/ for (j = 1; j <= M->colsize; j++) { ddf_set(lp->A[m-1][j-1],M->matrix[itest-1][j-1]); /* objective is to violate the inequality in question. */ } /*of j*/ ddf_add(lp->A[itest-1][0],lp->A[itest-1][0],ddf_one); /* relax the original inequality by one */ return lp; } ddf_LPPtr ddf_CreateLP_V_Redundancy(ddf_MatrixPtr M, ddf_rowrange itest) { ddf_rowrange m, i, irev, linc; ddf_colrange d, j; ddf_LPPtr lp; ddf_boolean localdebug=ddf_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=ddf_CreateLPData(M->objective, M->numbtype, m, d); lp->Homogeneous = ddf_FALSE; lp->objective = ddf_LPmin; lp->eqnumber=linc; /* this records the number of equations */ lp->redcheck_extensive=ddf_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){ ddf_set(lp->A[i-1][0],ddf_one); /* this is to make the LP bounded, ie. the min >= -1 */ } else { ddf_set(lp->A[i-1][0],ddf_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++) { ddf_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++) { ddf_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++) { ddf_set(lp->A[m-1][j-1],M->matrix[itest-1][j-2]); /* objective is to violate the inequality in question. */ } /*of j*/ ddf_set(lp->A[m-1][0],ddf_purezero); /* the constant term for the objective is zero */ if (localdebug) ddf_WriteLP(stdout, lp); return lp; } ddf_LPPtr ddf_CreateLP_V_SRedundancy(ddf_MatrixPtr M, ddf_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. */ ddf_rowrange m, i, irev, linc; ddf_colrange d, j; ddf_LPPtr lp; ddf_boolean localdebug=ddf_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=ddf_CreateLPData(M->objective, M->numbtype, m, d); lp->Homogeneous = ddf_FALSE; lp->objective = ddf_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){ ddf_set(lp->A[i-1][0],ddf_purezero); /* this is a half of the boundary constraint. */ } else { ddf_set(lp->A[i-1][0],ddf_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++) { ddf_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++) { ddf_set(lp->A[i-1][j-1],M->matrix[i-1][j-2]); ddf_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++) { ddf_neg(lp->A[m-2][j-1],lp->A[m-1][j-1]); /* to make an LP bounded. */ } /*of j*/ ddf_set(lp->A[m-2][0],ddf_one); /* the constant term for the bounding constraint is 1 */ if (localdebug) ddf_WriteLP(stdout, lp); return lp; } ddf_boolean ddf_Redundant(ddf_MatrixPtr M, ddf_rowrange itest, ddf_Arow certificate, ddf_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. */ ddf_colrange j; ddf_LPPtr lp; ddf_LPSolutionPtr lps; ddf_ErrorType err=ddf_NoError; ddf_boolean answer=ddf_FALSE,localdebug=ddf_FALSE; *error=ddf_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==ddf_Generator){ lp=ddf_CreateLP_V_Redundancy(M, itest); } else { lp=ddf_CreateLP_H_Redundancy(M, itest); } ddf_LPSolve(lp,ddf_choiceRedcheckAlgorithm,&err); if (err!=ddf_NoError){ *error=err; goto _L999; } else { lps=ddf_CopyLPSolution(lp); for (j=0; jd; j++) { ddf_set(certificate[j], lps->sol[j]); } if (ddf_Negative(lps->optvalue)){ answer=ddf_FALSE; if (localdebug) fprintf(stderr,"==> %ld th row is nonredundant.\n",itest); } else { answer=ddf_TRUE; if (localdebug) fprintf(stderr,"==> %ld th row is redundant.\n",itest); } ddf_FreeLPSolution(lps); } _L999: ddf_FreeLPData(lp); _L99: return answer; } ddf_boolean ddf_RedundantExtensive(ddf_MatrixPtr M, ddf_rowrange itest, ddf_Arow certificate, ddf_rowset *redset,ddf_ErrorType *error) /* 094 */ { /* This uses the same LP construction as ddf_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. */ ddf_colrange j; ddf_LPPtr lp; ddf_LPSolutionPtr lps; ddf_ErrorType err=ddf_NoError; ddf_boolean answer=ddf_FALSE,localdebug=ddf_FALSE; *error=ddf_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==ddf_Generator){ lp=ddf_CreateLP_V_Redundancy(M, itest); } else { lp=ddf_CreateLP_H_Redundancy(M, itest); } lp->redcheck_extensive=ddf_TRUE; ddf_LPSolve0(lp,ddf_DualSimplex,&err); if (err!=ddf_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, "ddf_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=ddf_CopyLPSolution(lp); for (j=0; jd; j++) { ddf_set(certificate[j], lps->sol[j]); } if (ddf_Negative(lps->optvalue)){ answer=ddf_FALSE; if (localdebug) fprintf(stderr,"==> %ld th row is nonredundant.\n",itest); } else { answer=ddf_TRUE; if (localdebug) fprintf(stderr,"==> %ld th row is redundant.\n",itest); } ddf_FreeLPSolution(lps); } _L999: ddf_FreeLPData(lp); _L99: return answer; } ddf_rowset ddf_RedundantRows(ddf_MatrixPtr M, ddf_ErrorType *error) /* 092 */ { ddf_rowrange i,m; ddf_colrange d; ddf_rowset redset; ddf_MatrixPtr Mcopy; ddf_Arow cvec; /* certificate */ ddf_boolean localdebug=ddf_FALSE; m=M->rowsize; if (M->representation==ddf_Generator){ d=(M->colsize)+1; } else { d=M->colsize; } Mcopy=ddf_MatrixCopy(M); ddf_InitializeArow(d,&cvec); set_initialize(&redset, m); for (i=m; i>=1; i--) { if (ddf_Redundant(Mcopy, i, cvec, error)) { if (localdebug) printf("ddf_RedundantRows: the row %ld is redundant.\n", i); set_addelem(redset, i); ddf_MatrixRowRemove(&Mcopy, i); } else { if (localdebug) printf("ddf_RedundantRows: the row %ld is essential.\n", i); } if (*error!=ddf_NoError) goto _L99; } _L99: ddf_FreeMatrix(Mcopy); ddf_FreeArow(d, cvec); return redset; } ddf_boolean ddf_MatrixRedundancyRemove(ddf_MatrixPtr *M, ddf_rowset *redset,ddf_rowindex *newpos, ddf_ErrorType *error) /* 094 */ { /* It returns the set of all redundant rows. This should be called after all implicit linearity are recognized with ddf_MatrixCanonicalizeLinearity. */ ddf_rowrange i,k,m,m1; ddf_colrange d; ddf_rowset redset1; ddf_rowindex newpos1; ddf_MatrixPtr M1=NULL; ddf_Arow cvec; /* certificate */ ddf_boolean success=ddf_FALSE, localdebug=ddf_FALSE; m=(*M)->rowsize; set_initialize(redset, m); M1=ddf_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==ddf_Generator){ d=((*M)->colsize)+1; } else { d=(*M)->colsize; } m1=M1->rowsize; if (localdebug){ fprintf(stderr,"ddf_MatrixRedundancyRemove: By sorting, %ld rows have been removed. The remaining has %ld rows.\n",m-m1,m1); /* ddf_WriteMatrix(stdout,M1); */ } ddf_InitializeArow(d,&cvec); set_initialize(&redset1, M1->rowsize); k=1; do { if (ddf_RedundantExtensive(M1, k, cvec, &redset1,error)) { set_addelem(redset1, k); ddf_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("ddf_MatrixRedundancyRemove: the row %ld is redundant. The new matrix has %ld rows.\n", k, M1->rowsize); /* ddf_WriteMatrix(stderr, M1); */ } free(newpos1); } else { if (set_card(redset1)>0) { ddf_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("ddf_MatrixRedundancyRemove: the row %ld is essential. The new matrix has %ld rows.\n", k, M1->rowsize); /* ddf_WriteMatrix(stderr, M1); */ } k=k+1; } if (*error!=ddf_NoError) goto _L99; } while (k<=M1->rowsize); if (localdebug) ddf_WriteMatrix(stderr, M1); success=ddf_TRUE; _L99: ddf_FreeMatrix(*M); *M=M1; ddf_FreeArow(d, cvec); set_free(redset1); return success; } ddf_boolean ddf_SRedundant(ddf_MatrixPtr M, ddf_rowrange itest, ddf_Arow certificate, ddf_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. */ ddf_colrange j; ddf_LPPtr lp; ddf_LPSolutionPtr lps; ddf_ErrorType err=ddf_NoError; ddf_boolean answer=ddf_FALSE,localdebug=ddf_FALSE; *error=ddf_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==ddf_Generator){ lp=ddf_CreateLP_V_Redundancy(M, itest); } else { lp=ddf_CreateLP_H_Redundancy(M, itest); } ddf_LPSolve(lp,ddf_choiceRedcheckAlgorithm,&err); if (err!=ddf_NoError){ *error=err; goto _L999; } else { lps=ddf_CopyLPSolution(lp); for (j=0; jd; j++) { ddf_set(certificate[j], lps->sol[j]); } if (localdebug){ printf("Optimum value:"); ddf_WriteNumber(stdout, lps->optvalue); printf("\n"); } if (M->representation==ddf_Inequality){ if (ddf_Positive(lps->optvalue)){ answer=ddf_TRUE; if (localdebug) fprintf(stderr,"==> %ld th inequality is strongly redundant.\n",itest); } else { answer=ddf_FALSE; if (localdebug) fprintf(stderr,"==> %ld th inequality is not strongly redundant.\n",itest); } } else { if (ddf_Negative(lps->optvalue)){ answer=ddf_FALSE; if (localdebug) fprintf(stderr,"==> %ld th point is not strongly redundant.\n",itest); } else { /* for V-representation, we have to solve another LP */ ddf_FreeLPData(lp); ddf_FreeLPSolution(lps); lp=ddf_CreateLP_V_SRedundancy(M, itest); ddf_LPSolve(lp,ddf_DualSimplex,&err); lps=ddf_CopyLPSolution(lp); if (localdebug) ddf_WriteLPResult(stdout,lp,err); if (ddf_Positive(lps->optvalue)){ answer=ddf_FALSE; if (localdebug) fprintf(stderr,"==> %ld th point is not strongly redundant.\n",itest); } else { answer=ddf_TRUE; if (localdebug) fprintf(stderr,"==> %ld th point is strongly redundant.\n",itest); } } } ddf_FreeLPSolution(lps); } _L999: ddf_FreeLPData(lp); _L99: return answer; } ddf_rowset ddf_SRedundantRows(ddf_MatrixPtr M, ddf_ErrorType *error) /* 093a */ { ddf_rowrange i,m; ddf_colrange d; ddf_rowset redset; ddf_MatrixPtr Mcopy; ddf_Arow cvec; /* certificate */ ddf_boolean localdebug=ddf_FALSE; m=M->rowsize; if (M->representation==ddf_Generator){ d=(M->colsize)+1; } else { d=M->colsize; } Mcopy=ddf_MatrixCopy(M); ddf_InitializeArow(d,&cvec); set_initialize(&redset, m); for (i=m; i>=1; i--) { if (ddf_SRedundant(Mcopy, i, cvec, error)) { if (localdebug) printf("ddf_SRedundantRows: the row %ld is strongly redundant.\n", i); set_addelem(redset, i); ddf_MatrixRowRemove(&Mcopy, i); } else { if (localdebug) printf("ddf_SRedundantRows: the row %ld is not strongly redundant.\n", i); } if (*error!=ddf_NoError) goto _L99; } _L99: ddf_FreeMatrix(Mcopy); ddf_FreeArow(d, cvec); return redset; } ddf_rowset ddf_RedundantRowsViaShooting(ddf_MatrixPtr M, ddf_ErrorType *error) /* 092 */ { /* For H-representation only and not quite reliable, especially when floating-point arithmetic is used. Use the ordinary (slower) method ddf_RedundantRows. */ ddf_rowrange i,m, ired, irow=0; ddf_colrange j,k,d; ddf_rowset redset; ddf_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. */ ddf_MatrixPtr M1; ddf_Arow shootdir, cvec=NULL; ddf_LPPtr lp0, lp; ddf_LPSolutionPtr lps; ddf_ErrorType err; ddf_LPSolverType solver=ddf_DualSimplex; ddf_boolean localdebug=ddf_FALSE; m=M->rowsize; d=M->colsize; M1=ddf_CreateMatrix(m,d); M1->rowsize=0; /* cheat the rowsize so that smaller matrix can be stored */ set_initialize(&redset, m); ddf_InitializeArow(d, &shootdir); ddf_InitializeArow(d, &cvec); rowflag=(long *)calloc(m+1, sizeof(long)); /* First find some (likely) nonredundant inequalities by Interior Point Find. */ lp0=ddf_Matrix2LP(M, &err); lp=ddf_MakeLPforInteriorFinding(lp0); ddf_FreeLPData(lp0); ddf_LPSolve(lp, solver, &err); /* Solve the LP */ lps=ddf_CopyLPSolution(lp); if (ddf_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++) ddf_set(M1->matrix[irow-1][k-1], M->matrix[ired-1][k-1]); } ddf_neg(shootdir[j], ddf_one); /* negative of the j-th unit vector */ ired=ddf_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++) ddf_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++) ddf_set(M1->matrix[irow-1][k-1], M->matrix[i-1][k-1]); if (!ddf_Redundant(M1, irow, cvec, &err)){ for (k=1; k<=d; k++) ddf_sub(shootdir[k-1], cvec[k-1], lps->sol[k-1]); ired=ddf_RayShooting(M, lps->sol, shootdir); rowflag[ired]=irow; for (k=1; k<=d; k++) ddf_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. */ redset=ddf_RedundantRows(M, error); } ddf_FreeLPData(lp); ddf_FreeLPSolution(lps); M1->rowsize=m; M1->colsize=d; /* recover the original sizes */ ddf_FreeMatrix(M1); ddf_FreeArow(d, shootdir); ddf_FreeArow(d, cvec); free(rowflag); return redset; } ddf_SetFamilyPtr ddf_Matrix2Adjacency(ddf_MatrixPtr M, ddf_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. */ ddf_rowrange i,m; ddf_colrange d; ddf_rowset redset; ddf_MatrixPtr Mcopy; ddf_SetFamilyPtr F=NULL; m=M->rowsize; d=M->colsize; if (m<=0 ||d<=0) { *error=ddf_EmptyRepresentation; goto _L999; } Mcopy=ddf_MatrixCopy(M); F=ddf_CreateSetFamily(m, m); for (i=1; i<=m; i++) { if (!set_member(i, M->linset)){ set_addelem(Mcopy->linset, i); redset=ddf_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!=ddf_NoError) goto _L99; } } _L99: ddf_FreeMatrix(Mcopy); _L999: return F; } ddf_SetFamilyPtr ddf_Matrix2WeakAdjacency(ddf_MatrixPtr M, ddf_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. */ ddf_rowrange i,m; ddf_colrange d; ddf_rowset redset; ddf_MatrixPtr Mcopy; ddf_SetFamilyPtr F=NULL; m=M->rowsize; d=M->colsize; if (m<=0 ||d<=0) { *error=ddf_EmptyRepresentation; goto _L999; } Mcopy=ddf_MatrixCopy(M); F=ddf_CreateSetFamily(m, m); for (i=1; i<=m; i++) { if (!set_member(i, M->linset)){ set_addelem(Mcopy->linset, i); redset=ddf_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!=ddf_NoError) goto _L99; } } _L99: ddf_FreeMatrix(Mcopy); _L999: return F; } ddf_boolean ddf_ImplicitLinearity(ddf_MatrixPtr M, ddf_rowrange itest, ddf_Arow certificate, ddf_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 (ddf_FALSE). This code works for both H- and V-representations. A certificate is given in the case of ddf_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. */ ddf_colrange j; ddf_LPPtr lp; ddf_LPSolutionPtr lps; ddf_ErrorType err=ddf_NoError; ddf_boolean answer=ddf_FALSE,localdebug=ddf_FALSE; *error=ddf_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==ddf_Generator){ lp=ddf_CreateLP_V_Redundancy(M, itest); } else { lp=ddf_CreateLP_H_Redundancy(M, itest); } lp->objective = ddf_LPmax; /* the lp->objective is set by CreateLP* to LPmin */ ddf_LPSolve(lp,ddf_choiceRedcheckAlgorithm,&err); if (err!=ddf_NoError){ *error=err; goto _L999; } else { lps=ddf_CopyLPSolution(lp); for (j=0; jd; j++) { ddf_set(certificate[j], lps->sol[j]); } if (lps->LPS==ddf_Optimal && ddf_EqualToZero(lps->optvalue)){ answer=ddf_TRUE; if (localdebug) fprintf(stderr,"==> %ld th data is an implicit linearity.\n",itest); } else { answer=ddf_FALSE; if (localdebug) fprintf(stderr,"==> %ld th data is not an implicit linearity.\n",itest); } ddf_FreeLPSolution(lps); } _L999: ddf_FreeLPData(lp); _L99: return answer; } int ddf_FreeOfImplicitLinearity(ddf_MatrixPtr M, ddf_Arow certificate, ddf_rowset *imp_linrows, ddf_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. */ ddf_LPPtr lp; ddf_rowrange i,m; ddf_colrange j,d1; ddf_ErrorType err=ddf_NoError; ddf_Arow cvec; /* certificate for implicit linearity */ int answer=0,localdebug=ddf_FALSE; *error=ddf_NoError; /* Create an LP data for redundancy checking */ if (M->representation==ddf_Generator){ lp=ddf_CreateLP_V_ImplicitLinearity(M); } else { lp=ddf_CreateLP_H_ImplicitLinearity(M); } ddf_LPSolve(lp,ddf_choiceRedcheckAlgorithm,&err); if (err!=ddf_NoError){ *error=err; goto _L999; } else { for (j=0; jd; j++) { ddf_set(certificate[j], lp->sol[j]); } if (localdebug) ddf_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==ddf_Generator){ d1=(M->colsize)+1; } else { d1=M->colsize; } m=M->rowsize; ddf_InitializeArow(d1,&cvec); set_initialize(imp_linrows,m); if (lp->LPS==ddf_Optimal){ if (ddf_Positive(lp->optvalue)){ answer=1; if (localdebug) fprintf(stderr,"==> The matrix has no implicit linearity.\n"); } else if (ddf_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 (ddf_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!=ddf_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 */ ddf_FreeArow(d1,cvec); } _L999: ddf_FreeLPData(lp); return answer; } ddf_rowset ddf_ImplicitLinearityRows(ddf_MatrixPtr M, ddf_ErrorType *error) /* 092 */ { ddf_colrange d; ddf_rowset imp_linset; ddf_Arow cvec; /* certificate */ int foi; ddf_boolean localdebug=ddf_FALSE; if (M->representation==ddf_Generator){ d=(M->colsize)+2; } else { d=M->colsize+1; } ddf_InitializeArow(d,&cvec); if (localdebug) fprintf(stdout, "\nddf_ImplicitLinearityRows: Check whether the system contains any implicit linearity.\n"); foi=ddf_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"); } ddf_FreeArow(d, cvec); return imp_linset; } ddf_boolean ddf_MatrixCanonicalizeLinearity(ddf_MatrixPtr *M, ddf_rowset *impl_linset,ddf_rowindex *newpos, ddf_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. */ ddf_rowrange rank; ddf_rowset linrows,ignoredrows,basisrows; ddf_colset ignoredcols,basiscols; ddf_rowrange i,k,m; ddf_rowindex newpos1; ddf_boolean success=ddf_FALSE; linrows=ddf_ImplicitLinearityRows(*M, error); if (*error!=ddf_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=ddf_MatrixRank(*M,ignoredrows,ignoredcols,&basisrows,&basiscols); set_diff(ignoredrows, (*M)->linset, basisrows); ddf_MatrixRowsRemove2(M,ignoredrows,newpos); ddf_MatrixShiftupLinearity(M,&newpos1); for (i=1; i<=m; i++){ k=(*newpos)[i]; if (k>0) { (*newpos)[i]=newpos1[k]; } } *impl_linset=linrows; success=ddf_TRUE; free(newpos1); set_free(basisrows); set_free(basiscols); set_free(ignoredrows); set_free(ignoredcols); _L99: return success; } ddf_boolean ddf_MatrixCanonicalize(ddf_MatrixPtr *M, ddf_rowset *impl_linset, ddf_rowset *redset, ddf_rowindex *newpos, ddf_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. */ ddf_rowrange i,k,m; ddf_rowindex newpos1,revpos; ddf_rowset redset1; ddf_boolean success=ddf_TRUE; m=(*M)->rowsize; set_initialize(redset, m); revpos=(long *)calloc(m+1,sizeof(long)); success=ddf_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=ddf_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; } ddf_boolean ddf_ExistsRestrictedFace(ddf_MatrixPtr M, ddf_rowset R, ddf_rowset S, ddf_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). */ ddf_boolean answer=ddf_FALSE; ddf_LPPtr lp=NULL; /* printf("\n--- ERF ---\n"); printf("R = "); set_write(R); printf("S = "); set_write(S); */ lp=ddf_Matrix2Feasibility2(M, R, S, err); if (*err!=ddf_NoError) goto _L99; /* Solve the LP by cdd LP solver. */ ddf_LPSolve(lp, ddf_DualSimplex, err); /* Solve the LP */ if (*err!=ddf_NoError) goto _L99; if (lp->LPS==ddf_Optimal && ddf_Positive(lp->optvalue)) { answer=ddf_TRUE; } ddf_FreeLPData(lp); _L99: return answer; } ddf_boolean ddf_ExistsRestrictedFace2(ddf_MatrixPtr M, ddf_rowset R, ddf_rowset S, ddf_LPSolutionPtr *lps, ddf_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. */ ddf_boolean answer=ddf_FALSE; ddf_LPPtr lp=NULL; /* printf("\n--- ERF ---\n"); printf("R = "); set_write(R); printf("S = "); set_write(S); */ lp=ddf_Matrix2Feasibility2(M, R, S, err); if (*err!=ddf_NoError) goto _L99; /* Solve the LP by cdd LP solver. */ ddf_LPSolve(lp, ddf_DualSimplex, err); /* Solve the LP */ if (*err!=ddf_NoError) goto _L99; if (lp->LPS==ddf_Optimal && ddf_Positive(lp->optvalue)) { answer=ddf_TRUE; } (*lps)=ddf_CopyLPSolution(lp); ddf_FreeLPData(lp); _L99: return answer; } ddf_boolean ddf_FindRelativeInterior(ddf_MatrixPtr M, ddf_rowset *ImL, ddf_rowset *Lbasis, ddf_LPSolutionPtr *lps, ddf_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. */ ddf_rowset S; ddf_colset T, Lbasiscols; ddf_boolean success=ddf_FALSE; ddf_rowrange i; ddf_colrange rank; *ImL=ddf_ImplicitLinearityRows(M, err); if (*err!=ddf_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 (ddf_ExistsRestrictedFace2(M, *ImL, S, lps, err)){ /* printf("a relative interior point found\n"); */ success=ddf_TRUE; } set_initialize(&T, M->colsize); /* empty set */ rank=ddf_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; } ddf_rowrange ddf_RayShooting(ddf_MatrixPtr M, ddf_Arow p, ddf_Arow r) { /* 092, find the first inequality "hit" by a ray from an intpt. */ ddf_rowrange imin=-1,i,m; ddf_colrange j, d; ddf_Arow vecmin, vec; myfloat min,t1,t2,alpha, t1min; ddf_boolean started=ddf_FALSE; ddf_boolean localdebug=ddf_FALSE; m=M->rowsize; d=M->colsize; if (!ddf_Equal(ddf_one, p[0])){ fprintf(stderr, "Warning: RayShooting is called with a point with first coordinate not 1.\n"); ddf_set(p[0],ddf_one); } if (!ddf_EqualToZero(r[0])){ fprintf(stderr, "Warning: RayShooting is called with a direction with first coordinate not 0.\n"); ddf_set(r[0],ddf_purezero); } ddf_init(alpha); ddf_init(min); ddf_init(t1); ddf_init(t2); ddf_init(t1min); ddf_InitializeArow(d,&vecmin); ddf_InitializeArow(d,&vec); for (i=1; i<=m; i++){ ddf_InnerProduct(t1, d, M->matrix[i-1], p); if (ddf_Positive(t1)) { ddf_InnerProduct(t2, d, M->matrix[i-1], r); ddf_div(alpha, t2, t1); if (!started){ imin=i; ddf_set(min, alpha); ddf_set(t1min, t1); /* store the denominator. */ started=ddf_TRUE; if (localdebug) { fprintf(stderr," Level 1: imin = %ld and min = ", imin); ddf_WriteNumber(stderr, min); fprintf(stderr,"\n"); } } else { if (ddf_Smaller(alpha, min)){ imin=i; ddf_set(min, alpha); ddf_set(t1min, t1); /* store the denominator. */ if (localdebug) { fprintf(stderr," Level 2: imin = %ld and min = ", imin); ddf_WriteNumber(stderr, min); fprintf(stderr,"\n"); } } else { if (ddf_Equal(alpha, min)) { /* tie break */ for (j=1; j<= d; j++){ ddf_div(vecmin[j-1], M->matrix[imin-1][j-1], t1min); ddf_div(vec[j-1], M->matrix[i-1][j-1], t1); } if (ddf_LexSmaller(vec,vecmin, d)){ imin=i; ddf_set(min, alpha); ddf_set(t1min, t1); /* store the denominator. */ if (localdebug) { fprintf(stderr," Level 3: imin = %ld and min = ", imin); ddf_WriteNumber(stderr, min); fprintf(stderr,"\n"); } } } } } } } ddf_clear(alpha); ddf_clear(min); ddf_clear(t1); ddf_clear(t2); ddf_clear(t1min); ddf_FreeArow(d, vecmin); ddf_FreeArow(d, vec); return imin; } #ifdef ddf_GMPRATIONAL void ddf_BasisStatusMaximize(ddf_rowrange m_size,ddf_colrange d_size, ddf_Amatrix A,ddf_Bmatrix T,ddf_rowset equalityset, ddf_rowrange objrow,ddf_colrange rhscol,ddf_LPStatusType LPS, myfloat *optvalue,ddf_Arow sol,ddf_Arow dsol,ddf_rowset posset, ddf_colindex nbindex, ddf_rowrange re,ddf_colrange se, ddf_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; ddf_rowrange i,is; ddf_colrange s,senew,j; static ddf_rowindex bflag; static long mlast=0; static ddf_rowindex OrderVector; /* the permutation vector to store a preordered row indices */ unsigned int rseed=1; myfloat val; ddf_colindex nbtemp; ddf_LPStatusType ddlps; ddf_boolean localdebug=ddf_FALSE; if (ddf_debug) localdebug=ddf_debug; if (localdebug){ printf("\nEvaluating ddf_BasisStatusMaximize:\n"); } ddf_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. */ ddf_ComputeRowOrderVector2(m_size,d_size,A,OrderVector,ddf_MinIndex,rseed); pivots1=0; ddf_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 */ ddf_TableauEntry(&val,m_size,d_size,A,T,objrow,bflag[i]); if (ddf_Positive(val)) { if (localdebug) printf("Reduced cost entry for %ld is positive\n", i); *LPScorrect=ddf_FALSE; break; } } }; break; case ddf_Inconsistent: for (j=1; j<=d_size; j++){ ddf_TableauEntry(&val,m_size,d_size,A,T,re,j); if (j==rhscol){ if (ddf_Nonnegative(val)){ if (localdebug) printf("RHS entry for %ld is nonnegative\n", re); *LPScorrect=ddf_FALSE; break; } } else if (ddf_Positive(val)){ if (localdebug) printf("the row entry for(%ld, %ld) is positive\n", re, j); *LPScorrect=ddf_FALSE; break; } }; break; case ddf_DualInconsistent: for (i=1; i<=m_size; i++){ ddf_TableauEntry(&val,m_size,d_size,A,T,i,bflag[is]); if (i==objrow){ if (ddf_Nonpositive(val)){ if (localdebug) printf("Reduced cost entry for %ld is nonpositive\n", bflag[is]); *LPScorrect=ddf_FALSE; break; } } else if (ddf_Negative(val)){ if (localdebug) printf("the column entry for(%ld, %ld) is positive\n", i, bflag[is]); *LPScorrect=ddf_FALSE; break; } }; break; ; default: break; } ddlps=LPSf2LPS(LPS); ddf_SetSolutions(m_size,d_size,A,T, objrow,rhscol,ddlps,optvalue,sol,dsol,posset,nbindex,re,senew,bflag); *nse=senew; _L99: ddf_clear(val); free(nbtemp); } void ddf_BasisStatusMinimize(ddf_rowrange m_size,ddf_colrange d_size, ddf_Amatrix A,ddf_Bmatrix T,ddf_rowset equalityset, ddf_rowrange objrow,ddf_colrange rhscol,ddf_LPStatusType LPS, myfloat *optvalue,ddf_Arow sol,ddf_Arow dsol, ddf_rowset posset, ddf_colindex nbindex, ddf_rowrange re,ddf_colrange se,ddf_colrange *nse,long *pivots, int *found, int *LPScorrect) { ddf_colrange j; for (j=1; j<=d_size; j++) ddf_neg(A[objrow-1][j-1],A[objrow-1][j-1]); ddf_BasisStatusMaximize(m_size,d_size,A,T,equalityset, objrow,rhscol, LPS,optvalue,sol,dsol,posset,nbindex,re,se,nse,pivots,found,LPScorrect); ddf_neg(*optvalue,*optvalue); for (j=1; j<=d_size; j++){ if (LPS!=ddf_Inconsistent) { /* Inconsistent certificate stays valid for minimization, 0.94e */ ddf_neg(dsol[j-1],dsol[j-1]); } ddf_neg(A[objrow-1][j-1],A[objrow-1][j-1]); } } #endif /* end of cddlp.c */ cddlib-094g/lib-src-gmp/cddmp.c000077700000000000000000000000001206770251100213242../lib-src/cddmp.custar00rootroot00000000000000cddlib-094g/lib-src-gmp/cddmp.h000077700000000000000000000000001206770251100213362../lib-src/cddmp.hustar00rootroot00000000000000cddlib-094g/lib-src-gmp/cddmp_f.c000066400000000000000000000104741206770251100166430ustar00rootroot00000000000000/* automatically generated by sed scripts from the c source named below: */ /* cddmp.c (cddlib arithmetic operations using gmp) Copyright: Komei Fukuda 2000, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 */ /* 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_f.h" void ddf_set_global_constants() { ddf_init(ddf_zero); ddf_init(ddf_minuszero); ddf_init(ddf_one); ddf_init(ddf_minusone); ddf_init(ddf_purezero); time(&ddf_statStartTime); /* cddlib starting time */ ddf_statBApivots=0; /* basis finding pivots */ ddf_statCCpivots=0; /* criss-cross pivots */ ddf_statDS1pivots=0; /* phase 1 pivots */ ddf_statDS2pivots=0; /* phase 2 pivots */ ddf_statACpivots=0; /* anticycling (cc) pivots */ ddf_choiceLPSolverDefault=ddf_DualSimplex; /* Default LP solver Algorithm */ ddf_choiceRedcheckAlgorithm=ddf_DualSimplex; /* Redundancy Checking Algorithm */ ddf_choiceLexicoPivotQ=ddf_TRUE; /* whether to use the lexicographic pivot */ #if defined ddf_GMPRATIONAL ddf_statBSpivots=0; /* basis status checking pivots */ mpq_set_ui(ddf_zero,0U,1U); mpq_set_ui(ddf_purezero,0U,1U); mpq_set_ui(ddf_one,1U,1U); mpq_set_si(ddf_minusone,-1L,1U); ddf_set_global_constants(); #elif defined GMPFLOAT mpf_set_d(ddf_zero,ddf_almostzero); mpf_set_ui(ddf_purezero,0U); mpf_set_ui(ddf_one,1U); mpf_set_si(ddf_minusone,-1L,1U); #else ddf_zero[0]= ddf_almostzero; /*real zero */ ddf_purezero[0]= 0.0; ddf_one[0]= 1L; ddf_minusone[0]= -1L; #endif ddf_neg(ddf_minuszero,ddf_zero); } void ddf_free_global_constants() { ddf_clear(ddf_zero); ddf_clear(ddf_minuszero); ddf_clear(ddf_one); ddf_clear(ddf_minusone); ddf_clear(ddf_purezero); time(&ddf_statStartTime); /* cddlib starting time */ ddf_statBApivots=0; /* basis finding pivots */ ddf_statCCpivots=0; /* criss-cross pivots */ ddf_statDS1pivots=0; /* phase 1 pivots */ ddf_statDS2pivots=0; /* phase 2 pivots */ ddf_statACpivots=0; /* anticycling (cc) pivots */ ddf_choiceLPSolverDefault=ddf_DualSimplex; /* Default LP solver Algorithm */ ddf_choiceRedcheckAlgorithm=ddf_DualSimplex; /* Redundancy Checking Algorithm */ ddf_choiceLexicoPivotQ=ddf_TRUE; /* whether to use the lexicographic pivot */ #if defined ddf_GMPRATIONAL ddf_statBSpivots=0; /* basis status checking pivots */ ddf_free_global_constants(); #endif } #if defined ddf_GMPRATIONAL void dddf_mpq_set_si(myfloat 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 ddf_ddf_CDOUBLE void dddf_init(myfloat a) { a[0]=0L; } void dddf_clear(myfloat a) { /* a[0]=0L; */ } void dddf_set(myfloat a,myfloat b) { a[0]=b[0]; } void dddf_set_d(myfloat a,double b) { a[0]=b; } void dddf_set_si(myfloat a,signed long b) { a[0]=(double)b; } void dddf_set_si2(myfloat a,signed long b, unsigned long c) { a[0]=(double)b/(double)c; } void dddf_add(myfloat a,myfloat b,myfloat c) { a[0]=b[0]+c[0]; } void dddf_sub(myfloat a,myfloat b,myfloat c) { a[0]=b[0]-c[0]; } void dddf_mul(myfloat a,myfloat b,myfloat c) { a[0]=b[0]*c[0]; } void dddf_div(myfloat a,myfloat b,myfloat c) { a[0]=b[0]/c[0]; } void dddf_neg(myfloat a,myfloat b) { a[0]=-b[0]; } void dddf_inv(myfloat a,myfloat b) { a[0]=1/b[0]; } int dddf_cmp(myfloat a,myfloat b) { if (a[0]-b[0]>0) return 1; else if (a[0]-b[0]>=0) return 0; else return -1; } int dddf_sgn(myfloat a) { if (a[0]>0) return 1; else if (a[0]>=0) return 0; else return -1; } double dddf_get_d(myfloat a) { return a[0]; } #endif /* end of cddmp.h */ cddlib-094g/lib-src-gmp/cddmp_f.h000066400000000000000000000114521206770251100166450ustar00rootroot00000000000000/* automatically generated by sed scripts from the c source named below: */ /* cddmp.h (cddlib arithmetic operations using gmp) Copyright: Komei Fukuda 2000, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 */ /* 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_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. */ #include "setoper.h" /* set operation library header (Ver. June 1, 2000 or later) */ #include "cdd_f.h" #include #include #include #include #include ddf_MatrixPtr ddf_BlockElimination(ddf_MatrixPtr M, ddf_colset delset, ddf_ErrorType *error) /* Eliminate the variables (columns) delset by the Block Elimination with ddf_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. */ { ddf_MatrixPtr Mdual=NULL, Mproj=NULL, Gdual=NULL; ddf_rowrange i,h,m,mproj,mdual,linsize; ddf_colrange j,k,d,dproj,ddual,delsize; ddf_colindex delindex; myfloat temp,prod; ddf_PolyhedraPtr dualpoly; ddf_ErrorType err=ddf_NoError; ddf_boolean localdebug=ddf_FALSE; *error=ddf_NoError; m= M->rowsize; d= M->colsize; delindex=(long*)calloc(d+1,sizeof(long)); ddf_init(temp); ddf_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) ddf_WriteMatrix(stdout, M); linsize=set_card(M->linset); ddual=m+1; mdual=delsize + m - linsize; /* #equalitions + dimension of z1 */ /* setup the dual matrix */ Mdual=ddf_CreateMatrix(mdual, ddual); Mdual->representation=ddf_Inequality; for (i = 1; i <= delsize; i++){ set_addelem(Mdual->linset,i); /* equality */ for (j = 1; j <= m; j++) { ddf_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++; ddf_set(Mdual->matrix[delsize+k-1][i], ddf_one); } } /* 2. Compute the generators of the dual system. */ dualpoly=ddf_DDMatrix2Poly(Mdual, &err); Gdual=ddf_CopyGenerators(dualpoly); /* 3. Take the linear combination of the original system with each generator. */ dproj=d-delsize; mproj=Gdual->rowsize; Mproj=ddf_CreateMatrix(mproj, dproj); Mproj->representation=ddf_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 */ ddf_set(prod, ddf_purezero); for (h = 1; h <= m; h++){ ddf_mul(temp,M->matrix[h-1][j-1],Gdual->matrix[i-1][h]); ddf_add(prod,prod,temp); } ddf_set(Mproj->matrix[i-1][k-1],prod); } } } if (localdebug) printf("Size of the projection system: %ld x %ld\n", mproj, dproj); ddf_FreePolyhedra(dualpoly); free(delindex); ddf_clear(temp); ddf_clear(prod); ddf_FreeMatrix(Mdual); ddf_FreeMatrix(Gdual); return Mproj; } ddf_MatrixPtr ddf_FourierElimination(ddf_MatrixPtr M,ddf_ErrorType *error) /* Eliminate the last variable (column) from the given H-matrix using the standard Fourier Elimination. */ { ddf_MatrixPtr Mnew=NULL; ddf_rowrange i,inew,ip,in,iz,m,mpos=0,mneg=0,mzero=0,mnew; ddf_colrange j,d,dnew; ddf_rowindex posrowindex, negrowindex,zerorowindex; myfloat temp1,temp2; ddf_boolean localdebug=ddf_FALSE; *error=ddf_NoError; m= M->rowsize; d= M->colsize; if (d<=1){ *error=ddf_ColIndexOutOfRange; if (localdebug) { printf("The number of column is too small: %ld for Fourier's Elimination.\n",d); } goto _L99; } if (M->representation==ddf_Generator){ *error=ddf_NotAvailForV; if (localdebug) { printf("Fourier's Elimination cannot be applied to a V-polyhedron.\n"); } goto _L99; } if (set_card(M->linset)>0){ *error=ddf_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)); ddf_init(temp1); ddf_init(temp2); for (i = 1; i <= m; i++) { if (ddf_Positive(M->matrix[i-1][d-1])){ mpos++; posrowindex[mpos]=i; } else if (ddf_Negative(M->matrix[i-1][d-1])) { mneg++; negrowindex[mneg]=i; } else { mzero++; zerorowindex[mzero]=i; } } /*of i*/ if (localdebug) { ddf_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=ddf_CreateMatrix(mnew, dnew); ddf_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++) { ddf_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++; ddf_neg(temp1, M->matrix[negrowindex[in]-1][d-1]); for (j = 1; j <= dnew; j++) { ddf_LinearComb(temp2,M->matrix[posrowindex[ip]-1][j-1],temp1,\ M->matrix[negrowindex[in]-1][j-1],\ M->matrix[posrowindex[ip]-1][d-1]); ddf_set(Mnew->matrix[inew-1][j-1],temp2); } ddf_Normalize(dnew,Mnew->matrix[inew-1]); } } free(posrowindex); free(negrowindex); free(zerorowindex); ddf_clear(temp1); ddf_clear(temp2); _L99: return Mnew; } /* end of cddproj.c */ cddlib-094g/lib-src-gmp/cddtypes.h000077700000000000000000000000001206770251100226162../lib-src/cddtypes.hustar00rootroot00000000000000cddlib-094g/lib-src-gmp/cddtypes_f.h000066400000000000000000000261451206770251100174020ustar00rootroot00000000000000/* automatically generated by sed scripts from the c source named below: */ /* cddtypes.h: Header file for cddlib.c written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 */ /* 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 _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-094g/lib-src-gmp/setoper.c000077700000000000000000000000001206770251100223102../lib-src/setoper.custar00rootroot00000000000000cddlib-094g/lib-src-gmp/setoper.h000077700000000000000000000000001206770251100223222../lib-src/setoper.hustar00rootroot00000000000000cddlib-094g/lib-src/000077500000000000000000000000001206770251100143145ustar00rootroot00000000000000cddlib-094g/lib-src/.DS_Store.1000077500000000000000000000140041206770251100161400ustar00rootroot00000000000000Bud1%  @€ @€ @€ @ E%DSDB`€ @€ @€ @cddlib-094g/lib-src/Makefile.am000066400000000000000000000003721206770251100163520ustar00rootroot00000000000000lib_LTLIBRARIES = libcdd.la libcdd_la_SOURCES = \ cddcore.c \ cddlp.c \ cddmp.c \ cddio.c \ cddlib.c \ cddproj.c \ setoper.c include_HEADERS = \ cdd.h \ cddmp.h \ cddtypes.h \ setoper.h AM_CPPFLAGS = -UGMPRATIONAL AM_LDFLAGS = -version-info 0:0:0 cddlib-094g/lib-src/Makefile.in000066400000000000000000000372501206770251100163700ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 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@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@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 = lib-src DIST_COMMON = $(include_HEADERS) $(srcdir)/Makefile.am \ $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_CLEAN_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 = `echo $$p | sed -e 's|^.*/||'`; am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)" libLTLIBRARIES_INSTALL = $(INSTALL) LTLIBRARIES = $(lib_LTLIBRARIES) libcdd_la_LIBADD = am_libcdd_la_OBJECTS = cddcore.lo cddlp.lo cddmp.lo cddio.lo cddlib.lo \ cddproj.lo setoper.lo libcdd_la_OBJECTS = $(am_libcdd_la_OBJECTS) DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(libcdd_la_SOURCES) DIST_SOURCES = $(libcdd_la_SOURCES) includeHEADERS_INSTALL = $(INSTALL_HEADER) HEADERS = $(include_HEADERS) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ 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@ MAKEINFO = @MAKEINFO@ 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_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_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@ 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@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ 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 libcdd_la_SOURCES = \ cddcore.c \ cddlp.c \ cddmp.c \ cddio.c \ cddlib.c \ cddproj.c \ setoper.c include_HEADERS = \ cdd.h \ cddmp.h \ cddtypes.h \ setoper.h AM_CPPFLAGS = -UGMPRATIONAL AM_LDFLAGS = -version-info 0:0:0 all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(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 lib-src/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu lib-src/Makefile .PRECIOUS: 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 install-libLTLIBRARIES: $(lib_LTLIBRARIES) @$(NORMAL_INSTALL) test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ if test -f $$p; then \ f=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \ else :; fi; \ done uninstall-libLTLIBRARIES: @$(NORMAL_UNINSTALL) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ p=$(am__strip_dir) \ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \ done clean-libLTLIBRARIES: -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ test "$$dir" != "$$p" || dir=.; \ echo "rm -f \"$${dir}/so_locations\""; \ rm -f "$${dir}/so_locations"; \ done libcdd.la: $(libcdd_la_OBJECTS) $(libcdd_la_DEPENDENCIES) $(LINK) -rpath $(libdir) $(libcdd_la_OBJECTS) $(libcdd_la_LIBADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) distclean-compile: -rm -f *.tab.c @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddcore.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddio.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddlib.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddlp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddmp.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cddproj.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/setoper.Plo@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs install-includeHEADERS: $(include_HEADERS) @$(NORMAL_INSTALL) test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" @list='$(include_HEADERS)'; for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ f=$(am__strip_dir) \ echo " $(includeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(includedir)/$$f'"; \ $(includeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(includedir)/$$f"; \ done uninstall-includeHEADERS: @$(NORMAL_UNINSTALL) @list='$(include_HEADERS)'; for p in $$list; do \ f=$(am__strip_dir) \ echo " rm -f '$(DESTDIR)$(includedir)/$$f'"; \ rm -f "$(DESTDIR)$(includedir)/$$f"; \ done ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here 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 $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$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 $(LTLIBRARIES) $(HEADERS) installdirs: for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(includedir)"; 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: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-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 info: info-am info-am: install-data-am: install-includeHEADERS install-dvi: install-dvi-am install-exec-am: install-libLTLIBRARIES install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: 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: install-am install-strip .PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ clean-libLTLIBRARIES clean-libtool ctags 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 uninstall uninstall-am uninstall-includeHEADERS \ uninstall-libLTLIBRARIES # 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-094g/lib-src/cdd.h000066400000000000000000000327241206770251100152270ustar00rootroot00000000000000/* cdd.h: Header file for cddlib.c written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 */ /* 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-6 /* ---------- 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-094g/lib-src/cddcore.c000066400000000000000000001617561206770251100161030ustar00rootroot00000000000000/* cddcore.c: Core Procedures for cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 */ /* 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_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; } if (dd_debug) localdebug=dd_TRUE; *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; if (dd_debug) localdebug=dd_TRUE; *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(); 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; if (dd_debug) localdebug=dd_TRUE; 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-094g/lib-src/cddio.c000066400000000000000000001536171206770251100155570ustar00rootroot00000000000000/* cddio.c: Basic Input and Output Procedures for cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 */ /* 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; 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*)); (*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-094g/lib-src/cddlib.c000066400000000000000000000264311206770251100157070ustar00rootroot00000000000000/* cddlib.c: cdd library (library version of cdd) written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 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-094g/lib-src/cddlp.c000066400000000000000000003617051206770251100155620ustar00rootroot00000000000000/* cddlp.c: dual simplex method c-code written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 */ /* 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 #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) RAND_MAX; int localdebug=dd_FALSE; srand(seed); for (j=t; j>1 ; j--) { r=rand(); 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("dd_RedundantRows: the row %ld is redundant.\n", i); set_addelem(redset, i); dd_MatrixRowRemove(&Mcopy, i); } else { if (localdebug) printf("dd_RedundantRows: the row %ld is essential.\n", 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. */ 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-094g/lib-src/cddmp.c000066400000000000000000000101601206770251100155450ustar00rootroot00000000000000/* cddmp.c (cddlib arithmetic operations using gmp) Copyright: Komei Fukuda 2000, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 */ /* 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-094g/lib-src/cddmp.h000066400000000000000000000111231206770251100155520ustar00rootroot00000000000000/* cddmp.h (cddlib arithmetic operations using gmp) Copyright: Komei Fukuda 2000, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 */ /* 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_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. */ #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-094g/lib-src/cddtypes.h000066400000000000000000000254131206770251100163110ustar00rootroot00000000000000/* cddtypes.h: Header file for cddlib.c written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.94g, March 23, 2012 */ /* 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 __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-094g/lib-src/setoper.c000066400000000000000000000146631206770251100161530ustar00rootroot00000000000000/* 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< #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-094g/ltmain.sh000077500000000000000000007330601206770251100146150ustar00rootroot00000000000000# Generated from ltmain.m4sh. # ltmain.sh (GNU libtool) 2.2.6b # Written by Gordon Matzigkeit , 1996 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, 2007 2008 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 GNU Libtool; see the file COPYING. If not, a copy # can be downloaded from http://www.gnu.org/licenses/gpl.html, # or obtained by writing to the Free Software Foundation, Inc., # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # Usage: $progname [OPTION]... [MODE-ARG]... # # Provide generalized library-building support services. # # --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 # --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 informational messages (default) # --version print version information # -h, --help print short or 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. # 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) # $progname: (GNU libtool) 2.2.6b # automake: $automake_version # autoconf: $autoconf_version # # Report bugs to . PROGRAM=ltmain.sh PACKAGE=libtool VERSION=2.2.6b TIMESTAMP="" package_revision=1.3017 # 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 # NLS nuisances: We save the old values to restore during execute mode. # Only set LANG and LC_ALL to C if already set. # These must not be set unconditionally because not all systems understand # e.g. LANG=C (notably SCO). lt_user_locale= lt_safe_locale= for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES do eval "if test \"\${$lt_var+set}\" = set; then save_$lt_var=\$$lt_var $lt_var=C export $lt_var lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" fi" done $lt_unset CDPATH : ${CP="cp -f"} : ${ECHO="echo"} : ${EGREP="/bin/grep -E"} : ${FGREP="/bin/grep -F"} : ${GREP="/bin/grep"} : ${LN_S="ln -s"} : ${MAKE="make"} : ${MKDIR="mkdir"} : ${MV="mv -f"} : ${RM="rm -f"} : ${SED="/bin/sed"} : ${SHELL="${CONFIG_SHELL-/bin/sh}"} : ${Xsed="$SED -e 1s/^X//"} # Global variables: 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. exit_status=$EXIT_SUCCESS # Make sure IFS has a sensible default lt_nl=' ' IFS=" $lt_nl" dirname="s,/[^/]*$,," basename="s,^.*/,," # 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" # Implementation must be kept synchronized with func_dirname # and func_basename. For efficiency, we do not delegate to # those functions but instead duplicate the functionality here. func_dirname_and_basename () { # Extract subdirectory from the argument. func_dirname_result=`$ECHO "X${1}" | $Xsed -e "$dirname"` if test "X$func_dirname_result" = "X${1}"; then func_dirname_result="${3}" else func_dirname_result="$func_dirname_result${2}" fi func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } # Generated shell functions inserted here. # 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: # In the unlikely event $progname began with a '-', it would play havoc with # func_echo (imagine progname=-n), so we prepend ./ in that case: func_dirname_and_basename "$progpath" progname=$func_basename_result case $progname in -*) progname=./$progname ;; esac # Make sure we have an absolute path for reexecution: case $progpath in [\\/]*|[A-Za-z]:\\*) ;; *[\\/]*) progdir=$func_dirname_result progdir=`cd "$progdir" && pwd` progpath="$progdir/$progname" ;; *) save_IFS="$IFS" IFS=: for progdir in $PATH; do IFS="$save_IFS" test -x "$progdir/$progname" && break done IFS="$save_IFS" test -n "$progdir" || progdir=`pwd` progpath="$progdir/$progname" ;; esac # Sed substitution that helps us do robust quoting. It backslashifies # metacharacters that are still active within double-quoted strings. Xsed="${SED}"' -e 1s/^X//' sed_quote_subst='s/\([`"$\\]\)/\\\1/g' # Same as above, but do not quote variable references. double_quote_subst='s/\(["`\\]\)/\\\1/g' # Re-`\' parameter expansions in output of double_quote_subst that were # `\'-ed in input to the same. If an odd number of `\' preceded a '$' # in input to 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 '$'. bs='\\' bs2='\\\\' bs4='\\\\\\\\' dollar='\$' sed_double_backslash="\ s/$bs4/&\\ /g s/^$bs2$dollar/$bs&/ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g s/\n//g" # Standard options: opt_dry_run=false opt_help=false opt_quiet=false opt_verbose=false opt_warning=: # func_echo arg... # Echo program name prefixed message, along with the current mode # name if it has been set yet. func_echo () { $ECHO "$progname${mode+: }$mode: $*" } # func_verbose arg... # Echo program name prefixed message in verbose mode only. func_verbose () { $opt_verbose && 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_error arg... # Echo program name prefixed message to standard error. func_error () { $ECHO "$progname${mode+: }$mode: "${1+"$@"} 1>&2 } # func_warning arg... # Echo program name prefixed warning message to standard error. func_warning () { $opt_warning && $ECHO "$progname${mode+: }$mode: warning: "${1+"$@"} 1>&2 # bash bug again: : } # func_fatal_error arg... # Echo program name prefixed message to standard error, and exit. func_fatal_error () { func_error ${1+"$@"} exit $EXIT_FAILURE } # func_fatal_help arg... # Echo program name prefixed message to standard error, followed by # a help hint, and exit. func_fatal_help () { func_error ${1+"$@"} func_fatal_error "$help" } help="Try \`$progname --help' for more information." ## default # func_grep expression filename # Check whether EXPRESSION matches any line of FILENAME, without output. func_grep () { $GREP "$1" "$2" >/dev/null 2>&1 } # func_mkdir_p directory-path # Make sure the entire path to DIRECTORY-PATH is available. func_mkdir_p () { my_directory_path="$1" my_dir_list= if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then # Protect directory names starting with `-' case $my_directory_path in -*) my_directory_path="./$my_directory_path" ;; esac # While some portion of DIR does not yet exist... while test ! -d "$my_directory_path"; do # ...make a list in topmost first order. Use a colon delimited # list incase some portion of path contains whitespace. my_dir_list="$my_directory_path:$my_dir_list" # If the last portion added has no slash in it, the list is done case $my_directory_path in */*) ;; *) break ;; esac # ...otherwise throw away the child directory and loop my_directory_path=`$ECHO "X$my_directory_path" | $Xsed -e "$dirname"` done my_dir_list=`$ECHO "X$my_dir_list" | $Xsed -e 's,:*$,,'` save_mkdir_p_IFS="$IFS"; IFS=':' for my_dir in $my_dir_list; do IFS="$save_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 "$my_dir" 2>/dev/null || : done IFS="$save_mkdir_p_IFS" # Bail out if we (or some other process) failed to create a directory. test -d "$my_directory_path" || \ func_fatal_error "Failed to create \`$1'" fi } # func_mktempdir [string] # Make a temporary directory that won't clash with other running # libtool processes, and avoids race conditions if possible. If # given, STRING is the basename for that directory. func_mktempdir () { my_template="${TMPDIR-/tmp}/${1-$progname}" if test "$opt_dry_run" = ":"; then # Return a directory name, but don't create it in dry-run mode my_tmpdir="${my_template}-$$" else # If mktemp works, use that first and foremost my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` if test ! -d "$my_tmpdir"; then # Failing that, at least try and use $RANDOM to avoid a race my_tmpdir="${my_template}-${RANDOM-0}$$" save_mktempdir_umask=`umask` umask 0077 $MKDIR "$my_tmpdir" umask $save_mktempdir_umask fi # If we're not in dry-run mode, bomb out on failure test -d "$my_tmpdir" || \ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" fi $ECHO "X$my_tmpdir" | $Xsed } # func_quote_for_eval arg # Aesthetically quote ARG to be evaled later. # This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT # is double-quoted, suitable for a subsequent eval, whereas # FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters # which are still active within double quotes backslashified. func_quote_for_eval () { case $1 in *[\\\`\"\$]*) func_quote_for_eval_unquoted_result=`$ECHO "X$1" | $Xsed -e "$sed_quote_subst"` ;; *) func_quote_for_eval_unquoted_result="$1" ;; esac case $func_quote_for_eval_unquoted_result in # Double-quote args containing shell metacharacters to delay # word splitting, command substitution and 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_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" ;; *) func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" esac } # func_quote_for_expand arg # Aesthetically quote ARG to be evaled later; same as above, # but do not quote variable references. func_quote_for_expand () { case $1 in *[\\\`\"]*) my_arg=`$ECHO "X$1" | $Xsed \ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; *) my_arg="$1" ;; esac case $my_arg in # Double-quote args containing shell metacharacters to delay # word splitting and command substitution for a subsequent eval. # Many Bourne shells cannot handle close brackets correctly # in scan sets, so we specify it separately. *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") my_arg="\"$my_arg\"" ;; esac func_quote_for_expand_result="$my_arg" } # func_show_eval cmd [fail_exp] # Unless opt_silent 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 () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$my_cmd" my_status=$? if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_show_eval_locale cmd [fail_exp] # Unless opt_silent 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 () { my_cmd="$1" my_fail_exp="${2-:}" ${opt_silent-false} || { func_quote_for_expand "$my_cmd" eval "func_echo $func_quote_for_expand_result" } if ${opt_dry_run-false}; then :; else eval "$lt_user_locale $my_cmd" my_status=$? eval "$lt_safe_locale" if test "$my_status" -eq 0; then :; else eval "(exit $my_status); $my_fail_exp" fi fi } # func_version # Echo version message to standard output and exit. func_version () { $SED -n '/^# '$PROGRAM' (GNU /,/# warranty; / { s/^# // s/^# *$// s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ p }' < "$progpath" exit $? } # func_usage # Echo short help message to standard output and exit. func_usage () { $SED -n '/^# Usage:/,/# -h/ { s/^# // s/^# *$// s/\$progname/'$progname'/ p }' < "$progpath" $ECHO $ECHO "run \`$progname --help | more' for full usage" exit $? } # func_help # Echo long help message to standard output and exit. func_help () { $SED -n '/^# Usage:/,/# Report bugs to/ { s/^# // s/^# *$// s*\$progname*'$progname'* s*\$host*'"$host"'* s*\$SHELL*'"$SHELL"'* s*\$LTCC*'"$LTCC"'* s*\$LTCFLAGS*'"$LTCFLAGS"'* s*\$LD*'"$LD"'* s/\$with_gnu_ld/'"$with_gnu_ld"'/ s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ p }' < "$progpath" exit $? } # func_missing_arg argname # Echo program name prefixed message to standard error and set global # exit_cmd. func_missing_arg () { func_error "missing argument for $1" exit_cmd=exit } exit_cmd=: # Check that we have a working $ECHO. if test "X$1" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test "X$1" = X--fallback-echo; then # Avoid inline document here, it may be left over : elif test "X`{ $ECHO '\t'; } 2>/dev/null`" = 'X\t'; then # Yippee, $ECHO works! : else # Restart under the correct shell, and then maybe $ECHO will work. exec $SHELL "$progpath" --no-reexec ${1+"$@"} fi if test "X$1" = X--fallback-echo; then # used as fallback echo shift cat </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 } # Parse options once, thoroughly. This comes as soon as possible in # the script to make things like `libtool --version' happen quickly. { # 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 ;; esac # Parse non-mode specific arguments: while test "$#" -gt 0; do opt="$1" shift case $opt in --config) func_config ;; --debug) preserve_args="$preserve_args $opt" func_echo "enabling shell trace mode" opt_debug='set -x' $opt_debug ;; -dlopen) test "$#" -eq 0 && func_missing_arg "$opt" && break execute_dlfiles="$execute_dlfiles $1" shift ;; --dry-run | -n) opt_dry_run=: ;; --features) func_features ;; --finish) mode="finish" ;; --mode) test "$#" -eq 0 && func_missing_arg "$opt" && break 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 $opt" exit_cmd=exit break ;; esac mode="$1" shift ;; --preserve-dup-deps) opt_duplicate_deps=: ;; --quiet|--silent) preserve_args="$preserve_args $opt" opt_silent=: ;; --verbose| -v) preserve_args="$preserve_args $opt" opt_silent=false ;; --tag) test "$#" -eq 0 && func_missing_arg "$opt" && break preserve_args="$preserve_args $opt $1" func_enable_tag "$1" # tagname is set here shift ;; # Separate optargs to long options: -dlopen=*|--mode=*|--tag=*) func_opt_split "$opt" set dummy "$func_opt_split_opt" "$func_opt_split_arg" ${1+"$@"} shift ;; -\?|-h) func_usage ;; --help) opt_help=: ;; --version) func_version ;; -*) func_fatal_help "unrecognized option \`$opt'" ;; *) nonopt="$opt" break ;; esac done case $host in *cygwin* | *mingw* | *pw32* | *cegcc*) # don't eliminate duplications in $postdeps and $predeps opt_duplicate_compiler_generated_deps=: ;; *) opt_duplicate_compiler_generated_deps=$opt_duplicate_deps ;; esac # Having warned about all mis-specified options, bail out if # anything was wrong. $exit_cmd $EXIT_FAILURE } # 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 } ## ----------- ## ## Main. ## ## ----------- ## $opt_help || { # Sanity checks first: func_check_version_match if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then func_fatal_configuration "not configured to build any kind of library" fi test -z "$mode" && func_fatal_error "error: you must specify a MODE." # Darwin sucks eval std_shrext=\"$shrext_cmds\" # Only execute mode is allowed to have -dlopen flags. if test -n "$execute_dlfiles" && test "$mode" != execute; 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=$mode' for more information." } # 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 \ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 } # 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 "$lalib_p" = yes } # 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 () { func_lalib_p "$1" } # 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_ltwrapper_scriptname_result="" if func_ltwrapper_executable_p "$1"; then func_dirname_and_basename "$1" "" "." func_stripname '' '.exe' "$func_basename_result" func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" fi } # 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 () { $opt_debug save_ifs=$IFS; IFS='~' for cmd in $1; do IFS=$save_ifs eval cmd=\"$cmd\" 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 () { $opt_debug case $1 in */* | *\\*) . "$1" ;; *) . "./$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 () { $opt_debug if test -n "$available_tags" && test -z "$tagname"; then CC_quoted= for arg in $CC; do func_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done 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 "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) ;; # 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_quote_for_eval "$arg" CC_quoted="$CC_quoted $func_quote_for_eval_result" done case "$@ " in " $CC "* | "$CC "* | " `$ECHO $CC` "* | "`$ECHO $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$ECHO $CC_quoted` "* | "`$ECHO $CC_quoted` "*) # 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 "$build_libtool_libs" = yes; then write_lobj=\'${2}\' else write_lobj=none fi if test "$build_old_libs" = yes; then write_oldobj=\'${3}\' else write_oldobj=none fi $opt_dry_run || { cat >${write_libobj}T <?"'"'"' &()|`$[]' \ && 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 "$build_old_libs" = yes; 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 "$pic_mode" = no && test "$deplibs_check_method" != pass_all; 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 "$compiler_c_o" = no; then output_obj=`$ECHO "X$srcfile" | $Xsed -e 's%^.*/%%' -e '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 "$need_locks" = yes; 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 "$need_locks" = warn; 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 removelist="$removelist $output_obj" $ECHO "$srcfile" > "$lockfile" fi $opt_dry_run || $RM $removelist removelist="$removelist $lockfile" trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 if test -n "$fix_srcfile_path"; then eval srcfile=\"$fix_srcfile_path\" fi func_quote_for_eval "$srcfile" qsrcfile=$func_quote_for_eval_result # Only build a PIC object if we are building libtool libraries. if test "$build_libtool_libs" = yes; then # Without this assignment, base_compile gets emptied. fbsd_hideous_sh_bug=$base_compile if test "$pic_mode" != no; 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 command="$command -o $lobj" fi func_show_eval_locale "$command" \ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && 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 "$suppress_opt" = yes; then suppress_output=' >/dev/null 2>&1' fi fi # Only build a position-dependent object if we build old libraries. if test "$build_old_libs" = yes; then if test "$pic_mode" != yes; then # Don't build PIC code command="$base_compile $qsrcfile$pie_flag" else command="$base_compile $qsrcfile $pic_flag" fi if test "$compiler_c_o" = yes; then command="$command -o $obj" fi # Suppress compiler output if we already did a PIC compilation. command="$command$suppress_output" func_show_eval_locale "$command" \ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' if test "$need_locks" = warn && 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 "$need_locks" != no; then removelist=$lockfile $RM "$lockfile" fi } exit $EXIT_SUCCESS } $opt_help || { test "$mode" = compile && func_mode_compile ${1+"$@"} } func_mode_help () { # We need to display help for each of the modes. case $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 building PIC objects only -prefer-non-pic try to building 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 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 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 -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 -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 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 \`$mode'" ;; esac $ECHO $ECHO "Try \`$progname --help' for more information about other modes." exit $? } # Now that we've collected a possible --mode arg, show help if necessary $opt_help && func_mode_help # func_mode_execute arg... func_mode_execute () { $opt_debug # 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 $execute_dlfiles; do test -f "$file" \ || func_fatal_help "\`$file' is not a file" dir= case $file in *.la) # 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 dir="$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 -*) ;; *) # 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_quote_for_eval "$file" args="$args $func_quote_for_eval_result" done if test "X$opt_dry_run" = Xfalse; then 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" else # 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 fi } test "$mode" = execute && func_mode_execute ${1+"$@"} # func_mode_finish arg... func_mode_finish () { $opt_debug libdirs="$nonopt" admincmds= if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then for dir do libdirs="$libdirs $dir" done 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" || admincmds="$admincmds $cmds" fi done fi # Exit here if they wanted silent mode. $opt_silent && exit $EXIT_SUCCESS $ECHO "X----------------------------------------------------------------------" | $Xsed $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 "X----------------------------------------------------------------------" | $Xsed exit $EXIT_SUCCESS } test "$mode" = finish && func_mode_finish ${1+"$@"} # func_mode_install arg... func_mode_install () { $opt_debug # There may be an optional sh(1) argument at the beginning of # install_prog (especially on Windows NT). if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || # Allow the use of GNU shtool's install command. $ECHO "X$nonopt" | $GREP shtool >/dev/null; then # Aesthetically quote it. func_quote_for_eval "$nonopt" install_prog="$func_quote_for_eval_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_for_eval "$arg" install_prog="$install_prog$func_quote_for_eval_result" # We need to accept at least all the BSD install flags. dest= files= opts= prev= install_type= isdir=no stripme= for arg do if test -n "$dest"; then files="$files $dest" dest=$arg continue fi case $arg in -d) isdir=yes ;; -f) case " $install_prog " in *[\\\ /]cp\ *) ;; *) prev=$arg ;; esac ;; -g | -m | -o) prev=$arg ;; -s) stripme=" -s" continue ;; -*) ;; *) # If the previous option needed an argument, then skip it. if test -n "$prev"; then prev= else dest=$arg continue fi ;; esac # Aesthetically quote the argument. func_quote_for_eval "$arg" install_prog="$install_prog $func_quote_for_eval_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 -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=yes if test "$isdir" = yes; 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. staticlibs="$staticlibs $file" ;; *.la) # 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 "*) ;; *) current_libdirs="$current_libdirs $libdir" ;; esac else # Note the libdir as a future libdir. case "$future_libdirs " in *" $libdir "*) ;; *) future_libdirs="$future_libdirs $libdir" ;; esac fi func_dirname "$file" "/" "" dir="$func_dirname_result" dir="$dir$objdir" if test -n "$relink_command"; then # Determine the prefix the user has applied to our future dir. inst_prefix_dir=`$ECHO "X$destdir" | $Xsed -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 "X$relink_command" | $Xsed -e "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` else relink_command=`$ECHO "X$relink_command" | $Xsed -e "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_prog $dir/$srcname $destdir/$realname" \ 'exit $?' tstripme="$stripme" case $host_os in cygwin* | mingw* | pw32* | cegcc*) 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" && staticlibs="$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 "$build_old_libs" = yes; 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=yes 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 "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test if test -n "$libdir" && test ! -f "$libfile"; then func_warning "\`$lib' has not been installed in \`$libdir'" finalize=no fi done relink_command= func_source "$wrapper" outputname= if test "$fast_install" = no && test -n "$relink_command"; then $opt_dry_run || { if test "$finalize" = yes; then tmpdir=`func_mktempdir` func_basename "$file$stripped_ext" file="$func_basename_result" outputname="$tmpdir/$file" # Replace the output file specification. relink_command=`$ECHO "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'` $opt_silent || { func_quote_for_expand "$relink_command" eval "func_echo $func_quote_for_expand_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 "X$file$stripped_ext" | $Xsed -e "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_show_eval "$install_prog \$file \$oldlib" 'exit $?' if test -n "$stripme" && test -n "$old_striplib"; then func_show_eval "$old_striplib $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 "$mode" = install && 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 () { $opt_debug my_outputname="$1" my_originator="$2" my_pic_p="${3-no}" my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` my_dlsyms= if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; 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$TIMESTAMP) $VERSION */ #ifdef __cplusplus extern \"C\" { #endif /* External symbol declarations for the compiler. */\ " if test "$dlself" = yes; 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 "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` for progfile in $progfiles; do func_verbose "extracting global C symbols from \`$progfile'" $opt_dry_run || eval "$NM $progfile | $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" $opt_dry_run || { eval '$ECHO ": $name " >> "$nlist"' eval "$NM $dlprefile 2>/dev/null | $global_symbol_pipe >> '$nlist'" } 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 $ECHO >> "$output_objdir/$my_dlsyms" "\ /* The mapping between symbol names and symbols. */ typedef struct { const char *name; void *address; } lt_dlsymlist; " case $host in *cygwin* | *mingw* | *cegcc* ) $ECHO >> "$output_objdir/$my_dlsyms" "\ /* DATA imports from DLLs on WIN32 con't be const, because runtime relocations are performed -- see ld's documentation on pseudo-relocs. */" lt_dlsym_const= ;; *osf5*) echo >> "$output_objdir/$my_dlsyms" "\ /* This system does not cope well with relocations in const data */" lt_dlsym_const= ;; *) lt_dlsym_const=const ;; esac $ECHO >> "$output_objdir/$my_dlsyms" "\ extern $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[]; $lt_dlsym_const lt_dlsymlist lt_${my_prefix}_LTX_preloaded_symbols[] = {\ { \"$my_originator\", (void *) 0 }," 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" ;; *) if test "X$my_pic_p" != Xno; then pic_flag_for_symtable=" $pic_flag" fi ;; esac ;; esac symtab_cflags= for arg in $LTCFLAGS; do case $arg in -pie | -fpie | -fPIE) ;; *) symtab_cflags="$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"' # 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 "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` else compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` fi ;; *) compile_command=`$ECHO "X$compile_command" | $Xsed -e "s%@SYMFILE@%$symfileobj%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "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 "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"` finalize_command=`$ECHO "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"` fi } # 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. func_win32_libid () { $opt_debug 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 if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | $EGREP 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then win32_nmres=`eval $NM -f posix -A $1 | $SED -n -e ' 1,100{ / I /{ s,.*,import, p q } }'` 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_extract_an_archive dir oldlib func_extract_an_archive () { $opt_debug f_ex_an_ar_dir="$1"; shift f_ex_an_ar_oldlib="$1" func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" 'exit $?' 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 () { $opt_debug 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` darwin_base_archive=`basename "$darwin_archive"` 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 "$basename" | sort -u` darwin_file= darwin_files= for darwin_file in $darwin_filelist; do darwin_files=`find unfat-$$ -name $darwin_file -print | $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 | $NL2SP` done func_extract_archives_result="$my_oldobjs" } # func_emit_wrapper_part1 [arg=no] # # Emit the first part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part1 () { func_emit_wrapper_part1_arg1=no if test -n "$1" ; then func_emit_wrapper_part1_arg1=$1 fi $ECHO "\ #! $SHELL # $output - temporary wrapper script for $objdir/$outputname # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $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. Xsed='${SED} -e 1s/^X//' 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 ECHO=\"$qecho\" file=\"\$0\" # Make sure echo works. if test \"X\$1\" = X--no-reexec; then # Discard the --no-reexec flag, and continue. shift elif test \"X\`{ \$ECHO '\t'; } 2>/dev/null\`\" = 'X\t'; then # Yippee, \$ECHO works! : else # Restart under the correct shell, and then maybe \$ECHO will work. exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"} fi fi\ " $ECHO "\ # Find the directory that this script lives in. thisdir=\`\$ECHO \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e 's%^.*/%%'\` file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\` done " } # end: func_emit_wrapper_part1 # func_emit_wrapper_part2 [arg=no] # # Emit the second part of a libtool wrapper script on stdout. # For more information, see the description associated with # func_emit_wrapper(), below. func_emit_wrapper_part2 () { func_emit_wrapper_part2_arg1=no if test -n "$1" ; then func_emit_wrapper_part2_arg1=$1 fi $ECHO "\ # Usually 'no', except on cygwin/mingw when embedded into # the cwrapper. WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_part2_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 \"X\$thisdir\" | \$Xsed -e 's%[\\\\/][^\\\\/]*$%%'\` ;; $objdir ) thisdir=. ;; esac fi # Try to get the absolute directory name. absdir=\`cd \"\$thisdir\" && pwd\` test -n \"\$absdir\" && thisdir=\"\$absdir\" " if test "$fast_install" = yes; 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" # Export our shlibpath_var if we have one. if test "$shlibpath_overrides_runpath" = yes && 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 \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\` export $shlibpath_var " fi # fixup the dll searchpath if we need to. if test -n "$dllsearchpath"; then $ECHO "\ # Add the dll search path components to the executable PATH PATH=$dllsearchpath:\$PATH " fi $ECHO "\ if test \"\$libtool_execute_magic\" != \"$magic\"; then # Run the actual program with our arguments. " case $host in # Backslashes separate directories on plain windows *-*-mingw | *-*-os2* | *-cegcc*) $ECHO "\ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} " ;; *) $ECHO "\ exec \"\$progdir/\$program\" \${1+\"\$@\"} " ;; esac $ECHO "\ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 exit 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\ " } # end: func_emit_wrapper_part2 # 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 in which it is stored is # the $objdir directory. This is a cygwin/mingw-specific # behavior. func_emit_wrapper () { func_emit_wrapper_arg1=no if test -n "$1" ; then func_emit_wrapper_arg1=$1 fi # split this up so that func_emit_cwrapperexe_src # can call each part independently. func_emit_wrapper_part1 "${func_emit_wrapper_arg1}" func_emit_wrapper_part2 "${func_emit_wrapper_arg1}" } # func_to_host_path arg # # Convert paths to host format when used with build tools. # Intended for use with "native" mingw (where libtool itself # is running under the msys shell), or in the following cross- # build environments: # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # where wine is equipped with the `winepath' executable. # In the native mingw case, the (msys) shell automatically # converts paths for any non-msys applications it launches, # but that facility isn't available from inside the cwrapper. # Similar accommodations are necessary for $host mingw and # $build cygwin. Calling this function does no harm for other # $host/$build combinations not listed above. # # ARG is the path (on $build) that should be converted to # the proper representation for $host. The result is stored # in $func_to_host_path_result. func_to_host_path () { func_to_host_path_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' case $build in *mingw* ) # actually, msys # awkward: cmd appends spaces to result lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_path_tmp1=`( cmd //c echo "$1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_path_tmp1=`cygpath -w "$1"` func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # Unfortunately, winepath does not exit with a non-zero # error code, so we are forced to check the contents of # stdout. On the other hand, if the command is not # found, the shell will set an exit code of 127 and print # *an error message* to stdout. So we must check for both # error code of zero AND non-empty stdout, which explains # the odd construction: func_to_host_path_tmp1=`winepath -w "$1" 2>/dev/null` if test "$?" -eq 0 && test -n "${func_to_host_path_tmp1}"; then func_to_host_path_result=`echo "$func_to_host_path_tmp1" |\ $SED -e "$lt_sed_naive_backslashify"` else # Allow warning below. func_to_host_path_result="" fi ;; esac if test -z "$func_to_host_path_result" ; then func_error "Could not determine host path corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback: func_to_host_path_result="$1" fi ;; esac fi } # end: func_to_host_path # func_to_host_pathlist arg # # Convert pathlists to host format when used with build tools. # See func_to_host_path(), above. This function supports the # following $build/$host combinations (but does no harm for # combinations not listed here): # $build $host # mingw (msys) mingw [e.g. native] # cygwin mingw # *nix + wine mingw # # 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. # # ARG is a pathlist (on $build) that should be converted to # the proper representation on $host. The result is stored # in $func_to_host_pathlist_result. func_to_host_pathlist () { func_to_host_pathlist_result="$1" if test -n "$1" ; then case $host in *mingw* ) lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' # 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_to_host_pathlist_tmp2="$1" # Once set for this call, this variable should not be # reassigned. It is used in tha fallback case. func_to_host_pathlist_tmp1=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e 's|^:*||' -e 's|:*$||'` case $build in *mingw* ) # Actually, msys. # Awkward: cmd appends spaces to result. lt_sed_strip_trailing_spaces="s/[ ]*\$//" func_to_host_pathlist_tmp2=`( cmd //c echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_sed_strip_trailing_spaces" ) 2>/dev/null || echo ""` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; *cygwin* ) func_to_host_pathlist_tmp2=`cygpath -w -p "$func_to_host_pathlist_tmp1"` func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp2" |\ $SED -e "$lt_sed_naive_backslashify"` ;; * ) # unfortunately, winepath doesn't convert pathlists func_to_host_pathlist_result="" func_to_host_pathlist_oldIFS=$IFS IFS=: for func_to_host_pathlist_f in $func_to_host_pathlist_tmp1 ; do IFS=$func_to_host_pathlist_oldIFS if test -n "$func_to_host_pathlist_f" ; then func_to_host_path "$func_to_host_pathlist_f" if test -n "$func_to_host_path_result" ; then if test -z "$func_to_host_pathlist_result" ; then func_to_host_pathlist_result="$func_to_host_path_result" else func_to_host_pathlist_result="$func_to_host_pathlist_result;$func_to_host_path_result" fi fi fi IFS=: done IFS=$func_to_host_pathlist_oldIFS ;; esac if test -z "$func_to_host_pathlist_result" ; then func_error "Could not determine the host path(s) corresponding to" func_error " '$1'" func_error "Continuing, but uninstalled executables may not work." # Fallback. This may break if $1 contains DOS-style drive # specifications. The fix is not to complicate the expression # below, but for the user to provide a working wine installation # with winepath so that path translation in the cross-to-mingw # case works properly. lt_replace_pathsep_nix_to_dos="s|:|;|g" func_to_host_pathlist_result=`echo "$func_to_host_pathlist_tmp1" |\ $SED -e "$lt_replace_pathsep_nix_to_dos"` fi # Now, add the leading and trailing path separators back case "$1" in :* ) func_to_host_pathlist_result=";$func_to_host_pathlist_result" ;; esac case "$1" in *: ) func_to_host_pathlist_result="$func_to_host_pathlist_result;" ;; esac ;; esac fi } # end: func_to_host_pathlist # 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 # define setmode _setmode #else # include # include # ifdef __CYGWIN__ # include # define HAVE_SETENV # ifdef __STRICT_ANSI__ char *realpath (const char *, char *); int putenv (char *); int setenv (const char *, const char *, int); # endif # endif #endif #include #include #include #include #include #include #include #include #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 #ifdef _MSC_VER # define S_IXUSR _S_IEXEC # define stat _stat # ifndef _INTPTR_T_DEFINED # define intptr_t int # endif #endif #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 */ #ifdef __CYGWIN__ # define FOPEN_WB "wb" #endif #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 ((void *) stale); stale = 0; } \ } while (0) #undef LTWRAPPER_DEBUGPRINTF #if defined DEBUGWRAPPER # define LTWRAPPER_DEBUGPRINTF(args) ltwrapper_debugprintf args static void ltwrapper_debugprintf (const char *fmt, ...) { va_list args; va_start (args, fmt); (void) vfprintf (stderr, fmt, args); va_end (args); } #else # define LTWRAPPER_DEBUGPRINTF(args) #endif const char *program_name = NULL; 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_fatal (const char *message, ...); 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_opt_process_env_set (const char *arg); void lt_opt_process_env_prepend (const char *arg); void lt_opt_process_env_append (const char *arg); int lt_split_name_value (const char *arg, char** name, char** value); void lt_update_exe_path (const char *name, const char *value); void lt_update_lib_path (const char *name, const char *value); static const char *script_text_part1 = EOF func_emit_wrapper_part1 yes | $SED -e 's/\([\\"]\)/\\\1/g' \ -e 's/^/ "/' -e 's/$/\\n"/' echo ";" cat <"))); for (i = 0; i < newargc; i++) { LTWRAPPER_DEBUGPRINTF (("(main) newargz[%d] : %s\n", i, (newargz[i] ? newargz[i] : ""))); } EOF case $host_os in mingw*) cat <<"EOF" /* execv doesn't actually work on mingw as expected on unix */ rval = _spawnv (_P_WAIT, lt_argv_zero, (const char * const *) newargz); if (rval == -1) { /* failed to start process */ LTWRAPPER_DEBUGPRINTF (("(main) failed to launch target \"%s\": errno = %d\n", lt_argv_zero, errno)); return 127; } return rval; EOF ;; *) cat <<"EOF" execv (lt_argv_zero, newargz); return rval; /* =127, but avoids unused variable warning */ EOF ;; esac cat <<"EOF" } void * xmalloc (size_t num) { void *p = (void *) malloc (num); if (!p) lt_fatal ("Memory exhausted"); return p; } char * xstrdup (const char *string) { return string ? strcpy ((char *) xmalloc (strlen (string) + 1), string) : NULL; } const char * base_name (const char *name) { const char *base; #if defined (HAVE_DOS_BASED_FILE_SYSTEM) /* Skip over the disk name in MSDOS pathnames. */ if (isalpha ((unsigned char) name[0]) && name[1] == ':') name += 2; #endif for (base = name; *name; name++) if (IS_DIR_SEPARATOR (*name)) base = name + 1; return base; } int check_executable (const char *path) { struct stat st; LTWRAPPER_DEBUGPRINTF (("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); if ((!path) || (!*path)) return 0; if ((stat (path, &st) >= 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; LTWRAPPER_DEBUGPRINTF (("(make_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!")); 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]; int tmp_len; char *concat_name; LTWRAPPER_DEBUGPRINTF (("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!")); 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 = 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 ("getcwd failed"); 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 ("getcwd failed"); 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) { LTWRAPPER_DEBUGPRINTF (("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 { char *errstr = strerror (errno); lt_fatal ("Error accessing file %s (%s)", tmp_pathspec, errstr); } } XFREE (tmp_pathspec); if (!has_symlinks) { return xstrdup (pathspec); } tmp_pathspec = realpath (pathspec, buf); if (tmp_pathspec == 0) { lt_fatal ("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 (strcmp (str, pat) == 0) *str = '\0'; } return str; } static void lt_error_core (int exit_status, const char *mode, const char *message, va_list ap) { fprintf (stderr, "%s: %s: ", program_name, mode); vfprintf (stderr, message, ap); fprintf (stderr, ".\n"); if (exit_status >= 0) exit (exit_status); } void lt_fatal (const char *message, ...) { va_list ap; va_start (ap, message); lt_error_core (EXIT_FAILURE, "FATAL", message, ap); va_end (ap); } void lt_setenv (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_setenv) setting '%s' to '%s'\n", (name ? name : ""), (value ? value : ""))); { #ifdef HAVE_SETENV /* always make a copy, for consistency with !HAVE_SETENV */ char *str = xstrdup (value); setenv (name, str, 1); #else int 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) { int orig_value_len = strlen (orig_value); int 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; } int lt_split_name_value (const char *arg, char** name, char** value) { const char *p; int len; if (!arg || !*arg) return 1; p = strchr (arg, (int)'='); if (!p) return 1; *value = xstrdup (++p); len = strlen (arg) - strlen (*value); *name = XMALLOC (char, len); strncpy (*name, arg, len-1); (*name)[len - 1] = '\0'; return 0; } void lt_opt_process_env_set (const char *arg) { char *name = NULL; char *value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_set_opt, arg); } lt_setenv (name, value); XFREE (name); XFREE (value); } void lt_opt_process_env_prepend (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_prepend_opt, arg); } new_value = lt_extend_str (getenv (name), value, 0); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_opt_process_env_append (const char *arg) { char *name = NULL; char *value = NULL; char *new_value = NULL; if (lt_split_name_value (arg, &name, &value) != 0) { XFREE (name); XFREE (value); lt_fatal ("bad argument for %s: '%s'", env_append_opt, arg); } new_value = lt_extend_str (getenv (name), value, 1); lt_setenv (name, new_value); XFREE (new_value); XFREE (name); XFREE (value); } void lt_update_exe_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_exe_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? 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 #' */ int len = strlen (new_value); while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) { new_value[len-1] = '\0'; } lt_setenv (name, new_value); XFREE (new_value); } } void lt_update_lib_path (const char *name, const char *value) { LTWRAPPER_DEBUGPRINTF (("(lt_update_lib_path) modifying '%s' by prepending '%s'\n", (name ? name : ""), (value ? 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 } # end: func_emit_cwrapperexe_src # func_mode_link arg... func_mode_link () { $opt_debug 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 # which 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 which 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 dlfiles= dlprefiles= dlself=no export_dynamic=no export_symbols= export_symbols_regex= generated= libobjs= ltlibs= module=no no_install=no objs= non_pic_objects= precious_files_regex= prefer_static_libs=no preload=no 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 "$build_libtool_libs" != yes && \ func_fatal_configuration "can not build a shared library" build_old_libs=no break ;; -all-static | -static | -static-libtool-libs) case $arg in -all-static) if test "$build_libtool_libs" = yes && 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_for_eval "$arg" qarg=$func_quote_for_eval_unquoted_result func_append libtool_args " $func_quote_for_eval_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 dlfiles|dlprefiles) if test "$preload" = no; then # Add the symbol object into the linking commands. func_append compile_command " @SYMFILE@" func_append finalize_command " @SYMFILE@" preload=yes fi case $arg in *.la | *.lo) ;; # We handle these cases below. force) if test "$dlself" = no; then dlself=needless export_dynamic=yes fi prev= continue ;; self) if test "$prev" = dlprefiles; then dlself=yes elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then dlself=yes else dlself=needless export_dynamic=yes fi prev= continue ;; *) if test "$prev" = dlfiles; then dlfiles="$dlfiles $arg" else dlprefiles="$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 "*) ;; *) deplibs="$deplibs $qarg.ltframework" # this is fixed later ;; esac ;; esac prev= continue ;; inst_prefix) inst_prefix_dir="$arg" prev= continue ;; objectlist) if test -f "$arg"; then save_arg=$arg moreargs= for fil in `cat "$save_arg"` do # moreargs="$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 "$pic_object" = none && test "$non_pic_object" = none; 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 "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$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 "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; 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 "$pic_object" = none ; 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 ;; 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 "$prev" = rpath; then case "$rpath " in *" $arg "*) ;; *) rpath="$rpath $arg" ;; esac else case "$xrpath " in *" $arg "*) ;; *) xrpath="$xrpath $arg" ;; esac fi prev= continue ;; shrext) shrext_cmds="$arg" prev= continue ;; weak) weak_libs="$weak_libs $arg" prev= continue ;; xcclinker) linker_flags="$linker_flags $qarg" compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xcompiler) compiler_flags="$compiler_flags $qarg" prev= func_append compile_command " $qarg" func_append finalize_command " $qarg" continue ;; xlinker) linker_flags="$linker_flags $qarg" compiler_flags="$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 ;; -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$arg" = "X-export-symbols"; 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" dir=$func_stripname_result if test -z "$dir"; 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 # 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 "*) ;; *) deplibs="$deplibs -L$dir" lib_search_path="$lib_search_path $dir" ;; esac case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) testbindir=`$ECHO "X$dir" | $Xsed -e 's*/lib$*/bin*'` case :$dllsearchpath: in *":$dir:"*) ;; ::) dllsearchpath=$dir;; *) dllsearchpath="$dllsearchpath:$dir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$dllsearchpath:$testbindir";; esac ;; esac continue ;; -l*) if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc*) # 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$arg" = "X-lc" && continue ;; *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc due to us having libc/libc_r. test "X$arg" = "X-lc" && continue ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C and math libraries are in the System framework deplibs="$deplibs System.ltframework" continue ;; *-*-sco3.2v5* | *-*-sco5v6*) # Causes problems with __ctype test "X$arg" = "X-lc" && continue ;; *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) # Compiler inserts libc in the correct place for threads to work test "X$arg" = "X-lc" && continue ;; esac elif test "X$arg" = "X-lc_r"; then case $host in *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) # Do not include libc_r directly, use -pthread flag. continue ;; esac fi deplibs="$deplibs $arg" 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) compiler_flags="$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) compiler_flags="$compiler_flags $arg" func_append compile_command " $arg" func_append finalize_command " $arg" case "$new_inherited_linker_flags " in *" $arg "*) ;; * ) new_inherited_linker_flags="$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 ;; -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_fatal_error "only absolute run-paths are allowed" ;; esac case "$xrpath " in *" $dir "*) ;; *) xrpath="$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_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $func_quote_for_eval_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_for_eval "$flag" arg="$arg $wl$func_quote_for_eval_result" compiler_flags="$compiler_flags $wl$func_quote_for_eval_result" linker_flags="$linker_flags $func_quote_for_eval_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_for_eval "$arg" arg="$func_quote_for_eval_result" ;; # -64, -mips[0-9] enable 64-bit mode on the SGI compiler # -r[0-9][0-9]* specifies the processor on the SGI compiler # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler # +DA*, +DD* enable 64-bit mode on the HP compiler # -q* pass through compiler args for the IBM compiler # -m*, -t[45]*, -txscale* pass through architecture-specific # compiler args for GCC # -F/path gives path to uninstalled frameworks, gcc on darwin # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC # @file GCC response files -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" func_append compile_command " $arg" func_append finalize_command " $arg" compiler_flags="$compiler_flags $arg" continue ;; # Some other compiler flag. -* | +*) func_quote_for_eval "$arg" arg="$func_quote_for_eval_result" ;; *.$objext) # A standard object. objs="$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 "$pic_object" = none && test "$non_pic_object" = none; 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 "$pic_object" != none; then # Prepend the subdirectory the object is found in. pic_object="$xdir$pic_object" if test "$prev" = dlfiles; then if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then dlfiles="$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 "$prev" = dlprefiles; then # Preload the old-style object. dlprefiles="$dlprefiles $pic_object" prev= fi # A PIC object. func_append libobjs " $pic_object" arg="$pic_object" fi # Non-PIC object. if test "$non_pic_object" != none; 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 "$pic_object" = none ; 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. deplibs="$deplibs $arg" old_deplibs="$old_deplibs $arg" continue ;; *.la) # A libtool-controlled library. if test "$prev" = dlfiles; then # This library was specified with -dlopen. dlfiles="$dlfiles $arg" prev= elif test "$prev" = dlprefiles; then # The library was specified with -dlpreopen. dlprefiles="$dlprefiles $arg" prev= else deplibs="$deplibs $arg" 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_for_eval "$arg" arg="$func_quote_for_eval_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 "$export_dynamic" = yes && 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 \"X\${$shlibpath_var}\" \| \$Xsed -e \'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\" func_dirname "$output" "/" "" output_objdir="$func_dirname_result$objdir" # 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_duplicate_deps ; then case "$libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi libs="$libs $deplib" done if test "$linkmode" = lib; 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 "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;; esac pre_post_deps="$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=no 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 "$linkmode,$pass" = "lib,link"; 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 "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan"; then libs="$deplibs" deplibs= fi if test "$linkmode" = prog; then case $pass in dlopen) libs="$dlfiles" ;; dlpreopen) libs="$dlprefiles" ;; link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; esac fi if test "$linkmode,$pass" = "lib,dlpreopen"; then # Collect and forward deplibs of preopened libtool libs for lib in $dlprefiles; do # Ignore non-libtool-libs dependency_libs= case $lib in *.la) func_source "$lib" ;; esac # Collect preopened libtool deplibs, except any this library # has declared as weak libs for deplib in $dependency_libs; do deplib_base=`$ECHO "X$deplib" | $Xsed -e "$basename"` case " $weak_libs " in *" $deplib_base "*) ;; *) deplibs="$deplibs $deplib" ;; esac done done libs="$dlprefiles" fi if test "$pass" = dlopen; then # Collect dlpreopened libraries save_deplibs="$deplibs" deplibs= fi for deplib in $libs; do lib= found=no case $deplib in -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else compiler_flags="$compiler_flags $deplib" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -l*) if test "$linkmode" != lib && test "$linkmode" != prog; then func_warning "\`-l' is ignored for archives/objects" continue fi func_stripname '-l' '' "$deplib" name=$func_stripname_result if test "$linkmode" = lib; 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 "$search_ext" = ".la"; then found=yes else found=no fi break 2 fi done done if test "$found" != yes; then # deplib doesn't seem to be a libtool library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue else # 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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; 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=no func_dirname "$lib" "" "." ladir="$func_dirname_result" lib=$ladir/$old_library if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" fi continue fi fi ;; *) ;; esac fi fi ;; # -l *.ltframework) if test "$linkmode,$pass" = "prog,link"; then compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else deplibs="$deplib $deplibs" if test "$linkmode" = lib ; then case "$new_inherited_linker_flags " in *" $deplib "*) ;; * ) new_inherited_linker_flags="$new_inherited_linker_flags $deplib" ;; esac fi fi continue ;; -L*) case $linkmode in lib) deplibs="$deplib $deplibs" test "$pass" = conv && continue newdependency_libs="$deplib $newdependency_libs" func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; prog) if test "$pass" = conv; then deplibs="$deplib $deplibs" continue fi if test "$pass" = scan; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; *) func_warning "\`-L' is ignored for archives/objects" ;; esac # linkmode continue ;; # -L -R*) if test "$pass" = link; then func_stripname '-R' '' "$deplib" dir=$func_stripname_result # Make sure the xrpath contains only unique directories. case "$xrpath " in *" $dir "*) ;; *) xrpath="$xrpath $dir" ;; esac fi deplibs="$deplib $deplibs" continue ;; *.la) lib="$deplib" ;; *.$libext) if test "$pass" = conv; 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=no case $deplibs_check_method in match_pattern*) set dummy $deplibs_check_method; shift match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` if eval "\$ECHO \"X$deplib\"" 2>/dev/null | $Xsed -e 10q \ | $EGREP "$match_pattern_regex" > /dev/null; then valid_a_lib=yes fi ;; pass_all) valid_a_lib=yes ;; esac if test "$valid_a_lib" != yes; then $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." else $ECHO $ECHO "*** Warning: Linking the shared library $output against the" $ECHO "*** static library $deplib is not portable!" deplibs="$deplib $deplibs" fi ;; esac continue ;; prog) if test "$pass" != link; then deplibs="$deplib $deplibs" else compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" fi continue ;; esac # linkmode ;; # *.$libext *.lo | *.$objext) if test "$pass" = conv; then deplibs="$deplib $deplibs" elif test "$linkmode" = prog; then if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then # If there is no dlopen support or we're linking statically, # we need to preload. newdlprefiles="$newdlprefiles $deplib" compile_deplibs="$deplib $compile_deplibs" finalize_deplibs="$deplib $finalize_deplibs" else newdlfiles="$newdlfiles $deplib" fi fi continue ;; %DEPLIBS%) alldeplibs=yes continue ;; esac # case $deplib if test "$found" = yes || test -f "$lib"; then : else func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" fi # 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 "X$inherited_linker_flags" | $Xsed -e '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 "*) ;; *) new_inherited_linker_flags="$new_inherited_linker_flags $tmp_inherited_linker_flag";; esac done fi dependency_libs=`$ECHO "X $dependency_libs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` if test "$linkmode,$pass" = "lib,link" || test "$linkmode,$pass" = "prog,scan" || { test "$linkmode" != prog && test "$linkmode" != lib; }; then test -n "$dlopen" && dlfiles="$dlfiles $dlopen" test -n "$dlpreopen" && dlprefiles="$dlprefiles $dlpreopen" fi if test "$pass" = conv; 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. convenience="$convenience $ladir/$objdir/$old_library" old_convenience="$old_convenience $ladir/$objdir/$old_library" elif test "$linkmode" != prog && test "$linkmode" != lib; then func_fatal_error "\`$lib' is not a convenience library" fi tmp_libs= for deplib in $dependency_libs; do deplibs="$deplib $deplibs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done continue fi # $pass = conv # Get the name of the library we link against. linklib= for l in $old_library $library_names; do linklib="$l" done 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 "$pass" = dlopen; then if test -z "$libdir"; then func_fatal_error "cannot -dlopen a convenience library: \`$lib'" fi if test -z "$dlname" || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; 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. dlprefiles="$dlprefiles $lib $dependency_libs" else newdlfiles="$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 "X$installed" = Xyes; then if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then func_warning "library \`$lib' was moved." dir="$ladir" absdir="$abs_ladir" libdir="$abs_ladir" else dir="$libdir" absdir="$libdir" fi test "X$hardcode_automatic" = Xyes && 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 notinst_path="$notinst_path $abs_ladir" else dir="$ladir/$objdir" absdir="$abs_ladir/$objdir" # Remove this search path later notinst_path="$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 "$pass" = dlpreopen; then if test -z "$libdir" && test "$linkmode" = prog; then func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" fi # Prefer using a static library (so that no silly _DYNAMIC symbols # are required to link). if test -n "$old_library"; then newdlprefiles="$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" && \ dlpreconveniencelibs="$dlpreconveniencelibs $dir/$old_library" # Otherwise, use the dlname, so that lt_dlopen finds it. elif test -n "$dlname"; then newdlprefiles="$newdlprefiles $dir/$dlname" else newdlprefiles="$newdlprefiles $dir/$linklib" fi fi # $pass = dlpreopen if test -z "$libdir"; then # Link the convenience library if test "$linkmode" = lib; then deplibs="$dir/$old_library $deplibs" elif test "$linkmode,$pass" = "prog,link"; 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 "$linkmode" = prog && test "$pass" != link; then newlib_search_path="$newlib_search_path $ladir" deplibs="$lib $deplibs" linkalldeplibs=no if test "$link_all_deplibs" != no || test -z "$library_names" || test "$build_libtool_libs" = no; then linkalldeplibs=yes fi tmp_libs= for deplib in $dependency_libs; do case $deplib in -L*) func_stripname '-L' '' "$deplib" newlib_search_path="$newlib_search_path $func_stripname_result" ;; esac # Need to link against all dependency_libs? if test "$linkalldeplibs" = yes; 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_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done # for deplib continue fi # $linkmode = prog... if test "$linkmode,$pass" = "prog,link"; then if test -n "$library_names" && { { test "$prefer_static_libs" = no || test "$prefer_static_libs,$installed" = "built,yes"; } || 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:"*) ;; *) temp_rpath="$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 "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" esac ;; esac fi # $linkmode,$pass = prog,link... if test "$alldeplibs" = yes && { test "$deplibs_check_method" = pass_all || { test "$build_libtool_libs" = yes && 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 "$use_static_libs" = built && test "$installed" = yes; then use_static_libs=no fi if test -n "$library_names" && { test "$use_static_libs" = no || test -z "$old_library"; }; then case $host in *cygwin* | *mingw* | *cegcc*) # No point in relinking DLLs because paths are not encoded notinst_deplibs="$notinst_deplibs $lib" need_relink=no ;; *) if test "$installed" = no; then notinst_deplibs="$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 "$shouldnotlink" = yes && test "$pass" = link; then $ECHO if test "$linkmode" = prog; 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 "$linkmode" = lib && test "$hardcode_into_libs" = yes; 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 "*) ;; *) compile_rpath="$compile_rpath $absdir" esac ;; esac case " $sys_lib_dlsearch_path " in *" $libdir "*) ;; *) case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$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*) 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 "$linkmode" = prog || test "$mode" != relink; then add_shlibpath= add_dir= add= lib_linked=yes case $hardcode_action in immediate | unsupported) if test "$hardcode_direct" = no; 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 can not # 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 "$hardcode_minus_L" = no; then case $host in *-*-sunos*) add_shlibpath="$dir" ;; esac add_dir="-L$dir" add="-l$name" elif test "$hardcode_shlibpath_var" = no; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; relink) if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$dir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$dir" # Try looking first in the location we're being installed to. if test -n "$inst_prefix_dir"; then case $libdir in [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then add_shlibpath="$dir" add="-l$name" else lib_linked=no fi ;; *) lib_linked=no ;; esac if test "$lib_linked" != yes; then func_fatal_configuration "unsupported hardcode properties" fi if test -n "$add_shlibpath"; then case :$compile_shlibpath: in *":$add_shlibpath:"*) ;; *) compile_shlibpath="$compile_shlibpath$add_shlibpath:" ;; esac fi if test "$linkmode" = prog; 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 "$hardcode_direct" != yes && test "$hardcode_minus_L" != yes && test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac fi fi fi if test "$linkmode" = prog || test "$mode" = relink; then add_shlibpath= add_dir= add= # Finalize command for both is simple: just hardcode it. if test "$hardcode_direct" = yes && test "$hardcode_direct_absolute" = no; then add="$libdir/$linklib" elif test "$hardcode_minus_L" = yes; then add_dir="-L$libdir" add="-l$name" elif test "$hardcode_shlibpath_var" = yes; then case :$finalize_shlibpath: in *":$libdir:"*) ;; *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;; esac add="-l$name" elif test "$hardcode_automatic" = yes; 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 [\\/]*) add_dir="$add_dir -L$inst_prefix_dir$libdir" ;; esac fi add="-l$name" fi if test "$linkmode" = prog; 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 "$linkmode" = prog; 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 "$hardcode_direct" != unsupported; 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 "$build_libtool_libs" = yes; then # Not a shared library if test "$deplibs_check_method" != pass_all; 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 can not 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 "$module" = yes; 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 "$build_old_libs" = no; 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 "$linkmode" = lib; then if test -n "$dependency_libs" && { test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes || test "$link_static" = yes; }; 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 "*) ;; *) xrpath="$xrpath $temp_xrpath";; esac;; *) temp_deplibs="$temp_deplibs $libdir";; esac done dependency_libs="$temp_deplibs" fi newlib_search_path="$newlib_search_path $absdir" # Link against this library test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" # ... and its dependency_libs tmp_libs= for deplib in $dependency_libs; do newdependency_libs="$deplib $newdependency_libs" if $opt_duplicate_deps ; then case "$tmp_libs " in *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;; esac fi tmp_libs="$tmp_libs $deplib" done if test "$link_all_deplibs" != no; then # Add the search paths of all dependency libraries for deplib in $dependency_libs; do case $deplib in -L*) path="$deplib" ;; *.la) 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 compiler_flags="$compiler_flags ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" linker_flags="$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 "$pass" = link; then if test "$linkmode" = "prog"; then compile_deplibs="$new_inherited_linker_flags $compile_deplibs" finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" else compiler_flags="$compiler_flags "`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` fi fi dependency_libs="$newdependency_libs" if test "$pass" = dlpreopen; then # Link the dlpreopened libraries before other libraries for deplib in $save_deplibs; do deplibs="$deplib $deplibs" done fi if test "$pass" != dlopen; then if test "$pass" != conv; then # 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 "*) ;; *) lib_search_path="$lib_search_path $dir" ;; esac done newlib_search_path= fi if test "$linkmode,$pass" != "prog,link"; then vars="deplibs" else vars="compile_deplibs finalize_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 "*) ;; *) tmp_libs="$tmp_libs $deplib" ;; esac ;; *) tmp_libs="$tmp_libs $deplib" ;; esac done eval $var=\"$tmp_libs\" done # for var fi # 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 tmp_libs="$tmp_libs $i" fi done dependency_libs=$tmp_libs done # for pass if test "$linkmode" = prog; then dlfiles="$newdlfiles" fi if test "$linkmode" = prog || test "$linkmode" = lib; then dlprefiles="$newdlprefiles" fi case $linkmode in oldlib) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; 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" objs="$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 "$module" = no && \ func_fatal_help "libtool library \`$output' must begin with \`lib'" if test "$need_lib_prefix" != no; 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 "$deplibs_check_method" != pass_all; 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!" libobjs="$libobjs $objs" fi fi test "$dlself" != no && \ func_warning "\`-dlopen self' is ignored for libtool libraries" set dummy $rpath shift test "$#" -gt 1 && \ func_warning "ignoring multiple \`-rpath's for a libtool library" install_libdir="$1" oldlibs= if test -z "$rpath"; then if test "$build_libtool_libs" = yes; 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 # which has an extra 1 added just for fun # case $version_type in darwin|linux|osf|windows|none) func_arith $number_major + $number_minor current=$func_arith_result age="$number_minor" revision="$number_revision" ;; freebsd-aout|freebsd-elf|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" ;; freebsd-aout) major=".$current" versuffix=".$current.$revision"; ;; freebsd-elf) major=".$current" versuffix=".$current" ;; irix | nonstopux) if test "X$lt_irix_increment" = "Xno"; 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 "$loop" -ne 0; 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) 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 "$loop" -ne 0; 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. verstring="$verstring:${current}.0" ;; qnx) major=".$current" versuffix=".$current" ;; sunos) major=".$current" versuffix=".$current.$revision" ;; windows) # Use '-' rather than '.', since we only want one # extension on DOS 8.3 filesystems. 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 "$need_version" = no; then versuffix= else versuffix=".0.0" fi fi # Remove version info from name if versioning should be avoided if test "$avoid_version" = yes && test "$need_version" = no; then major= versuffix= verstring="" fi # Check to see if the archive will have undefined symbols. if test "$allow_undefined" = yes; then if test "$allow_undefined_flag" = unsupported; then func_warning "undefined symbols not allowed in $host shared libraries" build_libtool_libs=no build_old_libs=yes fi else # Don't allow undefined symbols. allow_undefined_flag="$no_undefined_flag" fi fi func_generate_dlsyms "$libname" "$libname" "yes" libobjs="$libobjs $symfileobj" test "X$libobjs" = "X " && libobjs= if test "$mode" != relink; 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 "X$precious_files_regex" != "X"; then if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 then continue fi fi removelist="$removelist $p" ;; *) ;; esac done test -n "$removelist" && \ func_show_eval "${RM}r \$removelist" fi # Now set the variables for building old libraries. if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then oldlibs="$oldlibs $output_objdir/$libname.$libext" # Transform .lo files to .o files. oldobjs="$objs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP` fi # Eliminate all temporary directories. #for path in $notinst_path; do # lib_search_path=`$ECHO "X$lib_search_path " | $Xsed -e "s% $path % %g"` # deplibs=`$ECHO "X$deplibs " | $Xsed -e "s% -L$path % %g"` # dependency_libs=`$ECHO "X$dependency_libs " | $Xsed -e "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 temp_xrpath="$temp_xrpath -R$libdir" case "$finalize_rpath " in *" $libdir "*) ;; *) finalize_rpath="$finalize_rpath $libdir" ;; esac done if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; 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 "*) ;; *) dlfiles="$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 "*) ;; *) dlprefiles="$dlprefiles $lib" ;; esac done if test "$build_libtool_libs" = yes; then if test -n "$rpath"; then case $host in *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc*) # these systems don't actually have a c library (as such)! ;; *-*-rhapsody* | *-*-darwin1.[012]) # Rhapsody C library is in the System framework deplibs="$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 "$build_libtool_need_lc" = "yes"; then deplibs="$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` 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 "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";; esac done if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | $SED -e 10q | $EGREP "$file_magic_regex" > /dev/null; then newdeplibs="$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. newdeplibs="$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 "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then case " $predeps $postdeps " in *" $a_deplib "*) newdeplibs="$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 \"X$potent_lib\"" 2>/dev/null | $Xsed -e 10q | \ $EGREP "$match_pattern_regex" > /dev/null; then newdeplibs="$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. newdeplibs="$newdeplibs $a_deplib" ;; esac done # Gone through all deplibs. ;; none | unknown | *) newdeplibs="" tmp_deplibs=`$ECHO "X $deplibs" | $Xsed \ -e 's/ -lc$//' -e 's/ -[LR][^ ]*//g'` if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then for i in $predeps $postdeps ; do # can't use Xsed below, because $i might contain '/' tmp_deplibs=`$ECHO "X $tmp_deplibs" | $Xsed -e "s,$i,,"` done fi if $ECHO "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' | $GREP . >/dev/null; then $ECHO if test "X$deplibs_check_method" = "Xnone"; 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 fi ;; 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 "X $newdeplibs" | $Xsed -e 's/ -lc / System.ltframework /'` ;; esac if test "$droppeddeps" = yes; then if test "$module" = yes; 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 "$build_old_libs" = no; 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 "$allow_undefined" = no; 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 "$build_old_libs" = no; 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 "X $newdeplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` new_inherited_linker_flags=`$ECHO "X $new_inherited_linker_flags" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` deplibs=`$ECHO "X $deplibs" | $Xsed -e '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 "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$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 "$build_libtool_libs" = yes; then if test "$hardcode_into_libs" = yes; then # Hardcode the library paths hardcode_libdirs= dep_rpath= rpath="$finalize_rpath" test "$mode" != relink && rpath="$compile_rpath$rpath" for libdir in $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"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" dep_rpath="$dep_rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$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" if test -n "$hardcode_libdir_flag_spec_ld"; then eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" else eval dep_rpath=\"$hardcode_libdir_flag_spec\" fi fi if test -n "$runpath_var" && test -n "$perm_rpath"; then # We should set the runpath_var. rpath= for dir in $perm_rpath; do rpath="$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 "$mode" != relink && 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 linknames="$linknames $link" done # Use standard objects if they are pic test -z "$pic_flag" && libobjs=`$ECHO "X$libobjs" | $SP2NL | $Xsed -e "$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" delfiles="$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 if test "x`$SED 1q $export_symbols`" != xEXPORTS; then # 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 fi ;; esac # Prepare the list of exported symbols if test -z "$export_symbols"; then if test "$always_export_symbols" = yes || 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 cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" func_len " $cmd" len=$func_len_result if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then func_show_eval "$cmd" 'exit $?' 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 "X$skipped_export" != "X:"; 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 "X$include_expsyms" | $Xsed | $SP2NL >> "$tmp_export_symbols"' fi if test "X$skipped_export" != "X:" && 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 delfiles="$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 "*) ;; *) tmp_deplibs="$tmp_deplibs $test_deplib" ;; esac done deplibs="$tmp_deplibs" if test -n "$convenience"; then if test -n "$whole_archive_flag_spec" && test "$compiler_needs_object" = yes && 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" generated="$generated $gentop" func_extract_archives $gentop $convenience libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi fi if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then eval flag=\"$thread_safe_flag_spec\" linker_flags="$linker_flags $flag" fi # Make a backup of the uninstalled library when relinking if test "$mode" = relink; 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 "$module" = yes && 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 "X$skipped_export" != "X:" && 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 output_la=`$ECHO "X$output" | $Xsed -e "$basename"` # 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 "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then output=${output_objdir}/${output_la}.lnkscript func_verbose "creating GNU ld script: $output" $ECHO 'INPUT (' > $output for obj in $save_libobjs do $ECHO "$obj" >> $output done $ECHO ')' >> $output delfiles="$delfiles $output" elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then output=${output_objdir}/${output_la}.lnk func_verbose "creating linker input file list: $output" : > $output set x $save_libobjs shift firstobj= if test "$compiler_needs_object" = yes; then firstobj="$1 " shift fi for obj do $ECHO "$obj" >> $output done delfiles="$delfiles $output" output=$firstobj\"$file_list_spec$output\" 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 "X$objlist" = X || 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 "$k" -eq 1 ; then # The first file doesn't have a previous command to add. eval concat_cmds=\"$reload_cmds $objlist $last_robj\" else # All subsequent reloadable object files will link in # the last one created. eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj~\$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~ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\" if test -n "$last_robj"; then eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" fi delfiles="$delfiles $output" else output= fi if ${skipped_export-false}; then 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 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_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; 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 if ${skipped_export-false}; then 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 "X$include_expsyms" | $Xsed | $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 delfiles="$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 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 "$module" = yes && 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" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles libobjs="$libobjs $func_extract_archives_result" test "X$libobjs" = "X " && libobjs= fi save_ifs="$IFS"; IFS='~' for cmd in $cmds; do IFS="$save_ifs" eval cmd=\"$cmd\" $opt_silent || { func_quote_for_expand "$cmd" eval "func_echo $func_quote_for_expand_result" } $opt_dry_run || eval "$cmd" || { lt_exit=$? # Restore the uninstalled library and exit if test "$mode" = relink; 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 "$mode" = relink; 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 "$module" = yes || test "$export_dynamic" = yes; then # On all known operating systems, these are identical. dlname="$soname" fi fi ;; obj) if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; 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= # reload_cmds runs $LD directly, so let us get rid of # -Wl from whole_archive_flag_spec and hope we can get by with # turning comma into space.. wl= if test -n "$convenience"; then if test -n "$whole_archive_flag_spec"; then eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" reload_conv_objs=$reload_objs\ `$ECHO "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'` else gentop="$output_objdir/${obj}x" generated="$generated $gentop" func_extract_archives $gentop $convenience reload_conv_objs="$reload_objs $func_extract_archives_result" fi fi # Create the old-style object. reload_objs="$objs$old_deplibs "`$ECHO "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test 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 if test "$build_libtool_libs" != yes; then 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 fi if test -n "$pic_flag" || test "$pic_mode" != default; 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" test "$preload" = yes \ && test "$dlopen_support" = unknown \ && test "$dlopen_self" = unknown \ && test "$dlopen_self_static" = unknown && \ 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 "X $compile_deplibs" | $Xsed -e 's/ -lc / System.ltframework /'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e '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 "$tagname" = CXX ; then case ${MACOSX_DEPLOYMENT_TARGET-10.0} in 10.[0123]) compile_command="$compile_command ${wl}-bind_at_load" finalize_command="$finalize_command ${wl}-bind_at_load" ;; esac fi # Time to change all our "foo.ltframework" stuff back to "-framework foo" compile_deplibs=`$ECHO "X $compile_deplibs" | $Xsed -e 's% \([^ $]*\).ltframework% -framework \1%g'` finalize_deplibs=`$ECHO "X $finalize_deplibs" | $Xsed -e '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 "*) new_libs="$new_libs -L$path/$objdir" ;; esac ;; esac done for deplib in $compile_deplibs; do case $deplib in -L*) case " $new_libs " in *" $deplib "*) ;; *) new_libs="$new_libs $deplib" ;; esac ;; *) new_libs="$new_libs $deplib" ;; esac done compile_deplibs="$new_libs" compile_command="$compile_command $compile_deplibs" finalize_command="$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 "*) ;; *) finalize_rpath="$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"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; *) perm_rpath="$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;; *) dllsearchpath="$dllsearchpath:$libdir";; esac case :$dllsearchpath: in *":$testbindir:"*) ;; ::) dllsearchpath=$testbindir;; *) dllsearchpath="$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"*) ;; *) hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir" ;; esac fi else eval flag=\"$hardcode_libdir_flag_spec\" rpath="$rpath $flag" fi elif test -n "$runpath_var"; then case "$finalize_perm_rpath " in *" $libdir "*) ;; *) finalize_perm_rpath="$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 "$build_old_libs" = yes; then # Transform all the library objects into standard objects. compile_command=`$ECHO "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` finalize_command=`$ECHO "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP` fi func_generate_dlsyms "$outputname" "@PROGRAM@" "no" # template prelinking step if test -n "$prelink_cmds"; then func_execute_cmds "$prelink_cmds" 'exit $?' fi wrappers_required=yes case $host in *cygwin* | *mingw* ) if test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; *cegcc) # Disable wrappers for cegcc, we are cross compiling anyway. wrappers_required=no ;; *) if test "$need_relink" = no || test "$build_libtool_libs" != yes; then wrappers_required=no fi ;; esac if test "$wrappers_required" = no; then # Replace the output file specification. compile_command=`$ECHO "X$compile_command" | $Xsed -e '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=$?' # 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 fi 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 rpath="$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 rpath="$rpath$dir:" done finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " fi fi if test "$no_install" = yes; 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 "X$link_command" | $Xsed -e '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 $?' exit $EXIT_SUCCESS fi if test "$hardcode_action" = relink; then # 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" else if test "$fast_install" != no; then link_command="$finalize_var$compile_command$finalize_rpath" if test "$fast_install" = yes; then relink_command=`$ECHO "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'` else # fast_install is set to needless relink_command= fi else link_command="$compile_var$compile_command$compile_rpath" relink_command="$finalize_var$finalize_command$finalize_rpath" fi fi # Replace the output file specification. link_command=`$ECHO "X$link_command" | $Xsed -e '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 $?' # 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_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done relink_command="(cd `pwd`; $relink_command)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` fi # Quote $ECHO for shipping. if test "X$ECHO" = "X$SHELL $progpath --fallback-echo"; then case $progpath in [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";; *) qecho="$SHELL `pwd`/$progpath --fallback-echo";; esac qecho=`$ECHO "X$qecho" | $Xsed -e "$sed_quote_subst"` else qecho=`$ECHO "X$ECHO" | $Xsed -e "$sed_quote_subst"` 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 if test "$build_libtool_libs" = convenience; then oldobjs="$libobjs_save $symfileobj" addlibs="$convenience" build_libtool_libs=no else if test "$build_libtool_libs" = module; then oldobjs="$libobjs_save" build_libtool_libs=no else oldobjs="$old_deplibs $non_pic_objects" if test "$preload" = yes && test -f "$symfileobj"; then oldobjs="$oldobjs $symfileobj" fi fi addlibs="$old_convenience" fi if test -n "$addlibs"; then gentop="$output_objdir/${outputname}x" generated="$generated $gentop" func_extract_archives $gentop $addlibs oldobjs="$oldobjs $func_extract_archives_result" fi # Do each command in the archive commands. if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; 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" generated="$generated $gentop" func_extract_archives $gentop $dlprefiles oldobjs="$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" generated="$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" oldobjs="$oldobjs $gentop/$newobj" ;; *) oldobjs="$oldobjs $obj" ;; esac done fi 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 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 "X$oldobjs" = "X" ; 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 "$build_old_libs" = yes && 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_for_eval "$var_value" relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" fi done # Quote the link command for shipping. relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" relink_command=`$ECHO "X$relink_command" | $Xsed -e "$sed_quote_subst"` if test "$hardcode_automatic" = yes ; then relink_command= fi # Only create the output if not a dry run. $opt_dry_run || { for installed in no yes; do if test "$installed" = yes; 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" eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` test -z "$libdir" && \ func_fatal_error "\`$deplib' is not a valid libtool archive" newdependency_libs="$newdependency_libs $libdir/$name" ;; *) newdependency_libs="$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" newdlfiles="$newdlfiles $libdir/$name" ;; *) newdlfiles="$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" newdlprefiles="$newdlprefiles $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 newdlfiles="$newdlfiles $abs" done dlfiles="$newdlfiles" newdlprefiles= for lib in $dlprefiles; do case $lib in [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; *) abs=`pwd`"/$lib" ;; esac newdlprefiles="$newdlprefiles $abs" done dlprefiles="$newdlprefiles" fi $RM $output # place dlname in correct position for cygwin tdlname=$dlname case $host,$output,$installed,$module,$dlname in *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;; esac $ECHO > $output "\ # $outputname - a libtool library file # Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $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 can not 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 "$installed" = no && test "$need_relink" = yes; 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 } { test "$mode" = link || test "$mode" = relink; } && func_mode_link ${1+"$@"} # func_mode_uninstall arg... func_mode_uninstall () { $opt_debug RM="$nonopt" files= rmforce= 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) RM="$RM $arg"; rmforce=yes ;; -*) RM="$RM $arg" ;; *) files="$files $arg" ;; esac done test -z "$RM" && \ func_fatal_help "you must specify an RM program" rmdirs= origobjdir="$objdir" for file in $files; do func_dirname "$file" "" "." dir="$func_dirname_result" if test "X$dir" = X.; then objdir="$origobjdir" else objdir="$dir/$origobjdir" fi func_basename "$file" name="$func_basename_result" test "$mode" = uninstall && objdir="$dir" # Remember objdir for removal later, being careful to avoid duplicates if test "$mode" = clean; then case " $rmdirs " in *" $objdir "*) ;; *) rmdirs="$rmdirs $objdir" ;; 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 test "$rmforce" = yes; 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 rmfiles="$rmfiles $objdir/$n" done test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library" case "$mode" in clean) case " $library_names " in # " " in the beginning catches empty $dlname *" $dlname "*) ;; *) rmfiles="$rmfiles $objdir/$dlname" ;; esac test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i" ;; uninstall) if test -n "$library_names"; then # Do each command in the postuninstall commands. func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' fi if test -n "$old_library"; then # Do each command in the old_postuninstall commands. func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || 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 "$pic_object" != none; then rmfiles="$rmfiles $dir/$pic_object" fi # Add non-PIC object to the list of files to remove. if test -n "$non_pic_object" && test "$non_pic_object" != none; then rmfiles="$rmfiles $dir/$non_pic_object" fi fi ;; *) if test "$mode" = clean ; 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 rmfiles="$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 rmfiles="$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 rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}" if test "$fast_install" = yes && test -n "$relink_command"; then rmfiles="$rmfiles $objdir/lt-$name" fi if test "X$noexename" != "X$name" ; then rmfiles="$rmfiles $objdir/lt-${noexename}.c" fi fi fi ;; esac func_show_eval "$RM $rmfiles" 'exit_status=1' done objdir="$origobjdir" # 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 } { test "$mode" = uninstall || test "$mode" = clean; } && func_mode_uninstall ${1+"$@"} test -z "$mode" && { help="$generic_help" func_fatal_help "you must specify a MODE" } test -z "$exec_cmd" && \ func_fatal_help "invalid operation mode \`$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 # in which 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: # vi:sw=2 cddlib-094g/missing000077500000000000000000000255771206770251100144000ustar00rootroot00000000000000#! /bin/sh # Common stub for a few missing GNU programs while installing. scriptversion=2006-05-10.23 # Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006 # Free Software Foundation, Inc. # Originally 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, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA # 02110-1301, USA. # 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 run=: sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' sed_minuso='s/.* -o \([^ ]*\).*/\1/p' # In the cases where this matters, `missing' is being run in the # srcdir already. if test -f configure.ac; then configure_ac=configure.ac else configure_ac=configure.in fi msg="missing on your system" case $1 in --run) # Try to run requested program, and just exit if it succeeds. run= shift "$@" && exit 0 # Exit code 63 means version mismatch. This often happens # when the user try to use an ancient version of a tool on # a file that requires a minimum version. In this case we # we should proceed has if the program had been absent, or # if --run hadn't been passed. if test $? = 63; then run=: msg="probably too old" fi ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an error status if there is no known handling for PROGRAM. Options: -h, --help display this help and exit -v, --version output version information and exit --run try to run the given command, and emulate it if it fails Supported PROGRAM values: aclocal touch file \`aclocal.m4' autoconf touch file \`configure' autoheader touch file \`config.h.in' autom4te touch the output file, or create a stub one automake touch all \`Makefile.in' files bison create \`y.tab.[ch]', if possible, from existing .[ch] flex create \`lex.yy.c', if possible, from existing .c help2man touch the output file lex create \`lex.yy.c', if possible, from existing .c makeinfo touch the output file tar try tar, gnutar, gtar, then tar without non-portable flags yacc create \`y.tab.[ch]', if possible, from existing .[ch] 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 # Now exit if we have it, but it failed. Also exit now if we # don't have it and --version was passed (most likely to detect # the program). case $1 in lex|yacc) # Not GNU programs, they don't have --version. ;; tar) if test -n "$run"; then echo 1>&2 "ERROR: \`tar' requires --run" exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then exit 1 fi ;; *) if test -z "$run" && ($1 --version) > /dev/null 2>&1; then # We have it, but it failed. exit 1 elif test "x$2" = "x--version" || test "x$2" = "x--help"; then # Could not run --version or --help. This is probably someone # running `$TOOL --version' or `$TOOL --help' to check whether # $TOOL exists and not knowing $TOOL uses missing. exit 1 fi ;; esac # If it does not exist, or fails to run (possibly an outdated version), # try to emulate it. case $1 in aclocal*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." touch aclocal.m4 ;; autoconf) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." touch configure ;; autoheader) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`acconfig.h' or \`${configure_ac}'. You might want to install the \`Autoconf' and \`GNU m4' packages. Grab them from any GNU archive site." files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` test -z "$files" && files="config.h" touch_files= for f in $files; do case $f in *:*) touch_files="$touch_files "`echo "$f" | sed -e 's/^[^:]*://' -e 's/:.*//'`;; *) touch_files="$touch_files $f.in";; esac done touch $touch_files ;; automake*) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. You might want to install the \`Automake' and \`Perl' packages. Grab them from any GNU archive site." find . -type f -name Makefile.am -print | sed 's/\.am$/.in/' | while read f; do touch "$f"; done ;; autom4te) echo 1>&2 "\ WARNING: \`$1' is needed, but is $msg. You might have modified some files without having the proper tools for further handling them. You can get \`$1' as part of \`Autoconf' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo "#! /bin/sh" echo "# Created by GNU Automake missing as a replacement of" echo "# $ $@" echo "exit 0" chmod +x $file exit 1 fi ;; bison|yacc) echo 1>&2 "\ WARNING: \`$1' $msg. You should only need it if you modified a \`.y' file. You may need the \`Bison' package in order for those modifications to take effect. You can get \`Bison' from any GNU archive site." rm -f y.tab.c y.tab.h if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.y) SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.c fi SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` if test -f "$SRCFILE"; then cp "$SRCFILE" y.tab.h fi ;; esac fi if test ! -f y.tab.h; then echo >y.tab.h fi if test ! -f y.tab.c; then echo 'main() { return 0; }' >y.tab.c fi ;; lex|flex) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.l' file. You may need the \`Flex' package in order for those modifications to take effect. You can get \`Flex' from any GNU archive site." rm -f lex.yy.c if test $# -ne 1; then eval LASTARG="\${$#}" case $LASTARG in *.l) SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` if test -f "$SRCFILE"; then cp "$SRCFILE" lex.yy.c fi ;; esac fi if test ! -f lex.yy.c; then echo 'main() { return 0; }' >lex.yy.c fi ;; help2man) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a dependency of a manual page. You may need the \`Help2man' package in order for those modifications to take effect. You can get \`Help2man' from any GNU archive site." file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -f "$file"; then touch $file else test -z "$file" || exec >$file echo ".ab help2man is required to generate this page" exit 1 fi ;; makeinfo) echo 1>&2 "\ WARNING: \`$1' is $msg. You should only need it if you modified a \`.texi' or \`.texinfo' file, or any other file indirectly affecting the aspect of the manual. The spurious call might also be the consequence of using a buggy \`make' (AIX, DU, IRIX). You might want to install the \`Texinfo' package or the \`GNU make' package. Grab either from any GNU archive site." # The file to touch is that specified with -o ... file=`echo "$*" | sed -n "$sed_output"` test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` if test -z "$file"; then # ... or it is the one specified with @setfilename ... infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` file=`sed -n ' /^@setfilename/{ s/.* \([^ ]*\) *$/\1/ p q }' $infile` # ... or it is derived from the source name (dir/f.texi becomes f.info) test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info fi # If the file does not exist, the user really needs makeinfo; # let's fail without touching anything. test -f $file || exit 1 touch $file ;; tar) shift # We have already tried tar in the generic part. # Look for gnutar/gtar before invocation to avoid ugly error # messages. if (gnutar --version > /dev/null 2>&1); then gnutar "$@" && exit 0 fi if (gtar --version > /dev/null 2>&1); then gtar "$@" && exit 0 fi firstarg="$1" if shift; then case $firstarg in *o*) firstarg=`echo "$firstarg" | sed s/o//` tar "$firstarg" "$@" && exit 0 ;; esac case $firstarg in *h*) firstarg=`echo "$firstarg" | sed s/h//` tar "$firstarg" "$@" && exit 0 ;; esac fi echo 1>&2 "\ WARNING: I can't seem to be able to run \`tar' with the given arguments. You may want to install GNU tar or Free paxutils, or check the command line arguments." exit 1 ;; *) echo 1>&2 "\ WARNING: \`$1' is needed, and is $msg. You might have modified some files without having the proper tools for further handling them. Check the \`README' file, it often tells you about the needed prerequisites for installing this package. You may also peek at any GNU archive site, in case some other package would contain this missing \`$1' program." exit 1 ;; esac exit 0 # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) # time-stamp-start: "scriptversion=" # time-stamp-format: "%:y-%02m-%02d.%02H" # time-stamp-end: "$" # End: cddlib-094g/mkinstalldirs000077500000000000000000000066471206770251100156040ustar00rootroot00000000000000#! /bin/sh # mkinstalldirs --- make directory hierarchy scriptversion=2006-05-11.19 # Original author: Noah Friedman # Created: 1993-05-16 # Public domain. # # This file is maintained in Automake, please report # bugs to or send patches to # . nl=' ' IFS=" "" $nl" errstatus=0 dirmode= usage="\ Usage: mkinstalldirs [-h] [--help] [--version] [-m MODE] DIR ... Create each directory DIR (with mode MODE, if specified), including all leading file name components. Report bugs to ." # process command line arguments while test $# -gt 0 ; do case $1 in -h | --help | --h*) # -h for help echo "$usage" exit $? ;; -m) # -m PERM arg shift test $# -eq 0 && { echo "$usage" 1>&2; exit 1; } dirmode=$1 shift ;; --version) echo "$0 $scriptversion" exit $? ;; --) # stop option processing shift break ;; -*) # unknown option echo "$usage" 1>&2 exit 1 ;; *) # first non-opt arg break ;; esac done for file do if test -d "$file"; then shift else break fi done case $# in 0) exit 0 ;; esac # Solaris 8's mkdir -p isn't thread-safe. If you mkdir -p a/b and # mkdir -p a/c at the same time, both will detect that a is missing, # one will create a, then the other will try to create a and die with # a "File exists" error. This is a problem when calling mkinstalldirs # from a parallel make. We use --version in the probe to restrict # ourselves to GNU mkdir, which is thread-safe. case $dirmode in '') if mkdir -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -p -- $*" exec mkdir -p -- "$@" else # On NextStep and OpenStep, the `mkdir' command does not # recognize any option. It will interpret all options as # directories to create, and then abort because `.' already # exists. test -d ./-p && rmdir ./-p test -d ./--version && rmdir ./--version fi ;; *) if mkdir -m "$dirmode" -p --version . >/dev/null 2>&1 && test ! -d ./--version; then echo "mkdir -m $dirmode -p -- $*" exec mkdir -m "$dirmode" -p -- "$@" else # Clean up after NextStep and OpenStep mkdir. for d in ./-m ./-p ./--version "./$dirmode"; do test -d $d && rmdir $d done fi ;; esac for file do case $file in /*) pathcomp=/ ;; *) pathcomp= ;; esac oIFS=$IFS IFS=/ set fnord $file shift IFS=$oIFS for d do test "x$d" = x && continue pathcomp=$pathcomp$d case $pathcomp in -*) pathcomp=./$pathcomp ;; esac if test ! -d "$pathcomp"; then echo "mkdir $pathcomp" mkdir "$pathcomp" || lasterr=$? if test ! -d "$pathcomp"; then errstatus=$lasterr else if test ! -z "$dirmode"; then echo "chmod $dirmode $pathcomp" lasterr= chmod "$dirmode" "$pathcomp" || lasterr=$? if test ! -z "$lasterr"; then errstatus=$lasterr fi fi fi fi pathcomp=$pathcomp/ done done exit $errstatus # 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-end: "$" # End: cddlib-094g/src-gmp/000077500000000000000000000000001206770251100143315ustar00rootroot00000000000000cddlib-094g/src-gmp/.DS_Store000066400000000000000000000140041206770251100160130ustar00rootroot00000000000000Bud1%  @€ @€ @€ @ E%DSDB`€ @€ @€ @cddlib-094g/src-gmp/.gdb_history000066400000000000000000000000301206770251100166400ustar00rootroot00000000000000bye quit run where quit cddlib-094g/src-gmp/Makefile.am000066400000000000000000000020671206770251100163720ustar00rootroot00000000000000bin_PROGRAMS = \ scdd_gmp \ lcdd_gmp \ redcheck_gmp \ fourier_gmp \ projection_gmp \ adjacency_gmp \ allfaces_gmp \ testshoot_gmp \ testcdd1_gmp \ testcdd2_gmp \ testlp1_gmp \ testlp2_gmp \ testlp3_gmp #cddmathlink scdd_gmp_SOURCES = simplecdd.c lcdd_gmp_SOURCES = lcdd.c redcheck_gmp_SOURCES = redcheck.c fourier_gmp_SOURCES = fourier.c projection_gmp_SOURCES = projection.c adjacency_gmp_SOURCES = adjacency.c allfaces_gmp_SOURCES = allfaces.c testshoot_gmp_SOURCES = testshoot.c testcdd1_gmp_SOURCES = testcdd1.c testcdd2_gmp_SOURCES = testcdd2.c testlp1_gmp_SOURCES = testlp1.c testlp2_gmp_SOURCES = testlp2.c testlp3_gmp_SOURCES = testlp3.c # cddmathlink_SOURCES = cddmathlink.c cddmlio.h cddmlio.c LDADD = ../lib-src-gmp/libcddgmp.la AM_LDFLAGS = -L$(gmplibdir) INCLUDES = -I../lib-src-gmp INCLUDES += -I$(gmpincludedir) AM_CPPFLAGS = -DGMPRATIONAL cddlib-094g/src-gmp/Makefile.in000066400000000000000000000503531206770251100164040ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 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@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@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_gmp$(EXEEXT) lcdd_gmp$(EXEEXT) \ redcheck_gmp$(EXEEXT) fourier_gmp$(EXEEXT) \ projection_gmp$(EXEEXT) adjacency_gmp$(EXEEXT) \ allfaces_gmp$(EXEEXT) testshoot_gmp$(EXEEXT) \ testcdd1_gmp$(EXEEXT) testcdd2_gmp$(EXEEXT) \ testlp1_gmp$(EXEEXT) testlp2_gmp$(EXEEXT) testlp3_gmp$(EXEEXT) subdir = src-gmp DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) am_adjacency_gmp_OBJECTS = adjacency.$(OBJEXT) adjacency_gmp_OBJECTS = $(am_adjacency_gmp_OBJECTS) adjacency_gmp_LDADD = $(LDADD) adjacency_gmp_DEPENDENCIES = ../lib-src-gmp/libcddgmp.la am_allfaces_gmp_OBJECTS = allfaces.$(OBJEXT) allfaces_gmp_OBJECTS = $(am_allfaces_gmp_OBJECTS) allfaces_gmp_LDADD = $(LDADD) allfaces_gmp_DEPENDENCIES = ../lib-src-gmp/libcddgmp.la am_fourier_gmp_OBJECTS = fourier.$(OBJEXT) fourier_gmp_OBJECTS = $(am_fourier_gmp_OBJECTS) fourier_gmp_LDADD = $(LDADD) fourier_gmp_DEPENDENCIES = ../lib-src-gmp/libcddgmp.la am_lcdd_gmp_OBJECTS = lcdd.$(OBJEXT) lcdd_gmp_OBJECTS = $(am_lcdd_gmp_OBJECTS) lcdd_gmp_LDADD = $(LDADD) lcdd_gmp_DEPENDENCIES = ../lib-src-gmp/libcddgmp.la am_projection_gmp_OBJECTS = projection.$(OBJEXT) projection_gmp_OBJECTS = $(am_projection_gmp_OBJECTS) projection_gmp_LDADD = $(LDADD) projection_gmp_DEPENDENCIES = ../lib-src-gmp/libcddgmp.la am_redcheck_gmp_OBJECTS = redcheck.$(OBJEXT) redcheck_gmp_OBJECTS = $(am_redcheck_gmp_OBJECTS) redcheck_gmp_LDADD = $(LDADD) redcheck_gmp_DEPENDENCIES = ../lib-src-gmp/libcddgmp.la am_scdd_gmp_OBJECTS = simplecdd.$(OBJEXT) scdd_gmp_OBJECTS = $(am_scdd_gmp_OBJECTS) scdd_gmp_LDADD = $(LDADD) scdd_gmp_DEPENDENCIES = ../lib-src-gmp/libcddgmp.la am_testcdd1_gmp_OBJECTS = testcdd1.$(OBJEXT) testcdd1_gmp_OBJECTS = $(am_testcdd1_gmp_OBJECTS) testcdd1_gmp_LDADD = $(LDADD) testcdd1_gmp_DEPENDENCIES = ../lib-src-gmp/libcddgmp.la am_testcdd2_gmp_OBJECTS = testcdd2.$(OBJEXT) testcdd2_gmp_OBJECTS = $(am_testcdd2_gmp_OBJECTS) testcdd2_gmp_LDADD = $(LDADD) testcdd2_gmp_DEPENDENCIES = ../lib-src-gmp/libcddgmp.la am_testlp1_gmp_OBJECTS = testlp1.$(OBJEXT) testlp1_gmp_OBJECTS = $(am_testlp1_gmp_OBJECTS) testlp1_gmp_LDADD = $(LDADD) testlp1_gmp_DEPENDENCIES = ../lib-src-gmp/libcddgmp.la am_testlp2_gmp_OBJECTS = testlp2.$(OBJEXT) testlp2_gmp_OBJECTS = $(am_testlp2_gmp_OBJECTS) testlp2_gmp_LDADD = $(LDADD) testlp2_gmp_DEPENDENCIES = ../lib-src-gmp/libcddgmp.la am_testlp3_gmp_OBJECTS = testlp3.$(OBJEXT) testlp3_gmp_OBJECTS = $(am_testlp3_gmp_OBJECTS) testlp3_gmp_LDADD = $(LDADD) testlp3_gmp_DEPENDENCIES = ../lib-src-gmp/libcddgmp.la am_testshoot_gmp_OBJECTS = testshoot.$(OBJEXT) testshoot_gmp_OBJECTS = $(am_testshoot_gmp_OBJECTS) testshoot_gmp_LDADD = $(LDADD) testshoot_gmp_DEPENDENCIES = ../lib-src-gmp/libcddgmp.la DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(adjacency_gmp_SOURCES) $(allfaces_gmp_SOURCES) \ $(fourier_gmp_SOURCES) $(lcdd_gmp_SOURCES) \ $(projection_gmp_SOURCES) $(redcheck_gmp_SOURCES) \ $(scdd_gmp_SOURCES) $(testcdd1_gmp_SOURCES) \ $(testcdd2_gmp_SOURCES) $(testlp1_gmp_SOURCES) \ $(testlp2_gmp_SOURCES) $(testlp3_gmp_SOURCES) \ $(testshoot_gmp_SOURCES) DIST_SOURCES = $(adjacency_gmp_SOURCES) $(allfaces_gmp_SOURCES) \ $(fourier_gmp_SOURCES) $(lcdd_gmp_SOURCES) \ $(projection_gmp_SOURCES) $(redcheck_gmp_SOURCES) \ $(scdd_gmp_SOURCES) $(testcdd1_gmp_SOURCES) \ $(testcdd2_gmp_SOURCES) $(testlp1_gmp_SOURCES) \ $(testlp2_gmp_SOURCES) $(testlp3_gmp_SOURCES) \ $(testshoot_gmp_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ 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@ MAKEINFO = @MAKEINFO@ 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_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_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@ 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@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ 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@ #cddmathlink scdd_gmp_SOURCES = simplecdd.c lcdd_gmp_SOURCES = lcdd.c redcheck_gmp_SOURCES = redcheck.c fourier_gmp_SOURCES = fourier.c projection_gmp_SOURCES = projection.c adjacency_gmp_SOURCES = adjacency.c allfaces_gmp_SOURCES = allfaces.c testshoot_gmp_SOURCES = testshoot.c testcdd1_gmp_SOURCES = testcdd1.c testcdd2_gmp_SOURCES = testcdd2.c testlp1_gmp_SOURCES = testlp1.c testlp2_gmp_SOURCES = testlp2.c testlp3_gmp_SOURCES = testlp3.c # cddmathlink_SOURCES = cddmathlink.c cddmlio.h cddmlio.c LDADD = ../lib-src-gmp/libcddgmp.la AM_LDFLAGS = -L$(gmplibdir) INCLUDES = -I../lib-src-gmp -I$(gmpincludedir) AM_CPPFLAGS = -DGMPRATIONAL all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(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 src-gmp/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src-gmp/Makefile .PRECIOUS: 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 install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ || test -f $$p1 \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done adjacency_gmp$(EXEEXT): $(adjacency_gmp_OBJECTS) $(adjacency_gmp_DEPENDENCIES) @rm -f adjacency_gmp$(EXEEXT) $(LINK) $(adjacency_gmp_OBJECTS) $(adjacency_gmp_LDADD) $(LIBS) allfaces_gmp$(EXEEXT): $(allfaces_gmp_OBJECTS) $(allfaces_gmp_DEPENDENCIES) @rm -f allfaces_gmp$(EXEEXT) $(LINK) $(allfaces_gmp_OBJECTS) $(allfaces_gmp_LDADD) $(LIBS) fourier_gmp$(EXEEXT): $(fourier_gmp_OBJECTS) $(fourier_gmp_DEPENDENCIES) @rm -f fourier_gmp$(EXEEXT) $(LINK) $(fourier_gmp_OBJECTS) $(fourier_gmp_LDADD) $(LIBS) lcdd_gmp$(EXEEXT): $(lcdd_gmp_OBJECTS) $(lcdd_gmp_DEPENDENCIES) @rm -f lcdd_gmp$(EXEEXT) $(LINK) $(lcdd_gmp_OBJECTS) $(lcdd_gmp_LDADD) $(LIBS) projection_gmp$(EXEEXT): $(projection_gmp_OBJECTS) $(projection_gmp_DEPENDENCIES) @rm -f projection_gmp$(EXEEXT) $(LINK) $(projection_gmp_OBJECTS) $(projection_gmp_LDADD) $(LIBS) redcheck_gmp$(EXEEXT): $(redcheck_gmp_OBJECTS) $(redcheck_gmp_DEPENDENCIES) @rm -f redcheck_gmp$(EXEEXT) $(LINK) $(redcheck_gmp_OBJECTS) $(redcheck_gmp_LDADD) $(LIBS) scdd_gmp$(EXEEXT): $(scdd_gmp_OBJECTS) $(scdd_gmp_DEPENDENCIES) @rm -f scdd_gmp$(EXEEXT) $(LINK) $(scdd_gmp_OBJECTS) $(scdd_gmp_LDADD) $(LIBS) testcdd1_gmp$(EXEEXT): $(testcdd1_gmp_OBJECTS) $(testcdd1_gmp_DEPENDENCIES) @rm -f testcdd1_gmp$(EXEEXT) $(LINK) $(testcdd1_gmp_OBJECTS) $(testcdd1_gmp_LDADD) $(LIBS) testcdd2_gmp$(EXEEXT): $(testcdd2_gmp_OBJECTS) $(testcdd2_gmp_DEPENDENCIES) @rm -f testcdd2_gmp$(EXEEXT) $(LINK) $(testcdd2_gmp_OBJECTS) $(testcdd2_gmp_LDADD) $(LIBS) testlp1_gmp$(EXEEXT): $(testlp1_gmp_OBJECTS) $(testlp1_gmp_DEPENDENCIES) @rm -f testlp1_gmp$(EXEEXT) $(LINK) $(testlp1_gmp_OBJECTS) $(testlp1_gmp_LDADD) $(LIBS) testlp2_gmp$(EXEEXT): $(testlp2_gmp_OBJECTS) $(testlp2_gmp_DEPENDENCIES) @rm -f testlp2_gmp$(EXEEXT) $(LINK) $(testlp2_gmp_OBJECTS) $(testlp2_gmp_LDADD) $(LIBS) testlp3_gmp$(EXEEXT): $(testlp3_gmp_OBJECTS) $(testlp3_gmp_DEPENDENCIES) @rm -f testlp3_gmp$(EXEEXT) $(LINK) $(testlp3_gmp_OBJECTS) $(testlp3_gmp_LDADD) $(LIBS) testshoot_gmp$(EXEEXT): $(testshoot_gmp_OBJECTS) $(testshoot_gmp_DEPENDENCIES) @rm -f testshoot_gmp$(EXEEXT) $(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)/allfaces.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fourier.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcdd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/projection.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redcheck.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplecdd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testcdd1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testcdd2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testlp1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testlp2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testlp3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testshoot.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here 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 $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$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: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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 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 info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-binPROGRAMS install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: 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 all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool ctags 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 uninstall uninstall-am \ uninstall-binPROGRAMS # 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-094g/src-gmp/adjacency.c000077700000000000000000000000001206770251100215002../src/adjacency.custar00rootroot00000000000000cddlib-094g/src-gmp/allfaces.c000077700000000000000000000000001206770251100211622../src/allfaces.custar00rootroot00000000000000cddlib-094g/src-gmp/fourier.c000077700000000000000000000000001206770251100207642../src/fourier.custar00rootroot00000000000000cddlib-094g/src-gmp/lcdd.c000077700000000000000000000000001206770251100174522../src/lcdd.custar00rootroot00000000000000cddlib-094g/src-gmp/projection.c000077700000000000000000000000001206770251100221662../src/projection.custar00rootroot00000000000000cddlib-094g/src-gmp/redcheck.c000077700000000000000000000000001206770251100211562../src/redcheck.custar00rootroot00000000000000cddlib-094g/src-gmp/redundancies.c000077700000000000000000000000001206770251100227462../src/redundancies.custar00rootroot00000000000000cddlib-094g/src-gmp/redundancies_clarkson.c000077700000000000000000000000001206770251100265362../src/redundancies_clarkson.custar00rootroot00000000000000cddlib-094g/src-gmp/simplecdd.c000077700000000000000000000000001206770251100215462../src/simplecdd.custar00rootroot00000000000000cddlib-094g/src-gmp/testcdd1.c000077700000000000000000000000001206770251100210642../src/testcdd1.custar00rootroot00000000000000cddlib-094g/src-gmp/testcdd2.c000077700000000000000000000000001206770251100210662../src/testcdd2.custar00rootroot00000000000000cddlib-094g/src-gmp/testlp1.c000077700000000000000000000000001206770251100206262../src/testlp1.custar00rootroot00000000000000cddlib-094g/src-gmp/testlp2.c000077700000000000000000000000001206770251100206302../src/testlp2.custar00rootroot00000000000000cddlib-094g/src-gmp/testlp3.c000077700000000000000000000000001206770251100206322../src/testlp3.custar00rootroot00000000000000cddlib-094g/src-gmp/testshoot.c000077700000000000000000000000001206770251100217262../src/testshoot.custar00rootroot00000000000000cddlib-094g/src-gmp/testuniq.c000066400000000000000000000106301206770251100163510ustar00rootroot00000000000000/* uniqtest.c: Test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.93c, Nov. 14, 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 "setoper.h" #include "cdd.h" #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,M3=NULL,M4=NULL; dd_rowrange i; dd_colrange d; dd_ErrorType err=dd_NoError; dd_rowset redrows,linrows; dd_rowindex newpos1=NULL, newpos2=NULL,newpos4=NULL; 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 remove duplicates.\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; printf("\nInput Matrix.\n"); dd_WriteMatrix(stdout, M); M1=dd_MatrixSortedCopy(M,&newpos1); printf("\nNormalize and sort the matrix with dd_MatrixSortedCopy.\n"); printf(" Row index changes -- original:new\n"); for (i=1;i<=M->rowsize; i++){ printf(" %ld:%ld",i,newpos1[i]); } printf("\n"); dd_WriteMatrix(stdout, M1); M2=dd_MatrixUniqueCopy(M1,&newpos2); printf("\nRemove row (consecutive) duplicates with dd_MatrixUniqueCopy.\n"); printf(" Row index changes -- original:new\n"); for (i=1;i<=M1->rowsize; i++){ printf(" %ld:%ld",i,newpos2[i]); } printf("\n"); dd_WriteMatrix(stdout, M2); M4=dd_MatrixSortedUniqueCopy(M,&newpos4); printf("\nTwo operations can be done at once with dd_MatrixSortedUniqueCopy.\n"); printf(" Row index changes -- original:new\n"); for (i=1;i<=M->rowsize; i++){ printf(" %ld:%ld",i,newpos4[i]); } printf("\n"); dd_WriteMatrix(stdout, M4); fprintf(stdout, "\nOne can then remove nontrivial redundant rows with dd_RedundantRows.\n Redundant rows:"); redrows=dd_RedundantRows(M2, &err); set_fwrite(stdout, redrows); M3=dd_MatrixSubmatrix(M2, redrows); dd_FreeMatrix(M1); dd_FreeMatrix(M2); set_free(redrows); fprintf(stdout, " Implicit linearity (after removal of redundant rows): "); linrows=dd_ImplicitLinearityRows(M3, &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(M3->linset, M3->linset, linrows); /* add the implicit linrows to the given linearity rows */ printf("\nNonredundant representation (except for the linearity part):\n"); dd_WriteMatrix(stdout, M3); set_free(linrows); dd_FreeMatrix(M); dd_FreeMatrix(M3); dd_FreeMatrix(M4); dd_clear(val); free(newpos1); free(newpos2); free(newpos4); _L99:; /* if (err!=dd_NoError) dd_WriteErrorMessages(stderr,err); */ return 0; } /* end of uniqtest.c */ cddlib-094g/src/000077500000000000000000000000001206770251100135505ustar00rootroot00000000000000cddlib-094g/src/.DS_Store000066400000000000000000000140041206770251100152320ustar00rootroot00000000000000Bud1%  @€ @€ @€ @ E%DSDB`€ @€ @€ @cddlib-094g/src/Makefile.am000066400000000000000000000016041206770251100156050ustar00rootroot00000000000000bin_PROGRAMS = \ scdd \ lcdd \ redcheck \ fourier \ projection \ adjacency \ allfaces \ testcdd1 \ testshoot \ testcdd2 \ testlp1 \ testlp2 \ testlp3 #cddmathlink scdd_SOURCES = simplecdd.c lcdd_SOURCES = lcdd.c redcheck_SOURCES = redcheck.c fourier_SOURCES = fourier.c projection_SOURCES = projection.c adjacency_SOURCES = adjacency.c allfaces_SOURCES = allfaces.c testcdd1_SOURCES = testcdd1.c testshoot_SOURCES = testshoot.c testcdd2_SOURCES = testcdd2.c testlp1_SOURCES = testlp1.c testlp2_SOURCES = testlp2.c testlp3_SOURCES = testlp3.c # cddmathlink_SOURCES = cddmathlink.c cddmlio.h cddmlio.c LDADD = ../lib-src/libcdd.la INCLUDES = -I../lib-src AM_CPPFLAGS = -UGMPRATIONAL cddlib-094g/src/Makefile.in000066400000000000000000000464571206770251100156350ustar00rootroot00000000000000# Makefile.in generated by automake 1.10.2 from Makefile.am. # @configure_input@ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, # 2003, 2004, 2005, 2006, 2007, 2008 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@ pkgdatadir = $(datadir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ pkgincludedir = $(includedir)/@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) subdir = src DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs CONFIG_CLEAN_FILES = am__installdirs = "$(DESTDIR)$(bindir)" binPROGRAMS_INSTALL = $(INSTALL_PROGRAM) PROGRAMS = $(bin_PROGRAMS) am_adjacency_OBJECTS = adjacency.$(OBJEXT) adjacency_OBJECTS = $(am_adjacency_OBJECTS) adjacency_LDADD = $(LDADD) adjacency_DEPENDENCIES = ../lib-src/libcdd.la am_allfaces_OBJECTS = allfaces.$(OBJEXT) allfaces_OBJECTS = $(am_allfaces_OBJECTS) allfaces_LDADD = $(LDADD) allfaces_DEPENDENCIES = ../lib-src/libcdd.la am_fourier_OBJECTS = fourier.$(OBJEXT) fourier_OBJECTS = $(am_fourier_OBJECTS) fourier_LDADD = $(LDADD) fourier_DEPENDENCIES = ../lib-src/libcdd.la am_lcdd_OBJECTS = lcdd.$(OBJEXT) lcdd_OBJECTS = $(am_lcdd_OBJECTS) lcdd_LDADD = $(LDADD) lcdd_DEPENDENCIES = ../lib-src/libcdd.la am_projection_OBJECTS = projection.$(OBJEXT) projection_OBJECTS = $(am_projection_OBJECTS) projection_LDADD = $(LDADD) projection_DEPENDENCIES = ../lib-src/libcdd.la am_redcheck_OBJECTS = redcheck.$(OBJEXT) redcheck_OBJECTS = $(am_redcheck_OBJECTS) redcheck_LDADD = $(LDADD) redcheck_DEPENDENCIES = ../lib-src/libcdd.la am_scdd_OBJECTS = simplecdd.$(OBJEXT) scdd_OBJECTS = $(am_scdd_OBJECTS) scdd_LDADD = $(LDADD) scdd_DEPENDENCIES = ../lib-src/libcdd.la am_testcdd1_OBJECTS = testcdd1.$(OBJEXT) testcdd1_OBJECTS = $(am_testcdd1_OBJECTS) testcdd1_LDADD = $(LDADD) testcdd1_DEPENDENCIES = ../lib-src/libcdd.la am_testcdd2_OBJECTS = testcdd2.$(OBJEXT) testcdd2_OBJECTS = $(am_testcdd2_OBJECTS) testcdd2_LDADD = $(LDADD) testcdd2_DEPENDENCIES = ../lib-src/libcdd.la am_testlp1_OBJECTS = testlp1.$(OBJEXT) testlp1_OBJECTS = $(am_testlp1_OBJECTS) testlp1_LDADD = $(LDADD) testlp1_DEPENDENCIES = ../lib-src/libcdd.la am_testlp2_OBJECTS = testlp2.$(OBJEXT) testlp2_OBJECTS = $(am_testlp2_OBJECTS) testlp2_LDADD = $(LDADD) testlp2_DEPENDENCIES = ../lib-src/libcdd.la am_testlp3_OBJECTS = testlp3.$(OBJEXT) testlp3_OBJECTS = $(am_testlp3_OBJECTS) testlp3_LDADD = $(LDADD) testlp3_DEPENDENCIES = ../lib-src/libcdd.la am_testshoot_OBJECTS = testshoot.$(OBJEXT) testshoot_OBJECTS = $(am_testshoot_OBJECTS) testshoot_LDADD = $(LDADD) testshoot_DEPENDENCIES = ../lib-src/libcdd.la DEFAULT_INCLUDES = -I.@am__isrc@ depcomp = $(SHELL) $(top_srcdir)/depcomp am__depfiles_maybe = depfiles COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) CCLD = $(CC) LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ $(LDFLAGS) -o $@ SOURCES = $(adjacency_SOURCES) $(allfaces_SOURCES) $(fourier_SOURCES) \ $(lcdd_SOURCES) $(projection_SOURCES) $(redcheck_SOURCES) \ $(scdd_SOURCES) $(testcdd1_SOURCES) $(testcdd2_SOURCES) \ $(testlp1_SOURCES) $(testlp2_SOURCES) $(testlp3_SOURCES) \ $(testshoot_SOURCES) DIST_SOURCES = $(adjacency_SOURCES) $(allfaces_SOURCES) \ $(fourier_SOURCES) $(lcdd_SOURCES) $(projection_SOURCES) \ $(redcheck_SOURCES) $(scdd_SOURCES) $(testcdd1_SOURCES) \ $(testcdd2_SOURCES) $(testlp1_SOURCES) $(testlp2_SOURCES) \ $(testlp3_SOURCES) $(testshoot_SOURCES) ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ AMTAR = @AMTAR@ AR = @AR@ AUTOCONF = @AUTOCONF@ AUTOHEADER = @AUTOHEADER@ AUTOMAKE = @AUTOMAKE@ AWK = @AWK@ CC = @CC@ CCDEPMODE = @CCDEPMODE@ CFLAGS = @CFLAGS@ CPP = @CPP@ CPPFLAGS = @CPPFLAGS@ CYGPATH_W = @CYGPATH_W@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ 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@ MAKEINFO = @MAKEINFO@ 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_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_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@ 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@ libdir = @libdir@ libexecdir = @libexecdir@ localedir = @localedir@ localstatedir = @localstatedir@ lt_ECHO = @lt_ECHO@ mandir = @mandir@ mkdir_p = @mkdir_p@ oldincludedir = @oldincludedir@ pdfdir = @pdfdir@ 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@ #cddmathlink scdd_SOURCES = simplecdd.c lcdd_SOURCES = lcdd.c redcheck_SOURCES = redcheck.c fourier_SOURCES = fourier.c projection_SOURCES = projection.c adjacency_SOURCES = adjacency.c allfaces_SOURCES = allfaces.c testcdd1_SOURCES = testcdd1.c testshoot_SOURCES = testshoot.c testcdd2_SOURCES = testcdd2.c testlp1_SOURCES = testlp1.c testlp2_SOURCES = testlp2.c testlp3_SOURCES = testlp3.c # cddmathlink_SOURCES = cddmathlink.c cddmlio.h cddmlio.c LDADD = ../lib-src/libcdd.la INCLUDES = -I../lib-src AM_CPPFLAGS = -UGMPRATIONAL all: all-am .SUFFIXES: .SUFFIXES: .c .lo .o .obj $(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 src/Makefile'; \ cd $(top_srcdir) && \ $(AUTOMAKE) --gnu src/Makefile .PRECIOUS: 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 install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; for p in $$list; do \ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ if test -f $$p \ || test -f $$p1 \ ; then \ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \ else :; fi; \ done uninstall-binPROGRAMS: @$(NORMAL_UNINSTALL) @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \ rm -f "$(DESTDIR)$(bindir)/$$f"; \ done clean-binPROGRAMS: @list='$(bin_PROGRAMS)'; for p in $$list; do \ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \ echo " rm -f $$p $$f"; \ rm -f $$p $$f ; \ done adjacency$(EXEEXT): $(adjacency_OBJECTS) $(adjacency_DEPENDENCIES) @rm -f adjacency$(EXEEXT) $(LINK) $(adjacency_OBJECTS) $(adjacency_LDADD) $(LIBS) allfaces$(EXEEXT): $(allfaces_OBJECTS) $(allfaces_DEPENDENCIES) @rm -f allfaces$(EXEEXT) $(LINK) $(allfaces_OBJECTS) $(allfaces_LDADD) $(LIBS) fourier$(EXEEXT): $(fourier_OBJECTS) $(fourier_DEPENDENCIES) @rm -f fourier$(EXEEXT) $(LINK) $(fourier_OBJECTS) $(fourier_LDADD) $(LIBS) lcdd$(EXEEXT): $(lcdd_OBJECTS) $(lcdd_DEPENDENCIES) @rm -f lcdd$(EXEEXT) $(LINK) $(lcdd_OBJECTS) $(lcdd_LDADD) $(LIBS) projection$(EXEEXT): $(projection_OBJECTS) $(projection_DEPENDENCIES) @rm -f projection$(EXEEXT) $(LINK) $(projection_OBJECTS) $(projection_LDADD) $(LIBS) redcheck$(EXEEXT): $(redcheck_OBJECTS) $(redcheck_DEPENDENCIES) @rm -f redcheck$(EXEEXT) $(LINK) $(redcheck_OBJECTS) $(redcheck_LDADD) $(LIBS) scdd$(EXEEXT): $(scdd_OBJECTS) $(scdd_DEPENDENCIES) @rm -f scdd$(EXEEXT) $(LINK) $(scdd_OBJECTS) $(scdd_LDADD) $(LIBS) testcdd1$(EXEEXT): $(testcdd1_OBJECTS) $(testcdd1_DEPENDENCIES) @rm -f testcdd1$(EXEEXT) $(LINK) $(testcdd1_OBJECTS) $(testcdd1_LDADD) $(LIBS) testcdd2$(EXEEXT): $(testcdd2_OBJECTS) $(testcdd2_DEPENDENCIES) @rm -f testcdd2$(EXEEXT) $(LINK) $(testcdd2_OBJECTS) $(testcdd2_LDADD) $(LIBS) testlp1$(EXEEXT): $(testlp1_OBJECTS) $(testlp1_DEPENDENCIES) @rm -f testlp1$(EXEEXT) $(LINK) $(testlp1_OBJECTS) $(testlp1_LDADD) $(LIBS) testlp2$(EXEEXT): $(testlp2_OBJECTS) $(testlp2_DEPENDENCIES) @rm -f testlp2$(EXEEXT) $(LINK) $(testlp2_OBJECTS) $(testlp2_LDADD) $(LIBS) testlp3$(EXEEXT): $(testlp3_OBJECTS) $(testlp3_DEPENDENCIES) @rm -f testlp3$(EXEEXT) $(LINK) $(testlp3_OBJECTS) $(testlp3_LDADD) $(LIBS) testshoot$(EXEEXT): $(testshoot_OBJECTS) $(testshoot_DEPENDENCIES) @rm -f testshoot$(EXEEXT) $(LINK) $(testshoot_OBJECTS) $(testshoot_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)/allfaces.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fourier.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcdd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/projection.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/redcheck.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/simplecdd.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testcdd1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testcdd2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testlp1.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testlp2.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testlp3.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/testshoot.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c $< .c.obj: @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` .c.lo: @am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< @am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< mostlyclean-libtool: -rm -f *.lo clean-libtool: -rm -rf .libs _libs ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ mkid -fID $$unique tags: TAGS TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ here=`pwd`; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ $$tags $$unique; \ fi ctags: CTAGS CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ $(TAGS_FILES) $(LISP) tags=; \ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ unique=`for i in $$list; do \ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ done | \ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ END { if (nonempty) { for (i in files) print i; }; }'`; \ test -z "$(CTAGS_ARGS)$$tags$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$tags $$unique GTAGS: here=`$(am__cd) $(top_builddir) && pwd` \ && cd $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) $$here 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 $(srcdir)/$$file && test $$d != $(srcdir); then \ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ fi; \ cp -pR $$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: $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ `test -z '$(STRIP)' || \ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install mostlyclean-generic: clean-generic: distclean-generic: -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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 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 info: info-am info-am: install-data-am: install-dvi: install-dvi-am install-exec-am: install-binPROGRAMS install-html: install-html-am install-info: install-info-am install-man: install-pdf: install-pdf-am install-ps: 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 all all-am check check-am clean clean-binPROGRAMS \ clean-generic clean-libtool ctags 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 uninstall uninstall-am \ uninstall-binPROGRAMS # 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-094g/src/adjacency.c000066400000000000000000000112661206770251100156430ustar00rootroot00000000000000/* 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 "setoper.h" #include "cdd.h" #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-094g/src/allfaces.c000066400000000000000000000114501206770251100154670ustar00rootroot00000000000000/* 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 "setoper.h" #include "cdd.h" #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-094g/src/fourier.c000066400000000000000000000066131206770251100153750ustar00rootroot00000000000000/* 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 "setoper.h" #include "cdd.h" #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-094g/src/lcdd.c000066400000000000000000000034311206770251100146230ustar00rootroot00000000000000/* 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 "setoper.h" #include "cdd.h" #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-094g/src/minkowski.c000066400000000000000000000105751206770251100157370ustar00rootroot00000000000000/* minkowski.c: Main test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.93, July 15, 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 "setoper.h" #include "cdd.h" #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. */ 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-094g/src/projection.c000066400000000000000000000064141206770251100160750ustar00rootroot00000000000000/* 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 "setoper.h" #include "cdd.h" #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-094g/src/redcheck.c000066400000000000000000000066101206770251100154670ustar00rootroot00000000000000/* 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 "setoper.h" #include "cdd.h" #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-094g/src/redexter.c000066400000000000000000000102131206770251100155330ustar00rootroot00000000000000/* 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 "setoper.h" #include "cdd.h" #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-094g/src/redundancies.c000066400000000000000000000063511206770251100163650ustar00rootroot00000000000000/* redcheck.c: Test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.92, December 11, 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 "setoper.h" #include "cdd.h" #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_colrange d; dd_ErrorType err=dd_NoError; dd_rowset redrows,linrows; 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 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; if (M->representation==dd_Generator) d=M->colsize+1; else d=M->colsize; 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 */ printf("\nNonredundant representation (except for the linearity part):\n"); dd_WriteMatrix(stdout, M2); dd_FreeMatrix(M); dd_FreeMatrix(M2); _L99:; if (err!=dd_NoError) dd_WriteErrorMessages(stderr,err); return 0; } /* end of redcheck.c */ cddlib-094g/src/redundancies_clarkson.c000066400000000000000000000064131206770251100202600ustar00rootroot00000000000000/* redcheck.c: Test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.92, December 11, 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 "setoper.h" #include "cdd.h" #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_colrange d; dd_ErrorType err=dd_NoError; dd_rowset redrows,linrows; 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 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; if (M->representation==dd_Generator) d=M->colsize+1; else d=M->colsize; 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 */ printf("\nNonredundant representation (except for the linearity part):\n"); dd_WriteMatrix(stdout, M2); dd_FreeMatrix(M); dd_FreeMatrix(M2); _L99:; if (err!=dd_NoError) dd_WriteErrorMessages(stderr,err); return 0; } /* end of redcheck.c */ cddlib-094g/src/simplecdd.c000066400000000000000000000106401206770251100156610ustar00rootroot00000000000000/* simplecdd.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 "setoper.h" #include "cdd.h" #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-094g/src/testcdd1.c000066400000000000000000000055021206770251100154310ustar00rootroot00000000000000/* 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 "setoper.h" #include "cdd.h" #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-094g/src/testcdd2.c000066400000000000000000000061641206770251100154370ustar00rootroot00000000000000/* testcdd2.c: Main test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.90c, June 12, 2000 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 "setoper.h" #include "cdd.h" #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_si(B->matrix[0][0],7); dd_set_si(B->matrix[0][1], 1); dd_set_si(B->matrix[0][2],-3); dd_set_si(B->matrix[1][0],7); dd_set_si(B->matrix[1][1],-3); dd_set_si(B->matrix[1][2], 1); set_addelem(B->linset,1); /* setting the first to be equality */ 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-094g/src/testlp1.c000066400000000000000000000077451206770251100153250ustar00rootroot00000000000000/* 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 "setoper.h" #include "cdd.h" #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-094g/src/testlp2.c000066400000000000000000000066101206770251100153140ustar00rootroot00000000000000/* 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 "setoper.h" #include "cdd.h" #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-094g/src/testlp3.c000066400000000000000000000103461206770251100153160ustar00rootroot00000000000000/* 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 "setoper.h" #include "cdd.h" #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-094g/src/testshoot.c000066400000000000000000000107651206770251100157610ustar00rootroot00000000000000/* 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 "setoper.h" #include "cdd.h" #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 */ cddlib-094g/src/testuniq.c000066400000000000000000000107701206770251100155750ustar00rootroot00000000000000/* uniqtest.c: Test program to call the cdd library cddlib written by Komei Fukuda, fukuda@ifor.math.ethz.ch Version 0.93c, Nov. 14, 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 "setoper.h" #include "cdd.h" #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_rowrange i; dd_colrange d; dd_ErrorType err=dd_NoError; dd_rowset redrows,linrows,posset; dd_rowindex newpos=NULL, newpos1=NULL, newpos2=NULL; mytype val; dd_DataFileType inputfile; FILE *reading=NULL; int foi; dd_Arow certificate; 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 duplicates.\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; /* printf("\nInput Matrix.\n"); dd_WriteMatrix(stdout, M); */ M1=dd_MatrixSortedUniqueCopy(M,&newpos1); printf("\nSort and remove duplicates with dd_MatrixSortedUniqueCopy.\n"); printf(" Row index changes -- original:new\n"); for (i=1;i<=M->rowsize; i++){ printf(" %ld:%ld",i,newpos1[i]); } printf("\n"); /* dd_WriteMatrix(stdout, M1); */ dd_InitializeArow(M1->colsize+2, &certificate); fprintf(stdout, "\nCheck whether the system contains an implicit linearity.\n"); foi=dd_FreeOfImplicitLinearity(M1, certificate, &posset, &err); 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; } fprintf(stdout, "\nOne can then remove nontrivial redundant rows with dd_RedundantRows.\n Redundant rows:\n"); redrows=dd_RedundantRowsWithPresorting(M1, &err); /* redrows=dd_RedundantRows(M1, &err); */ set_fwrite(stdout, redrows); printf("\n"); M2=dd_MatrixSubmatrix2(M1, redrows, &newpos); dd_FreeMatrix(M1); set_free(redrows); free(newpos); 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 */ printf("\nNonredundant representation (except for the linearity part):\n"); dd_WriteMatrix(stdout, M2); dd_WriteLPStats(stdout); set_free(linrows); dd_FreeMatrix(M); dd_FreeMatrix(M2); dd_clear(val); free(newpos1); free(newpos2); _L99:; /* if (err!=dd_NoError) dd_WriteErrorMessages(stderr,err); */ return 0; } /* end of uniqtest.c */